2015-11-08 3 views
-1

Я хочу сделать номер сетку в Ruby, который дает выходы, как это (не совсем, но близко к этому):Как сделать манипулируемый номер сетки в Рубине

0 1 2 3 4 5 6 7 8 9 
    ------------------ 
1 | 
2 | 
3 | 
4 | 
5 | 
6 | 

где пространство (координаты точки) заполняется со случайными числами. Мне также нужно, чтобы это было манипулируемо (например, я могу легко найти значение точки, учитывая ее координаты, а также изменить ее). Я пытаюсь использовать массивы для этого, но пока не нашел хороший способ собрать его. Как я могу сделать это с помощью Ruby?

Большое вам спасибо!

UPDATE: У меня есть массив как это:

$array = [ 

     # 0 1 2 3 4 5  6 7 8 
     ['O', '-',' -','-', '-', '-', '-', '-', '-'], #0 
     ['|', 'x','x','x', 'x', 'x', 'x', 'x', 'x'], #1 
     ['|', 'x','x','x', 'x', 'x', 'x', 'x', 'x'], #2 
     ['|', 'x','x','x', 'x', 'x', 'x', 'x', 'x'], #3 


     ] 

Как я могу отобразить его в дружественный обмен на глаз, как?

+0

ЗАКАНЧИВАТЬ [Matrix класс] (HTTP://ruby-doc.org/stdlib-2.0.0/libdoc/matrix/rdoc/Matrix.html), возможно? –

+0

Спасибо! Я пытаюсь это сейчас ... Еще нужна помощь, хотя – crownusa

+0

Каковы ваши правила для генерации случайных чисел? Например, вы хотите получить случайное число от 0 до 9? И будет ли каждая строка позволять одно и то же число появляться более одного раза? Так допустима строка, например [1,1,3,2,9,4,8,6,6,]? –

ответ

1

Хорошо попробовать это (см редактирует за предыдущие ответы, но это один лучше, я чувствую):

grid = [ [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 
     [1, 2, 3, 4, 5, 6, 7, 8, 9, 0], 
     [2, 3, 4, 5, 6, 7, 8, 9, 0, 1], 
     [3, 4, 5, 6, 7, 8, 9, 0, 1, 2], 
     [4, 5, 6, 7, 8, 9, 0, 1, 2, 3], 
     [5, 6, 7, 8, 9, 0, 1, 2, 3, 4], 
     [6, 7, 8, 9, 0, 1, 2, 3, 4 ,5] ] 

#prints first row and dashed line 
r1 = grid[0] 
f1 = grid[0][0] 
print f1 
print " " 
r1.shift 
print r1.join(" ") 
r1.unshift(f1) 
puts "" 
puts " ------------------" 

#Prints all other rows 
grid.shift 
grid.each do |r| 

     f = r[0] 
     print f 
     print " | " 
     r.shift 
     print r.join(" ") 
     r.unshift(f) 
     puts 
end 

Выход:

0 1 2 3 4 5 6 7 8 9 
    ------------------ 
1 | 2 3 4 5 6 7 8 9 0 
2 | 3 4 5 6 7 8 9 0 1 
3 | 4 5 6 7 8 9 0 1 2 
4 | 5 6 7 8 9 0 1 2 3 
5 | 6 7 8 9 0 1 2 3 4 
6 | 7 8 9 0 1 2 3 4 5 
+0

довольно близко, но я бы предпочел без запятых и скобок ... – crownusa

+0

Изменен мой ответ, взгляните. –

+1

Смешивание форматирования с данными? Сохранение фактических данных в строке вместо массива? Это может/должно быть сделано лучше. –