Mari bilangan bulat positif yang terdiri dari angka desimal . Biarkan menjadi bilangan bulat positif lainnya.
Untuk tujuan tantangan ini, kita sebut sebuah tiruan dari jika ada setidaknya satu daftar bilangan bulat positif sedemikian rupa sehingga:
dan disebutpeniru timbal balikjika adalah peniru dari dan adalah peniru .
Contoh
dan adalah peniru timbal balik karena:
dan:
Tantangan
Diberi dua bilangan bulat positif dan , tugas Anda adalah mencetak atau mengembalikan nilai kebenaran jika dan adalah peniru timbal balik atau nilai palsu sebaliknya.
Klarifikasi dan aturan
- Anda dapat menggunakan dan dalam format beralasan dan tidak ambigu (mis. Integer, string, daftar digit, ...)
- dan mungkin sama. Jika angka adalah peniru timbal balik dari dirinya sendiri, itu milikA007532.
- Alih-alih nilai kebenaran / kepalsuan, Anda dapat mengembalikan dua nilai konsisten yang berbeda .
- Untuk dan , kode Anda harus selesai dalam waktu kurang dari satu menit . Jika butuh terlalu banyak waktu untuk nilai yang lebih tinggi, namun harus dapat menyelesaikannya secara teori.
- Ini adalah kode-golf .
Uji kasus
Truthy:
1 1
12 33
22 64
8 512
23 737
89 89
222 592
526 853
946 961
7 2401
24 4224
3263 9734
86 79424
68995 59227
32028 695345
Falsy:
1 2
3 27
9 24
24 42
33 715
33 732
222 542
935 994
17 2401
8245 4153
code-golf
decision-problem
integer
Arnauld
sumber
sumber
17 2401 -> false
. Saya hampir tersandung ini.Jawaban:
Brachylog , 19 byte
Cobalah online!
Output
true.
ataufalse.
Penjelasan
sumber
2401
berisi0
yang tidak berfungsi dengan cara saya memeriksa yangI
benar-benar positif (karena saya memetakannya pada keduanyaI
dan digit untuk menyimpan byte)Sekam , 17 byte
Cobalah online! Selesaikan semua test case di bawah 1000 dalam waktu sekitar 11 detik.
Penjelasan
Mengapa ini berhasil?
Jika kita memilikiB=dp11+⋯+dpnn dimana di adalah digit dan pi adalah bilangan bulat positif, maka dpii≤B untuk semua i , atau ekuivalen pi≤logdiB . Kita dapat mengabaikan case di≤1 , karena exponentiating 0 atau 1 tidak mengubahnya. Dalam program saya, ruang pencarian adalah1≤pi≤B−−√ (untuk mematuhi batasan waktu; Saya akan menggunakan1≤pi≤B sebaliknya), jadi jika kita memiliki⌊logdiB⌋≤⌊B−−√⌋ , maka semuanya baik-baik saja. Jikadi≥3 , ini berlaku untuk semua bilangan asliB , jadi satu-satunya kasus berbahaya adalahdi=2 . Kami memiliki⌊log2B⌋>⌊B−−√⌋ hanya untukB=8 . Dalam hal ini23=8 , tetapi pencarian hanya mempertimbangkan eksponen1 dan2 . Jika yang lain NoA berisi angka2 , baik itu memiliki angka nol lain juga (sehingga eksponen dari2 tidak bisa3 di sum), atauA=2⋅10k untuk beberapak . Dalam kasus terakhir,SEBUAH bukan kekuatan8 , jadi itu tidak bisa menjadi peniru dariB lagi pula, dan program dengan benar mengembalikan nilai palsu terlepas dari perhitungan lainnya.
sumber
d
mengambil argumen implisit. Saya menjelaskan ini dalam penjelasannya. 2. Saya menambahkan argumen untuk kebenaran program.Python 2 , 102 byte
Cobalah online!
sumber
05AB1E ,
2622 byteMengambil input sebagai daftar (yaitu
[526,853]
).Cobalah secara online atau verifikasi sebagian besar kasus uji dalam kisaran
[1,999]
.Mirip dengan jawaban lama saya di bawah ini, kecuali bahwa
[1,n]
daftar itu di-hardcode[1,100]
, dan itu membuat daftar cartesian dua kali, satu kali untuk setiap pemetaan input, yang merupakan hambatan utama dalam hal kinerja.Jawaban 26 byte yang lebih baik untuk kinerja:
Dalam versi ini saya berdagang dalam beberapa byte untuk membuat kinerja jauh lebih baik sehingga dapat berjalan
[1,1000]
dengan mudah. Kasus uji yang berisi angka dalam kisaran[1,9999]
dilakukan dalam waktu sekitar satu detik di TIO. Uji kasus dalam kisaran[10000,99999]
sekitar 10-15 detik pada TIO. Di atas itu akan habis.Cobalah secara online atau verifikasi semua kasus uji dengan angka dalam kisaran
[1,9999]
.Penjelasan:
sumber
Haskell , 77 byte
Cobalah online!
sumber
Perl 6 ,
87 8469 byte-15 byte terima kasih kepada nwellnhof!
Cobalah online!
Blok kode anonim yang mengembalikan Benar atau Salah.
Penjelasan:
sumber
JavaScript (Node.js) ,
1169289868377 byteCobalah online!
Harapkan input sebagai
(A)(B)
.sumber
J , 56 byte
Cobalah online!
Yay, definisi eksplisit bersarang!
Bagaimana itu bekerja
sumber
Python 2 ,
149147143139132118108107106105 byteCobalah online!
-4 byte, terima kasih kepada Vedant Kandoi
sumber
>0
dapat dihapus.not a
:a<1
.b==0
:b<1
b<0
tidak berfungsiJ, 68 byte
Saya pikir J akan tampil cukup baik di sini, tetapi akhirnya menjadi lebih keras dari yang saya harapkan dan akan menyukai saran untuk bermain golf lebih lanjut ...
Cobalah online!
CATATAN: kami mengurangi 3 karakter dari jumlah TIO di sana sejak itu
f=.
pada fungsi utama tidak dihitungungolfed
sumber