誰もがConwayのGame of Lifeを常に実装したいと考えています。つまらない!代わりに警官と強盗をしましょう!
警官と強盗の2つのチームがあります。各チームには、それぞれ50のヘルスを持つ5人のメンバーがいます。プログラムは継続的にループします。各反復で、次のことが発生します。
チームごとに、最初の文字(
C警官、R強盗)、スペース、スペースで区切られたメンバーのHPのリスト、および改行を印刷します。これがチームのステータスです。両方が完了したら、別の改行を印刷します。たとえば、最初のラウンドのように見えるものは次のとおりです。C 50 50 50 50 50 R 50 50 50 50 501〜10の乱数(1と10の両方を含む)を選択します。番号を呼び出します
N。N偶数であれば、強盗はこのラウンドを失います。奇数の場合、警官は負けます。HPが0より大きい負けたチームのメンバーをランダムに選び、
NHP を差し引く。メンバーのHPはステータスで0を下回ってはなりません。ループを再開します。
1つのチームのすべてのメンバーがHPをすべて失うと、ゲームは終了します。その後、警官が勝った場合、次のように出力されます:
C+
R-
そして強盗が勝った場合:
R+
C-
これはコードゴルフであるため、最短のキャラクターが勝ちます。
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いるのは11個までです。