플레이어 차례가 시작될 때 독점 게임의 현재 상태를 나타내는 문자열이 주어지면 필요한 모든 데이터를 가장 작은 출력으로 압축하십시오. 답변은 출력 크기 와 소스 크기 로 판단됩니다 .
참고 : 지역별로 많은 변형이 있지만이 게시물에서 속성 이름 등에 대한 모든 참조는 이 보드를 기반으로 합니다 .
입력:
입력은 하나의 ;
분리 된 문자열로 제공됩니다. 이 문자열은 stdin, arguments 등 선택한 언어로 관습에 관계없이 프로그램에 제공됩니다.
형식화되지 않은 입력은 다음과 같습니다.
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
소유자의 A 는 플레이어가 소유하지 않은 것을 의미합니다.
표준 규칙에 따르면, 저당 부동산 해야한다 소유하고 해야하지가 개선 될 수있다. 개선 된 특성 해야한다 소유하고 안 저당한다.
또한 속성을 향상 시키려면 플레이어 가 전체 색상 블록을 소유 해야합니다 . 이 게임의 목적 상, 우리는 속성이 "균등하게"개선되는지 상관하지 않습니다.
이 위치는 위에 주어진 플레이어 위치와 동일 하지 않습니다 . 예를 들어, 해당 5
직위 의 플레이어 는 목록 의 세 번째 자산 인 Reading Railroad에 있습니다 (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
총 카드가 있습니다. 숫자는 현재 셔플 데크에 나타나는대로 표시됩니다. 이 예에서, 찬스 덱에서 뽑은 첫 번째 카드는 card 0
다음에 카드가 있습니다 1
(해당 카드를 섞은 사람). 커뮤니티의 가슴에서 가져온 첫 번째 카드는 카드입니다 3
후 12
.
card를 제외한 각 카드의 의미 (카드 텍스트) 에 대해 걱정하지 마십시오 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.
임대료를 지불하지 않기 때문에 감옥에 갇히는 것이 좋습니다. :)