Terima kasih kepada @ComradeSparklePony untuk judulnya.
Tantangan ini harus sangat sederhana. Anda diberi tiga daftar.
Yang pertama adalah daftar nama depan, dalam kasus judul.
Yang kedua adalah daftar kata sifat, dalam huruf kecil.
Yang ketiga adalah daftar kata benda, dalam huruf kecil.
Harap pilih nama, kata sifat opsional, dan kata benda, dan keluaran secara acak <Name>'s <adjective> <noun>
. Namun, setiap kata harus dimulai dengan huruf yang sama. Anda dapat mengasumsikan bahwa semua kata dimulai dengan huruf. Anda juga dapat mengasumsikan (tetapi perhatikan jawaban Anda jika Anda melakukannya):
- bahwa semua kata hanya terdiri dari karakter alfabet
- bahwa setidaknya ada satu kata benda untuk setiap nama
- bahwa setidaknya ada satu nama untuk setiap kata benda
Namun Anda tidak dapat mengasumsikan bahwa kata sifat ada untuk pasangan nama dan kata benda tertentu, karena kata sifat bersifat opsional sehingga hasilnya akan tetap valid.
Anda tidak harus memilih surat bersama secara seragam, meskipun semua surat yang tersedia harus memiliki peluang yang tidak nol untuk terjadi. Namun Anda harus memastikan bahwa semua keluaran untuk surat yang diberikan memiliki peluang yang sedekat mungkin terjadi dalam batas-batas pembangkit angka acak bahasa Anda. Dalam hal kata sifat, ini setara dengan memiliki entri tambahan yang berarti "tidak ada kata sifat untuk surat ini" yang memiliki peluang yang sama dengan semua kata sifat lainnya untuk surat itu.
Contoh daftar masukan:
Joan Neil Nicola Oswald Sherman Stephanie
new novel old original second silent
jeep noun novel output second sheep snake
Contoh output untuk input ini (setiap baris adalah contoh terpisah):
Stephanie's second second
Sherman's silent snake
Oswald's original output
Nicola's novel novel
Neil's noun
Joan's jeep
Perhatikan tidak ada ruang ekstra antara kata-kata dalam dua contoh terakhir.
Ini adalah kode-golf , jadi kode terpendek yang tidak mematahkan celah standar menang!
Jika hal itu tidak membantu, Anda dapat memasukkan semuanya dalam huruf besar, tetapi Anda masih perlu menampilkan dalam huruf besar.
j
-duga akankah peluang menjadi 4 in 9? Mungkin layak menempatkan probabilitas terhadap output, atau menghitung semua output - seperti yang saya pahami tidak hanya "semua output untuk huruf yang diberikan ..." tetapi juga semua output yang berbeda harus memiliki kemungkinan yang sama (diberi nilai berbeda dalam setiap daftar).Jawaban:
Jelly ,
27 2524 byte-1 berkat Erik the Outgolfer (gunakan nol alih-alih karakter spasi)
Program lengkap yang menerima argumen dalam bentuk daftar string yang diformat Python yang mencetak output ke STDOUTt.
Cobalah online!
Bagaimana?
sumber
05AB1E ,
24 2321 byteAsumsikan ada kata benda untuk setiap nama, sebagaimana diizinkan oleh tantangan.
Cobalah online!
Penjelasan
sumber
¯ª
dan dia€˜
pintar! Saya punya jawaban 26 byte, tetapi mengalami kesulitan memperbaiki ruang ganda ketika tidak ada kata sifat ..¯
alih-alih mengisi dengan string kosong saya harus membersihkan secara manual nanti.R ,
155148 byte-7 byte terima kasih kepada Giuseppe (gunakan
*
untuksample
)Cobalah online!
Menggunakan sampel penolakan: menggambar secara acak nama, kata sifat (mungkin string kosong) dan kata benda sampai huruf pertama cocok. Kondisi ini diperiksa dengan menghitung jika jumlah elemen unik dalam vektor yang terbentuk dari huruf pertama, ditambah string kosong, panjangnya 2 - ini memungkinkan kata sifat kosong.
Kemudian cetak hasilnya, dengan ruang tambahan jika kata sifat tidak kosong.
Kemungkinan yang berbeda dimulai dengan huruf yang sama memiliki probabilitas kejadian yang sama, karena
sample
menarik dari distribusi yang seragam. Cara termudah untuk melihat ini adalah dengan syarat jika nama dan kata benda dimulai dengan huruf yang sama (yang tidak masalah: jika tidak, kami akan menolak). Sekarang syarat pada acara yang kami terima: ini berarti kami menggambar kata sifat kosong, atau kata sifat dimulai dengan huruf yang sama. Setiap kemungkinan ini masih memiliki probabilitas yang sama.sumber
sample
menarik dari distribusi seragam. Cara termudah untuk melihat ini adalah dengan syarat jika nama dan kata benda dimulai dengan huruf yang sama (yang tidak masalah: jika tidak, kami akan menolak). Sekarang syarat pada acara yang kami terima: ini berarti kami menggambar kata sifat kosong, atau kata sifat dimulai dengan huruf yang sama. Setiap kemungkinan ini masih memiliki probabilitas yang sama.JavaScript (ES6),
139 124 122120 byteSimpan 2 byte berkat @Neil
Mengambil input sebagai
(names,adjectives)(nouns)
.Cobalah online!
Atau periksa distribusi 5 juta undian
Bagaimana?
Kami kemudian memeriksa apakah semua huruf awal identik dengan ekspresi reguler berikut:
sumber
+[(o=g([,...a]))&&o+' ']+
menghemat 2 byte, saya pikir?Python 3 ,
161 154 151 147145 byte( Terima kasih ArBo, EmbodimentOfIgnorance, Neil yang telah berkontribusi 2, 3 dan 4 byte untuk golf pertama saya! )
Cobalah online! (dengan eksekusi 500 ribu)
Mengambil tiga daftar sebagai input.
Diasumsikan setidaknya satu kata benda untuk setiap nama.
Skor yang sama, lebih banyak golf-y:
Python 3 , 145 byte
Cobalah online!(dengan eksekusi 500 ribu)
Itu hanya 140 jika spasi spasi tambahan diperbolehkan (dengan menghapus wajah persegi
[:-1]
)sumber
while t>""<t[0]!=w
. Anda juga dapat mengganti baris terakhir denganprint(s+"'s",t+(t and" ")+o)
, menjatuhkanu=
baris ketiga.t
satu kali sehingga Anda dapat menyimpan 4 byte dengan memasukkan kode. Saya pikir Anda dapat beraliho
untuk menggunakan pola kode yang serupat
, dan kemudian menyimpan 4 byte lainnya dengan menguraikannya juga.o
: Saya mencapai ini:from random import*
c=choice
def f(N,a,n):
s=c(N);y=lambda p,e=[]:c([x for x in p if x[0]==s[0].lower()]+e);print(s+"'s",y(a,[""])+y(n))
( 137 ) tetapi menambahkan spasi putih bersyarat, melalui argumen opsional untuky
, biaya saya 11 byteJelly , 28 byte
Cobalah online!
Tulis ini sebelum saya melihat jawaban yang lebih pendek dari @ JonathanAllan, tetapi menganggapnya layak untuk dikirim karena menggunakan pendekatan yang berbeda. Disimpan 3 byte oleh saran @ EriktheOutgolfer pada jawaban itu.
Program lengkap mengambil daftar daftar string dan secara implisit mencetak aliterasi yang dipilih secara acak. Diasumsikan setidaknya satu kata benda per nama.
sumber
C # (Visual C # Interactive Compiler) , 176 byte
Cobalah online!
sumber
Merah , 179 byte
Cobalah online!
Penjelasan:
sumber
Scala ,
234226234206 byte-28 karena saya pikir itu harus menerima StdIn, itu berfungsi sekarang
Cobalah online!
Tidak Disatukan:
sumber
Ruby , 94 byte
Cobalah online!
sumber
Ikon ,
167163 byteCobalah online!
Menggunakan algoritma yang sama dengan
Red
jawaban saya .sumber