CodinGameのPower of Thor(PUZZLES:2問目)をRubyで解いてみた

LINEで送る
Pocket

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行だった。条件の書き方で短くできるんだなということがわかったくらいで今回は終わり。

また次の練習問題へ行ってきます。

LINEで送る
Pocket

コメントを残す

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