在棋类游戏大流行中,当一个城市包含3个以上的疾病立方体时,就会发生疫情。当爆发发生时,城市中超过3的任何疾病立方体都会被移除,并且每个连接到它的城市都会得到一个疾病立方体。这意味着连锁反应可以,而且将会发生。
。
每一个城市的清单,其中包括:
一个整数列表,表示每个城市在疫情爆发后的疾病立方体数量。
这是密码-高尔夫,所以以字节为单位的最短代码获胜。
发布于 2019-06-13 16:31:14
f=lambda d,e,v=[],n=enumerate:any((D>3)>(i in v)for i,D in n(d))and f([(i in v)and D or(min(3,D)+sum((k not in v)*(d[k]>3)for k in E))for i,(D,E) in n(zip(d,e))],e,v+[i for i,D in n(d)if D>3])or sum(d)最坏的情况O(n)关于城市的数目。d是疾病计数列表,e是按0-indexed位置与d对应的城市连接列表,v是访问数组(显然不应该作为输入)。
对于具有连接( [4, 3, 2] ) 0 <-> 1、1 <-> 2和0 <-> 2的情况,首先,城市0爆发,成为3,并将城市1设置为4,城市2设置为3。然后,城市1爆发并成为3,并将城市2设为4 (城市0已经爆发)。最后,城市2爆发,没有任何影响,所有三个城市的3疾病立方体,共计9。
https://codegolf.stackexchange.com/questions/186837
复制相似问题