Искам да мина през масив в масив с масиви в тези.
Масивът трябва да съдържа 5 масива, а във всяка от тяхтези масиви са още пет масиви, генерирането на числата е наред, но когато минавам през всяка от масивите, за да ги картографирам с нещо друго, получавам само един масив с 5 масиви в него.
def random_map
@row = []
@col = []
@map = []
5.times do |row|
5.times do |col|
@c = rand(3)
@d = [@c]
@col << @d
end
@row << @col
@col = []
end
@map << @row
@map.map! do |row|
row.map! do |col|
col.map! do |element|
case(element[0])
when 0
element[0] = "BG"
when 1
element[0] = "B1"
when 2
element[0] = "TR"
end
end
end
end
end
Всеки, който знае какво става с картографирането?
Отговори:
1 за отговор № 1Не съм положителен, но мисля, че това се опитваш да направиш:
def random_map
Array.new(5) do
Array.new(5) do
Array.new(5) do
%w{BG B1 TR}.sample
end
end
end
end
Изпълнявайки го, генерира масив от 5 маси от 5 маси от 5 струни, избрани случайно от трите струни "BG"
, "B1"
, и "TR"
:
random_map
# => [[["B1", "BG", "BG", "B1", "B1"],
["B1", "B1", "BG", "TR", "B1"],
["B1", "B1", "TR", "TR", "TR"],
["B1", "TR", "TR", "BG", "B1"],
["BG", "TR", "BG", "TR", "TR"]],
[["B1", "TR", "TR", "BG", "TR"],
["BG", "B1", "TR", "BG", "BG"],
["B1", "B1", "BG", "TR", "BG"],
["BG", "BG", "TR", "B1", "B1"],
["B1", "BG", "BG", "BG", "BG"]],
[["B1", "BG", "BG", "B1", "TR"],
["BG", "BG", "B1", "B1", "TR"],
["B1", "BG", "B1", "TR", "TR"],
["BG", "TR", "B1", "B1", "BG"],
["TR", "TR", "BG", "TR", "B1"]],
[["BG", "B1", "BG", "BG", "BG"],
["B1", "B1", "TR", "TR", "B1"],
["BG", "B1", "TR", "B1", "TR"],
["TR", "TR", "TR", "BG", "B1"],
["TR", "B1", "BG", "TR", "BG"]],
[["B1", "B1", "BG", "BG", "TR"],
["TR", "TR", "B1", "BG", "BG"],
["TR", "BG", "B1", "BG", "TR"],
["BG", "B1", "TR", "BG", "TR"],
["B1", "TR", "BG", "B1", "B1"]]]
Аз специално не използвам инстантните променливи @row
, @col
, @map
, @c
, или @d
защото не е ясно, че в действителност искате да ги поставяте, изглежда, че ги използвате като просто локални променливи.