Tugas Anda adalah menghasilkan kata yang tidak masuk akal yang dapat diucapkan dengan cukup dengan jumlah 'suku kata'. Setiap kali program dijalankan mungkin menghasilkan kata omong kosong yang berbeda.
Kemampuan mengucapkan
Kata yang dapat diucapkan terdiri dari suku kata, yang pada gilirannya terdiri dari kelompok vokal yang mungkin terjepit di antara dua kelompok konsonan. Tidak semua suara dapat diucapkan di semua posisi, dan karena ini tergantung pada bahasa, kami akan menggunakan pola yang dapat dimengerti oleh penutur bahasa Inggris
Memulai grup konsonan:
b c d f g hj k l m n p r s t v w y z bl br ch cl cr dr fl fr gh gl gn gr kn ph pl pr qu sc sh ssrm sst jd sst tk jd b jt b j t t t t t t t t t t t t t t t
Grup Vokal:
a e i o u ae ai ao au ea ee ei eu ia yaitu ie io oa oe oi oo ou ue ui
Kelompok Konsonan Berakhir:
bcdfglmnprstxz bt ch ck ct ft gh gn lb ld lk lk ll lm ln lp lt mb mn mp nk ng nt ph pt rb rc rd rf rg rk rl rm rn rp rt rv rz sh sk sp ss st zz lch rsh rt sch tch
Menggabungkan Suku kata
Baik grup konsonan awal dan akhir adalah opsional pada umumnya, namun Anda tidak dapat menempatkan suku kata yang diakhiri dengan vokal tepat sebelum yang dimulai dengan vokal.
Penolakan
Demi kesederhanaan, kata-kata bahasa Inggris tertentu sebenarnya tidak dapat dihasilkan dengan cara ini, seperti ruang hampa udara, gambang, mnemonik, pterodactyl, cantik, bla, kata, wow, dan sebagian besar bentuk jamak.
Gambaran
Kemungkinan pola suku kata menggunakan kunci ini:
(SC) = konsonan awal; (V) = grup vokal; (EC) = akhir konsonan
Untuk satu suku kata:
- (SC) (V) (EC)
- (V) (EC)
- (SC) (V)
- (V)
Dengan dua suku kata:
- (SC) (V) (EC) (SC) (V) (EC)
- (SC) (V) (EC) (SC) (V)
- (SC) (V) (EC) (V) (EC)
(SC) (V) (EC) (V)
(SC) (V) (SC) (V) (EC)
(SC) (V) (SC) (V)
(V) (EC) (SC) (V) (EC)
- (V) (EC) (SC) (V)
- (V) (EC) (V) (EC)
(V) (EC) (V)
(V) (SC) (V) (EC)
- (V) (SC) (V)
... dan seterusnya
Contohnya
1 suku kata
- charst
- tigh
- shriegn
- eess
- shue
- oo
- cheezz
2 suku kata
- Jazzcrap
- whylprog
- memakan
- umba
- ola
- memiliki
- ingsoc
- greespheurz
- bleuspoo
3 suku kata
- brokiompic
- squirdshlicker
- modal
- opengtrass
- keraguan
- kakak laki-laki
- phoebliaptmoo
- kurang ajar
4 suku kata
- strawishoepick
- tambal sulam
- prearneajoomie
- slephotoschou
- dua kali lipatbaik
Coding
Input: integer untuk menghasilkan jumlah suku kata
Keluaran: kata (mungkin) omong kosong yang panjang kata banyak
Aturan
- Diperlukan beberapa bentuk keacakan (psuedo). Semua kombinasi suku kata harus (secara teoritis) dimungkinkan untuk dihasilkan, meskipun distribusinya tidak harus seragam.
- Anda dapat mengasumsikan bahwa generator Anda adalah aperiodik, sehingga tidak harus secara matematis memungkinkan untuk menghasilkan setiap kata yang mungkin (Mungkin tidak memiliki periode yang cukup lama dalam kenyataan) dan Anda tidak perlu memberikan bukti apa pun bahwa Anda Generator dapat, pada kenyataannya, menghasilkan setiap kata yang mungkin.
- Generator Anda harus benar-benar dapat menghasilkan setidaknya 255 nilai berbeda, sehingga Anda tidak bisa hanya mengembalikan 4 setiap kali generator dipanggil.
- Apa yang akhirnya penting adalah bahwa Anda entah bagaimana memasukkan semua grup surat di atas ke dalam kode Anda, bahwa setiap grup surat memiliki probabilitas bukan nol untuk dipilih, dan setiap pola suku kata memiliki probabilitas tidak nol untuk terjadi (jika disediakan dengan keacakan yang benar).
- Anda harus mendukung hingga 16 kata suku kata
- Selain aturan tentang menggabungkan suku kata, kata output tidak boleh memiliki:
- 3 vokal berturut-turut (
a
e
i
o
u
; ini bisa terjadi untukqu
kata - kata) - 3 konsonan yang cocok berturut-turut
- 3 vokal berturut-turut (
Semoga berhasil!
Perhatikan bahwa ini berbeda dari Menghasilkan kata yang dapat diucapkan karena beberapa alasan:
- Jumlah variabel suku kata yang ditentukan oleh input daripada persyaratan 10 huruf yang ketat.
- Tantangan ini menambahkan grup surat yang tidak lengkap yang harus (secara cerdik) dikodekan dan memungkinkan lebih banyak varian suku kata, sehingga kode tidak bisa hanya disalin dari tantangan lain
- Squirdshlicker. Perlu saya katakan lebih?
Saya juga lupa untuk menipu cek, tetapi ternyata ini membawa cukup baru ke meja yang tidak masalah. Bagaimanapun, ada ratusan tantangan varian quine.
Jawaban:
JavaScript (ES6),
407403 byteCobalah online!
sumber
[^aeiou]{3}
itu benar? Berdasarkan kata 'matching' dan contoh 3-suku kata yangsquirdshlicker
berisirdshl
, saya pikir OP hanya berarti 3 dari konsonan berdekatan yang sama (yaitubbb
tidak diperbolehkan), bukan 3 konsonan yang berdekatan secara umum.05AB1E ,
237234230228 byte-2 byte terima kasih kepada @MagicOctopusUrn .
Cobalah secara online atau dapatkan beberapa keluaran lagi .
Penjelasan:
Lihat ini ujung 05AB1E saya (bagian Cara string kompres bukan bagian dari kamus? , Cara kompres bilangan bulat besar? , Dan Cara daftar bilangan bulat kompres? ) Untuk memahami bagaimana bagian-bagian kompresi karya.
sumber
žM•ô#‰¦λu¢!¡°gU€•6BS<èJ
lebih kecil dari 4.•!m1±P1Ÿ6ºZ dâ4∍m–G¢”ãÔ2g•
(konversi dan penggantian basis 6 menggunakan built-in untuk AEIOU). TIO Link terlalu panjang.žM•·Áy&ŒGηΩ¼αŸKq•6вèJ
. :) PS: Anda dapat menggunakan shortener url seperti tinyurl.com di PPCG, tidak seperti kebanyakan SE lainnya. :)Jelly , 231 byte
Cobalah online!
Program lengkap yang mengambil argumen tunggal, jumlah suku kata yang diperlukan.
Penjelasan
Inti dari ini adalah string kamus terkompresi 66 kata. Jika kata-kata dibagi menjadi kelompok-kelompok konsonan dan vokal dan 3 kelompok pertama yang diambil untuk setiap kata, mereka menghasilkan awal, vokal dan kelompok akhir yang diinginkan dari pertanyaan. Pengecualiannya adalah
Tautan bantuan 1: periksa apakah lebih dari 3 vokal berturut-turut atau lebih dari 3 huruf yang sama dalam satu baris Helper link 2: Tiga kelompok string Tautan utamaqu
dansqu
karena mereka memiliki vokal, jadi ini ditambahkan secara manual. Daftar kata dibangun secara algoritmik dari kamus Jelly menggunakan skrip Python. Perhatikan beberapa grup surat diulangi, tetapi pertanyaannya memungkinkan output untuk tidak secara seragam mewakili setiap kombinasi yang memungkinkan. Jika ini lebih disukai, akan mudah untuk membuat masing-masing kelompok unik dengan biaya dua byte (Q€
).sumber
gnuignaalfbi
untuk input4
, tetapiaa
seharusnya tidak mungkin jika saya memahami tantangan dengan benar. Bagian yang menggabungkan suku kata menyatakan " ..., namun Anda tidak dapat menempatkan suku kata yang diakhiri dengan vokal tepat sebelum yang dimulai dengan vokal. "shmooze gaolbird hailshot shriech waeful furze ghaut
, haha. xD Seberapa besar sih kamus Jelly?Python 2 ,
522510 byteCobalah online!
sumber
Pyth,
346335 byteCobalah online di sini .
sumber
Ruby ,
381379375 byteMenggunakan pertandingan regex yang berantakan untuk mendapatkan kelompok konsonan. Mungkin bisa dioptimalkan.
Cobalah online!
sumber