CodinGameのASCII Art(PUZZLES:6問目)をRubyで解いてみた

LINEで送る
Pocket

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クラスのメソッド。後で使うのが大文字だけなら、初めに書いていたほうがいいということがわかった。他は、やはりコード自体がまだ慣れていないから他の人のコードは読みにくい。そもそもいいコードなのかさえわからない。すぐに中級者になれるはずもないので、初級者として、時間を費やしながら学ぶことに専念します。

LINEで送る
Pocket

カテゴリー: ruby

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です