Data una stringa che rappresenta lo stato corrente di una partita di Monopoli all'inizio del turno di un giocatore, comprimi tutti i dati necessari nell'output più piccolo. Le risposte saranno valutate in base alla dimensione dell'output e alla dimensione della fonte .
Nota: ci sono molte varianti regionali, ma tutti i riferimenti in questo post a nomi di proprietà, ecc., Sono basati su questa scheda .
Ingresso:
L'input verrà dato come una singola ;
stringa separata. Questa stringa viene data al programma in qualsiasi modo consueto nella lingua scelta, che sia stdin, argomenti, ecc.
L'input non formattato è simile al seguente:
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)
Un input formattato di esempio è questo:
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;
Preso a poco a poco:
3;1;
Ci sono 3 giocatori, ed è il turno del giocatore 1 (a zero, quindi il secondo giocatore)
Giocatori
false;1546;0;14;-1;
false;7692;1;10;1;
true;
Il primo giocatore:
- non è fallito
- ha $ 1546 in contanti a portata di mano
- possiede 0 carte esenti da prigione
- è in posizione 14 (Virginia Ave)
- non è in prigione
Il secondo giocatore è in prigione ed è stato per un turno. Non sono sicuro del perché , dal momento che ha una carta GOoJF, ma è lì.
Il terzo giocatore è in bancarotta e non sono richieste né fornite ulteriori informazioni.
Proprietà
1;false;1;
1;false;0;
0;true;0;
-1;false;0;
-1;false;0;
-1;false;0;
...
Le proprietà sono elencate in ordine attorno al tabellone, a partire dal Mediterraneo e terminando a Boardwalk. Le proprietà che non possono essere possedute non sono incluse in questo elenco, quindi ci saranno un totale di 28. Il livello di miglioramento 0
significa non migliorato. Il livello 1
è una casa, fino al livello 5
di un hotel. Un -1
proprietario indica che non appartiene a nessun giocatore.
Secondo le regole standard, una proprietà ipotecata deve essere di proprietà e non deve essere migliorata. Una proprietà che viene migliorata deve essere di proprietà e non deve essere ipotecata.
Inoltre, per migliorare una proprietà, un giocatore deve possedere l'intero blocco di colore. Ai fini di questo gioco, non ci importa se le proprietà vengono migliorate "in modo uniforme".
Nota che queste posizioni non sono le stesse delle posizioni del giocatore indicate sopra. Ad esempio, un giocatore nella 5
posizione sarebbe su Reading Railroad, che è la terza proprietà dell'elenco (poiché Go, Community Chest e Income Tax non possono essere posseduti). Le posizioni dei giocatori vanno da 0
(Vai) in senso orario a 39
(Passeggiata).
Carte
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;
Ciascuno dei mazzi Chance e Community Chest ha un 16
totale di carte. I numeri sono presentati come appaiono nel mazzo attualmente mischiato. Per questo esempio, la prima carta estratta dal mazzo Chance sarà la carta 0
, seguita dalla carta 1
(chi mescola quel mazzo succhia). La prima carta tirata dal petto della Comunità è la carta 3
, quindi 12
.
Non preoccuparti del significato di ciascuna carta (il testo della carta), ad eccezione della carta 0
. Questa è la carta Esci di prigione gratuita per quel mazzo. Se un giocatore lo possiede, sarà alla fine della lista, rappresentato come -1
.
Produzione:
Devi produrre (per console, stdout o file) una rappresentazione dello stato del gioco. Ciò deve includere tutte le informazioni richieste per rappresentare il gioco. Ad esempio, è possibile omettere (o abbreviare) proprietà non possedute, poiché non possono né essere migliorate né ipotecate. L'input non può ometterli perché è un elenco non indicizzato.
La compressione deve essere eseguita in modo da poter calcolare la dimensione di output nel caso peggiore. Ciò può squalificare alcuni algoritmi di compressione (a meno che non sia possibile dimostrare il caso peggiore e fornire un esempio di input nel caso peggiore).
A meno che il codice sorgente non sia irragionevolmente dettagliato, spiega come viene rappresentato il gioco. Le risposte consistenti in nient'altro che un programma golfizzato e output compresso sono scoraggiate. Ad esempio, se si omettono determinati valori, spiegare come è possibile derivarli dall'output.
Punteggio / Regole:
Il punteggio si basa sia sulla dimensione di compressione nel caso peggiore in bit , sia sulla dimensione del codice sorgente in byte :
score = (outputBits * 2) + encoderSourceBytes
Una risposta completa deve includere:
- Esempio di output
- Sorgente encoder
- Sorgente del decodificatore (non conteggiato rispetto al punteggio)
Tutti gli encoder devono essere programmi completi e sono vietate le scappatoie standard . È inoltre vietato l'uso di librerie di compressione integrate o esterne.
Il vincitore è la risposta con il punteggio più basso , come definito sopra.
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.
Essere in prigione è un buon lategame perché non stai pagando l'affitto. :)