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 dengansatauz. (Beberapa bisa jadisdan ada yang bisaz. Sama juga di bawah.)- Mengganti setiap
1dengantataudatauth.- Ganti masing
2- masing dengann.- Ganti masing
3- masing denganm.- Ganti masing
4- masing denganr.- Ganti masing
5- masing denganl.- Mengganti setiap
6denganjataushatauch.- Mengganti setiap
7dengankataucataugatauq.- Ganti masing
8- masing denganfatauv.- Ganti masing
9- masing denganpataub.- Tambahkan huruf
aehiouwxymana saja dalam jumlah berapa pun untuk membuat kata bahasa Inggris yang nyata, jika memungkinkan .
Satu-satunya pengecualian adalah yanghmungkin tidak dimasukkan setelahsatauc.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 32harus 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 05dapat dikonversi sebagai ?s?l?atau ?z?l?. Beberapa kemungkinan adalah easily, hassle, dan hazel. Kata shawlitu tidak diizinkan karena htidak 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 noonitu mungkin akan menjadi salah satu hasil untuk 22, tetapi urutan kata no onetidak.
Uji Kasus
Misalkan ini adalah daftar kata:
stnmrljkfp
zthnmrlshqfb
asatanamaralajakafapa
aizxydwwwnhimouooraleshhhcavabe
zdnmrlshcvb
zdnmrlshchvb
sthnmrlchgvb
shthnmrlchgvb
bob
pop
bop
bopy
boppy
Masukan 0123456789harus memberikan semua kata yang panjang kecuali zdnmrlshchvbdan shthnmrlchgvb:
stnmrljkfp
zthnmrlshqfb
asatanamaralajakafapa
aizxydwwwnhimouooraleshhhcavabe
zdnmrlshcvb
sthnmrlchgvb
Masukan 99harus 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 .