Dalam bahasa Inggris, cara yang pasti untuk membuat kombinasi huruf omong kosong yang dapat diucapkan adalah dengan membuatnya sepenuhnya dari pasangan konsonan-vokal, misalnya, Wu ko pa ha , atau, Me fa ro , konsonan pertama, diikuti oleh vokal .
Tantangan:
Tulis program atau fungsi yang akan, diberi jumlah huruf yang ditentukan pengguna, membuat nama acak menggunakan prinsip ini. Sesederhana itu.
Memasukkan:
Bilangan bulat lebih besar dari atau sama dengan 2 yang menunjukkan jumlah huruf yang diperlukan dalam output. Input dapat diambil dari STDIN, argumen baris perintah, atau argumen fungsi.
Keluaran:
String dengan panjang tertentu yang mengandung pasangan konsonan-vokal yang dipilih secara acak. Ini dapat dicetak ke STDOUT atau alternatif terdekat atau dikembalikan dalam kasus fungsi.
Aturan:
- Setiap konsonan dari alfabet Inggris harus memiliki probabilitas yang sama untuk dipilih untuk karakter pertama dari setiap pasangan, dan setiap vokal dari alfabet Inggris harus memiliki probabilitas yang sama untuk dipilih untuk karakter kedua dari setiap pasangan.
- Pasangan surat dapat diulang.
- Karena ini adalah nama, huruf pertama harus ditulis dengan huruf besar.
- Jika inputnya ganjil, pasangan huruf yang dipilih secara acak dalam nama harus memiliki y atau h ditambahkan hingga akhir. Pilihan y atau h harus acak juga.
- Celah standar tidak diizinkan.
- Kode terkecil dalam byte menang.
Definisi surat:
Konsonan:
bcdfghjklmnpqrstvwxyz
Vokal:
aeiou
Contoh I / O:
Input: 6
Output: Mefaro
Input: 9
Output: Wukohpaha
Nikmati!
Jawaban:
Pyth, 33 byte
Demonstrasi.
sumber
JavaScript ES6,
187180168 bytesSunting: Saya beralih dari menggunakan ganti regex ke sederhana untuk loop, yang meningkatkan panjang. Kode tidak tes dan UI uji di bawah. Masukkan angka negatif dengan risiko Anda sendiri karena membuat loop tak terbatas. (Terima kasih telah menghapusnya karena menunjukkan hal itu.)
sumber
SWI-Prolog,
286285 bytesContoh:
a(13).
keluaranLeqihsekeqira
.Catatan: Anda mungkin perlu mengganti
`
dengan"
jika Anda memiliki versi lama dari SWI-Prolog.sumber
Pyth,
5242 byteAnda dapat mencobanya di kompiler online di sini.
Terima kasih kepada Jakube untuk bermain golf lebih jauh, NinjaBearMonkey untuk mengklarifikasi tantangan, dan menerbitkan untuk membuat Pyth dan secara tidak sengaja mengajari saya tentang
X
.Program ini secara acak memilih konsonan dan vokal untuk mengisi string, menambahkan 'h' atau 'y' ke satu pasangan jika inputnya ganjil, kemudian kapitalkan karakter pertama. Berikut ini rinciannya:
Tampaknya tidak efisien untuk menambahkan 'h' atau 'y' ke pasangan konsonan-vokal pertama dan kemudian berebut daftar. Saya mencoba menambahkan ke pasangan acak tetapi kode selalu lebih lama dari ini.
sumber
rX1
mengkapitalisasiX
.t
adalah hal yang sama dengan_P_
.J
, karena AndaJ
hanya menggunakan sekali.Perl,
253238 byteSaya mungkin bisa bermain golf lebih jauh, tetapi ini harus dilakukan untuk saat ini.
Perubahan:
sumber
Julia, 141 byte
Ini menciptakan fungsi lambda tanpa nama yang menerima integer sebagai input dan mengembalikan string. itu mengambil keuntungan dari fakta bahwa string dalam Julia dapat diindeks dan dirujuk seperti array karakter. Untuk menyebutnya, berikan nama, mis
f=n->...
.Penjelasan + tidak dikumpulkan:
Contoh:
sumber
Python 2,
148169156Sunting: Menyadari bahwa huruf kapital bukan huruf kapital pertama. Saya akan melihat apakah saya bisa golf kembali besok.
Sunting 2: Diingat
.title
tapi saya rasa hanya itu.sumber
SmileBASIC 2 (Petit Computer),
197177 byteEDIT KONTEMPORER MEI 2018 : Ini adalah pengiriman pertama saya, hampir 3 tahun yang lalu! Keterampilan saya telah meningkat banyak sejak itu; -20 hanya dari penyesuaian kecil.
Ini dimulai dengan prompt (dibiarkan kosong untuk menyimpan byte, jadi itu hanya?) Di mana Anda memasukkan panjang (disimpan dalam variabel
L
).Saya yakin berpartisipasi dengan bahasa BASIC yang tidak jelas hanya akan membuat saya terlihat aneh, tetapi saya berhasil membuatnya menjadi sangat kecil untuk BASIC. Dibutuhkan keuntungan dari kebiasaan aneh SB (seperti persyaratan mengevaluasi ke 1 atau 0 karena tidak ada tipe boolean) untuk menghilangkan sebanyak byte yang mungkin saya miliki ketika saya menulis ini di 3:00.
sumber
Marbelous, 203 byte
Uji di sini (juru bahasa online). Masukan melalui argumen. Perpustakaan dan papan silindris harus diaktifkan.
Versi yang dikomentari / dibaca:
Ini kira-kira setara dengan pseudocode berikut (
random(a,b)
menghasilkan angka antaraa
danb
inklusif):sumber
Ruby, 119 byte
13 byte untuk memanfaatkan ...
Pemakaian:
Keluaran:
sumber
C, 219 karakter
Tampaknya bekerja, saya masih baru dalam hal ini.
sumber
rand()%(n-1-i)<2
bukannyarand()%(n-1)<(i+2)
mendapatkan distribusi yang seragam, kecuali jika Anda menghasilkan angka acak ini hanya sekali dan menyimpannya di suatu tempat.🙋
yang menggunakan lebih dari satu byte.R, 166 byte
Mengambil input dari STDIN dan output ke STDOUT.
Penjelasan
Beberapa tes
sumber
K5, 131 byte
Ini TIDAK akan bekerja pada Kona atau kdb +; Anda perlu menggunakan juru bahasa K5 seperti oK .
Demo langsung. (Coba atur
5
di akhir ke nomor yang berbeda untuk mencoba input yang berbeda.)sumber
Ruby,
316 238216 karakterKombinasi angka ganjil berakhir pada
h
atauy
.Terima kasih kepada @blutorange untuk kamus lengkap tips golf ruby.
Wah, saya mempersingkat kode saya dengan 100 karakter.
sumber
j
adalah salah ketik.for i in ?a..?z;...;end
dapat diganti dengan(?a..?z).map{...}
; Thethen
setelahif
opsional.v.include?(i)||c.push(i)
kependekan dariunless v.include?(i);c.push(i)
. Gunakanc<<i
untukc.push(i)
.c.map{}
lebih pendek daric.each{}
.i%2==1?1:2
kependekan dariif i%2==1;1;else;2;end
. Ituprint "Enter..."
tidak diperlukan dalam codegolf; )Perl 5 , 112 byte
Cobalah online!
sumber