5
滴答奎因炸弹!
挑战: 创建一个采用整数输入的程序或函数,该程序或函数输出一个新的程序/函数,如下所示。 输入: 整数n:时间炸弹爆炸前的时间(以秒为单位)。 输出: 以秒n为单位的时间输入的原始程序将输出执行以下操作的新程序/功能: 已经n过去了秒自上次程序运行?打印BOOM! 否则:打印一个程序/函数,该程序/函数在自身运行时将计时器重置为n秒(并且与第一个输出的程序/函数相同)。 注意:它与第一个输出的程序/函数不完全相同(至少在大多数语言中是这样),因为开始时间已更改(请参见下面的说明示例)。 伪代码示例: 假设原始程序是ABC,输入是60秒: ABC&60输出DEF(60)。 如果DEF(60)在60秒内运行,它将输出DEF_G(60),其作用与DEF(60),但是具有新的开始时间。 如果DEF(60)在60秒后运行,它将输出BOOM!。 澄清示例“开始时间”的含义: 输入60秒的基本程序在处运行12:00:00。它以开始时间输出第一个输出程序12:00:00。 开始时间为的第一个输出程序在12:00:00处运行12:00:45。它以开始时间输出第二个输出程序12:00:45。 开始时间为的第三个输出程序在12:00:45处运行12:01:25。它输出开始时间为的第四输出程序12:01:25。 开始时间为的第四个输出程序在12:01:25处运行12:05:00。它将输出BOOM!。 请注意,第一个输出将BOOM!在之后输出12:01:00,但是输出程序已进行,因此即使12:01:25在第3步,它仍将输出下一个程序,而不是输出BOOM!(因为输出程序的开始时间超过了第一个输出程序) 。 挑战规则: 默认的规则是规则。 至少n应该过去几秒钟。因此,如果输入为60,开始时间为12:00:00,12:01:00则仍然会输出v2程序,但12:01:01会输出BOOM!。 输出程序将不接受任何输入(除了较短的空未使用参数外)。开始时间应以“硬编码”值的形式提供给下一个程序(这就是为什么输出程序的输出与前一个程序(在大多数语言中)不完全相同的原因。 仅以字节为单位计算主程序/功能的大小。 您可以将程序/函数输出为字符串(或相当合理的格式,例如字节/字符数组/列表),如果您的语言支持,则输出为函数,也可以输出其他合理格式(请询问您是否不确定)。 通用规则: 这是 代码高尔夫球,因此以字节为单位的最短答案会获胜。 不要让代码高尔夫球语言阻止您发布使用非代码高尔夫球语言的答案。尝试针对“任何”编程语言提出尽可能简短的答案。 标准规则适用于您的答案,因此您可以使用STDIN / STDOUT,具有正确参数的函数/方法和返回类型的完整程序。您的来电。 默认漏洞是禁止的。 如果可能的话,请添加一个带有测试代码的链接。 另外,如有必要,请添加说明。