ゲーム
私たちのほとんどは、Froggerについて知っています。これは、80年代のアーケードゲームで、目的は、忙しい高速道路とハザードで満たされた池を安全に渡って家に到着することです。
チャレンジが発行されたフロッガークローンを開発するために、いくつかのヶ月前。しかし、Froggerをプレイできるのに、なぜFroggerをクローンするのですか?:)
次の単純化された再生グリッドを検討してください。
XXXXXXXXXXXXXXXXXXXXXXX North Safe Zone
-----------------------
| | <<<< Express Lane West (Lane 1)
| | > Gridlock East (Lane 2)
| | << Freeflowing Traffic West (Lane 3)
| | < Gridlock West (Lane 4)
| | >>>> Express Lane East (Lane 5)
-----------------------
XXXXXXXXXXX@XXXXXXXXXXX South Safe Zone
\__________ __________/
'
23 cells horizontally
それぞれ23セル幅の5つの車線と、23セル幅の2つの安全なゾーン(カエルが安全に左右に移動できる場所)があります。右と左の境界線は図をわかりやすくするために無視してもかまいません。
@
上の図のa で示されているように、カエルは南の安全地帯、中央(12番目)のセルで始まります。
ゲームの時間は、フレームと呼ばれる個別のステップに分割されます。フロギーは速いカエルであり、フレームごとに任意の方向(上、下、右、左)で1つのセルをホッピングできます。また、どのフレームでも静止したままにすることもできます。5車線の交通は、次のように一定の速度で移動します。
- 高速レーン西(レーン1)のトラフィックは、フレームごとに2セル左に移動します
- グリッドロック東車線(車線2)のトラフィックは、1フレームごとに1セル右に移動します
- 自由に流れる交通西車線(車線3)の交通は、フレームごとに1セル左に移動します
- グリッドロック西車線(車線4)のトラフィックは、1フレームごとに1セルずつ移動します
- エクスプレスレーンイースト(レーン5)のトラフィックは、フレームごとに2セル分右に移動します
トラフィック自体は約1に対して一意に定義されます。このテキストファイルの 3,000タイムステップ。「交通」は、車両と車両間のスペースで構成されます。スペースではないキャラクターは車両の一部です。テキストファイルには、5つの車線に対応する5つの行が含まれています(同じ順序で)。
西行きの車線の場合、フレーム0の開始(ゲームの開始)で、車線の最初の車両はプレイグリッドの右端を少し超えていると見なします。
東行きの車線の場合、車両が文字列の最後から表示されるという意味で、トラフィック文字列は「後方」と見なされる必要があります。フレーム0の開始時に、これらの車線の最初の車両が競技場の左端を少し超えていると見なします。
例として考えてください:
Traffic Lane 1: [|==| =
Traffic Lane 2: |) = o
Traffic Lane 3: (|[]-[]:
Traffic Lane 4: <| (oo|
Traffic Lane 5: |==|] :=)
再生グリッドは次のように表示されます。
Start of Frame 0 XXXXXXXXXXXXXXXXXXXXXXX
[|==| =
|) = o
(|[]-[]:
<| (oo|
|==|] :=)
XXXXXXXXXXXXXXXXXXXXXXX
Start of Frame 1 XXXXXXXXXXXXXXXXXXXXXXX
[|==| =
|) = o
(|[]-[]:
<| (oo|
|==|] :=)
XXXXXXXXXXXXXXXXXXXXXXX
Start of Frame 2 XXXXXXXXXXXXXXXXXXXXXXX
[|==| =
|) = o
(|[]-[]:
<| (oo|
|==|] :=)
XXXXXXXXXXXXXXXXXXXXXXX
Start of Frame 3 XXXXXXXXXXXXXXXXXXXXXXX
[|==| =
|) = o
(|[]-[]:
<| (oo|
|==|] :=)
XXXXXXXXXXXXXXXXXXXXXXX
レーン内のすべてのトラフィックが「枯渇」した(つまり、文字列がなくなった)後、文字列内のすべての文字はスペースと見なされます。
次のいずれかが発生すると、カエルはつぶされます。
- カエルは、任意のフレームで、車両が占有するセルを占有します
- カエルは高速車線で静止したままで、1フレーム幅の車両がそのフレームで彼の上を通過します。
- カエルは西に向かっている車両を「通過」して東にジャンプするか、東に向かっている車両を西にジャンプします
- カエルは、任意のフレームで7(ライン)x 23(セル)のグリッドの外側にジャンプします
カエルがつぶされる唯一の条件であることに注意してください。特に、同じフレーム内で幅1の車両が通り過ぎる高速車線のセルに出入りするカエルのように、「with」トラフィックに沿って飛び回るカエルは許容されます。
客観的およびスコアリング
プログラミングチャレンジの目的は、最後の車両がプレイグリッドを出る前に、できるだけ多くの道をカエルに渡させることです。つまり、プログラムはフレームXの完了後すぐに終了します。フレームXは、グリッドを車両がもう存在しない状態にする最初のフレームです。
プログラムの出力は、次のエンコードを使用したカエルの一連の動きを含む文字列(またはテキストファイル)である必要があります。
< frog moves left
> frog moves right
^ frog moves up
v frog moves down
. frog remains stationary
たとえば、この文字列<<^.^
は、カエルが左に2回移動してから上に移動し、1フレームだけ一時停止してから再び上に移動することを示しています。
カエルが南の安全地帯から北の安全地帯に渡るたびに1つのポイントが獲得され、カエルが北の安全地帯から南の安全地帯に渡るたびに1つのポイントが獲得されます。
いくつかの重要なルール:
- カエルをつぶしてはいけません。
- ソリューション(移動のシーケンス)をプログラムコードと共に、インラインまたはテキストファイルとして(pastebin.comを使用して)投稿してください。
- 私たちのカエルは先見性があり予知性があります。したがって、あなたのプログラムは、解決策を模索している間、あらゆるフレームのあらゆるトラフィックデータを使用できます。これには、再生グリッドにまだ到達していないトラフィックのデータが含まれます。
- グリッドは回り込みません。グリッドを出ると、カエルが押しつぶされるため、許可されません。
- トラフィックが「リセット」したり、カエルが「テレポート」したりすることはありません。シミュレーションは継続的です。
- カエルは出てから南の安全地帯に戻ることがありますが、これはポイントとしてカウントされません。北の安全地帯についても同様です。
- コンテストの勝者は、最大数の交差をもたらす移動シーケンスを生成するプログラムです。
- その他の質問や懸念事項については、コメントセクションでお気軽にお問い合わせください。
追加のインセンティブについては、できれば+100 repの賞金を受賞プログラムに追加します。
ボーナス
カエルが触れるグリッドのすべてのコーナーで、ベーススコアに+ 2.5% *(最大+ 10%)。グリッドの四隅は、2つのセーフゾーンの左端と右端のセルです。
一連の動きで、シミュレーション全体で開始セルの左または右に+/- 4セル以内にカエルを閉じ込めた場合、ベーススコアに+ 25%(もちろん自由に垂直に移動できます)。
スコアリングボーナスはありませんが、OPの特別な小道具は、n 'ソリューションのクイックバリデーターを投稿した人に送られるので、プログラムを作成する必要はありません。;)バリデーターは単純に一連の動きを受け入れ、その合法性を(ルールおよびトラフィックファイルごとに)確認し、そのスコア(つまり、交差点の総数)を報告します。
*合計スコアは、ベーススコアにボーナスを加えたものに等しく、最も近い整数に切り捨てられます。