首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >大流行爆发计算器

大流行爆发计算器
EN

Code Golf用户
提问于 2019-06-13 16:05:37
回答 1查看 523关注 0票数 -1

在棋类游戏大流行中,当一个城市包含3个以上的疾病立方体时,就会发生疫情。当爆发发生时,城市中超过3的任何疾病立方体都会被移除,并且每个连接到它的城市都会得到一个疾病立方体。这意味着连锁反应可以,而且将会发生。

重要注意事项:每个城市在每一个连锁反应中只可能爆发一次。

输入

每一个城市的清单,其中包括:

  • 表示疾病立方体数量的整数。
  • 还有一些表格的标识符(A,B.AA,AB) (允许小写)表示其所连接的列表顺序引用的名称。

输出

一个整数列表,表示每个城市在疫情爆发后的疾病立方体数量。

获胜条件

这是密码-高尔夫,所以以字节为单位的最短代码获胜。

EN

回答 1

Code Golf用户

发布于 2019-06-13 16:31:14

Python 3,201个字节

代码语言:javascript
复制
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 <-> 11 <-> 20 <-> 2的情况,首先,城市0爆发,成为3,并将城市1设置为4,城市2设置为3。然后,城市1爆发并成为3,并将城市2设为4 (城市0已经爆发)。最后,城市2爆发,没有任何影响,所有三个城市的3疾病立方体,共计9

票数 3
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/186837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档