Tutti vogliono sempre implementare il gioco della vita di Conway. È noioso! Facciamo invece poliziotti e ladri!
Avrai due squadre: i poliziotti e i ladri. Ogni squadra ha 5 membri con 50 salute ciascuno. Il programma eseguirà un ciclo continuo. Ad ogni iterazione, si verificherà quanto segue:
Per ogni squadra, stampa la prima lettera (
Cper i poliziotti,Rper i ladri), uno spazio, un elenco separato da spazi di HP dei membri e una nuova riga. Questo è lo stato delle squadre. Al termine di entrambi, stampare un'altra riga. Ad esempio, ecco come potrebbe apparire il primo round:C 50 50 50 50 50 R 50 50 50 50 50Scegli un numero casuale da 1 a 10 (inclusi sia 1 che 10). Chiameremo il numero
N. SeNè pari, i ladri perdono questo round; se strano, la polizia perde.Scegli un membro a caso del team perdente il cui HP è maggiore di 0 e deduci
NHP. Gli HP dei membri non dovrebbero mai apparire andare sotto lo 0 sullo stato.Riavvia il ciclo.
Il gioco termina quando tutti i membri di una squadra perdono tutti i loro HP. Quindi, se i poliziotti vincono, verrà stampato quanto segue:
C+
R-
e se i ladri vincono:
R+
C-
Questo è il golf del codice, quindi vince il numero più breve di caratteri.
Ecco un'implementazione di esempio in Python 2:
import random
cops = [50]*5
robbers = [50]*5
while any(cops) and any(robbers):
# print the status
print 'C', ' '.join(map(str, cops))
print 'R', ' '.join(map(str, robbers))
print
# pick N
N = random.randint(1, 10)
# pick the losing team (robbers if N is even, else cops)
losers = robbers if N % 2 == 0 else cops
# pick a member whose HP is greater than 0
losing_member = random.choice([i for i in range(len(losers)) if losers[i]])
losers[losing_member] -= N
# make sure the HP doesn't visibly drop below 0
if losers[losing_member] < 0: losers[losing_member] = 0
if any(cops):
# robbers lost
print 'C+'
print 'R-'
elif any(robbers):
# cops lost
print 'C-'
print 'R+'
cops-and-robbers!
game-of-life.