Đưa ra một chuỗi biểu thị trạng thái hiện tại của trò chơi Monopoly khi bắt đầu lượt chơi của người chơi, nén tất cả dữ liệu cần thiết vào đầu ra nhỏ nhất. Câu trả lời sẽ được đánh giá bởi kích thước đầu ra và kích thước nguồn .
Lưu ý: Có nhiều biến thể khu vực, nhưng tất cả các tham chiếu trong bài đăng này đến tên thuộc tính, v.v., đều dựa trên bảng này .
Đầu vào:
Đầu vào sẽ được cung cấp dưới dạng một ;
chuỗi riêng biệt. Chuỗi này được trao cho chương trình theo bất kỳ cách nào là thông lệ trong ngôn ngữ bạn đã chọn, cho dù đó là stdin, đối số, v.v.
Đầu vào không được định dạng trông như thế này:
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)
Một ví dụ được định dạng đầu vào là đây:
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;
Lấy từng chút một:
3;1;
Có 3 người chơi và đến lượt 1 người chơi (không có chỉ số, vì vậy người chơi thứ hai )
Người chơi
false;1546;0;14;-1;
false;7692;1;10;1;
true;
Người chơi đầu tiên:
- không phá sản
- có sẵn $ 1546 tiền mặt
- sở hữu 0 thẻ không cần ra tù
- ở vị trí 14 (Virginia Ave)
- không phải ở tù
Người chơi thứ hai đang ở trong tù, và đã được một lượt. Tôi không chắc tại sao , vì anh ta có thẻ GOoJF, nhưng anh ta ở đó.
Người chơi thứ ba bị phá sản, và nhiều thông tin không được yêu cầu cũng không được cung cấp.
Tính chất
1;false;1;
1;false;0;
0;true;0;
-1;false;0;
-1;false;0;
-1;false;0;
...
Các thuộc tính được liệt kê theo thứ tự xung quanh bảng, bắt đầu từ Địa Trung Hải và kết thúc tại Boardwalk. Các thuộc tính không thể sở hữu không được bao gồm trong danh sách này, do đó sẽ có tổng cộng 28. Mức độ cải thiện 0
có nghĩa là không được chứng minh. Cấp 1
là một ngôi nhà, lên đến cấp 5
cho một khách sạn. Một -1
chủ sở hữu có nghĩa là nó không thuộc sở hữu của bất kỳ người chơi.
Theo các quy tắc tiêu chuẩn, một tài sản được thế chấp phải được sở hữu và không được cải thiện. Một tài sản được cải thiện phải được sở hữu và không được thế chấp.
Ngoài ra, để cải thiện một thuộc tính, người chơi phải sở hữu toàn bộ khối màu. Đối với mục đích của trò chơi này, chúng tôi không quan tâm nếu các thuộc tính đang được cải thiện "đồng đều".
Lưu ý rằng các vị trí này không giống với các vị trí người chơi được đưa ra ở trên. Chẳng hạn, một người chơi ở 5
vị trí này sẽ ở Reading Railroad, đây là tài sản thứ ba trong danh sách (vì Go, Community Chest và Thuế thu nhập không thể được sở hữu). Vị trí người chơi chạy từ 0
(Đi) theo chiều kim đồng hồ đến 39
(Boardwalk).
thẻ
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;
Mỗi bộ bài Cơ hội và Rương cộng đồng có 16
tổng số thẻ. Các con số được trình bày khi chúng xuất hiện trong bộ bài đang xáo trộn. Trong ví dụ này, thẻ đầu tiên được rút ra khỏi bộ bài Chance sẽ là thẻ 0
, tiếp theo là thẻ 1
(bất kỳ ai xáo trộn bộ bài đó đều hút). Thẻ đầu tiên kéo từ Cộng đồng ngực là thẻ 3
, sau đó 12
.
Đừng lo lắng về ý nghĩa của mỗi thẻ (văn bản thẻ), ngoại trừ thẻ 0
. Đó là thẻ Get Out of Jail Free cho bộ bài đó. Nếu một người chơi sở hữu nó, nó sẽ ở cuối danh sách, được đại diện là -1
.
Đầu ra:
Bạn phải xuất (ra bàn điều khiển, thiết bị xuất chuẩn hoặc tệp) một đại diện cho trạng thái trò chơi. Điều này phải bao gồm tất cả các thông tin cần thiết để đại diện cho trò chơi. Ví dụ: bạn có thể bỏ qua (hoặc viết tắt) các thuộc tính chưa được đặt tên, vì chúng không thể được cải thiện hoặc thế chấp. Đầu vào không thể bỏ qua chúng vì đây là danh sách chưa được lập.
Nén phải được thực hiện theo cách mà bạn có thể tính kích thước đầu ra trong trường hợp xấu nhất. Điều này có thể loại bỏ các thuật toán nén nhất định (trừ khi bạn có thể chứng minh trường hợp xấu nhất và đưa ra ví dụ về trường hợp xấu nhất).
Trừ khi mã nguồn của bạn dài dòng một cách vô lý , hãy đưa ra lời giải thích về cách trò chơi được thể hiện. Câu trả lời không có gì ngoài một chương trình chơi gôn và đầu ra nén không được khuyến khích. Ví dụ: nếu bạn đang bỏ qua các giá trị nhất định, hãy giải thích làm thế nào có thể lấy được chúng từ đầu ra.
Ghi điểm / Quy tắc:
Ghi điểm dựa trên cả kích thước nén trong trường hợp xấu nhất theo bit và kích thước mã nguồn theo byte :
score = (outputBits * 2) + encoderSourceBytes
Một câu trả lời đầy đủ phải bao gồm:
- Ví dụ đầu ra
- Nguồn mã hóa
- Nguồn giải mã (không được tính vào điểm số)
Tất cả các bộ mã hóa phải là chương trình hoàn chỉnh và các lỗ hổng tiêu chuẩn bị cấm. Sử dụng các thư viện nén tích hợp hoặc bên ngoài cũng bị cấm.
Người chiến thắng là câu trả lời với số điểm thấp nhất , như được xác định ở trên.
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.
Ở trong tù là một danh mục tốt vì bạn không trả tiền thuê nhà. :)