/ 配列内の配列の/複数マッピング - Ruby [closed] - ruby​​、配列、マップ、マッピング

配列内の配列の複数マッピング - Ruby [closed] - ルビ、配列、マップ、マッピング

私はそれらの配列と一緒に配列の配列を通過したいです。

配列は5つの配列を含み、それぞれにこれらの配列はさらに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

これを実行すると、3つの文字列からランダムに選択された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 なぜなら、あなたが実際にそれらを設定したいのかはっきりしていないからです。それらを単にローカル変数として使っているように見えます。