Keingintahuan membunuh kucing itu?

20

Beberapa orang mengatakan rasa ingin tahu membunuh kucing itu. Lainnya mengatakan itu kotak dan racun. RSPCA mengatakan Erwin Schrödinger perlu kehilangan hak untuk memiliki hewan peliharaan.

Dengan aktivis hak-hak binatang di luar rumahnya. The kucing pembunuh ilmuwan Schrödinger akhirnya datang dengan penemuan terbesarnya. Campuran khusus radioaktif dari unobtanium dan handwavium yang dapat memiliki waktu paruh, dan satu gram produk ini mampu membunuh makhluk hidup apa pun. Sayangnya, ketika ia mencoba mengujinya pada kucing terakhirnya: Bob, ia lupa bahwa kucing memiliki 9 nyawa, dan karenanya perlu 9 gram untuk membunuh. Dengan sedikit air tetapi tanpa makanan, Bob yang malang akan hidup tepat 1 minggu (7 hari) jika produk itu tidak membunuhnya terlebih dahulu.

Tugas: Diberikan input dari massa dalam miligram dan waktu paruh dalam milidetik - keduanya bilangan bulat yang dapat melebihi 2 ^ 31, menulis sebuah program yang menampilkan apakah produk super misteri membunuh kucing, atau jika waktu 1 minggu batas berakhir terlebih dahulu. Asumsikan benar / ya / 1 / apa pun yang ditentukan dalam jawaban adalah untuk saat dia tidak mati karena kelaparan.

Agar produk membunuhnya, total 9 gram harus membusuk. Jadi dari sampel 18 gram, 1 paruh harus berlalu. Jika sampel mengandung kurang dari atau sama dengan 9 gram, ini tidak akan pernah tercapai, dan dengan demikian dapat langsung diasumsikan 1 minggu akan berlalu sebelum 9 gram meluruh.

Anda dapat mengasumsikan:

  • Bob meninggal mikrodetik 9 gram telah membusuk.
  • Perubahannya massal karena pembusukan tidak masalah.
  • Semua hari dan waktu mengikuti waktu bumi yang diterima secara umum.
  • Kotak yang disegel Bob tidak bisa dipecahkan dan tidak bisa dibuka, jadi tidak ada kemungkinan kematian karena sebab lain.
  • Oksigen juga tidak ada masalah.
  • Jika keduanya terjadi pada waktu yang sama, output keduanya dapat diterima.
  • Semua input harus di bawah 2 ^ 63-1

Kasus uji:

Contoh:

18000 604800001

Agar 9 gram membusuk, tepat 1 setengah masa hidup harus berlalu (18000/2 = 9000 miligram atau 9 gram). 1 setengah kehidupan adalah 604800001 milidetik, atau 168 jam dan 1 milidetik, atau tepat 1 minggu dan 1 milidetik. Karena Bob meninggal karena kelaparan pada 1 minggu, hasilnya salah karena ia meninggal karena kelaparan tepat sebelum batas produk 9 gram tercapai.

8000 40000 false

70000 800 true

18000 604800000 either

18000 604800001 false

18000 604799999 true

1 1 false

100000 1 true

1000000000 1000000000 true

Mencetak: Secara alami kami ingin penderitaan Bob berakhir dengan cepat, dan waktu paruh yang lebih pendek adalah yang terbaik. Waktu paruh dan byte keduanya berakhir di E, jadi jelas jumlah byte terpendek menang.

Boib
sumber
6
Anda menyadari bahwa zat radioaktif tidak pernah meluruh sepenuhnya
Rohan Jhunjhunwala
1
Saya tidak tahu apa yang harus kita lakukan di sini ... Bisakah Anda menjalani setiap langkah untuk mengetahui apakah output harus trueatau tidak false?
Beta Decay
Hai dan selamat datang di PPCG! Seperti yang orang lain katakan, ini bisa menggunakan sedikit lebih banyak klarifikasi. Jika Anda membahas poin yang diangkat di atas, saya pikir ini bisa menjadi tantangan yang rapi, dan itu akan dibuka kembali. Untuk referensi di masa mendatang, kami memiliki Sandbox yang tersedia sehingga penulis dapat memperoleh umpan balik tentang tantangan sebelum mempostingnya ke situs utama.
AdmBorkBork
3
Bisakah Anda memberi kami persamaan yang hasilnya benar?
xnor
1
@ xnor Untuk paruh λdan massa m, m-m*(1/2)**(604800000/λ) > 9000(atau , karena kasing bisa jalan baik)
Mego

Jawaban:

9

Python 3, 33 byte

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

Penjelasan:

         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

Coba di sini

TheNumberOne
sumber
Juga 33 byte:lambda a,b:2**(-6048e5/b)+9e3/a<1
Daniel
5

CJam (22 byte)

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

Demo online

Pembedahan

Penjelasan singkat tentang matematika: jika paruh λwaktu kemudian setelah waktu tproporsi bahan radioaktif yang tersisa adalah (1/2)^(t/λ), maka proporsi membusuk 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! ?
Peter Taylor
sumber
5

Fourier, 51 byte

Saya harus mengakui bahwa saya tidak sepenuhnya memahami program ini ... Terutama hanya terjemahan dari kode Python TheNumberOne.

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

Catatan ini adalah program pertama yang saya tulis untuk PPCG yang menggunakan @, fungsi output yang jelas.

Cobalah online!

Peluruhan Beta
sumber
4
Menyesuaikan nama pengguna ...
ojdo
@ojdo Haha ya: D
Beta Decay
4

Sebenarnya, 20 byte

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

Cobalah online!

Penjelasan:

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?
Mego
sumber
3

Dyalog APL , 19 byte

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

9E3≤ adalah 9000 lebih kecil dari atau sama dengan

⊣- argumen kiri (massa) minus

⊣× kali argumen kiri

.5*  ½ untuk kekuatan

6048E5÷⊢ 604800000 dibagi dengan argumen yang tepat (waktu paruh)

Tidak perlu tanda kurung, karena APL benar-benar dari kanan ke kiri.

TryAPL online!

Adm
sumber
1
19 byte Itu jahat.
C. Tewalt
@matrixugly Dalam hal ini, saya akan bertanya mengapa bahasa lain memiliki begitu banyak bulu. Saya memiliki tepat satu karakter per "hal" dalam notasi infix (seperti matematika) yang tampak normal.
Adám