任意の文字列を任意の幅で波打たせてください。
ルール
- 対象の文字列を1文字1行ずつ出力する
- 1行進むごとに左に全角スペースを1文字増やし、文字の表示位置をずらしてください
- 文字の位置が指定の幅まで到達したら、今度は1行進むごとに全角スペースを1文字減らしてください
- 全角スペースがなくなったら2の手順に戻ってください
- 対象の文字列をすべて出力し終わるまで 2-4 を繰り返してください
ちょっとわかりにくいかと思うので、サンプルをみてください。
サンプル
文字列「進捗どうですか?」、幅「3」
進
捗
ど
う
で
す
か
?
文字列「進捗どうですか?」、幅「4」
進
捗
ど
う
で
す
か
?
文字列「完全に理解した」、幅「4」
完
全
に
理
解
し
た
プログラム
def get_spaces(range)
pre = *(0..(range - 1))
reversed = pre.reverse[1..-2]
(pre + reversed).cycle
end
def wave_text(text, range)
spaces = get_spaces(range).take(text.length)
text.each_char.with_index(0) do |char, i|
print "#{' '*spaces[i]}#{char}\n"
end
end
wave_text("進捗どうですか?", 3)
wave_text("進捗どうですか?", 4)
wave_text("進捗どうですか?", 5)
wave_text("進捗どうですか?", 6)
wave_text("完全に理解した", 4)
出力
進
捗
ど
う
で
す
か
?
進
捗
ど
う
で
す
か
?
進
捗
ど
う
で
す
か
?
進
捗
ど
う
で
す
か
?
完
全
に
理
解
し
た
プログラムを利用して出力した文字列によるツイート
進
— てぃーびー - Learning Designer (@tbpgr) July 31, 2020
捗
ど
う
で
す
か
?
進
捗
ど
う
で
す
か
?
進
捗
ど
う
で
す
か
?
進
捗
ど
う
で
す
か
?