2
Koopaシェルシーケンス
さまざまなスーパーマリオゲームで、緑と赤の Koopa Troopaシェルは、平らな表面で摩擦なくスライドし、途中にあるレンガブロックを破壊できます。シェルがレンガブロックに当たると、ブロックが壊れて空のスペースに変わり、Koopaシェルは方向を反転します。例として、こちらの赤いシェルをご覧ください。 スーパーマリオのレベルが1ブロックだけで、すべてのグリッドセルがレンガまたは空のスペースであると仮定します。ただし、右に移動するシェルを含む一番左のセルを除きます。レベルも周期的であるため、シェルがレベルの右端または左端を出ると、反対側から再び入ります。この状況では、シェルはレベル内のすべてのブリックブロックから跳ね返り、それがなくなるまで継続します。最後のレンガブロックが壊れた直後に、シェルはどこまで移動しましたか? チャレンジ 負でない10進整数を取り込むプログラムまたは関数を作成します。この数値は、先行ゼロなしでバイナリで表現され(唯一の例外は0自体です)、1ブロックの高レベルレイアウトをエンコードします。A 1はレンガブロックで、a 0は空のスペースです。 Koopa Shellはレベルの左端に挿入され、最初は右に移動しています。たとえば、入力に関連付けられているレベル39は >100111 なぜなら100111バイナリで39であり、>そして<右表し、それぞれのシェルを動かす左。 最後のブロック(別名1)が壊れたら、シェルが移動した合計距離を印刷するか返す必要があります。 39is の出力と7レベルの変更は次のようになります。 Level Cumulative Distance >100111 0 <000111 0 >000110 0 0>00110 1 00>0110 2 000>110 3 000<010 3 00<0010 4 0<00010 5 <000010 6 000001< 7 000000> 7 <-- output 同様に、の出力6は1次のとおりです。 Level Cumulative Distance >110 0 …