みなさまもお好きな言語で解いてみてくださいね。
目次
お題
3つの文字列入力に対して、縦書きの俳句文字列にして出力してください。
例
入力
["アプリログ", "よく見てみると", "時間だけ"]
出力
時 よ ア 間 く プ だ 見 リ け て ロ み グ る と
解いてみた
Groovyで解いてみた
ワンライナーでできた。
haiku.groovy
args*.padRight(args*.size().max(), ' ')*.toList().transpose()*.reverse()*.join(' ').each(this.&println)
出力結果
解説
まず、引数で受け取った文字列リストの文字列数を全角スペースで揃えます。その際、引数で受け取った文字列リストの最大文字列に合わせます。
args*.padRight(args*.size().max(), ' ')*.toList().transpose()*.reverse()*.join(' ').each(this.&println)
次に、文字列を縦横入れ替え(transpose)したいため、1文字ずつのリストに変換してから、transposeします。
縦横入れ替えられた文字列配列は、左から右へ並ぶようになっているため、逆転(reverse)させてから、全角スペースでくっつけます(join)。
args*.padRight(args*.size().max(), ' ')*.toList().transpose()*.reverse()*.join(' ').each(this.&println)
最後に、各行を出力させていきます。
this.&println
はメソッドクロージャとしてprintlnを取り出す構文で、eachに渡すことで各行が出力されます。
args*.padRight(args*.size().max(), ' ')*.toList().transpose()*.reverse()*.join(' ').each(this.&println)
関連投稿:𝕏 fumokmm