Tugas Anda adalah menerjemahkan angka 103-halus menjadi kata bahasa Inggris, menggunakan metode yang dijelaskan di bawah ini.
Bagaimana?
- Buat daftar faktor prima (dengan pengulangan) dari nomor input.
- Sortir daftar:
- Jika 2 bukan salah satu faktor utama, urutkan daftar dalam urutan menaik.
- Jika 2 adalah salah satu faktor utama, hapus dari daftar dan urutkan faktor yang tersisa dalam urutan menurun.
Terjemahkan setiap faktor menjadi huruf, menggunakan tabel berikut:
3 = S 13 = L 29 = X 43 = O 61 = Z 79 = H 101 = K 5 = P 17 = Q 31 = N 47 = R 67 = T 83 = V 103 = Y 7 = M 19 = U 37 = C 53 = A 71 = E 89 = D 11 = F 23 = I 41 = W 59 = G 73 = J 97 = B
Catatan : Tabel ini dibangun secara empiris untuk memaksimalkan jumlah kata yang mungkin. Bagi yang penasaran, berikut adalah daftar 2.187 kata yang dapat dikodekan seperti itu (mungkin termasuk bahasa kasar). Jelas tidak dijamin optimal, tetapi cukup bagus untuk tantangan ini.
Contohnya
Contoh 1: 579085261 (urutan naik)
- Faktor utama adalah [37, 47, 53, 61, 103] .
- 2 bukan merupakan faktor utama, jadi kami menjaga daftar diurutkan dalam urutan menaik.
- 37 = C, 47 = R, dll. Outputnya adalah "GILA".
Contoh 2: 725582 (urutan menurun)
- Faktor utama adalah [2, 11, 13, 43, 59] .
- 2 adalah faktor utama, jadi kami menghapusnya dan mengurutkan daftar dalam urutan menurun, yang menghasilkan:
[59, 43, 13, 11] . - 59 = G, 43 = O, dll. Outputnya adalah "GOLF".
Contoh 3: 10757494 (dengan faktor berulang)
- Faktor utama adalah [2, 11, 71, 71, 97] .
- 2 adalah faktor utama, jadi kami menghapusnya dan mengurutkan daftar dalam urutan menurun, yang menghasilkan:
[97, 71, 71, 11] . - 97 = B, 71 = E, 11 = F. Outputnya adalah "BEEF".
Klarifikasi dan aturan
- Nomor input dijamin 103-halus dan habis dibagi 2 paling banyak satu kali.
- Menurut definisi, bilangan halus adalah bilangan bulat positif .
- Input dan output dapat ditangani dalam format apa pun yang wajar. Outputnya bisa dalam huruf kecil atau besar. Trailing whitespace dapat diterima. Ruang putih terkemuka tidak.
- Jika program / fungsi Anda tidak dapat mendukung input besar, harap tentukan dalam jawaban Anda.
- Ini adalah kode golf, jadi jawaban tersingkat dalam byte menang.
Uji kasus
34874 --> ARM
483254 --> BAR
353722 --> EAR
494302 --> EGG
39061 --> FAT
6479 --> FUN
60421 --> ICE
54166 --> JAM
48911474 --> BETA
2510942 --> BOOM
2303854 --> DOOM
844261 --> FIRE
1606801 --> MAZE
1110085 --> PAGE
5212974 --> BALLS
67892046 --> BEANS
885396199 --> CREEK
67401037 --> FUNKY
27762173 --> QUICK
1238440506 --> ARROWS
33045832681 --> CRAGGY
1362714005 --> PIRATE
137302698 --> TROLLS
358310128062 --> BEGGARS
40255151586 --> DETAILS
164633248153 --> FIXATED
621172442227 --> UNRATED
2467812606 --> VACUUMS
86385078330 --> GROWNUPS
26607531423091 --> UNWORTHY
Ò
pada579085261
, merasa seperti <s> Emigna </ s> Adnan sudah dimulai.<=103
... hasilnya adalahPIRATE MAZE
, atauDOOM VACUUMS
...Jawaban:
Jelly ,
2927 byteTerima kasih kepada @JonathanAllan untuk bermain golf 1 byte!
Cobalah online!
Latar Belakang
adalah literal numerik. Karakter di antara tanda kutip diganti dengan indeks berbasis 1 di halaman kode Jelly , dan array yang dihasilkan ditafsirkan sebagai angka dasar-250. Ini menghasilkan bilangan bulat c: = 288824892868083015619552399 .
Bagaimana itu bekerja
sumber
Jelly , 36 byte
Cobalah online!
Penjelasan
Pembantu konstan
1£
(menghasilkan“SPMFLQUIXNCWORAGZTEJHVDBKY ”
dengan 1 prepended)Program utama
Saya merasa bahwa kompresi daftar saya dengan mudah mengalahkan jawaban Jelly lainnya, tetapi algoritma saya untuk menggunakannya bisa jauh lebih efisien. Mungkin saya akan mencoba menggabungkannya.
Jelly , 31 byte, terinspirasi oleh jawaban @ Leakynun
Cobalah online! (sedikit dimodifikasi untuk berjalan jauh lebih cepat)
Tidak konsisten dalam apakah ia mencetak baris baru (tetapi PPCG biasanya memungkinkan jawaban dengan atau tanpa baris baru, jadi saya kira ini juga berfungsi?). Apakah sangat lambat (O ( n ) di mana n adalah input, dan angka-angka bukan kecil ...)
Penjelasan
Pembantu konstan
1£
(menghasilkan“¶SPMFLQUIXNCWORAGZTEJHVDBKY”
, di mana¶
baris baru)Program utama
sumber
05AB1E ,
3938 byteMenggunakan pengkodean CP-1252 . Cobalah online!
sumber
Ø
adalah bagian dari ini yang mengalahkan tambang sebesar 20 byte: P.Python 2,
220217 byteCoba online - hanya menjalankan test case terkecil tanpa kehabisan memori
Tidak Disatukan:
Versi ini tidak digunakan
exec
, jadi Anda benar-benar dapat menguji semua test case tanpa kehabisan memori.Cobalah online
sumber
Ruby ,
139138134125120115 + 7 =146145141132127122 byteMenggunakan
-rprime
bendera untuk +7 byte.-1 byte dari @daniero. -4 byte dengan mengingat bahwa saya hanya dapat melakukan pemeriksaan keterbagian reguler alih-alih memeriksa divisi utama untuk keberadaan
2
.-9 byte dari solusi Python @ mbomb007 mengingatkan saya tentang cara yang lebih pendek untuk mengambil huruf yang cocok.
-5 byte karena trailing spasi sekarang diizinkan.
-5 byte dari penemuan
Enumerable#find_index
Cobalah online! (semua kasus uji)
Penjelasan
sumber
zip
dan"
Paket Bash + GNU utilities + bsd-games, 170
Tampaknya tidak optimal, tetapi berfungsi:
Cobalah online .
sumber
Jelly , 33 byte
Cobalah online!
sumber
Japt ,
5150 byte49 byte kode, +1 untuk
-P
bendera.Cobalah online!
Ini bisa menjadi jauh lebih pendek jika hanya Japt memiliki beberapa fitur lagi ...
Penjelasan
`yspmflquixncÙgz’jhvdbk`
hanya string yang sama semua orang menggunakan terkompresi sebanyak Japt dapat mengompresnya (3 byte lebih pendek dari aslinya!). Satu-satunya alat kompresi built-in Japt saat ini menggantikan pasangan huruf kecil dengan char byte tunggal.Jadi mari kita periksa kode yang sebenarnya:
Kemudian
£
digunakan untuk mengganti setiap itemX
dalam hasil seperti ini:Hasilnya adalah array karakter pada titik ini, sehingga
-P
bendera bergabung menjadi sebuah string tunggal, dan hasilnya secara implisit dikirim ke output.sumber
Jelly , 40 byte
Cobalah online!
Verifikasi semua testcans sekaligus! (sedikit dimodifikasi)
sumber
Pyth ,
5447 byte7 byte berkat isaacg
(
❤
mewakili karakter yang tidak patut dicetak)Pyth tidak memiliki banyak built-in utama ...
Hexdump:
Cobalah online!
sumber
J , 59 byte
Cobalah online!
Cukup sederhana...
sumber
PHP, 173 Bytes
Versi Online
Diperluas
PHP, 178 Bytes
Versi Online
Diperluas
sumber
Python, 1420 byte
Ini tentu saja dapat menyingkat beberapa, tapi ini adalah upaya saya untuk menyelesaikannya tanpa angka atau string literal. Saya menyadari ini adalah masalah kode-golf dan ini tidak persis pendek tetapi ingin berbagi pula, tidak yakin apakah ini melanggar aturan atau tidak.
Sangat menyenangkan untuk dibuat, saya menggunakan algoritma pada posting blog ini untuk mengurangi representasi numerik ASCII dari "SPMFLQUIXNCWORAGZTEJHVDBKY" ke dalam ekspresi bit-shift yang saya gunakan. Saya juga umumnya mengambil banyak inspirasi dari blog ini, saya ingin mencobanya sendiri dan ini sepertinya merupakan tantangan yang baik untuk melakukannya.
Ini adalah versi yang sedikit lebih mudah dibaca, dengan beberapa nama variabel yang lebih masuk akal juga
sumber