给定代表玩家回合开始时大富翁游戏当前状态的字符串,请将所有必要的数据压缩到最小的输出中。答案将根据输出大小和源大小来判断。
注意:有许多区域差异,但本文中对属性名称等的所有引用均基于此板。
输入:
输入将作为一个;
单独的字符串给出。该字符串以您选择的语言中惯用的任何方式提供给程序,无论是stdin,参数等。
未格式化的输入如下所示:
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(零索引,所以第二位玩家)
玩家们
false;1546;0;14;-1;
false;7692;1;10;1;
true;
第一玩家:
- 没有破产
- 手头有$ 1546现金
- 拥有0张摆脱监狱的卡
- 在位置14(弗吉尼亚大街)
- 不在监狱里
第二名玩家已入狱,已经转了一圈。我不确定为什么,因为他有GOoJF卡,但他在那里。
第三位玩家破产了,不需要提供任何信息。
物产
1;false;1;
1;false;0;
0;true;0;
-1;false;0;
-1;false;0;
-1;false;0;
...
从地中海开始,到木板路结束,依次列出所有属性。不能拥有的属性未包含在此列表中,因此共有28个。改进级别0
表示未改进。级别1
是一所房子,最高可达5
酒店的级别。一个-1
为业主意味着它不会被任何玩家拥有。
根据标准规则,抵押财产必须是拥有财产,不得加以改良。改良后的财产必须拥有且不得抵押。
另外,为了改善属性,玩家必须拥有整个色块。就本游戏而言,我们不在乎属性是否“均匀”地改善。
请注意,这些位置是不一样上面给出的球员位置。例如,该5
职位上的玩家将位于Reading Railroad上,这是列表中的第三个属性(因为无法拥有Go,Community Chest和Income Tax)。玩家位置从0
(Go)顺时针转到39
(Boardwalk)。
牌
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
总牌。这些数字按它们在当前已改组的牌组中的显示方式显示。在此示例中,从Chance牌组中抽出的第一张牌将是card 0
,其后是card 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.
入狱是很好的后期游戏,因为您不用付房租。:)