紙一重の積み重ね

35歳のエンジニアがなれる最高の自分を目指して、学んだことをこつこつ情報発信するブログです。

【Ruby】多重配列の中身を1行ずつ改行して表示したい

はじめに

AtCoderの問題をいろいろやっている中で、多重配列について迷ったのでメモ。

やりたいこと

多重配列の中身を1行ずつ改行して表示したい。

実現方法

joinメソッドを使う。

docs.ruby-lang.org

実装例

$ irb
2.4.0 :001 > H,W=3,4
 => [3, 4] 
2.4.0 :002 > out = Array.new(H).map{ Array.new(W,".")}
 => [[".", ".", ".", "."], [".", ".", ".", "."], [".", ".", ".", "."]] 
2.4.0 :003 > out.each { |data|
2.4.0 :004 >         puts data.join
2.4.0 :005?>   }
. . . .
. . . .
. . . .
 => [[".", ".", ".", "."], [".", ".", ".", "."], [".", ".", ".", "."]] 

【メモ】区切り文字による出力結果の違い

joinで指定する区切り文字によって、結合される文字列が変化する。

2.4.0 :010 > out.each{|data| puts data.join(", ")}
., ., ., .
., ., ., .
., ., ., .
 => [[".", ".", ".", "."], [".", ".", ".", "."], [".", ".", ".", "."]] 
2.4.0 :011 > out.each{|data| puts data.join(",")}
.,.,.,.
.,.,.,.
.,.,.,.
 => [[".", ".", ".", "."], [".", ".", ".", "."], [".", ".", ".", "."]] 
2.4.0 :012 > out.each{|data| puts data.join("")}
....
....
....
 => [[".", ".", ".", "."], [".", ".", ".", "."], [".", ".", ".", "."]] 
2.4.0 :013 > out.each{|data| puts data.join}
....
....
....
 => [[".", ".", ".", "."], [".", ".", ".", "."], [".", ".", ".", "."]]