1
GoogleのHopping Bunny
2017年12月4日、Google Doodleはバニーをフィーチャーしたグラフィカルプログラミングゲームでした。後のレベルは非常に重要であり、アトミックゴルフの挑戦の素晴らしい候補のように見えました。 詳細 ゲーム 次の4つの動きがあります:前方にホップ、左折、右折、ループ。これらの動きのそれぞれが1つのトークンであり、それぞれがゲーム内の1つのタイルであることに対応しています。 バニーは直交する4つの方向(北、南、東、西)に直面できます。 バニーは前に飛び出して(正面を向く方向に1マス移動)、左または右に曲がります。 ループには、他のループを含む他の動きがいくつもあり、それらの反復カウントは正の整数です(ただし、ゲームでは技術的に反復カウント0を許可しています)。 ボードはグリッドに合わせた正方形のセットで、バニーは隣接する正方形の間を飛び回ることができます。 バニーはボイドに飛び込むことができません。ボードから飛び降りようとしても何もしないという意味です。(これは明らかに一部の人々にとっては驚きであり、他の人々にとっては失望でした。) 四角はマーク付きまたはマークなしのいずれかです。バニーが正方形の上にあるとき、それはマークされます。 すべての正方形がマークされると、レベルが完了します。 ソリューションが存在すると仮定することができます。 あなたのコード 目的:ボードを指定して、1つ以上の最短の解決策を見つけます。 入力はボードを形成する正方形の位置のリスト(マークされた正方形とマークされていない正方形を区別する)であり、出力は動きのリストです。入力形式と出力形式は、人間が判読できて理解できるものである限り重要ではありません。 勝利基準:各ボードで1分以内に見つかった最短のソリューションの移動数の合計。プログラムが特定のボードのソリューションを見つけられない場合、そのボードのスコアは(5 *正方形の数)です。 ソリューションをハードコードしないでください。あなたのコードは、以下の例として与えられたものだけでなく、入力としてどんなボードでも取ることができるはずです。 例 最初にゲームをプレイし、これらのいくつかを自分で試す機会を与えるために、ソリューションはネタバレに隠されています。また、それぞれについて以下のソリューションが1つだけ提供されます。 Sはバニーの開始広場(東向き)、#マークのない広場、Oマークのある広場です。動きの場合、私の表記はF=前方へのホップ、L=左折、R=右折であり、時間LOOP(<num>){<moves>}を反復<num>して<moves>毎回行うループを示します。ループが最小数を超えて何度でも実行できる場合は、<num>省略できます(つまり、無限大が機能します)。 レベル1: S## FF レベル2: S## # # ループ(2){FFR} レベル3: S## # # ### ループ{FFR} レベル4: ### # # ##S## # # ### LOOP {F LOOP(7){FL}}(DJMcMayhemにより発見) レベル5: ##### # …