好奇心杀死了那只猫?


20

有人说,好奇心杀死了那只猫。有人说这是箱子和毒药。RSPCA称ErwinSchrödinger必须失去拥有宠物的权利。

与动物权利活动家在他家门外。该猫凶手科学家薛定谔终于拿出了他最伟大的发明。锑和hand的特殊放射性混合物,可以具有任何半衰期,并且一克产品能够杀死任何生物。不幸的是,当他尝试在他的最后一只猫:鲍勃(Bob)上进行测试时,他忘记了猫有9条生命,因此需要9克来杀死。有了一些水但没有食物,可怜的鲍勃如果不先杀了他就可以活1周(7天)。

任务:给定以毫克为单位的质量和以毫秒为单位的半衰期的输入-这两个整数都可以超过2 ^ 31,编写一个程序,输出神秘的超级产品是否杀死了猫,或者是1周时间限制先过期。假设答案是true / yes / 1 /,是指他没有死于饥饿。

为了使产品杀死他,总共必须腐烂9克。因此,在18克样品中,必须经过1个半衰期。如果样品中的含量小于或等于9克,将永远无法实现,因此可以立即假定9克腐烂之前要经过1周。

您可以假设:

  • 鲍勃死了,微秒下降了9克。
  • 由于衰减而变化的质量无关紧要。
  • 所有的日子和时间都遵循公认的地球时间。
  • 鲍勃被密封的盒子是牢不可破且无法打开的,因此不会有其他原因导致的死亡。
  • 氧气也没有问题。
  • 如果两者在同一时间发生,则任何一个输出都是可以接受的。
  • 所有输入应低于2 ^ 63-1

测试用例:

例:

18000 604800001

要使9克衰减,必须准确地通过一半的寿命(18000/2 = 9000毫克或9克)。1个半衰期是604800001毫秒,即168小时1毫秒,或者正好是1周零1毫秒。由于Bob正好在1周内死于饥饿,因此输出结果是错误的,因为他在达到9克产品上限之前死于饥饿

8000 40000 false

70000 800 true

18000 604800000 either

18000 604800001 false

18000 604799999 true

1 1 false

100000 1 true

1000000000 1000000000 true

计分:自然,我们希望鲍勃的痛苦尽快结束,因此半衰期较短是最好的。半衰期和字节均以E结尾,因此显然最短的字节数为准。


6
您确实意识到放射性物质永远不会完全腐烂
Rohan Jhunjhunwala

1
我不知道我们在这里做...你可以通过每一个步骤,以找出是否输出应该是truefalse
Beta Decay's

嗨,欢迎来到PPCG!正如其他人所说,这可能需要更多说明。如果您解决以上问题,我认为这可能是一个艰巨的挑战,它将重新开放。供以后参考,我们确实提供了一个沙箱,因此作者可以在将挑战发布到主站点之前获得有关挑战的反馈。
AdmBorkBork

3
您能否给我们提供输出为True的方程式?
xnor

1
@xnor对于半衰期λ和质量mm-m*(1/2)**(604800000/λ) > 9000(或,因为边缘情况可以任意选择)。
Mego

Answers:


9

Python 3,33个字节

lambda a,b:a-a*.5**(6048e5/b)>9e3

说明:

         6048e5         # number of milliseconds in 1 week
               /b       # half-lifes per week
  a*.5**(        )      # mgs of substance remaining after 1 week
a-                      # mgs of substance decayed after one week
                  >9e3  # return true if more than 9000mgs has decayed in 1 week

试试这里


同样是33个字节:lambda a,b:2**(-6048e5/b)+9e3/a<1
丹尼尔(Daniel)

5

CJam(22字节)

q~dX.5@6048e5\/#-*9e3>

在线演示

解剖

数学的简要解释:如果半衰期是λ在时间之后t,则剩余的放射性物质(1/2)^(t/λ)的比例为,因此衰减的比例为1 - (1/2)^(t/λ)

q~d         e# Parse input, ensuring that the later division will use doubles
X.5@6048e5\ e# Rearrange stack to: m 1 0.5 6048e5 λ
/#-*        e# Div, pow, sub, mul, giving the total mass decayed after a week
9e3>        e# Is it OVER 9000! ?

5

Fourier,51个字节

我不得不承认我不完全了解该程序...主要只是TheNumberOne的Python代码的翻译。

oI~M~NI~H604800000~G>H{1}{G/H^(M/2~Mi^~i)N-M>9000@o}

请注意,这是我为PPCG编写的第一个程序,使用@了clear输出功能。

在线尝试!


4
适合用户名...
ojdo '16

@ojdo Haha是的:D
Beta Decay

4

其实是20个位元组

5╤:6048*/1½ⁿ1-*93╤*<

在线尝试!

说明:

5╤:6048*/1½ⁿ1-*93╤*<
5╤                    10**5
  :6048               6048
       *              6048*10**5 (milliseconds in 1 week)
        /             divide by half-life
         1½ⁿ          (1/2)**(^)
            1-        1-(^) (% of sample decayed after 1 week)
              *       multiply by sample mass (mass decayed after 1 week)
               93╤*   9*10**3 (9000)
                   <  is 9000 < sample mass decayed?

3

Dyalog APL,19 个字节

9E3≤⊣-⊣×.5*6048E5÷⊢

9E3≤ 小于或等于9000

⊣- 左参数(质量)减去

⊣× 左辩论时间

.5*  ½的幂

6048E5÷⊢ 604800000除以正确的论点(半衰期)

不需要括号,因为APL严格从右到左。

在线尝试APL!


1
19个字节。那是全然的。
C. Tewalt

@matrixugly在这种情况下,我想问一下为什么其他语言这么多的绒毛。我在一个看起来很普通的后缀(如数学)表示法中,每个“事物”都只有一个字符。
2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.