Mọi người luôn muốn thực hiện Trò chơi cuộc sống của Conway. Thật là chán! Hãy làm cảnh sát và cướp thay!
Bạn sẽ có hai đội: cảnh sát và tên cướp. Mỗi đội có 5 thành viên với 50 sức khỏe mỗi người. Chương trình sẽ lặp liên tục. Mỗi lần lặp lại, những điều sau đây sẽ xảy ra:
Đối với mỗi đội, in chữ cái đầu tiên (
Ccho cảnh sát,Rcho bọn cướp), một khoảng trắng, danh sách được phân tách bằng dấu cách của HP của các thành viên và dòng mới. Đây là tình trạng của các đội. Sau khi cả hai được thực hiện, in một dòng mới. Ví dụ, đây là những gì nó có thể trông giống như vòng đầu tiên:C 50 50 50 50 50 R 50 50 50 50 50Chọn một số ngẫu nhiên từ 1 đến 10 (bao gồm cả 1 và 10). Chúng tôi sẽ gọi số
N. NếuNlà chẵn, những tên cướp thua vòng này; nếu lẻ, cảnh sát mất.Chọn một thành viên ngẫu nhiên trong đội thua cuộc có HP lớn hơn 0 và trừ
NHP. HP của các thành viên sẽ không bao giờ xuất hiện dưới 0 trên trạng thái.Khởi động lại vòng lặp.
Trò chơi kết thúc khi tất cả các thành viên của một đội mất hết HP. Sau đó, phần sau sẽ được in nếu cảnh sát thắng:
C+
R-
và nếu bọn cướp thắng:
R+
C-
Đây là mã golf, vì vậy số lượng nhân vật ngắn nhất sẽ thắng.
Đây là một triển khai mẫu trong 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.