プレイヤーのターンの開始時にモノポリーのゲームの現在の状態を表す文字列が与えられた場合、必要なすべてのデータを最小の出力に圧縮します。回答は、出力サイズとソースサイズによって判断されます。
注:地域ごとにさまざまなバリエーションがありますが、この投稿のプロパティ名などへの参照はすべてこの掲示板に基づいています。
入力:
入力は、単一の;
分離された文字列として与えられます。この文字列は、標準入力、引数など、選択した言語で慣習的な方法でプログラムに与えられます。
書式なし入力は次のようになります。
numPlayers (1 to 8)
whose turn (0 to numPlayers-1)
for each player:
bankrupt? (true/false)
money (0 to 2^16-1)
get-out-of-jail-free cards (0 to 2)
position (0 to 39)
jail turns (-1 to 2)
for 28 properties:
owner (-1 to numPlayers-1)
mortgaged? (true/false)
improvement level (0 to 5)
for 16 chance cards in deck:
card index (-1 to 15)
for 16 community chest cards in deck:
card index (-1 to 15)
フォーマットされた入力の例は次のとおりです。
3;1;false;1546;0;14;-1;false;7692;1;10;1;true;1;false;1;1;false;0;0;true;0;-1;false;0;-1;false;0;-1;false;0;-1;false;0;-1;false;0;-1;false;0;-1;false;0;-1;false;0;-1;false;0;-1;false;0;-1;false;0;-1;false;0;-1;false;0;-1;false;0;-1;false;0;-1;false;0;-1;false;0;-1;false;0;-1;false;0;-1;false;0;-1;false;0;-1;false;0;-1;false;0;-1;false;0;-1;false;0;0;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;3;12;7;4;5;2;13;11;15;6;8;9;10;1;14;-1;
少しずつ撮影:
3;1;
プレイヤーは3人で、プレイヤー1の番です(インデックスがゼロなので、2番目のプレイヤー)
プレイヤー
false;1546;0;14;-1;
false;7692;1;10;1;
true;
最初のプレーヤー:
- 破産していません
- 手元に1546ドルの現金がある
- 0個の脱獄カードを所有している
- 位置14(バージニアアベニュー)
- 刑務所にいない
2番目のプレイヤーは刑務所に入れられており、1ターンでした。彼はGOoJFカードを持っているので、なぜかわかりませんが、彼はそこにいます。
3番目のプレーヤーは破産しており、追加の情報は要求も提供もされていません。
プロパティ
1;false;1;
1;false;0;
0;true;0;
-1;false;0;
-1;false;0;
-1;false;0;
...
プロパティは、地中海からボードウォークで終わるボードの周りに順番にリストされています。所有できないプロパティはこのリストに含まれていないため、合計28になります。改善レベル0
は改善されていないことを意味します。レベル1
は5
、ホテルのレベルまでの1つの家です。-1
所有者の手段のためには、任意のプレイヤーによって所有されていません。
標準的な規則によると、抵当されたプロパティがなければなりません所有するとはなりません改善されます。改善されたプロパティがなければなりません所有するとはなりません担保すること。
さらに、プロパティを改善するには、プレーヤーがカラーブロック全体を所有している必要があります。このゲームでは、プロパティが「均等に」改善されるかどうかは気にしません。
これらの位置は、上記のプレーヤーの位置と同じではないことに注意してください。たとえば、その5
位置にいるプレーヤーは、リストの3番目のプロパティであるReading Railroadにいます(Go、Community Chest、およびIncome Taxは所有できないため)。プレイヤーの位置は、0
時計回りに39
(移動)から(ボードウォーク)に移動します。
カード
0;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;
3;12;7;4;5;2;13;11;15;6;8;9;10;1;14;-1;
チャンスデッキとコミュニティチェストデッキにはそれぞれ16
合計カードがあります。番号は、現在シャッフルされているデッキに表示されるとおりに表示されます。この例では、チャンスデッキから引き出される最初のカードはcardで0
、その後にカード1
(そのデッキが吸うシャッフルした人)が続きます。コミュニティ胸から引か最初のカードは、カードです3
、その後、12
。
cardを除き、各カードの意味(カードのテキスト)について心配する必要はありません0
。それが、そのデッキの脱獄無料カードです。プレイヤーがそれを所有している場合、リストの最後にあり、として表され-1
ます。
出力:
ゲームの状態の表現を(コンソール、標準出力、またはファイルに)出力する必要があります。これには、ゲームを表すために必要なすべての情報を含める必要があります。たとえば、所有されていないプロパティは、改善も抵当もできないため、省略(または省略)できます。入力はインデックスなしリストであるため、入力を省略することはできません。
圧縮は、最悪の場合の出力サイズを計算できる方法で行う必要があります。これにより、特定の圧縮アルゴリズムが無効になる場合があります(最悪の場合を証明できず、最悪の場合の入力例を示します)。
ソースコードが不当に冗長でない限り、ゲームがどのように表現されているかを説明してください。ゴルフプログラムと圧縮された出力のみで構成される回答は推奨されません。たとえば、特定の値を省略している場合、出力からそれらを導出する方法を説明します。
スコアリング/ルール:
スコアリングは、ビット単位の最悪の圧縮サイズとバイト単位のソースコードサイズの両方に基づいています。
score = (outputBits * 2) + encoderSourceBytes
完全な回答には以下を含める必要があります。
- 出力例
- エンコーダーソース
- デコーダーソース(スコアにはカウントされません)
すべてのエンコーダは完全なプログラムである必要があり、標準的な抜け穴は禁止されています。組み込みまたは外部の圧縮ライブラリの使用も禁止されています。
勝者は、上記で定義したように、最低スコアの回答です。
The second player is in jail, and has been for one turn. I'm not sure why, since he has a GOoJF card, but he's there.
あなたが家賃を払っていないので、刑務所にいることは良い晩期です。:)