Учитывая строку, представляющую текущее состояние игры « Монополия» в начале хода игрока, сжимайте все необходимые данные до наименьшего результата. Ответы будут судить по размеру выходного и размера источника .
Примечание. Существует много региональных вариантов, но все ссылки в этом посте на имена свойств и т. Д. Основаны на этой доске .
Входные данные:
Ввод будет дан как одна ;
отдельная строка. Эта строка передается программе любым обычным способом на выбранном вами языке, будь то стандартный ввод, аргументы и т. Д.
Неформатированный ввод выглядит так:
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
позиции будет находиться на Чтении железной дороги, которая является третьим свойством в списке (так как Go, Community Chest и подоходный налог не могут принадлежать). Позиции игроков бегут от 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
общее количество карт. Числа представлены так, как они отображаются в текущей перетасованной колоде. В этом примере первой картой, снятой с колоды Шанс, будет карта 0
, за которой следует карта 1
(тот, кто перетасовал эту колоду, сосет). Первая карта вытащил из сообщества груди карты 3
, а затем 12
.
Не беспокойтесь о том, что означает каждая карта (текст карты), кроме карты 0
. Это карта Get Out of Jail Free для этой колоды. Если игрок владеет им, он будет в конце списка, представленного как -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.
Быть в тюрьме - это хорошая категория, потому что вы не платите арендную плату. :)