Inilah lagu Lima bebek kecil (tidak terlalu menakutkan):
Five little ducks went out one day,
over the hills and up away.
Mother Duck said, "Quack Quack Quack Quack",
but only four little ducks came back.
Four little ducks went out one day,
over the hills and up away.
Mother Duck said, "Quack Quack Quack Quack",
but only three little ducks came back.
Three little ducks went out one day,
over the hills and up away.
Mother Duck said, "Quack Quack Quack Quack",
but only two little ducks came back.
Two little ducks went out one day,
over the hills and up away.
Mother Duck said, "Quack Quack Quack Quack",
but only one little duck came back.
One little duck went out one day,
over the hills and up away.
Mother Duck said, "Quack Quack Quack Quack",
but none of the little ducks came back.
Mother duck herself went out one day,
over the hills and up away.
Mother Duck said, "Quack Quack Quack Quack",
and all of the little ducks came back.
Tugas Anda bukan untuk menghasilkan lagu ini. Anda harus mengambil satu ayat dan mengeluarkan ayat berikutnya (ayat berikutnya dari ayat terakhir adalah ayat pertama).
Aturan
- Tolong, jangan ada celah standar.
- Input / output akan diambil melalui metode input / output standar kami.
- The tepat Ayat harus dikeluarkan, dan tidak boleh ada perbedaan bila dibandingkan dengan lirik lagu. Input tidak akan berbeda jika dibandingkan dengan lirik lagu juga.
Contohnya
Mother duck herself went out one day,
over the hills and up away.
Mother Duck said, "Quack Quack Quack Quack",
and all of the little ducks came back.
Diharapkan:
Five little ducks went out one day,
over the hills and up away.
Mother Duck said, "Quack Quack Quack Quack",
but only four little ducks came back.
Three little ducks went out one day,
over the hills and up away.
Mother Duck said, "Quack Quack Quack Quack",
but only two little ducks came back.
Diharapkan:
Two little ducks went out one day,
over the hills and up away.
Mother Duck said, "Quack Quack Quack Quack",
but only one little duck came back.
Jawaban:
Stax ,
115111 byteJalankan dan debug itu
Semua ayat sebagai kasus uji
sumber
JavaScript (ES9), 227 byte
Ini mirip dengan versi Node di bawah ini tetapi menggunakan rumus berdasarkan
parseInt()
bukanBuffer()
untuk mengidentifikasi ayat input.Ini adalah ES2018 (alias ES9) karena kami menggunakan ekspresi reguler dengan
/s
flag ( dotAll ).Cobalah online!
Bagaimana?
Dalam versi ini, kami mem-parsing seluruh ayat input sebagai basis 30 (
0
ket
) dan melakukan bitwise AND dengan 7. Penguraian berhenti pada karakter pertama yang tidak valid, yang mengarah ke:JavaScript (Node.js) ,
233 231227 byteDisimpan 2 byte berkat @Shaggy
Cobalah online!
Bagaimana?
Karakter ketiga dari setiap ayat masukan dapat digunakan sebagai pengidentifikasi unik. Dengan mengambil kode ASCII modulo 9, kita mendapatkan:
Ayat-ayat output dikodekan dengan template berikut:
Di mana setiap digit diganti dengan string sesuai dengan tabel berikut:
Di mana ekspresi reguler
/ w.*\n/s
mengekstrak bagian umum ini dari input:Kami akhirnya menambahkan 11 karakter terakhir dari input, yaitu
" came back."
.sumber
exec
ketika halaman dimuat ulang. Pikiran besar ...!Python 3 ,
267 263254 byte4 byte disimpan berkat @ovs
Cobalah online!
Bekerja dengan mengganti bagian yang relevan dengan bagian masing-masing dari ayat berikutnya.
Setelah preinitialisation,
T
adalah['8', '9', 'and all of the little ducks', 'One little duck', 'but none of the little ducks', 'Two little ducks', 'but only one little duck', 'Three little ducks', 'but only two little ducks', 'Four little ducks', 'but only three little ducks', 'Five little ducks', 'but only four little ducks', 'Mother duck herself']
.Alternatif Python 2 , 252 byte
oleh @ovs
Cobalah online!
sumber
for a in zip(T,T[-2:]+T):s=s.replace(*a)
untuk 264 byte.lambda s:reduce(lambda s,a:s.replace(*a),zip(T,T[-2:]+T),s)
untuk 262 byte dalam Python 2.T[2:]
bukannyaT[-2:]
QuadR ,
257242 byte-14 Terima kasih kepada Black Owl Kai, -1 terima kasih kepada Kevin Cruijssen
Cobalah online!
sumber
Java 10, 347 byte
Cobalah online.
Penjelasan:
sumber
T-SQL,
407 390 388382 byteVARCHAR(MAX)
Setelah beberapa byte-saving
REPLACE
s, jalankan yang berikut ini sebagai SQL dinamis:Menggunakan
CASE
pernyataan danSTUFF
perintah untuk memasukkan / menimpa karakter di posisi yang tercantum.EDIT :
LEFT
alih-alihSUBSTRING
dan menghilangkan spasiCHAR
dan memindahkan surat tambahan ke yang keduaREPLACE
(terima kasih, @CDC!)Ini versi pertamaku, menggunakan metode berbeda (pasca penggantian, diformat):
STRING_SPLIT
danPARSENAME
digunakan untuk memecah string menjadi baris dan kolom melalui-
dan.
pemisah.Kolom pertama adalah karakter kunci yang cocok dengan huruf ke-3 dari ayat input (terima kasih atas idenya, @ Night2). Yang kedua dan ketiga adalah penggantian yang dilakukan untuk ayat itu.
sumber
Python 2 , 1034 byte
Ini kode saya! Ini menggunakan kamus sederhana. Setelah menjalankan kode ini, Anda dapat memasukkan ayat apa saja dan akan menampilkan ayat berikutnya.
PS: Saya baru di saluran ini dan ini adalah posting pertama saya. Saya sangat menyukai tantangan ini jadi memutuskan untuk mencobanya. Silakan mengoreksi saya.
sumber
x
ataua
) 2) Python cukup permisif dengan spasi putih jadi saya akan mencoba menghapus beberapa spasi putih Anda juga. Misalnya Anda tidak memerlukan ruang di sekitar=
. Terakhir Kami memiliki halaman untuk bermain golf dengan python yang dapat Anda kunjungi untuk meningkatkan permainan Anda.sys
dengan menggunakan mis.raw_input()
, Memperpendek kunci kamus, dll. Anda harus paling jelas mengambil bagian berulang dari lagu dan menambahkannya secara terpisahPHP (7.4),
253247 byte-6 byte dengan meningkatkan bagaimana array penggantian dibangun dengan bantuan lebih lanjut dari "Membongkar array dalam".
Cobalah online!
Ini menciptakan array dari setiap kemungkinan penggantian (12 digunakan + 2 tidak digunakan) dalam
key=>value
format. Contoh:['Mother duck herself' => 'Five little ducks', etc...]
lalu ganti yang menggunakan strtr .Satu-satunya hal yang menarik adalah penggunaan pertama saya dari "Unpacking inside array" yang merupakan fitur baru di PHP 7.4.
PHP , 264 byte
Cobalah online!
Saya telah menyimpan kata-kata berbeda dari setiap ayat dalam sebuah array. Saya menemukan ayat mana input menggunakan karakter ketiga input karena unik (
vuroet
). Kemudian saya hanya mengganti kata-kata berbeda dari ayat itu dengan kata-kata berbeda dari ayat berikutnya.sumber
Bersih , 352 byte
Cobalah online!
sumber
C # (Visual C # Interactive Compiler) , 262 byte
Cobalah online!
sumber
PowerShell ,
356343340336 byteCobalah online .
Versi yang lebih mudah dibaca:
sumber
PowerShell ,
265263255251246 byteCobalah online!
Saya menggunakan kekuatan kasar untuk menemukan ekspresi
+"$args"[2]*37%724%7
.Terima kasih @Arnauld untuk
3rd char
.sumber
Japt v2.0a0, 143 byte
Mencoba meng-encode satu ayat dengan penggantian tetapi, pada akhirnya, mengadaptasi solusi Arnauld akhirnya menjadi lebih pendek. Punya ide lain yang mungkin, semoga, berhasil lebih pendek lagi tetapi tidak tahu kapan saya akan mencobanya.
Cobalah - sertakan semua ayat
sumber
Bash ,
373355 byteTidak ada yang terlalu gila di sini. Reduksi beberapa byte yang mudah akan menggantikan variabel dua karakter (a1, a2, a3, e1..e6) dengan yang karakter tunggal.
Cobalah online!
Cobalah online!sumber
05AB1E , 134 byte
Cobalah online!
Karena saya relatif baru di 05AB1E, ini mungkin bisa banyak golf
sumber
Perl 6 , 247 byte
Cobalah online!
Jelas golf, terutama 5 elemen terakhir dalam daftar dalam formulir
"num $l num-1"
, atau regex awal yang cocok dengan bagian kanan input lama.sumber
Arang , 156 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Lihatlah karakter ketiga dari baris pertama untuk mengetahui ayat mana yang kita inginkan.
Output bagian pertama dari baris pertama dengan pengindeksan ke dalam daftar string
Five
,Four
,Three
,Two
,One
,Mother duck herself
. Kemudian cetaklittle duck
dans
jika perlu, diikuti oleh 18 karakter terakhir dari baris input (yang selalu sama pada setiap ayat).Dua baris tengah selalu sama pada setiap ayat.
Untuk baris terakhir ternyata menjadi golfier untuk dimasukkan
little ducks
dalam daftar alternatif karena beberapa alasan, tetapi 11 karakter terakhir masih disalin dari input.sumber
tinta , 353 byte
Cobalah online!
Pertama, gunakan pemeriksaan substring untuk mencari tahu apa ayat kita - itu cukup mudah berkat kapitalisasi angka di awal -
F
,T
danO
tidak terjadi di tempat lain, dan Anda dapat membedakan ayat kedua dan keempat dari yang pertama dan ketiga dengan juga memeriksaFi
danTh
masing masing.Lalu kami hanya melakukan apa yang dilakukan tinta dengan sangat baik dan mencetak teks biasa yang ditandai dengan persyaratan. Saya mencoba menggunakan pernyataan switch pada awalnya, tetapi sementara itu tampak lebih bagus, itu sebenarnya berakhir lebih lama.
Anda akan berpikir bahwa
Quack
s akan menjadi tempat yang baik untuk menggunakan variabel, apa dengan string yang diulang banyak, tetapi variabel datang dengan overhead yang cukup bahwa setiap cara saya mencoba melakukan itu membuat kode lebih lama. Mungkin itu pertanda aku tidak seharusnya main golf dengan tinta.sumber