好奇心が猫を殺した?


20

好奇心が猫を殺したと言う人もいます。他の人は、それは箱と毒だったと言います。RSPCAは、ErwinSchrödingerがペットを飼う権利を失う必要があると言っています。

彼の家の外の動物権活動家と。猫の殺人者の科学者は、シュレーディンガーは最終的に彼の最大の発明を打ち出しています。半減期を持つことができるunobtaniumとhandwaviumの特別な放射性混合物で、1グラムの製品であらゆる生物を殺すことができます。残念ながら、彼が最後の猫であるボブでそれをテストしようとしたとき、彼は猫が9つの命を持っていることを忘れていました。いくらかの水はあるが食物がなければ、貧しいボブは最初に製品が彼を殺さなければ正確に1週間(7日間)生きます。

タスク:ミリグラム単位の質量とミリ秒単位の半減期の入力がある場合-両方の整数が2 ^ 31を超える可能性がある場合、ミステリースーパープロダクトが猫を殺すかどうか、または1週間かどうかを出力するプログラムを作成します最初に制限が切れます。答えで指定されているtrue / yes / 1 / anythingは、彼が飢fromで死なない場合を想定しています。

製品が彼を殺すには、合計9グラムが腐敗しなければなりません。したがって、18グラムのサンプルのうち、1つの半減期が経過する必要があります。サンプルに含まれるグラムが9グラム以下の場合、これは決して達成されないため、9グラムが減衰する前に1週間が経過するとすぐに推測できます。

あなたは仮定することができます:

  • ボブは、9グラムが減衰したマイクロ秒で死亡します。
  • 変化による質量の変化は問題ではありません。
  • すべての曜日と時間は、一般的に受け入れられている地球時間に従います。
  • ボブが封印された箱は壊れたり開けたりすることができないため、他の原因による死の可能性はありません。
  • 酸素も問題ではありません。
  • 両方がまったく同時に発生する場合は、どちらの出力も受け入れられます。
  • すべての入力は2 ^ 63-1未満でなければなりません

テストケース:

例:

18000 604800001

9グラムが減衰するには、正確に1半減期が経過する必要があります(18000/2 = 9000ミリグラムまたは9グラム)。1半減期は604800001ミリ秒、つまり168時間1ミリ秒、または正確に1週間1ミリ秒です。ボブはちょうど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
ここで何をしなければならないのかわかりません...各ステップを実行して、出力がtrueorであるfalseかどうかを確認できますか?
ベータ崩壊

こんにちは、PPCGへようこそ!他の人が言ったように、これはもう少し明確化を使用することができます。上記で指摘した点に取り組むと、これはきちんとした挑戦になる可能性があり、再開されるでしょう。将来の参考のために、Sandboxが用意されているため、著者は課題をメインサイトに投稿する前にフィードバックを得ることができます。
-AdmBorkBork

3
出力がTrueになる方程式を教えてください。
xnor

1
@xnor半減期λおよび質量のm場合m-m*(1/2)**(604800000/λ) > 9000(または、エッジケースはどちらの方向にも進む可能性があるため)。
メゴ

回答:


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
ダニエル

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

フーリエ、51バイト

私はこのプログラムを完全に理解していないことを認めざるを得ません...主にTheNumberOneのPythonコードの単なる翻訳です。

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

これは、PPCG用に記述した最初のプログラムで@あり、クリア出力機能を使用していることに注意してください。

オンラインでお試しください!


4
ユーザー名のフィッティング
...-ojdo

はい母@ojdo:D
ベータ崩壊

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は厳密に右から左であるため、括弧は必要ありません。

TryAPLオンライン!


1
19バイト。それは二筋です。
C.テウォルト

@matrixuglyこの場合、他の言語がなぜそんなに毛羽立っているのかを尋ねたいと思います。私は、非常に普通に見える中置記法(数学など)の「もの」ごとに正確に1つの文字を持っています。
アダム
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.