パーソナルブログメモリ

a = [1, 1]
for _ in "*" * 999: a += [sum(a[-2:])]
print(a)

CodinGameのPRACTICEの解き方3 実際に書いてみたり寝かしたりして解く

2021-11-17 | 速攻で言語マスターしてみませんか

今回挑んでみたのはこちら、中級でsuccess rateは低め、右隅にある評価はかなり高いです。

問題はよくある歯車問題、歯車がの座標、半径が渡されてきて、データの最初の歯車が時計回りのときデータの最期の歯車は?

時計回り 半時計回り 動かない いずれかを答えます。この問題テストケース04のJammedに悩まされました。問題に記載

がありません。つまるというのがどういった状態なのかわかりません。

 

何度かこの状態かなと思考錯誤しますがテストケースでエラーになるものがあります。最終的には問題のデータを5mm方眼

ノートに書いてみて、状態がわかりました。ギアがループしている時のようです。

 

そこまで作成していたのは戻らないようにギアを進めていく。次のギア先が2つ以上ならJamm。ゴールに到達していたら解答

というものでJammを正しく理解していませんでした。Jammを洗い出すのはループかなかなり面倒そうだなと一端放置します。

 

一日ほど経過して、単に迷路探索してゴールが来ても探索して以前通った地点が次の候補地としてリストアップされればJamm

とすれば簡単になると気が付きます。

 

状況がややこしいときは一端間を開けるというのはけっこうオススメな方法です。

バグも手伝ってくれてもう少し簡略な方法にしています。以前通った地点は必要ではなくスタートに戻ったらJammでOkでした。

 

<参考文献>

https://www.codingame.com/training/medium/locked-in-gear


最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。