
CodinGameのThe Descent(PUZZLES:1問目)をRubyで解いてみた
CodinGameはこちら ゲームでプログラミング学習する英語のサイト
チュートリアルでは、すでに用意されたコードを枠の中にコピーして終わりという簡単仕様。意味もわからずにクリアできた。次からが本番。でも一番難易度が低いEASYから。
ミッション
1ターンの間に一番高い山を特定して、その番号を出力すること。一番高い山から宇宙船に向かって攻撃があるようで、それを防ぐために一番高い山を特定して宇宙船から攻撃して破壊します。8つの山があり、それぞれの山の高さは0から9で示されています。
作成したのは以下のコード
STDOUT.sync = true # DO NOT REMOVE loop do highest_mountain = 0 count = 0 8.times do |i| mountain_height = gets.to_i # represents the height of one mountain, from 9 to 0. if highest_mountain < mountain_height highest_mountain = mountain_height count = i end end puts count end
山が8個あるので、一番高い山を特定するために一番高い山を比較しながらセットしています。その山が何個目かをカウントして、その結果を出力。今見ると、このcountのネーミングよくなさそう。カウントしていないのにcountかよΣ(・□・;)。山の高さと一番高い山も同じような名前でわかりにくな・・・。と色々思うことはある。ま、初めはこんなもんでしょ。
別の人の書いたコードをSOLUTIONボタンで確認してみると、配列を使っているようでした。配列に山の高さを代入して、その中から最大値をmaxメソッドで取ってくる。ああなるほど。コードもシンプルになるな。
一番評価されてたコードはたった1行で書かれていた。でも、それはまだよくわかんないな・・・。
先は遠いとは感じながらも、次へ進みます。