
CodinGameのASCII Art(PUZZLES:6問目)をRubyで解いてみた
CodinGameはこちら ゲームでプログラミング学習する英語のサイト
TwitterでいいねのボタンをCodinGameさんからも押していただいていたw。いいね!。
初めの方からよくわかっていなかったのが、パラメータがどうやって入力されるかということ。getsって何?って思って調べてみると、getsで入力が促され、それに答える形でシステムが自動的にパラメータを提供しているんだということがわかった。なるほど。わからずにやっていた自分もすごいなw。
今回のミッション
今回のミッションは与えられた文字列:Tからアスキーアートを表示するというもの。
- アスキーアートはAからZ、最後に?が入っており、幅:L、高さ:Hを1文字として表現されている
- 与えられるパラメータは、幅:L、高さ:HとT(表示する文字列)、最後にアスキーアートを1行単位で提供(AからZ+?)
- アスキーアートは行単位に提供されるため、繰り返し処理の中で実行している。ここではrowがそれ
- 英字以外の場合は?のアスキーアートを表示する
今回書いたcode
# Auto-generated code below aims at helping you parse
# the standard input according to the problem statement.
@l = gets.to_i
@h = gets.to_i
@t = gets.chomp
@h.times do
row = gets.chomp
alphabet = ('A'..'Z').to_a
answer = ""
@t.length.times do |i|
if alphabet.index(@t[i].upcase)
answer << row[alphabet.index(@t[i].upcase)*@l,@l].to_s
else
answer << row[(alphabet.index("Z")+1)*@l,@l].to_s
end
end
puts answer
end
今回の感想など
今回の他のソースを見て学んだこと→upcaseは大文字へ変換するStringクラスのメソッド。後で使うのが大文字だけなら、初めに書いていたほうがいいということがわかった。他は、やはりコード自体がまだ慣れていないから他の人のコードは読みにくい。そもそもいいコードなのかさえわからない。すぐに中級者になれるはずもないので、初級者として、時間を費やしながら学ぶことに専念します。