>>27
puts は最終的にわかりきったものを見目良く表示するときにだけ使え
プログラム作成途中や不明不審なものを表示するときは p を使う
irbの使い方は知ってるか?

> foo = [[1,2,3],[4,5,[6,7]]]
=> [[1, 2, 3], [4, 5, [6, 7]]]
> p foo[0]
[1, 2, 3]
> p foo[0][0]
1
> p foo[0][0][0]
1
> p 1[0]
1

> p foo[1]
[4, 5, [6, 7]]
> p foo[1][1]
5
> p foo[1][1][1]
0
> p 5[1]
0

で、Integerの[ ]の説明
self[nth]
nth 番目のビット(最下位ビット(LSB)が 0 番目)が立っている時 1 を、そうでなければ 0 を返します。