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 (
Cpara los policías,Rpara 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 50Elija un número aleatorio del 1 al 10 (incluidos 1 y 10). Llamaremos al número
N. SiNes 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
NHP. 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+'
cops-and-robbers!
game-of-life.