首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >9名忍者死亡

9名忍者死亡
EN

Code Golf用户
提问于 2016-01-09 02:33:54
回答 4查看 1K关注 0票数 11

灵感来自于聊天中的对话。

你在这个挑战中的目标是模仿一个忍者,并计算他已经死了多少人。

规范

你的忍者开始时还剩9人死亡。他还得到了一个完整的开始健康作为投入。

然后,他把生活中改变他健康的事件列表作为输入。这些可以是负整数、正整数或零整数。

在任何时候,如果他的健康达到或低于零,他就失去了生命,他的健康回到了最初的健康状态。

你的程序应该报告他留下的死亡人数。如果他的剩馀值为零或更少,则应该输出dead

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

测试用例

代码语言:javascript
复制
3, [] -> 9
100, [-20, 5, -50, 15, -30, -30, 10] -> 8
10, [-10, -10, -10, -10] -> 5
10, [-10, -10, -10, -10, -10, -10, -10, -10, -10] -> dead
0, [] -> dead
0, [1] -> dead
100, [10, -100] -> 9
EN

回答 4

Code Golf用户

发布于 2016-01-09 02:54:16

CJam,35字节

代码语言:javascript
复制
q~_@{+_1<{W$}&}/](\,_A<@*A@-"dead"?

在网上试试!

票数 4
EN

Code Golf用户

发布于 2016-01-09 07:22:51

Pyth,32

代码语言:javascript
复制
 u+?>GZG&=hZQH+E0Q?&Q<Z9-9Z"dead

请注意,这里有一个前导空间。这可能不是最好的方法,但这是首先想到的事情。它通过将值添加到忍者的健康值,并增加计数器和重置当它下降到零时,减少了过多的输入。我们在列表的末尾加一个0来计算最后一次更改是否杀死了忍者,然后做一些检查,看看忍者是否死了。零开始健康案例是硬编码。

测试套房

票数 1
EN

Code Golf用户

发布于 2016-01-09 20:03:34

MATL,32

代码语言:javascript
复制
9yi"@+t0>~?x1-y]]g*wxt0>~?x'dead'

解释

代码语言:javascript
复制
9        # push 9
y        # duplicate 2nd value to top (there is none -> get it from input first)
i        # get input and push it

堆栈现在看起来如下(用于输入100, [-20, 5, -50, 15, -30, -30, 10]):

代码语言:javascript
复制
100        9        100        [-20, 5, -50, 15, -30, -30, 10]

reload   deaths    health
value    left

弹出数组和循环

代码语言:javascript
复制
"            ]    # loop
 @+               # add to health
   t0>~?    ]     # if health is zero or less
        x1-y      # delete health counter, decrement life counter, reload health

如果健康状况为零,则将死亡计数器设置为零。initial health = 0的特殊案例处理。

代码语言:javascript
复制
g        # health to bool
*        # multiply with death counter

从堆栈中删除重新加载值

代码语言:javascript
复制
wx

如果死亡计数器是零或更少,删除它并打印‘死’代替。

代码语言:javascript
复制
t0>~?x'dead'
票数 1
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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