Phrogz wrote: > I think you're wrong. > Initial state: { 0=>0 } > First loop: k is 0, a[0] is 1, assign h[1]=>1 > A brand new key/value has been inserted to the hash this point. > If #each then covered the next key/value pair: > Second loop: k is 1, a[1] is 2, assign h[2]=>2 (and so on) There are a maximum of four keys possible and you never remove any. The second time through you're reassigning keys that are already there from the first time. - Charlie