私がプレイしたいゲームがあります。有限サイズのグリッドで発生します(ただし、球のようにラップされています)。そのグリッドでは、ランダムな(整数のみの)ポイントが選択されます。次に、ユーザーである私は、座標入力を求められます。入力がランダムポイントと正確に一致する場合、勝ったと言われます。それ以外の場合、入力とランダムポイント間のポイント単位の距離が通知されます。たとえば、私が推測(2,2)し、ランダムなポイントがにあった(4,3)場合、距離はになりますsqrt[(3-2)^2 + (4-2)^2] = sqrt[5]。
プレイヤーがポイントの正しい場所に到着するまで、ゲームは続行します。
目的上記のゲームの機能バージョンを作成します。そのためには、完全なプログラムを作成する必要があります。プログラムで行うべきことは次のとおりです。
- ボードの高さと幅の2つの入力を要求します。原点は、ボードの左上にあります。これらの入力はを超えません
1024。 - そのボード上のランダムポイントを選択します。これが推測されるポイントになります。
- ターンをシミュレートする入力を受け入れます。入力は、スペースで区切られた整数のペアまたは2つの個別の整数入力のいずれかになります。この入力に応じて、プログラムは次の2つのいずれかを実行します。
- 入力が選択したランダムポイントと一致する場合、ユーザーの勝利を示すメッセージを出力します。「あなたが勝ちました!」と提案します。
- それ以外の場合は、ユーザーの入力ポイントとランダムポイントの間の距離を出力します。
- ユーザーが勝利を収めたら、ユーザーが取ったターン数を表示します。その後、プログラムは終了します。
ボーナス
ボーナスは、このリストに表示される順序で適用されます
- プログラムが
D、ゲームが行われる次元を記述する入力整数を取る場合、-150バイト。たとえば、の場合D = 3、3整数のランダムポイントを作成し、3整数入力を取得して、それらのポイント間の距離を出力します。 - -50%(または+ 50%の場合
score < 0)ユーザーが以前に与えられた寸法とターンカウンターのグリッドで推測した場所を示すボード(ASCIIまたは画像)のグラフィック表現を提供する場合。(最初のボーナスに行くと、このボーナスはモード2Dと1Dモードにのみ適用されます。3Dグラフィカル出力を追加すると、-50%が追加されます。) - -60バイト(最初に入力によって選択された、つまり、与えられたとき
0に通常のゲームモードを実行し、与えられたときに1このゲームモードを実行する)ゲームポイントを提供できる場合
ラッピングの詳細
ラッピングは、3番目のボーナスで移動ポイントが境界のいずれかを横切って移動する場合にのみ発生します。この場合、移動ポイントは次のようにそれぞれのポイントにワープされます。
... ...
..R (move right) R..
... ...
この折り返し動作は、ポイントが方向を変えたという事実に加えて、ユーザーの推測には影響しません。
リーダーボード
この投稿の下部にあるスタックスニペットは、a)言語ごとの最短ソリューションのリストとして、b)全体的なリーダーボードとして、回答からカタログを生成します。
回答が表示されるようにするには、次のマークダウンテンプレートを使用して、見出しから回答を開始してください。
# Language Name, N bytes
N提出のサイズはどこですか。スコアを改善する場合、古いスコアを打つことで見出しに残すことができます。例えば:
# Ruby, <s>104</s> <s>101</s> 96 bytes
ヘッダーに複数の数字を含める場合(たとえば、スコアが2つのファイルの合計であるか、インタープリターフラグペナルティーを個別にリストする場合)、実際のスコアがヘッダーの最後の数字であることを確認します。
# Perl, 43 + 2 (-p flag) = 45 bytes
言語名をリンクにして、スニペットに表示することもできます。
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
10x10ランダムな点であり、(9,4)、と私は推測し(2,2)、距離ですsqrt(13)かsqrt(53)?(今後の注意:変なことをしている場合は、ランダム性を含めないでください。テストケースを提供することがほぼ不可能になるためです)。2. 3番目のボーナスでは、ポイントが移動する前または後に距離を計算して出力する必要がありますか?