```Hi,

I'm just getting to discover ruby, but I find it very nice programming
language. I just still don't understand how the "or" and "and" in
ruby...

I was playing with ruby and for example made a def to print Stem and
Leaf plot (for those who didn't have a statistics course or slept on
it, e.g. http://cnx.org/content/m10157/latest/)

Here is the Beta version of it:

class Array

def n ; self.size ; end

def stem_and_leaf(st = 1)
# if st != (2 or 5 or 10) then ; st = 1 ; end
k = Hash.new(0)
self.each {|x| k[x.to_f] += 1 }
k = k.sort{|a, b| a[0].to_f <=> b[0].to_f }
te_last = 999999999999999999999999999999999 # impossible number
puts " Stem and Leaf plot" + "     N = " + self.n.to_s + "
Steps / " + st.to_s
st = 10 / st
k.each do |key, val|
te = (key / 10).to_i
on = (Math.sqrt((key - te * 10).to_i**2)).to_i
if te == te_last and on < st
val.times { print on.to_s }
te_last = te
elsif te == te_last and on > st and on < st + st
val.times { print on.to_s }
te_last = te
st += st
else
print "\n" + "%+6s" % te.to_s + " : "
val.times { print on.to_s }
te_last = te
end
end
end

end

It prints:

Stem and Leaf plot     N = 15     Steps / 2

1 : 234
1 : 56789
2 : 019       # it shouldn't be like this
3 : 08        # it shouldn't be like this
4 : 07        # it shouldn't be like this

Or with different "steps" value:

Stem and Leaf plot     N = 15     Steps / 5

1 : 23
1 : 4567
1 : 89
2 : 019    # it shouldn't be like this
3 : 08     # it shouldn't be like this
4 : 07     # it shouldn't be like this

(data:  12 13 14 15 16 17 18 19 20 21 29 30 38 40 47)

My questions:

/1 If I just wanted it to work with "st" values: 1, 2, 5, how should
the "or" statement look like? Ruby don't understand multiple or's (I
tried using different brackets is several places but it still doesn't
work).

/2 It feels like Ruby didn't understand 3 and's in the elsif part of
script. It don't understand the 3rd "and". Why? How to write those
"and" statements?