Jeder möchte immer Conways Spiel des Lebens implementieren. Das ist langweilig! Lassen Sie uns stattdessen Polizisten und Räuber machen!
Sie haben zwei Teams: die Bullen und die Räuber. Jedes Team hat 5 Mitglieder mit jeweils 50 Gesundheit. Das Programm wird kontinuierlich wiederholt. Bei jeder Iteration wird Folgendes ausgeführt:
Drucken Sie für jedes Team den ersten Buchstaben (
Cfür die Polizei,Rfür die Räuber), ein Leerzeichen, eine durch Leerzeichen getrennte Liste der HP der Mitglieder und eine neue Zeile. Dies ist der Status der Teams. Nachdem beide erledigt sind, drucken Sie eine weitere Zeile. So könnte es beispielsweise in der ersten Runde aussehen:C 50 50 50 50 50 R 50 50 50 50 50Wählen Sie eine Zufallszahl von 1 bis 10 (einschließlich 1 und 10). Wir rufen die Nummer an
N. WennNes gerade ist, verlieren die Räuber diese Runde; Wenn es seltsam ist, verlieren die Bullen.Wählen Sie ein zufälliges Mitglied des verlierenden Teams aus, dessen HP größer als 0 sind, und ziehen Sie die
NHP ab. Die HP der Mitglieder sollten im Status niemals unter 0 fallen.Starten Sie die Schleife neu.
Das Spiel endet, wenn alle Mitglieder eines Teams alle HP verlieren. Dann wird Folgendes gedruckt, wenn die Polizei gewinnt:
C+
R-
und wenn die Räuber gewinnen:
R+
C-
Dies ist Code Golf, also gewinnt die kürzeste Anzahl von Charakteren.
Hier ist eine Beispielimplementierung 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.