Todos siempre quieren implementar el Juego de la vida de Conway. ¡Eso es aburrido! ¡Hagamos policías y ladrones en su lugar!
Tendrás dos equipos: los policías y los ladrones. Cada equipo tiene 5 miembros con 50 de salud cada uno. El programa se repetirá continuamente. Cada iteración, ocurrirá lo siguiente:
Para cada equipo, imprime la primera carta (
C
para los policías,R
para los ladrones), un espacio, una lista separada por espacios de los HP de los miembros y una nueva línea. Este es el estado de los equipos. Después de que ambos estén listos, imprima otra nueva línea. Por ejemplo, esto es lo que podría parecer la primera ronda:C 50 50 50 50 50 R 50 50 50 50 50
Elija un número aleatorio del 1 al 10 (incluidos 1 y 10). Llamaremos al número
N
. SiN
es par, los ladrones pierden esta ronda; si es extraño, la policía pierde.Elija un miembro aleatorio del equipo perdedor cuyo HP sea mayor que 0 y deduzca
N
HP. El HP de los miembros nunca debería aparecer debajo de 0 en el estado.Reinicia el bucle.
El juego termina cuando todos los miembros de un equipo pierden todos sus HP. Luego, se imprimirá lo siguiente si la policía gana:
C+
R-
y si los ladrones ganan:
R+
C-
Este es el código de golf, por lo que gana el menor número de caracteres.
Aquí hay una implementación de muestra en 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+'
game-of-life
.cops-and-robbers
!