Sem Ptiri wrote: > I have a grid with keys > > grid.keys > => [[1, 2], [0, 0], [3, 3], [2, 1], [1, 1], [0, 3], [3, 2], [2, 0], [1, > 0], [0, 2], [3, 1], [2, 3], [4, 3], [3, 0], [2, 2], [1, 3], [0, 1], [6, > 3]] > > I need to create a list list of all possible combinations. I would start > by taking the first item, then linking it with every other item, then > truncate the first item, and repeat. > > My problem is that on > > grid.keys[0].to_s > => "12" > > it mashes the [1, 2] together making it unusable. On my system array#to_s joins the arrays' elements ("12") arrai#inspect prints the array [1, 2] > Could you suggest a better data structure for storing a list of all > possible combinations? > > Linking a hash [1, 2] to [0, 0] and then [1, 1] would simply override > the previous link. If I understand correctly the problem, you can: 1 - assign the keys to an array varable, say gk=grid.keys 2 - create a list of indexes for each possible pair in gk 3 - access gk via indexes as in: <code # grid_keys.rb gk = [ [1, 2], [0, 0], [3, 3] ] gk.each_index { |i| puts "#{i} : #{gk[i].inspect}" } # create a list of indexes in gk pairs = [] (0...gk.size-1).each do |index1| (index1+1...gk.size).each do |index2| pairs << [index1, index2] end end puts "Pairs of indexes" pairs.each { |a| puts a.inspect } puts "Indexes Grid_Pairs" pairs.each do |idx| puts "#{idx.inspect} : #{gk[idx[0]].inspect} - #{gk[idx[1]].inspect}" end exit(0) __END__ Result: ruby grid_keys.rb 0 : [1, 2] 1 : [0, 0] 2 : [3, 3] Pairs of indexes [0, 1] [0, 2] [1, 2] Indexes Grid_Pairs [0, 1] : [1, 2] - [0, 0] [0, 2] : [1, 2] - [3, 3] [1, 2] : [0, 0] - [3, 3] <code/> HTH gfb -- Posted via http://www.ruby-forum.com/.