
CodinGameのPower of Thor(PUZZLES:2問目)をRubyで解いてみた
CodinGameはこちら ゲームでプログラミング学習する英語のサイト
ミッション
Thor(神話の神?)を光っているところへ導くゲーム。幅40、高さ18のセルで構成されている。左上の座標が(0,0)、右下が(39,17)になる。光の座標(lightX,lightY)とThorの座標(initialTX,initialTY)から、次に行くべき方向を8方向で出力する。
北:N、北西:NW、西:W、南西:SW、南:S、南東:SE、東:E、北東:NE
私が書いたcode
STDOUT.sync = true # DO NOT REMOVE @light_x, @light_y, @initial_tx, @initial_ty = gets.split(" ").collect {|x| x.to_i} loop do remaining_turns = gets.to_i # The remaining amount of turns Thor can move. Do not remove this line. remain_x = @light_x - @initial_tx remain_y = @light_y - @initial_ty move_x = "" move_y = "" if remain_x > 0 move_x = "E" @initial_tx -= 1 elsif remain_x < 0 move_x = "W" @initial_tx = @initial_tx + 1 end if remain_y > 0 move_y = "S" @initial_ty += 1 elsif remain_y < 0 move_y = "N" @initial_ty -= 1 end move = move_y + move_x puts move end
残りの距離を計算して、その距離がプラスかマイナスかで行く方向の文字を出力してみました。それをX方向とY方向それぞれで出して、それぞれの結果を足し合わせたものを結果として出力しています。
SOLUTIONSで他のコードを見ると、だいたい同じ感じでしたね。一番いいと評価されているコードがまたまた1行だった。条件の書き方で短くできるんだなということがわかったくらいで今回は終わり。
また次の練習問題へ行ってきます。