Saya meminta random.org untuk 128 bilangan bulat acak antara 0 dan 2 32 - 1. Karena generator angka acak sangat ingin memberikan 64 angka pertama terlebih dahulu, mereka jelas lebih acak daripada 64 lainnya.
Tulis program atau fungsi lengkap yang mengembalikan hasil yang benar ketika salah satu dari 64 integer berikut adalah input:
[1386551069, 1721125688, 871749537, 3410748801, 2935589455, 1885865030, 776296760, 614705581, 3841106923, 434616334, 1891651756, 1128215653, 256582433, 310780133, 3971028567, 2349690078, 489992769, 493183796, 3073937100, 3968540100, 777207799, 515453341, 487926468, 2597442171, 950819523, 1881247391, 3676486536, 3852572850, 3498953201, 2544525180, 297297258, 3783570310, 2485456860, 2866433205, 2638825384, 2405115019, 2734986756, 3237895121, 1560255677, 4228599165, 3106247743, 742719206, 2409129909, 3008020402, 328113612, 1081997633, 1583987616, 1029888552, 1375524867, 3913611859, 3488464791, 732377595, 431649729, 2105108903, 1454214821, 997975981, 1764756211, 2921737100, 754705833, 1823274447, 450215579, 976175934, 1991260870, 710069849]
Dan hasil pemalsuan untuk 64 nomor lainnya:
[28051484, 408224582, 1157838297, 3470985950, 1310525292, 2739928315, 3565721638, 3568607641, 3857889210, 682782262, 2845913801, 2625196544, 1036650602, 3890793110, 4276552453, 2017874229, 3935199786, 1136100076, 2406566087, 496970764, 2945538435, 2830207175, 4028712507, 2557754740, 572724662, 2854602512, 736902285, 3612716287, 2528051536, 3801506272, 164986382, 1757334153, 979200654, 1377646057, 1003603763, 4217274922, 3804763169, 2502416106, 698611315, 3586620445, 2343814657, 3220493083, 3505829324, 4268209107, 1798630324, 1932820146, 2356679271, 1883645842, 2495921085, 2912113431, 1519642783, 924263219, 3506109843, 2916121049, 4060307069, 1470129930, 4014068841, 1755190161, 311339709, 473039620, 2530217749, 1297591604, 3269125607, 2834128510]
Input apa pun selain salah satu dari 128 angka ini adalah perilaku yang tidak terdefinisi.
Jika solusi Anda ditemukan secara terprogram, silakan juga bagikan kode yang digunakan untuk menghasilkannya!
Ini adalah kode-golf , jadi solusi terpendek dalam byte menang.
code-golf
number
random
classification
decision-problem
lirtosiast
sumber
sumber
"Maybe, not enough information."&
33 byte, jawab pertanyaannya.[4 20 79]
dari[8 18 100]
dapat dilakukan oleh[99 79 20 17 7 4]
(lihat apakah Anda dapat menemukan polanya). Tentu, bagian awal dari jawaban Anda mungkin menggunakan modulo yang jauh lebih kecil daripada input, tetapi bagian belakang terdiri dari pengalihan satu elemen pada satu waktu.Jawaban:
CJam,
535247 byteAda yang tidak diinginkan, tetapi dua string dapat diperoleh
masing-masing. Ini juga menunjukkan bahwa titik kode di bawah 256.
Ini adalah jawaban berantai modulo, tempat kami menerapkan modulos berikut ke integer input, secara berurutan:
Karena daftar ini berisi bilangan bulat lebih besar dari 255, daftar dikodekan menggunakan dua karakter masing-masing. Penguraian dilakukan oleh
2/Dfb
, yang membagi string menjadi potongan-potongan dengan panjang dua dan mengkonversi masing-masing dari nomor basis 13 (misalnya88*13 + 9 = 1153
). Namun, ada dua pengecualian untuk decoding:136
) tidak termasuk (lihat di bawah),242
) kurang dari 256 dan memecah array panjang-aneh menjadi potongan-potongan ukuran 2 akan meninggalkan array ukuran 1 di akhir. Terima kasih kepada @ MartinBüttner untuk tip ini!Setelah modulos mengurangi integer input ke jumlah yang relatif kecil, kami melakukan pencarian dari sebuah tabel. Tabel ini dikodekan melalui string kedua, yang dikonversi ke
312
nomor basis kemudian diterjemahkan ke basis 2, yang kami indeks. Karena array indexing CJam membungkus, kita dapat meninggalkan modulo final seperti yang disebutkan sebelumnya.Cobalah online | Suite uji
sumber
Retina , 117 byte
Sebuah jawaban golf regex, menghasilkan bilangan bulat positif untuk kebenaran dan nol untuk kepalsuan.
Cobalah online! | Test suite - kebenaran | Test suite - falsy | Regex101
sumber
JavaScript (ES6) 233
Fungsi anonim mengembalikan 0 sebagai
falsy
dan bukan nol sebagaitruthy
Memeriksa 3 digit terakhir dalam representasi angka dalam basis 36.
String cek dibuat demikian:
Uji
sumber
Mathematica,
218217 byteUntuk alasan apa pun, satu set moduli ada yang memungkinkan kita untuk membedakan dua set hanya dengan apakah atau tidak, setelah menerapkan moduli, hasilnya nol atau tidak. Daftar panjang moduli dihasilkan oleh program ini:
Output pertama adalah moduli, output kedua dan ketiga adalah dua daftar, setelah menerapkan moduli. Dua daftar panjang adalah set.
sumber
PowerShell, v3 + 194 byte
Sedikit pendekatan yang berbeda, jadi saya pikir saya akan mempostingnya. Ini tidak akan menang sesingkat mungkin, tetapi mungkin memberikan ide kepada orang lain untuk mempersingkat kode mereka.
Kami masih mengambil integer input
$args[0]
dan menerapkan operasi modulo, jadi tidak ada yang berbeda di sana. Dalam contoh di atas, kami menggunakan-in
operator (maka persyaratan v3 +) sehingga ini akan menampilkanTrue
nilai yang ada dalam kasus uji kebenaran.Namun, saya mencoba untuk menemukan array yang dihasilkan di mana kita dapat memanfaatkan
..
fungsi rentang untuk mempersingkat jumlah byte, namun masih memiliki array yang berbeda antara nilai-nilai yang benar dan palsu. Kita bisa melakukan ini karena perilaku selain input truey / falsey tidak terdefinisi, jadi jika rentang menangkap nilai di luar input truey / falsey, itu tidak masalah output.Ini adalah proses yang cukup manual sejauh ini, karena tujuannya adalah untuk mencoba dan menemukan modulo di mana salah satu array yang benar atau salah memiliki kesenjangan besar antara angka dan array lainnya memiliki jumlah angka yang besar di celah itu. Sebagian besar saya telah pergi dengan intuisi dan naluri merasa sejauh ini, tetapi saya mungkin akhirnya menulis brute-forcer untuk menyelesaikan ini. Di atas adalah yang terpendek yang saya (kebanyakan manual) temukan sejauh ini.
sumber