Herkes her zaman Conway'in Hayat Oyununu uygulamak ister. Bu sıkıcı! Bunun yerine polisler ve soyguncular yapalım!
İki ekibiniz olacak: polisler ve soyguncular. Her takımın her biri 50 sağlık olan 5 üyesi vardır. Program sürekli olarak dönecektir. Her yineleme, aşağıdakiler gerçekleşir:
Her takım için ilk harfi (
C
polisler,R
soyguncular için), bir boşluk, üyelerin HP'nin boşlukla ayrılmış bir listesini ve bir yeni satır yazdırın. Bu takımların statüsüdür. Her ikisi de yapıldıktan sonra başka bir satır yazdırın. Örneğin, ilk tur gibi görünebilir:C 50 50 50 50 50 R 50 50 50 50 50
1'den 10'a kadar rastgele bir sayı seçin (hem 1 hem de 10 dahil). Numarayı arayacağız
N
. EğerN
hatta olduğunu soyguncular bu raundu kaybetmek; eğer garipse, polisler kaybeder.HP'si 0'dan büyük olan kaybeden ekibin rastgele bir üyesini seçin ve HP'yi kesin
N
. Üyelerin HP durumu hakkında hiçbir zaman 0'ın altına inmemelidir.Döngüyü yeniden başlatın.
Oyun, bir takımın tüm üyeleri tüm HP'lerini kaybettiğinde sona erer. Daha sonra polisler kazanırsa aşağıdakiler yazdırılır:
C+
R-
ve soyguncular kazanırsa:
R+
C-
Bu kod golf, bu yüzden en kısa karakter sayısı kazanır.
Python 2'de örnek bir uygulama:
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
.