Diberikan 2 bilangan bulat non-negatif sebagai input, menghasilkan bilangan bulat non-negatif yang tidak dapat dibuat melalui operator matematika pada 2 input.
Misalnya, input yang diberikan 2
dan 3
, 6, 0, 5, 1, 9, 8, 23, 2
semua output tidak valid.
Operasi yang harus diperhitungkan adalah:
Addition (a + b)
Subtraction (a - b) and (b - a)
Multiplication (a * b)
Division (a / b) and (b / a)
Modulus (a % b) and (b % a)
Exponentiation (a ** b) and (b ** a)
Bitwise OR (a | b)
Bitwise XOR (a ^ b)
Bitwise AND (a & b)
Concatenation (a.toString() + b.toString()) and (b.toString() + a.toString())
Dalam kasus di mana operasi akan mengarah ke non-integer (seperti 2/3), selalu lantai. Begitu2 / 3 = 0
Asumsikan setiap operasi yang tidak valid (seperti membaginya dengan 0) menghasilkan 0.
Memasukkan
2 bilangan bulat non-negatif.
Metode I / O standar diterima
Anda dapat berasumsi bahwa input akan selalu berada dalam rentang yang dapat ditangani untuk bahasa Anda, namun ingat celah standar masih berlaku.
Keluaran
Setiap bilangan bulat non-negatif yang tidak dapat dibuat melalui salah satu dari operasi di atas pada 2 input.
Testcases
Input -> Invalid outputs
2, 3 -> 0, 1, 2, 3, 5, 6, 8, 9, 23, 32
0, 0 -> 0
17, 46 -> 0, 2, 12, 17, 29, 63, 782, 1746, 4617, 18487710785295216663082172416, 398703807810572411498315063055075847178723756123452198369
6, 6 -> 0, 1, 6, 12, 36, 66, 46656
1, 1 -> 0, 1, 2, 11
Mencetak gol
Ini adalah kode-golf sehingga byte paling sedikit menang!
Jawaban:
Retina , 3 byte
Cobalah online!
Membawa input yang dipisahkan oleh spasi (atau karakter non-baris tunggal)
Ganti semua digit dengan
1
, dan gabungkan angka yang dihasilkan dengan yang lain1
.Bukti kebenaran
Atas perkenan Martin Ender
Operasi ini menghitung hasil dengan satu digit lebih banyak daripada jumlah digit dari dua angka bersamaan; satu-satunya operasi yang dapat menghasilkan hasil yang begitu besar adalah eksponensial.
Hasilnya adalah repunit (angka yang semua digit 1).
"Sudah diketahui [sic] [...] bahwa repunit di base 10 tidak bisa [...] menjadi kekuatan yang sempurna." Ini berarti bahwa hasil ini tidak dapat dihasilkan oleh eksponensial juga.
sumber
1
, itu hanya mengambil input sebagai string dari 2 angka yang dipisahkan ruang, dan mengganti setiap karakter dengan 1. Tapi itu dikatakan saya tidak dapat menemukan contoh yang membuktikan Anda salah. .. yetJelly , 3 byte
Cobalah online!
Penjelasan:
sumber
Python 2 , 8 byte
Cobalah online!
Mengambil daftar dua string angka sebagai input, menghasilkan string angka tunggal. Menggabungkan angka dengan
1
di tengah.Hasilnya memiliki terlalu banyak digit untuk apa pun kecuali eksponen. Perhatikan bahwa output untuk
(x,y)
memiliki satu digit lebih banyak darix
dany
digabungkan, kecualix
atauy
adalah 0. Untuk eksponen, kami memeriksa kami memeriksa bahwa ini berartix**y
tidak pernah cocok.x
0 atau 1, maka begitu jugax**y
, yang terlalu kecily<=1
, makax**y<=x
itu terlalu kecily==2
, makax**2
harus memiliki dua digit lebih banyak daripadax
. Ini terjadi hinggax=316
, dan kami tidak dapat memeriksa semua itu bekerja.y==3
, makax**3
harus memiliki dua digit lebih banyak daripadax
. Ini terjadi hinggax=21
. Kami dapat memeriksa bahwa tidak ada yang berfungsi.3<y<13
, makax**y
cepat terlalu lama. Itu hanya masuk akal memiliki jumlah digit yang tepat untukx<=25
, dan kita dapat memeriksanya.y>=14
, makax**y
terlalu lama bahkan untuk yang sekecil mungkinx==2
.sumber
CJam (7 karakter)
Ini menciptakan angka
(a+b+2)!
yang lebih besar dari angka terkait terbesar di hampir semua kasus.Itu cukup jelas bahwa jumlah terkait terbesar harus menjadi salah satu
a ** b
,b ** a
,concat(a, b)
,concat(b, a)
.Jika kita mempertimbangkan logaritma, kita menemukannya
log(a ** b) = b log a
log(concat(a, b)) ~= (log a) + log (b)
log((a + b + 2)!) ~= (a + b + 2) log (a + b + 2) - (a + b + 2)
Jadi asimptot lebih besar, dan kita hanya perlu khawatir tentang beberapa kasus kecil. Bahkan, satu-satunya kasus di mana nilai output tidak lebih besar dari semua angka terkait adalah
0, 1
(atau1, 0
), yang diberikannya6
dan angka terkait terbesar adalah10
.sumber
JavaScript (ES6), 15 byte
Mengambil input dalam sintaks currying.
a² + b² + 1 akan gagal untuk banyak entri seperti 3² + 5² + 1 = 35 atau 7² + 26² + 1 = 726 (gabungan). a² + b² + 2 harus aman. Ini diuji secara mendalam untuk 0 ≤ a ≤ b ≤ 50000 .
Demo
Tampilkan cuplikan kode
sumber
Python,
1159579 byteSolusi sederhana dan bodoh. Jangan ragu untuk mengalahkan saya.
+12 byte karena bodoh
x/0
.-20 byte terima kasih kepada @RobinJames
-16 byte terima kasih kepada @tehtmi
sumber
Python, 27 byte
Menghasilkan angka yang lebih besar dari semua angka terkait.
Cobalah online!
-1 byte terima kasih kepada Kevin Cruijssen.
-2 byte berkat Dead Possum.
sumber
:
jika saya tidak salah.f=
- lambda tanpa nama dapat diterima+
), tapi saya tidak sepenuhnya yakin.Python 2, 25 byte
Menggabungkan dan menambahkan 3
Cobalah online
sumber
JS (ES6), 12 byte
Algoritma yang sama dengan jawaban python ini . Mengambil input sebagai array int.
sumber
Braingolf , 4 byte
Cobalah online! (Header & Footer adalah Penerjemah, kode adalah kode braingolf aktual, args adalah input)
Keluaran
(a+b+9)**(a+b+9)
Dari pengujian saya, saya tidak dapat menemukan pasangan yang tidak berfungsi.
sumber
Python 2 , 19 byte
Cobalah online!
Saya cukup yakin bit shift bekerja untuk semua kasus, tapi saya tidak 100% melakukannya. Bagaimanapun, ini menghemat beberapa byte dari versi eksponensial.
sumber
J , 5 byte
Hanya terjemahan dari Jelly .
Cobalah online!
sumber
APL (Dyalog) , 4 byte
Algoritma diambil dari sini .
Cobalah online!
!
faktorial dari2+¨
dua plus+
jumlahBekerja di J juga.
sumber
QBIC , 8 byte
Man, begitu banyak cara keren untuk hanya mengambil angka-angka ini dan mendapatkan nomor yang tidak terkait. Saya hanya perlu mencoba beberapa, untuk melihat bagaimana QBIC bisa bersaing. Yang terpendek adalah port jawaban Python xnor, merangkai angka dengan 1 di tengah:
Semua yang ada, sebuah port dari jawaban Retina Leo:
Menemukan prime lebih besar berikutnya:
sumber
sed , 6 byte
Cobalah online!
Input melalui stdin dalam bentuk "x y", output adalah ke stdout.
Port jawaban python ini , yang meliputi bukti kebenaran. Terima kasih banyak kepada xnor untuk metode sederhana ini.
sumber
Java 8, 15 byte
Port dari jawaban JavaScript menakjubkan (ES6) @Arnauld .
Coba di sini.
Pendekatan straight-forward (
177170 bytes ):Coba di sini.
sumber
05AB1E ,
24 byteCobalah online!
Sama seperti jawaban Jelly, menemukan bilangan prima setelah penjumlahan. Satu byte lebih pendek :)
EDIT : Sekarang naikkan ke kekuatannya sendiri untuk mencukupi sebagai pengecualian.
sumber
a+b
prime, sedangkan saya menemukan prime terkecil lebih besar daria+b
.Brachylog , 3 byte
Cobalah online!
Tidak ada yang baru di sini.
Sekarang, untuk mencari tahu bagaimana menemukan string yang tidak terkait ...
sumber