Diberikan bilangan bulat dari 1 hingga 999 inklusif, mengeluarkan nilai kebenaran jika itu muncul secara horizontal, vertikal, atau diagonal, baik maju atau mundur, di mana saja dalam 3x3 kuadrat digit 1-9 pada pad nomor standar :
789
456
123
Jika nomor tidak muncul, hasilkan nilai palsu.
65 angka pasti yang Anda butuhkan untuk menghasilkan kebenaran adalah:
1
2
3
4
5
6
7
8
9
12
14
15
21
23
24
25
26
32
35
36
41
42
45
47
48
51
52
53
54
56
57
58
59
62
63
65
68
69
74
75
78
84
85
86
87
89
95
96
98
123
147
159
258
321
357
369
456
654
741
753
789
852
951
963
987
Yang lainnya salah.
Kode terpendek dalam byte menang.
code-golf
number
decision-problem
integer
Hobi Calvin
sumber
sumber
Jawaban:
JavaScript (ES6),
83...7473 byteMengambil input sebagai string.
Disimpan 3 byte berkat produk ETH
Bagaimana itu bekerja
Kami mengubah nomor pad dengan menerapkan offset ke setiap digit sesuai dengan baris miliknya:
Semua kode di bawah ini diwakili dalam heksadesimal.
Mari kita pertimbangkan semua kombinasi XOR dari kode kunci baru ini. Kunci yang berdekatan disorot dengan tanda kurung.
Kita dapat melihat bahwa dua kunci berdekatan jika dan hanya jika XORing kode mereka mengarah ke salah satu dari nilai berikut:
Daftar ini dapat dimasukkan ke dalam topeng biner berikut:
Karenanya tes untuk menentukan apakah dua kode kunci (a, b) sesuai dengan dua kunci yang berdekatan:
Untuk tiga kode kunci (a, b, c), kami memerlukan tes tambahan ini:
Contoh:
Demo
Cuplikan ini menampilkan daftar nilai-nilai kebenaran.
Tampilkan cuplikan kode
sumber
a-.5
mengembalikan true untuk setiap array yanga
berisi (nol atau) satu bilangan bulat.n=>([a,b,c]=[...n].map(v=>--v+v/3|0))-.5||n%10&&n<100|b*2==a+c&&45242&1<<(a^b)
1/a
bahkan lebih pendek dan harus bekerja dengan baik, saya pikir.Python3, 72 byte
Input diambil sebagai string.
Selamat datang saran bermain golf! : D
sumber
s
, Anda dapat menghemat 1 byte.s
, yang memiliki spasi setelah84
, maka Anda salah, karena itu diperlukan. Jika tidak berisi spasi putih, string yang dihasilkan akan memiliki rantai '8448', yang akan menyebabkan kegagalan pengujian. Terima kasih atas sarannya!Befunge,
169161159 byteCobalah online!
Dua baris pertama hanya mendorong daftar nomor tes ke tumpukan. Ini dilakukan dalam urutan ukuran, karena kadang-kadang lebih mudah untuk menghasilkan angka sebagai offset dari yang sebelumnya dalam seri daripada menghasilkannya dari awal. Begitu kita mencapai angka yang lebih besar, kita kadang-kadang juga bisa menyimpan satu byte dengan membuatnya berpasangan, misalnya
"kV"3*\3*
memberi kita 258 dan 321 dalam sembilan byte, di mana secara individual mereka akan mengambil masing-masing lima byte.Loop utama ada di jalur tiga, mengeksekusi kanan ke kiri dengan membungkus. Ini hanya mengulangi semua nomor tes pada tumpukan, membandingkan nilai itu sendiri, nilai% 100, dan nilai / 10. Jika ada yang cocok dengan angka input atau angka <= 9 maka kita menghasilkan 1 dan keluar. Jika tidak ada kecocokan, kami terus mengulang. Jika kita kehabisan nomor tes pada stack maka kita menghasilkan 0 dan keluar.
Terima kasih kepada Mistah Figgins karena telah menyelamatkan saya beberapa byte.
sumber
0<@.!!<
untuk menghemat 2 byte. Ini bergantung pada bagian atas tumpukan yang tidak nol ketika IP turun ke panah kedua. Cobalah secara Online!Jelly ,
292419 byteDisimpan 5 byte berkat saran @ Dennis dari
K
danƓ
.Cobalah online!
Penjelasan
sumber
9s3µUŒD;;Z;ŒDµ;UKƓẇ
simpan 5 byte.123,456,789
harus sama dengan789,456,123
Ruby, 77 byte
sumber
86
dan24
akan gagal.!!
atau kurung yang hadir.bash, 75
mengeluarkan sesuatu dan mengembalikan 0 untuk semua nilai dalam daftar itu
tidak mencetak apa pun dan mengembalikan 1 dalam semua kasus lainnya
sumber
Java, 397 byte
sumber