Враховуючи рядок, що відображає поточний стан монополістичної гри на початку черги гравця, стисніть усі необхідні дані в найменший результат. Відповіді будуть судити за розміром виводу та розміром джерела .
Примітка. Є багато регіональних варіацій, але всі посилання в цій публікації на назви властивостей тощо базуються на цій дошці .
Вхід:
Введення буде подано у вигляді окремого ;
розділеного рядка. Цей рядок надається програмі будь-яким способом, який є звичним для обраної вами мови, будь то 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 (Virginia Ave)
- не знаходиться у в'язниці
Другий гравець перебуває у в'язниці, і вже на одну чергу. Я не впевнений чому , оскільки він має карту GOoJF, але він там.
Третій гравець банкрут, і більше інформації не вимагається і не надається.
Властивості
1;false;1;
1;false;0;
0;true;0;
-1;false;0;
-1;false;0;
-1;false;0;
...
Властивості перераховані по порядку навколо дошки, починаючи від Середземномор'я і закінчуючи на Boardwalk. Властивості, які не можуть бути власниками, не включені до цього списку, тому їх буде загалом 28. Рівень покращення 0
означає непідтверджений. Рівень 1
- це один будинок, до рівня 5
для готелю. А -1
для власника означає, що ним не належить жоден гравець.
Згідно зі стандартними правилами, майно, яке знаходиться під заставою, повинно бути власником і не повинно вдосконалюватися. Власність, яка вдосконалюється, повинна бути власником і не повинна бути закладена.
Крім того, для покращення властивості гравець повинен володіти усім кольоровим блоком. Для цілей цієї гри нам не байдуже, чи покращуються властивості "рівномірно".
Зауважте, що ці позиції не збігаються з позиціями гравців, наведеними вище. Наприклад, гравець на 5
позиції опинився б на Reading Railroad, що є третім майном у списку (оскільки "Go", "Громадські скрині" та "Податок на прибуток" не можуть бути власниками). Позиції гравців проходять від 0
(Перейти) за годинниковою стрілкою до 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;
Кожен з колод шансу і Community Chest має 16
загальні карти. Цифри представлені так, як вони відображаються в поточно перетасованій колоді. У цьому прикладі першою карткою, яка витягла колоду Chance, буде карта 0
, а за нею картка 1
(хто перетасує цю колоду смокче). Перша карта витягнув із товариства грудей карти 3
, а потім 12
.
Не хвилюйтеся, що означає кожна картка (текст картки), за винятком картки 0
. Це картка "Вийти з в'язниці" на цю колоду. Якщо гравець володіє ним, він буде в кінці списку, представленим як -1
.
Вихід:
Ви повинні вивести (консолірувати, stdout або файл) представлення стану гри. Вона повинна включати всю інформацію, необхідну для представлення гри. Наприклад, ви можете опустити (або скоротити) невідомі властивості, оскільки вони не можуть бути ні поліпшеними, ні заставленими. Вхід не може опустити їх, тому що це невкладений список.
Стиснення слід робити таким чином, щоб ви могли обчислити найгірший розмір виводу. Це може дискваліфікувати певні алгоритми стиснення (якщо ви не зможете довести найгірший випадок та навести приклад введення в гіршому випадку).
Якщо ваш вихідний код не є розумно багатослівним, поясніть, як представлена гра. Відповіді, що складаються з нічого, крім програми для гольфу та стисненого виходу, не відмовляють. Наприклад, якщо ви опускаєте певні значення, поясніть, як можна отримати їх з результатів.
Оцінка / Правила:
Оцінка базується як на розмірі стиснення в гірших випадках у бітах , так і на розмірі вихідного коду в байтах :
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.
Перебувати в тюрмі - це добре, бо ти не платиш оренду. :)