Sistem utama adalah perangkat mnemonik untuk mengubah angka menjadi kata-kata sehingga dapat dihafal lebih mudah.
Ini didasarkan pada bagaimana kata-kata terdengar secara fonetis, tetapi untuk membuat hal-hal sederhana untuk tantangan kita hanya akan peduli dengan bagaimana kata-kata dieja. Ini berarti akan ada beberapa konversi yang salah, tetapi tidak apa-apa.
Untuk mengonversi angka menjadi kata menggunakan sistem utama kami yang disederhanakan:
- Ganti masing
0
- masing dengans
atauz
. (Beberapa bisa jadis
dan ada yang bisaz
. Sama juga di bawah.)- Mengganti setiap
1
dengant
ataud
atauth
.- Ganti masing
2
- masing dengann
.- Ganti masing
3
- masing denganm
.- Ganti masing
4
- masing denganr
.- Ganti masing
5
- masing denganl
.- Mengganti setiap
6
denganj
ataush
atauch
.- Mengganti setiap
7
dengank
atauc
ataug
atauq
.- Ganti masing
8
- masing denganf
atauv
.- Ganti masing
9
- masing denganp
ataub
.- Tambahkan huruf
aehiouwxy
mana saja dalam jumlah berapa pun untuk membuat kata bahasa Inggris yang nyata, jika memungkinkan .
Satu-satunya pengecualian adalah yangh
mungkin tidak dimasukkan setelahs
atauc
.Jumlahnya mungkin sebenarnya adalah string angka 0-9 (tidak ada desimal atau koma atau tanda).
Kata hanya dapat berisi huruf kecil az.
Contohnya
Nomor tersebut 32
harus dikonversi sebagai ?m?n?
, di mana ?
merupakan string terbatas yang dibuat dari huruf-huruf aehiouwxy
(string dari monoid gratis jika Anda mau). Ada banyak cara ini bisa dibuat menjadi sebuah kata bahasa Inggris yang nyata: mane
, moon
, yeoman
, dll
Jumlahnya 05
dapat dikonversi sebagai ?s?l?
atau ?z?l?
. Beberapa kemungkinan adalah easily
, hassle
, dan hazel
. Kata shawl
itu tidak diizinkan karena h
tidak boleh ditempatkan setelah s
; itu akan salah dibaca sebagai 65
.
Tantangan
Tulis program atau fungsi yang mengambil string angka 0-9 dan temukan semua kata yang dapat dikonversi menjadi menggunakan mnemonic sistem utama yang disederhanakan.
Program Anda memiliki akses ke file teks daftar kata yang mendefinisikan apa semua kata bahasa Inggris "asli". Ada satu kata az huruf kecil pada setiap baris file ini, dan Anda dapat mengasumsikan memiliki baris tambahan. Berikut adalah daftar kata-kata nyata yang dapat Anda gunakan untuk pengujian. Anda dapat menganggap file daftar kata ini disebut f
(atau sesuatu yang lebih panjang) dan terletak di direktori yang sesuai.
Untuk penalti 35 byte (tambahkan 35 ke skor Anda), Anda dapat menganggap daftar kata sudah dimasukkan ke dalam variabel sebagai daftar string. Ini terutama untuk bahasa yang tidak dapat membaca file, tetapi pengiriman apa pun dapat memanfaatkannya.
Program Anda harus menampilkan semua kata dalam daftar kata yang dapat dikonversi menjadi nomor input. Mereka harus dicetak ke stdout (atau serupa), satu per baris (dengan baris tambahan opsional), atau mereka dapat dikembalikan sebagai daftar string jika Anda memilih untuk menulis suatu fungsi. Daftar kata tidak harus berdasarkan abjad dan hasilnya tidak perlu salah.
Jika tidak ada kata yang mungkin maka output (atau daftar) akan kosong. Outputnya juga kosong jika string kosong dimasukkan.
Ambil input melalui stdin, baris perintah, atau sebagai argumen string ke suatu fungsi. Daftar kata, atau nama file-nya, tidak boleh menjadi bagian dari input, hanya string digit.
Anda hanya mencocokkan satu kata dalam daftar kata, bukan urutan kata. Kata noon
itu mungkin akan menjadi salah satu hasil untuk 22
, tetapi urutan kata no one
tidak.
Uji Kasus
Misalkan ini adalah daftar kata:
stnmrljkfp
zthnmrlshqfb
asatanamaralajakafapa
aizxydwwwnhimouooraleshhhcavabe
zdnmrlshcvb
zdnmrlshchvb
sthnmrlchgvb
shthnmrlchgvb
bob
pop
bop
bopy
boppy
Masukan 0123456789
harus memberikan semua kata yang panjang kecuali zdnmrlshchvb
dan shthnmrlchgvb
:
stnmrljkfp
zthnmrlshqfb
asatanamaralajakafapa
aizxydwwwnhimouooraleshhhcavabe
zdnmrlshcvb
sthnmrlchgvb
Masukan 99
harus memberi:
bob
pop
bop
bopy
(Kata-kata keluaran mungkin dalam urutan apa pun.)
Mencetak gol
Pengajuan terpendek dalam byte menang. Tiebreaker pergi ke kiriman yang diposting terlebih dahulu.
Situs bagus terkait: numzi.com .