Edited at

ずんだのポップル錯視問題 Ruby 編

杏マナー杏マナー杏マナー

杏マナー杏マナー杏マナー

ーナマ杏ーナマ杏ーナマ杏
ーナマ杏ーナマ杏ーナマ杏

杏マナー杏マナー杏マナー
杏マナー杏マナー杏マナー

ーナマ杏ーナマ杏ーナマ杏
ーナマ杏ーナマ杏ーナマ杏

上記のような錯視をポップル錯視(文字列傾斜錯視)と呼びます。詳細は以下リンク。

ポップル錯視の文字列を出力するプログラムを以下のルールで作成してください。


ルール


  1. ポップル錯視を起こす単語は定数でハードコードする ※標準入力にしてもらってもいいです

  2. 該当単語を1行あたり4回繰り返し、それを2行繰り返す

  3. 該当単語を逆順にし、1行あたり4回繰り返し、それを2行繰り返す

  4. 2 と 3 を 2 回繰り返す

  5. 2 と 3, 3 と 2 の間に空行を出力する

なお、入力された文字列がポップル錯視を起こすものかどうかの確認は行いません。


出力例

杏マナー杏マナー杏マナー杏マナー

杏マナー杏マナー杏マナー杏マナー

ーナマ杏ーナマ杏ーナマ杏ーナマ杏
ーナマ杏ーナマ杏ーナマ杏ーナマ杏

杏マナー杏マナー杏マナー杏マナー
杏マナー杏マナー杏マナー杏マナー

ーナマ杏ーナマ杏ーナマ杏ーナマ杏
ーナマ杏ーナマ杏ーナマ杏ーナマ杏


ポップル錯視を起こす単語 - 令和モナー

令和モナー令和モナー令和モナー令和モナー

令和モナー令和モナー令和モナー令和モナー

ーナモ和令ーナモ和令ーナモ和令ーナモ和令
ーナモ和令ーナモ和令ーナモ和令ーナモ和令

令和モナー令和モナー令和モナー令和モナー
令和モナー令和モナー令和モナー令和モナー

ーナモ和令ーナモ和令ーナモ和令ーナモ和令
ーナモ和令ーナモ和令ーナモ和令ーナモ和令


プログラム

POPPLE_ILLUTION = "杏マナー"

popple_illution_words = Array.new(4, POPPLE_ILLUTION)
popple_illution_rows = []
2.times do
2.times { popple_illution_rows << popple_illution_words.join }
popple_illution_rows << ""
2.times { popple_illution_rows << popple_illution_words.map(&:reverse).join }
popple_illution_rows << ""
end

puts popple_illution_rows.join("\n")


出力

杏マナー杏マナー杏マナー杏マナー

杏マナー杏マナー杏マナー杏マナー

ーナマ杏ーナマ杏ーナマ杏ーナマ杏
ーナマ杏ーナマ杏ーナマ杏ーナマ杏

杏マナー杏マナー杏マナー杏マナー
杏マナー杏マナー杏マナー杏マナー

ーナマ杏ーナマ杏ーナマ杏ーナマ杏
ーナマ杏ーナマ杏ーナマ杏ーナマ杏