Sementara berusaha (dan gagal) telah membujuk putra bayi saya untuk makan malam, saya mencoba menyanyi untuknya. Pertengahan jalan melalui lagu ini saya menyadari struktur formula mungkin cocok untuk kode golf!
Tugasnya adalah menulis program atau fungsi yang tidak menerima input dan menghasilkan teks berikut:
There's a hole in the bottom of the sea
There's a hole in the bottom of the sea
There's a hole, there's a hole
There's a hole in the bottom of the sea
There's a log in the hole in the bottom of the sea
There's a log in the hole in the bottom of the sea
There's a hole, there's a hole
There's a hole in the bottom of the sea
There's a bump on the log in the hole in the bottom of the sea
There's a bump on the log in the hole in the bottom of the sea
There's a hole, there's a hole
There's a hole in the bottom of the sea
There's a frog on the bump on the log in the hole in the bottom of the sea
There's a frog on the bump on the log in the hole in the bottom of the sea
There's a hole, there's a hole
There's a hole in the bottom of the sea
There's a wart on the frog on the bump on the log in the hole in the bottom of the sea
There's a wart on the frog on the bump on the log in the hole in the bottom of the sea
There's a hole, there's a hole
There's a hole in the bottom of the sea
There's a hair on the wart on the frog on the bump on the log in the hole in the bottom of the sea
There's a hair on the wart on the frog on the bump on the log in the hole in the bottom of the sea
There's a hole, there's a hole
There's a hole in the bottom of the sea
There's a fly on the hair on the wart on the frog on the bump on the log in the hole in the bottom of the sea
There's a fly on the hair on the wart on the frog on the bump on the log in the hole in the bottom of the sea
There's a hole, there's a hole
There's a hole in the bottom of the sea
There's a flea on the fly on the hair on the wart on the frog on the bump on the log in the hole in the bottom of the sea
There's a flea on the fly on the hair on the wart on the frog on the bump on the log in the hole in the bottom of the sea
There's a hole, there's a hole
There's a hole in the bottom of the sea
There's a smile on the flea on the fly on the hair on the wart on the frog on the bump on the log in the hole in the bottom of the sea
There's a smile on the flea on the fly on the hair on the wart on the frog on the bump on the log in the hole in the bottom of the sea
There's a hole, there's a hole
There's a hole in the bottom of the sea
Aturan tantangan:
- Teks dapat dicetak atau dikembalikan sebagai keluaran fungsi
- Setiap ayat dipisahkan oleh satu baris kosong
- Trailing whitespace OK selama tidak mengubah tata letak (jadi tidak ada spasi putih terkemuka atau spasi ekstra di antara kata-kata)
- Mengejar baris baru juga OK.
- Tidak ada baris baru.
- Semua bahasa disambut, dan ini adalah kode-golf , jadi jawaban terpendek dalam byte untuk setiap bahasa menang!
gzip -5
kompres ke 186 byte (danbzip2
danxz
tampaknya lebih buruk).Jawaban:
SOGL ,
1039493 byteCoba di sini!
sumber
Stax ,
908775 byteJalankan dan debug itu
Membongkar, tidak diserang, dan berkomentar sepertinya ini.
Jalankan yang ini
sumber
Perl 5,
158154 byte154 byte
158 byte
sumber
There's a bottom of the sea
. Fakta-fakta memeriksa, +1There's a sea
tetapi lebih lamaPython 2 ,
202190187185183182181 byteCobalah online!
Alternatif lama
'io'['g'in s]
(13 byte):'oi'[s[5]<'n']
'io'[len(s)>30]
,'ioo'[len(s)%3]
,'ooi'[len(s)%4]
, dan'io'[w[1]=='o']
Disimpan:
sumber
"hole, t%shole\n"%a[1:]
menghemat satu byte'oi'[s[5]<'n']
akan menjadi alternatif lama juga: Menampilkan'io'['g'in s]
!C (gcc) ,
261246236 byte-15 byte, Terima kasih kepada Daniel Schepler
-10 byte, Terima kasih untuk ceilingcat
Cobalah online!
sumber
,*b="_TH<0$\31\r"
sebagai gantinya?05AB1E ,
1031009997969392 byteMenyimpan satu byte berkat Kevin Cruijssen
Cobalah online!
Penjelasan
“¥ÊˆŽ bumpÑå‡îtíÁ¤†îÌea¹²“#v
mulai loop di atas daftar["hole", "log", "bump", "frog", "wart", "hair", "fly", "flea", "smile"]
. Kata-kata tersebut dikompres menggunakan kamus 05AB1E.Pada masing-masing kita lakukan:
sumber
õ
, karena tampaknya itu mengeluarkan string kosong secara default ketikas
wap digunakan dengan apa pun di stack . Saya tidak dapat menemukan hal lain untuk bermain golf; jawaban yang sangat bagus!PowerShell ,
194188185180174 byteCobalah online!
Sepertinya tidak bisa menangkap Python ...Pada dasarnya, menetapkan beberapa string umum untuk
$h
,$a
,$z
, dan$b
, kemudian pergi melalui loop melalui masing-masing item (hole
,log
, ...flea
,smile
), setiap iterasi keluaran ayat yang sesuai. Ada sedikit logika dengan!$j++
di tengah untuk memperhitungkanin
/on
switch yang terjadi. Kalau tidak, semua string dibiarkan begitu saja di pipeline, dan defaultnyaWrite-Output
memberi kita baris baru secara gratis.-6 byte terima kasih kepada Arnauld.
-3 byte berkat mazzy.
-5 byte berkat Veskah.
-6 byte berkat mazzy.
sumber
-split
sedikit untuk mendapatkan kata-kata.JavaScript (ES6),
201 194 189 188187 byteDisimpan 1 byte berkat @Shaggy
Cobalah online!
JavaScript (ES6), 235 byte
Cukup RegPack'ed .
Cobalah online!
sumber
Bash,
168160 byte160 byte
168 byte
Diterjemahkan dari jawaban saya yang lain di Perl.
sumber
Japt
-Rx
,126116113112111109107 byteTernyata golf tantangan kompresi string saat di ponsel Anda ke bawah boozer sangat sulit - siapa yang pernah dipukul ?!
Menguji
sumber
XML,
719673603514493486 byteAnda dapat "mengeksekusi" dengan
xmlstarlet sel -t -m '//a' -v . -n <xml_file_here>
.Ini akan jauh lebih mudah jika XML tidak begitu bertele-tele, tetapi sisi baiknya, ini kurang dari 25% ukuran teks asli.
sumber
Retina 0.8.2 , 150 byte
Cobalah online! Penjelasan:
Masukkan ayat terakhir.
Hitung semua ayat.
Letakkan ayat-ayat itu dalam urutan yang benar.
Lengkapi setiap ayat dan tambahkan paduan suara.
Perluas beberapa penampung.
sumber
R ,
237231 byteCobalah online!
sumber
PHP,
180178 byteJalankan dengan
-nr
atau coba online .Menghasilkan peringatan di PHP 7.2; untuk memperbaiki, beri tanda kutip di sekitar
elemen array
io
,,hole
dan keduanya standaloneT
.sumber
C (gcc) ,
334328307299 byteCobalah online!
sumber
Perl 6 , 166 byte
Cobalah online!
sumber
Japt
-R
, 142 byteCobalah online!
sumber
Batch, 267 byte
t
berisi string yang diulang dalam paduan suara,s
berisi sebagian besar baris ayat, sementarar
memilih antarain the
danon the
. Dalam ayat tersebut, hanya 11 karakter pertamat
yang diperlukan, sedangkan di baris chorus pertama salinan keduat
memilikiT
huruf lebih rendah dan baris chorus kedua menggunakan kembali 25 karakter terakhirs
.sumber
Ruby ,
173170 byteCobalah online!
sumber
Haskell ,
243215 byteDikurangi menjadi 215 byte dengan bantuan besar dari nimi
Cobalah online!
(Versi 243 byte lama ada di sini ).
Solusi yang cukup mudah.
sumber
s
hanya menggunakan satu kali, jadi Anda bisa memasukkannya. b) Anda selalu tambahkan dan append sesuatu untukt
, sehingga Anda dapat membuat sebuah (infix) fungsi:t#u=t:"here's a "++u
. c) membuat daftar besar berfungsil
denganmap(++" on the ")(words"smile flea ..."
lebih pendek. Juga: pindahkan semua yang ditambahkan ke daftar itu ke dalam daftar itu sendiri. d) daftar angka untuk dijatuhkan sekarang berjalan dari8
bawah ke0
(angka satu digit!) e) sekarang inliningi
juga menghemat beberapa byte. f) tidak perlu menyebutkan fungsi utama Anda. Menurut meta kami, nilai Haskell dianggap fungsi yang tepat, jadi jatuhkanv=
.>>=
(concatMap) dari daftar monad dan inlineconcat
in functionl
. Cobalah online!JavaScript (Babel Node) , 239 byte
-7 byte dari @Oliver
*.*
Cobalah online!
sumber
T
Baris kedua pada baris ke-3 dari setiap ayat harus menggunakan huruf kecil.Python 3 ,
213 206 198193 byteCobalah online!
-15 byte terima kasih kepada @Sara
-5 byte terima kasih hanya untuk @ ASCII
Mungkin sedikit lebih golf, tetapi tidak banyak.
sumber
o=e=
akan membuat keduanyao
dane
merujuk ke objek yang sama. Saya juga berpikir perpecahan akan lebih lama.o
dane
jangan mengacu pada objek yang sama ... hanya saja string yang berubah dengan Python sehingga hal-hal seperti+=
akan membuat salinan baru bukan bermutasi yang ada satuBersih , 267 byte
Cobalah online!
sumber
cQuents ,
238219 byteCobalah online!
Tantangan ini akhirnya membuat saya menerapkan daftar dan string dalam bahasa saya. Bahasa ini dibangun untuk sekuens integer, jadi itu cukup baik!
Penjelasan
sumber
Perl 5 , 194 byte
@ ASCII-only mencukur 6 byte dengan baris baru literal dan
\l
trik yang saya lupaCobalah online!
sumber
\l
sebelumnya, tetapi tidak pernah punya alasan untuk menggunakannya, jadi tidak pernah memikirkannya.Arang ,
115106 byteCobalah online! Tautan adalah untuk mengucapkan versi kode. Sunting: Disimpan 9 byte dengan menyalin kode Batch saya untuk baris terakhir paduan suara. Penjelasan:
Simpan string
There's a hole
, yang digunakan dua kali apa adanya, ketiga kalinya dalam huruf kecil, dan juga yang keempat tetapi hanya 10 karakter pertama.Pisahkan string
bottom of the seaxhole ixlog ixbump oxfrog oxwart oxhair oxfly oxflea oxsmile o
padax
s.Ulangi 9 ayat, ambil
i+2
elemen pertama dari array, balikkan, gabungkann the
, dan awaliThere's a
hasilnya.Rentangkan setiap baris menjadi sebuah ayat dengan menduplikasi baris dan membuat chorus. Setiap baris ayat kemudian dicetak secara implisit pada setiap barisnya sendiri, dan setiap ayat secara implisit dipisahkan oleh baris kosong.
sumber
V ,
184170 byteCobalah online!
Penjelasan:
4iThere's a hole in the bottom of the sea<\n><esc>
Masukkan "Ada lubang di dasar laut" 4 kali.kk
Pindah ke baris ketigay5w
salin "Ada lubang"5eá,
masukkan koma setelah "Ada lubang"lp
rekatkan setelah komaD
hapus sisa baris5brt
huruf kecil T keduaHj4yy
salin 4 baris dari baris keduaGp
Rekatkan semuanya setelah baris pertama4w8ion the <esc>
(di akhir ayat pertama) pindah ke "lubang" pertama di ayat kedua dan masukkan "pada" 8 kali2briilog <esc>
bergerak mundur ke "on" terakhir, ganti o dengan i dan kemudian masukkan "log"3bibump <esc>3bifrog <esc>3biwart <esc>3bihair <esc>3bifly <esc>3biflea <esc>3bismile <esc>
Pindah mundur melewati garis, masukkan kata-kata yang tepat di antara masing-masing "pada"7ñ4yykp4wd3wñ
jalankan4yykp4wd3w
7 kali4yykp
duplikat ayat sebelum yang ini4wd3w
pindah ke kata pertama setelah "Ada lubang" dan hapus 3 kata8ñÄ5jñ
duplikat baris pertama dari setiap ayat setelah yang pertama (ada 8 di antaranya untuk dilakukan)sumber
/// , 216 byte
Cobalah online!
Tugas semacam ini adalah satu-satunya hal yang /// cukup bagus. : D Hei, hasilnya lebih pendek dari C, C # atau Java!
Output dari program ini berakhir dengan dua jeda trailing line; berharap itu bukan pemecah kesepakatan.
Bagaimanapun, tidak ada kepintaran nyata di sini. Saya hanya mengidentifikasi string yang berulang dan menetapkan pintasan satu karakter untuk mereka, dan mengulangi sampai saya tidak melihat string yang berulang lagi. Saya melakukan ini dengan cara yang kurang lebih naif dan serakah. Namun, saya sengaja mendefinisikan jalan pintas untuk "senyum pada kutu di ... laut", diikuti oleh "kutu on the fly di ... laut", dan sebagainya, untuk membentuk rantai pintasan . Hasilnya adalah seluruh urutan kata benda baru terlihat jelas dalam kode, dan menurut saya itu cukup menyenangkan. :)
Setelah V dan U diganti, kami memiliki kode yang lebih mudah dibaca berikut:
sumber
LaTeX, 265
268karaktermengkompilasi ke dalam PDF yang bagus, dengan lekukan paragraf dan segalanya.
Tidak dikumpulkan dan berkomentar:
Output:
sumber
C # (Visual C # Interactive Compiler) , 220 byte
Cobalah online!
-5 byte terima kasih kepada @ASCIIOnly dan -2 byte terima kasih kepada @someone!
Saya memiliki anak kecil dan dapat meyakinkan Anda bahwa lagu ini adalah bagian yang sama menarik dan menyebalkan.
sumber
.Any()
->!=""
?in
diforeach
> _>