Puzzle Square Hexa Prime 3x3
pengantar
Kami menganggap 3x3 kotak digit heksadesimal (dari 0
ke F
) seperti:
2 E 3 1 F 3
8 1 5 7 2 7
D D 5 B B 9
Kami mendefinisikan 3x3 Hexa Prime Square ( HPS3 ) sebagai kotak yang semua bilangan heksadesimalnya dibaca dari kiri ke kanan dan dari atas ke bawah adalah bilangan prima ganjil (yaitu bilangan prima lebih besar dari 2).
Ini berlaku untuk kuadrat kiri dan salah untuk kuadrat kanan:
2 E 3 --> 0x2E3 = 739 1 F 3 --> 0x1F3 = 499
8 1 5 --> 0x815 = 2069 7 2 7 --> 0x727 = 1831
D D 5 --> 0xDD5 = 3541 B B 9 --> 0xBB9 = 3001
| | | | | |
| | +---> 0x355 = 853 | | +---> 0x379 = 889 = 7 x 127
| +-----> 0xE1D = 3613 | +-----> 0xF2B = 3883 = 11 x 353
+-------> 0x28D = 653 +-------> 0x17B = 379
Tujuan
Diberikan daftar 9 digit heksadesimal, tujuan Anda adalah menemukan pengaturan yang membentuk HPS3.
Contoh:
Input: 123558DDE
Possible output: 2E3815DD5 (a flattened representation of the above left example)
Input output
Format input dan output fleksibel. Satu-satunya persyaratan adalah bahwa digit output dipesan dari kiri ke kanan dan dari atas ke bawah. Berikut adalah beberapa opsi yang mungkin:
"2E3815DD5"
[ 0x2, 0xE, 0x3, 0x8, 0x1, 0x5, 0xD, 0xD, 0x5 ]
[ "2", "E", "3", "8", "1", "5", "D", "D", "5" ]
[
[ 0x2, 0xE, 0x3 ],
[ 0x8, 0x1, 0x5 ],
[ 0xD, 0xD, 0x5 ]
]
[ "2E3", "815", "DD5" ]
etc.
Tidak perlu menggunakan format yang sama untuk input dan output.
Aturan
- Ini adalah kode-golf, jadi jawaban tersingkat dalam byte menang. Celah standar dilarang.
- Algoritme Anda harus deterministik
- Anda tidak bisa hanya bogosort array sampai valid, bahkan dengan cara deterministik (dengan menggunakan seed acak konstan).
- Anda dapat mendaftar semua solusi yang mungkin untuk input yang diberikan, tetapi ini tidak diperlukan atau dikenakan bonus.
- Anda tidak diharuskan mendukung input yang tidak mengakui solusi apa pun. (Tidak apa-apa jika kode Anda berulang selamanya atau mogok dalam kasus itu.)
Uji kasus
Input Possible output
---------------------------
123558dde 2e3815dd5
1155578ab a7b851551
03bddffff ffd0dfb3f
35899beff 8f99e3bf5
15899bbdf 581bb9fd9
14667799f 6f1469779
13378bcdd 78d1cd33b
24577bbdd 7274bd5db
1118bbddd 11b18dbdd
223556cdd 623c25dd5
12557899a 8a5295971
113579bbd 5b3db7191
code-golf
primes
hexadecimal
Arnauld
sumber
sumber
Jawaban:
05AB1E ,
2321 bytePenggunaan pengodean CP-1252 .
Terlalu lambat untuk TIO.
Penjelasan
sumber
Python 2,
212206197194 byteMembutuhkan input yang dilampirkan dalam tanda kutip, seperti
"123558dde"
Menyimpan 9 dan 3 byte berkat Jonathan Allan
Menemukan filter prima baru dari xnor (memodifikasi kuadrat jauh, karena kami tidak ingin 2 sebagai prima di sini), filter perdana lama adalah dari Bob
sumber
P+=[k][:p%k]
- ketikap%k
tidak0
sepotong akan menghasilkan[k]
, ketika0
itu akan menghasilkan[]
.from itertools import*
merupakan trik golf yang rapi yang akan menghemat beberapa byte. Juga lupakan efisiensi dan lakukank<5e3
.P
itu hebat.print[s for s in map(''.join,permutations(input()))if all(int(s[3*i:][:3],16)in P and int(s[i::3],16)in P for i in(0,1,2))]
Pyth,
2321 byteWaktu online, tetapi selesai dalam 1,5 menit di laptop saya. Mengambil input dalam tanda kutip.
Penjelasan
sumber
Jelly ,
3430 byte(Saya harus dapat menggunakan nfind untuk hanya mengambil pertandingan pertama,
1#
sebagai gantinyaÐfḢ
, dengan byte lebih sedikit dan lebih cepat, tetapi saya melihat kesalahan ketika saya mencoba. EDIT: menulis beberapa perubahan untuk mengimplementasikannya di Jelly.)Pencarian paksa semua permutasi, difilter untuk kriteria, mengembalikan kecocokan pertama.
Terlalu lambat untuk TtyItOnline. Contoh output lokal:
Bagaimana?
sumber
J, 49 byte
Pencarian brute force yang menguji semua permutasi dan menghasilkan semua permutasi yang memenuhi kondisi untuk puzzle.
Performanya cukup baik untuk menghitung setiap test case dalam waktu sekitar 3 detik.
Pemakaian
Penjelasan
sumber
Mathematica, 115 byte
Input harus berupa daftar karakter (mis.
{"1", "2", "3", "5", "5", "8", "D", "D", "E"}
)sumber
Ruby, 146 byte
Fungsi anonim mengambil array sembilan bilangan bulat, mengembalikan satu solusi sebagai array sembilan bilangan bulat. Mengandalkan fungsi pembantu
g
dan arequire
.Versi 140 byte ini mencetak semua solusi yang mungkin, dengan integer sebagai desimal (tidak yakin apakah itu dibolehkan.)
Tidak digabungkan dalam program uji
sumber
Groovy, 134 Bytes
Temukan semua solusi yang mungkin dan kembalikan sebagai array, kembalikan
[]
jika tidak ada solusi.Contoh input:
123558dde
Output:
Contoh input:
222222222
Output:[]
Jika ada yang ingin saya berkomentar, berteriak pada saudara.
sumber