Tulis fungsi atau program yang menggunakan dua kata sebagai input dan output varian dari twister lidah bahasa Inggris yang populer, "Berapa banyak kayu yang akan dipotong oleh kayu jika kayu dapat dibuang?".
Output akan menggunakan kata pertama empat kali
- Seberapa banyakkah
wood
sebuahwood
chuck akan keluar jika sebuahwood
chuck dapat terlepaswood
?
dan kata kedua empat kali
- Berapa banyak kayu
chuck
chuck
jika kayuchuck
bisachuck
kayu?
dengan sisa output sama untuk input apa pun.
How much
kayuwould a
woodchuckchuck
if a
woodchuckcould
chuckkayu
?
Input dan output dapat dalam format apa pun yang bahasa Anda cukup dikenal sebagai berurusan dengan string teks. Keluaran harus persis dalam format yang ditunjukkan, termasuk huruf besar, spasi dan ketiadaan, dan tanda tanya akhir. Jalur tambahan tambahan opsional dapat diterima.
Idealnya kode Anda akan menangani input yang mengandung karakter ASCII yang dapat dicetak. Namun, itu diizinkan untuk membatasi input ke subset wajar ASCII yang dapat dicetak; cukup tunjukkan ini dalam jawaban Anda. Menangani set karakter yang lebih besar tentu saja baik-baik saja.
Pasangan input-output contoh:
"wood", "chuck"
"How much wood would a woodchuck chuck if a woodchuck could chuck wood?"
"ground", "hog"
"How much ground would a groundhog hog if a groundhog could hog ground?"
"bar", "keep"
"How much bar would a barkeep keep if a barkeep could keep bar?"
"money", "belt"
"How much money would a moneybelt belt if a moneybelt could belt money?"
"rain", "fall"
"How much rain would a rainfall fall if a rainfall could fall rain?"
"hair", "cut"
"How much hair would a haircut cut if a haircut could cut hair?"
"green", "house"
"How much green would a greenhouse house if a greenhouse could house green?"
"jabber", "wock"
"How much jabber would a jabberwock wock if a jabberwock could wock jabber?"
"pine", "apple"
"How much pine would a pineapple apple if a pineapple could apple pine?"
"Rob", "Lowe"
"How much Rob would a RobLowe Lowe if a RobLowe could Lowe Rob?"
"code", "golf"
"How much code would a codegolf golf if a codegolf could golf code?"
"fish", ""
"How much fish would a fish if a fish could fish?"
"", "fish"
"How much would a fish fish if a fish could fish ?"
"", ""
"How much would a if a could ?"
" ", " "
"How much would a if a could ?"
"would a", "how much"
"How much would a would a would ahow much how much if a would ahow much could how much would a?"
Ini adalah kode-golf , byte paling sedikit menang. Jawaban diterima dalam semua bahasa, bahkan jika beberapa bahasa lain dapat melakukannya dalam lebih sedikit byte.
(Terinspirasi oleh meme ini , yang menggunakan satu pasangan input lebih baik daripada pola kaku ini ....)
"", ""
berarti tidak: pJawaban:
Python 3 ,
7067 byteCobalah online!
Maksudku, jika sepatunya pas ..
Terima kasih untuk manatwork karena menangkap kesalahan ketik
Terima kasih kepada Remco Haszing untuk ide -3 byte yang sangat baik
Saya kehabisan asumsi bahwa ini akan tetap merupakan pengiriman yang valid (karena bung, terlalu keren untuk tidak mencoba). Jika OP dapat mengklarifikasi apakah ini dapat diterima (karena saya belum menulis fungsi, per se), itu akan dihargai.
Pembaruan: Berkat diterima, semuanya baik :)
Versi sebelumnya:
sumber
"How much {0} would a {0}{1} {1} if a {1}{0} could {1} {0}?".format
. Ini mengembalikan fungsi yang terikat ke string yang tidak diformat.print("How much {0} would a {0}{1} {1} if a {0}{1} could {1} {0}?".format("wood","chuck"))
menghasilkan keluaran yang diinginkan, saya tidak melihat alasan untuk tidak menerimanya :)T-SQL, 82 byte
Input diambil dari tabel yang sudah ada dengan kolom dan , sesuai aturan IO kami .t w c
Satu byte lebih lama, tetapi untuk beberapa alasan sedikit lebih menyenangkan:
Versi ini berfungsi pada subset input yang tidak termasuk angkaw
2
dalam kata pertama .Karena saya menggunakan SQL, saya dapat memuat semua contoh ke dalam tabel, dan menjalankan semuanya sekaligus:
sumber
select'How much &1 would a &1&2 &2 if a &1&2 could &2 &1?'from dual
Bash , 50 byte
Cobalah online!
-5 byte karena bantuan dari komentar di bawah ini.
sumber
Stax ,
33313029 byte-1 berkat rekursif !
Jalankan dan debug di staxlang.xyz!
Dorong setiap komponen ke tumpukan dengan urutan terbalik, lalu gabungkan semua dengan spasi.
Dibongkar (35 byte) dan penjelasan:
Semuanya antara `` adalah string literal terkompresi. Koma itu sangat penting. Terakhir kali saya membaca dari tumpukan input, saya harus pop daripada mengintip untuk menghindari "chuck" tambahan pada akhir output saya.
Anda akan melihat bahwa saya meletakkan kedua input pada baris yang sama untuk beberapa test case, dan semuanya dalam urutan terbalik. Ini diperlukan untuk mengambil string kosong atau string spasi sebagai input.
2726 byte dengan batasan pada inputJalankan dan debug di staxlang.xyz!
Sama seperti SOGL @ dzaima , ini akan gagal jika input pertama berisi huruf kecil 'y'. Menekan string "Berapa b akan a oleh y jika oleh bisa yb?", Kemudian membuat sepasang penggantian.
sumber
,
dalam solusi 31 byte Anda dapat dihapus. Berikut ini+
secara implisit muncul dari tumpukan input, sehingga perilakunya identik.JavaScript, 70 byte
Membosankan!
Cobalah online!
Agak kurang membosankan!
Cobalah online!
sumber
f(a)(b)
) seperti yang Anda lihat di TIO. Tapi ya, konsensus kami untuk mengizinkan fungsi yang telah dikerjakan dan saya pikir kami sudah dekat dengan konsensus tentang memungkinkan fungsi untuk benar-benar dikembalikan.SOGL ,
3230 byteCoba di sini!
Input pertama tidak boleh berisi surat
y
, yang tampaknya meninggalkan subset ASCII (dan unicode) yang masuk akal.½ouiīZģ9Ο|ΧyΚ⅞ō÷Jeq(‚7‘
adalah string terkompresi dari"how much b would a by y if a by could y b?"
(karakter yang dipilih sehingga kata-kata yang diperlukan semua ada di 512 kata teratas dari kamus yang kompres lebih baik), kemudianb
diganti dengan input 1 dany
dengan 2.sumber
y -> wood
dann -> chuck
. Sepersepuluh Dignity Point mengatakan itu juga terjadi di sini.b
tidak diizinkan di input pertama namune
ok di input kedua?e
, karena jika tidak maka akan diganti dengan input ke-2 pada penggantian ke-2R ,
907776 byte-13 terima kasih kepada Sumner18
-1 terima kasih kepada Giuseppe
Cobalah online!
sumber
gsub
untuk -13 byte sebagai gantinya. tio.run/…gsub
jelas lebih masuk akal.pryr
, Anda bisa mendapatkannya hingga 73 .x
tidak termasuk karakter2
; gagal dalam hal ini ( TIO ).PHP , 72 byte
Cobalah online!
Atau:
PHP , 72 byte
Cobalah online!
Input dari baris perintah, output ke
STDOUT
.sumber
JavaScript (V8) , 72 byte
Cobalah online!
Tugas variabel sebenarnya menyimpan 0 byte, tapi saya pikir saya akan menyimpannya hanya untuk membuat ini sedikit unik.
sumber
ZX Spectrum Basic, 87 byte
Hanya untuk kelengkapan, implementasi langsung:
Menggunakan
IF
kata kunci (1 byte) membuat golf turun 3 byte, tetapi memecah kondisi "kapitalisasi yang sama":sumber
Karat , 75 byte
Cobalah online!
Menggunakan trik ini , yang memungkinkan Anda melewati indeks pemformatan sekali per item ke format.
Juga menggunakan
print!()
, karena itu satu byte lebih pendek daripada membangun string denganformat!()
dan mengembalikannya.sumber
05AB1E ,
37353130 byte-5 byte terima kasih kepada @Grimy .
Mengambil daftar dua item:
wood
sebagai nilai pertama danchuck
sebagai yang kedua.Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
Lihat ini ujung 05AB1E saya (bagian Cara menggunakan kamus? ) Untuk memahami mengapa
“Howƒ×1€Þ a ÿ0€¬ a ÿƒˆ01?“
adalah"How much1 would a ÿ0 if a ÿ could01?"
.sumber
$ù
seperti itu untuk menyimpan byte tambahan, terima kasih.Applesoft BASIC,
7776 byteHal di atas mungkin tidak terlihat seperti BASIC yang tepat, tetapi Applesoft memungkinkan beberapa pintasan saat menggunakan
PRINT
pernyataan:?
di tempatPRINT
ketika memasukkan pernyataan;
atau+
) dapat dihilangkanNomor baris diperlukan, atau
INPUT
pernyataan akan menyebabkan?ILLEGAL DIRECT ERROR
sumber
33 , 78 byte
Cobalah online!
Mengambil input sebagai argumen baris perintah.
Bonus: 91 byte
Cobalah online!
Memberikan output yang menyerupai dirinya sendiri ketika diberi input
1bztp
dan2bztp
sumber
Kotlin , 59 byte
Cobalah online!
sumber
PowerShell , 65 byte
Cobalah online!
Satu-satunya hal yang perlu diperhatikan adalah Anda harus lolos dari tanda tanya karena itu bisa menjadi bagian valid dari pengenal PowerShell
sumber
VBA, 107 byte
Harus dijalankan sebagai VBScript juga, saya menggunakan dua cara pintas: "ould" berulang dan "chuck" tidak pernah muncul tanpa ruang tambahan.
sumber
a=[A1]:b=[B1&" "]:o="ould ":?"How much "a" w"o"a "a b b"if a "a b"c"o b a"?
. Mengambil input dari[A1]
dan[B1]
. Kami memiliki Kiat untuk bermain golf di VBA yang Anda pertimbangkan untuk dilihat.[A]
dan[B]
sebagai input membawanya ke 73. Saya tidak begitu mengerti bagaimana Anda melewati, merasa bebas untuk menambahkan jawaban Anda sendiri.C # ,
165148133 byteTerima kasih kepada Andrew Baumher karena memberi tahu saya tentang string yang diinterpolasi !!
EDIT: Kelas penuh sekarang menambahkan
EDIT: Terima kasih kepada Kenneth K. karena telah memberi saya beberapa tips untuk memperpendeknya.
EDIT: Terima kasih kepada Andrew lagi karena memberi tahu saya bahwa menggunakan string yang diinterpolasi sebenarnya lebih lama dalam skenario ini.
sumber
a=>System.Console.WriteLine($"How much {a[0]} would a {a[0]}{a[1]} {a[1]} if a {a[0]}{a[1]} could {a[1]} {a[0]}?")
void M(string[]a){System.Console.WriteLine($"How much {a[0]} would a {a[0]}{a[1]} {a[1]} if a {a[0]}{a[1]} could {a[1]} {a[0]}?");}
System.Func<string>M=a=>System.Console.WriteLine($"How much {a[0]} would a {a[0]}{a[1]} {a[1]} if a {a[0]}{a[1]} could {a[1]} {a[0]}?");
System.Action<string>M=a=>System.Console.WriteLine($"How much {a[0]} would a {a[0]}{a[1]} {a[1]} if a {a[0]}{a[1]} could {a[1]} {a[0]}?");
Haskell , 76 byte
Cobalah online!
Pertama coba, jadi saya harap saya tidak melanggar aturan.
sumber
Jelly , 39 byte
Program lengkap yang menerima daftar dua string.
Cobalah online!
... Atau (juga program lengkap yang menerima daftar dua string)
Cobalah online!
sumber
Python 3 , 80 byte
Cobalah online!
ketika di Roma, gunakan format str.
Diedit menggunakan trik squid.
sumber
lambda n:
sebelum itu, dan dapat dropprint()
.How much ...
bukanhow much ...
.'how much {0} would a {0}{1} {1} if a {0}{1} could {1} {0}?'.format
.C # (Visual C # Interactive Compiler) ,
6665 byteCobalah online!
sama seperti orang lain, kecuali C #. -1 byte dengan menggunakan currying strat a => b => c bukannya (a, b) => c
sumber
Func<string,string,string>
menjadiFunc<string,Func<string,string>>
dan ubah(x,y)
kex=>y=>
R , 95 byte
Cobalah online!
sumber
a
danb
, yang tidak diizinkan di bawah aturan Input / Output Defaultstringr
menghemat beberapa.APL (Dyalog Unicode) ,
5659 byteCobalah online!
Dfn cukup mudah. Menghemat satu byte dengan memotong
∊
jika kami diizinkan mengembalikan array string, bukan string tunggal.3 byte ditambahkan karena saya lupa menambahkan tanda tanya.
sumber
Bahasa Wolfram (Mathematica) , 68 byte
Cobalah online!
sumber
Jelly ,
4137 byteCobalah online!
Program lengkap yang menggunakan sepasang string sebagai argumennya dan mencetak string yang diproses. Tautan monadik dapat dibentuk dengan menambahkan a
F
sampai akhir (terima kasih kepada @JonathanAllan karena telah menunjukkan ini).Saya sekarang telah beralih menggunakan "b" dan "e" sebagai placeholder, terinspirasi oleh jawaban SOGL @ dzaima jadi pastikan untuk mengunggahinya juga! Ini berarti bahwa kata pertama tidak dapat menyertakan huruf e.
sumber
Japt
-S
,4439 byteCobalah
sumber
Keempat (gforth) , 116 byte
Cobalah online!
Penjelasan Kode
sumber
Lua , 82 byte
Cobalah online!
Program lengkap, ambil masukan sebagai argumen.
Tidak ada yang istimewa di sini. Berharap ada versi yang lebih pendek, tetapi tidak ada cara yang jelas untuk mempersingkat ini pada pandangan pertama.
sumber
Bash , 58 byte
Mengambil input sebagai argumen baris perintah. Cobalah online!
sumber