Tujuan
Idenya adalah untuk menyediakan kode yang diperlukan untuk memetakan integer 32-bit ke / dari kata yang dapat diucapkan maksimum 9 karakter. Itu bisa berguna, misalnya, untuk membuat nomor seri lebih mudah diingat, atau mengetikkan formulir.
Diperlukan metode untuk menerjemahkan bilangan bulat ke kata yang sesuai dan untuk menerjemahkan kembali kata ke bilangan bulat yang sesuai.
Aturan
Harus ada pemetaan satu-ke-satu antara bilangan bulat dan kata-kata, dan seluruh rangkaian bilangan bulat 32-bit (atau, dengan kata lain, bilangan bulat dari 0 hingga 4294967295) harus dapat dipetakan. Meskipun, jelas, tidak semua kata akan bermakna, dan memasukkan kata-kata yang tidak dipetakan ke bilangan bulat mungkin memiliki perilaku yang tidak ditentukan.
Anda bebas memutuskan set kata-kata "yang dapat diucapkan" mana yang bermakna, dan bagaimana pemetaan dilakukan, tetapi kata-kata setidaknya harus mengikuti aturan ini:
- Hanya 26 huruf dasar (A ... Z) yang dapat digunakan sebagai karakter. Aksen, casing, dll ... tidak boleh digunakan untuk memperpanjang kemungkinan kombinasi.
- Maksimum 9 karakter per kata.
- dua konsonan (BCDFGHJKLMNPQRSTVWXZ - 20 possiblities) tidak boleh diletakkan berdampingan satu sama lain (mereka harus dikelilingi oleh vokal).
- dua vokal (AEIOUY - 6 kemungkinan) tidak boleh diletakkan berdampingan (mereka harus dikelilingi oleh konsonan).
Catatan: skema paling sederhana di mana Anda memiliki semua kata dibangun sebagai CVCVCVCVC
( C
menjadi konsonan dan V
vokal) memberikan 4147200000 kombinasi, dan integer 32 bit memiliki 4294967296 nilai yang mungkin, jadi itu tidak cukup. Anda perlu memperluas jumlah kombinasi, baik dengan memungkinkan kata-kata pendek, atau dengan memungkinkan VCVCVCVCV
kombinasi, juga.
Aturan standar lain berlaku, dan celah standar dilarang.
Input / Output
Untuk setiap pengiriman, dua potong kode harus disediakan:
- Yang mengambil integer sebagai argumen / input dan mengembalikan / mencetak kata yang sesuai
- Salah satu yang mengambil kata sebagai argumen / input dan mengembalikan / mencetak integer yang sesuai
Atau, Anda dapat memilih untuk mengirimkan satu kode yang menangani kedua operasi:
- Ketika diberi bilangan bulat sebagai input, itu menghasilkan kata yang sesuai
- Ketika diberi string sebagai input, itu menghasilkan integer yang sesuai
Kondisi menang
Ini adalah kode-golf , jawabannya yang memiliki byte paling sedikit (ketika menjumlahkan kedua bagian kode, untuk solusi memilih potongan kode yang terpisah) menang.