UNO

Heu jugat mai a l’UNO? És un joc de cartes, les regles del qual
presentem a continuació molt simplificades. Llegiu-les encara que ja hi
hagueu jugat. Quatre jugadors, anomenats A, B, C i D, juguen per torns
cíclicament, un rera l’altre (amb algunes excepcions explicades més
avall). Inicialment es reparteixen 7 cartes a A, 7 cartes a B, etc. Les
cartes tenen un color i un símbol. El color és un d’entre quatre: B, G,
R o Y (les inicials de blue, green, red i yellow, respectivament). El
símbol pot ser, de menys a més valor, o un nombre entre 0 i 9, o una
marca de canvi de sentit, o de pèrdua de torn, o de robar dues cartes.
Diem que dues cartes lliguen entre si quan coincideixen en el color o/i
en el símbol.

Després de repartir les primeres 28 cartes, la següent carta es posa
sobre la taula. Aquesta carta només serveix per començar a jugar i, si
el seu símbol no és un nombre, s’ignora l’efecte que produiria (veieu
més avall). Després, per torns, i començant amb A, el jugador a qui li
toqui jugar tira una carta que lligui amb l’última carta tirada sobre la
taula, i la posa a sobre. Si en pot tirar més d’una, ha de triar aquella
amb més valor. En cas d’empat, la que tingui el color més gran
alfabèticament. Si no en pot tirar cap, ha de robar una carta. Si
aquesta carta lliga, la tira, i altrament passa. La partida acaba quan
algun jugador es queda sense cartes.

Les cartes amb símbols especials tenen els efectes següents:

- Una carta de canvi de sentit inverteix el sentit del joc. Per exemple,
  si B tira aquesta carta (i encara no s’havia canviat mai de sentit),
  després jugarà A, després D, etc.

- Una carta de pèrdua de torn fa que se salti el jugador a qui li tocava
  jugar. Per exemple, si C tira aquesta carta, després jugarà A. El
  sentit del joc no canvia.

- Una carta de robar dues cartes fa que el següent jugador a qui tocava
  jugar robi dues cartes, i també que perdi el torn. El sentit del joc
  no canvia.

Simuleu una partida sencera d’UNO. Per generar les cartes, useu la
funció pseudo-aleatòria definida per s^(′) = (97 * s + 20)%32749. Per
exemple, començant amb llavor 3, obtenim la seqüència
(97 * 3 + 20)%32749 = 311, (97 * 311 + 20)%32749 = 30187, … Així, usem
el 311 per decidir el color de la primera carta: 311%4 = 3, que es
correspon a l’últim color (Y). I usem el 30187 per decidir el símbol:
30187%13 = 1, que es correspon a l’1. Els valors 10, 11 i 12 es
corresponen a les cartes de canvi de sentit, pèrdua de torn, i de robar
dues cartes, respectivament. Cada vegada que calgui generar una carta,
ja sigui a l’inici de la partida, o perquè un jugador ha de robar, cal
invocar dues vegades la funció pseudo-aleatòria.

Entrada

L’entrada consisteix en la llavor inicial: un nombre entre 0 i 32748.

Sortida

Simuleu una partida seguint el format dels exemples. Suposeu que la
partida acabarà.

Informació del problema

Autoria: Salvador Roura

Generació: 2026-01-25T11:25:38.885Z

© Jutge.org, 2006–2026.
https://jutge.org
