Berapa banyak kode yang akan menjadi golf codegolf jika codegolf bisa kode golf?

55

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 woodsebuah woodchuck akan keluar jika sebuah woodchuck dapat terlepas wood?

dan kata kedua empat kali

  • Berapa banyak kayu chuck chuckjika kayu chuckbisa chuckkayu?

dengan sisa output sama untuk input apa pun.

  • How muchkayu would awoodchuck chuck if awoodchuck couldchuck kayu?

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 , 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 ....)

Greg Martin
sumber
2
Bisakah kita menganggap kedua kata itu akan menjadi dua kata yang berbeda ?
Jonathan Allan
4
... Saya kira "", ""berarti tidak: p
Jonathan Allan
1
@ Kronosidal Saya tidak tahan melihat Anda kecewa ....
Greg Martin
6
Dua. Itu akan golf dua kode.
user2357112
1
Ah, saya berharap ini akan menjadi program singkat yang dapat melakukan beberapa transformasi golf sederhana pada kode lain.
aschepler

Jawaban:

40

Python 3 , 70 67 byte

"How much {0} would a {0}{1} {1} if a {0}{1} could {1} {0}?".format

Cobalah 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:

lambda a,b:f"How much {a} would a {a+b} {b} if a {a+b} could {b} {a}?"
Pasang kembali Monica
sumber
2
Mungkin tidak relevan, tetapi string format otomatis tidak tersedia dalam versi python sebelum 3.6
M.Herzkamp
3
@ M.Herzkamp Jadi?
ruohola
16
@ruohola Saya pikir M.Herzkamp mencoba mengatakan judul untuk jawaban ini harus "Python 3.6" daripada "Python 3".
Tuan Lister
8
Bahkan lebih pendek dan Python 2 kompatibel (67 bytes): "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.
Remco Haszing
1
Saya bukan ahli Python, tetapi karena 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 :)
Greg Martin
25

T-SQL, 82 byte

SELECT'How much '+w+' would a '+w+c+' '+c+' if a '+w+c+' could '+c+' '+w+'?'FROM t

Input diambil dari tabel yang sudah ada dengan kolom dan , sesuai aturan IO kami .twc

Satu byte lebih lama, tetapi untuk beberapa alasan sedikit lebih menyenangkan:

SELECT REPLACE(REPLACE('How much 1 would a 12 2 if a 12 could 2 1?',1,w),2,c)FROM t

Versi ini berfungsi pada subset input yang tidak termasuk angka 2dalam kata pertama .w

Karena saya menggunakan SQL, saya dapat memuat semua contoh ke dalam tabel, dan menjalankan semuanya sekaligus:

masukkan deskripsi gambar di sini

BradC
sumber
2
+1000000 kereta virtual untuk megatrain
Greg Martin
5
Saya berasumsi bahwa "w" dan "c" adalah singkatan dari "wood" dan "chuck" masing-masing: P
user253751
Ini dapat dilakukan dalam 67 byte di Oracle yang disebut dari SQL * Plus (jadi tidak ada tabel):select'How much &1 would a &1&2 &2 if a &1&2 could &2 &1?'from dual
Ben
16

Bash , 50 byte

echo How much $2 {would,$1\ if}\ a\ $2$1 could $@?

Cobalah online!

-5 byte karena bantuan dari komentar di bawah ini.

berdesis
sumber
-3 byte
Grimmy
1
-2 byte lagi
Nahuel Fouilleul
1
Anda menambahkan backslash yang tidak perlu saat mengadaptasi golf Nahuel. Ini 53. (Meskipun sebenarnya seharusnya 50, tidak ada yang menghentikan Anda dari mengambil kata pertama sebagai $ 2 dan kata kedua sebagai $ 1.)
Grimmy
2
@ Grimy: Saya melihat komentar tentang tantangan dari poster asli yang memungkinkan pembalikan parameter. Saya memperbarui jawaban ke jawaban sempurna 50 byte. Terima kasih!
spuck
1
@roblogic: Garis miring terbalik mengutip spasi untuk menghindari pemisahan kata pada spasi, dan kurung kurawal diperluas dua kali untuk membentuk dua kata, sekali dengan setiap string di dalam kurung kurawal, dan karakter yang menelusuri kurung kurawal (tetapi bagian dari kata) ditambahkan ke akhir setiap string. Menambahkan kurung siku untuk membantu memvisualisasikan pemisahan kata: “[a {bc, de} f]” menjadi dua kata: “[abcf] [adef]”. Jadi “[{would, $ 1 \ if} \ a \ $ 2 $ 1]” menjadi “[would \ a \ $ 2 $ 1] [$ 1 \ jika \ a \ $ 2 $ 1]”
spuck
15

Stax , 33 31 30 29 byte

-1 berkat rekursif !

¢èO∩sP↑å♥|1╧ì}ò♂xb■δå«█Γ╨╦►Q²

Jalankan dan debug di staxlang.xyz!

Dorong setiap komponen ke tumpukan dengan urutan terbalik, lalu gabungkan semua dengan spasi.

Dibongkar (35 byte) dan penjelasan:

X'?+;`IM'`x;+Y`~^$`,y`75\`x`Q)("`LJ
X                                      Set register X to the first word
                                       "wood"
 '?+                                   Append a question mark, popping from the input stack
                                       "wood?"
    ;                                  Peek from input stack and push to main stack
                                       "chuck" "wood?"
     `IM'`                             Literal "could"
                                       "could" "chuck" "wood?"
          x;+Y                         Peek register x. Peek input. Concatenate. Set register Y.
                                       "woodchuck" "could" "chuck" "wood?"
              et cetera, ad nauseam
                                  LJ   Listify the stack and join with spaces
                                       Implicit print

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.

27 26 byte dengan batasan pada input

å▓Zf╢7)╪♪²p╞8ó╪l▼]<¡REïSèΣ

Jalankan 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.

Khuldraeseth na'Barya
sumber
"Kamu akan melihat bahwa aku meletakkan kedua input pada baris yang sama untuk beberapa test case, dan mereka berada dalam urutan terbalik. Ini perlu untuk mengambil string kosong atau string spasi sebagai input." Jika Anda tidak menggunakan pemisah input, input tidak akan terganggu , string kosong dan semuanya. Itu hanya membuatnya agak canggung untuk menunjukkan beberapa kasus uji.
Rekursif
1
Selain itu, tampaknya yang terdepan ,dalam solusi 31 byte Anda dapat dihapus. Berikut ini +secara implisit muncul dari tumpukan input, sehingga perilakunya identik.
Rekursif
13

JavaScript, 70 byte

Membosankan!

a=>b=>`How much ${a} would a ${a+b} ${b} if a ${a+b} could ${b} ${a}?`

Cobalah online!

Agak kurang membosankan!

a=>"How much 0 would a 01 1 if a 01 could 1 0?".replace(/\d/g,x=>a[x])

Cobalah online!

Shaggy
sumber
Apakah Anda diizinkan untuk menampilkan fungsi kari seperti pada contoh pertama itu?
Feathercrown
@Feathercrown, saya tidak menghasilkan fungsi, saya memanggil keduanya (misalnya, 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.
Shaggy
Dengan output saya maksudkan kode mengembalikan fungsi ketika dievaluasi; tidak ada panggilan dalam kode yang diberikan yang menghitung byte. Saya hanya memeriksa untuk memastikan kari tidak apa-apa, karena saya hanya pernah melihat fungsi-fungsi yang tidak diulang kembali.
Feathercrown
6

SOGL , 32 30 byte

^.](9V;⅜‛°@Ε¬tπs%.½Ω‘⁽ b,ŗ y,ŗ

Coba 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), kemudian bdiganti dengan input 1 dan ydengan 2.

dzaima
sumber
+2 poin internet untuk salah satu batasan paling acak yang dapat saya ingat (dalam solusi Anda yang lebih singkat)
Greg Martin
@GregMartin Bukan itu acak. Saya tidak berbicara SOGL, tapi saya berakhir dengan batasan yang sama pada 'n' ketika mengurutkan dua pengganti y -> wooddan n -> chuck. Sepersepuluh Dignity Point mengatakan itu juga terjadi di sini.
Khuldraeseth na'Barya
Saya pikir semangat utama dari pertanyaan ini adalah terbuka tentang memberikan solusi ... hanya sebagai tambahan saya bisa berpendapat bahwa tidak mengizinkan surat yang sebenarnya dalam suatu input agak samar. Lagi pula: mengapa btidak diizinkan di input pertama namun eok di input kedua?
Greg Martin
@GregMartin ups, maksud saya mengatakan bahwa input 1 tidak dapat berisi e, karena jika tidak maka akan diganti dengan input ke-2 pada penggantian ke-2
dzaima
Apakah tidak mungkin target pengganti menjadi non-alpha untuk menghindari keharusan melarang alpha dari input?
WGroleau
5

R , 90 77 76 byte

-13 terima kasih kepada Sumner18
-1 terima kasih kepada Giuseppe

function(x,y,`[`=gsub)2[y,1[x,"How much 1 would a 12 2 if a 12 could 2 1?"]]

Cobalah online!

Robert S.
sumber
2
Dapat melakukan double gsubuntuk -13 byte sebagai gantinya. tio.run/…
Sumner18
@ Sumner18 Terima kasih. Ya, gsubjelas lebih masuk akal.
Robert S.
Jika Anda ingin menggunakannya pryr, Anda bisa mendapatkannya hingga 73 .
Khuldraeseth na'Barya
4
Anda harus menentukan bahwa Anda menganggap input xtidak termasuk karakter 2; gagal dalam hal ini ( TIO ).
Robin Ryder
4

PHP , 72 byte

[,$a,$b]=$argv;echo"How much $a would a $a$b $b if a $a$b could $b $a?";

Cobalah online!

Atau:

PHP , 72 byte

How much <?=![,$a,$b]=$argv,"$a would a $a$b $b if a $a$b could $b $a?";

Cobalah online!

Input dari baris perintah, output ke STDOUT.

640KB
sumber
4

JavaScript (V8) , 72 byte

(a,b)=>['How much',a,'would a',c=a+b,b,'if a',c,'could',b,a+'?'].join` `

Cobalah online!

Tugas variabel sebenarnya menyimpan 0 byte, tapi saya pikir saya akan menyimpannya hanya untuk membuat ini sedikit unik.

IronFlare
sumber
Tapi satu string templat besar lebih pendek 1 karakter: Cobalah online! .
manatwork
@manatwork Saya mencoba ini tetapi tidak sengaja memasukkan ruang ekstra: P Terima kasih!
IronFlare
4

ZX Spectrum Basic, 87 byte

Hanya untuk kelengkapan, implementasi langsung:

INPUT a$,b$: PRINT "How much ";a$;" would a ";a$;b$;"  ";b$;" if a ";a$;b$;" could ";b$;" ";a$;"?"

Menggunakan IFkata kunci (1 byte) membuat golf turun 3 byte, tetapi memecah kondisi "kapitalisasi yang sama":

INPUT a$,b$: PRINT "How much ";a$;" would a ";a$;b$;"  ";b$;" IF a ";a$;b$;" could ";b$;" ";a$;"?"
Radovan Garabík
sumber
Senang juga menunjukkan versi yang sedikit curang :)
Greg Martin
2
Oh, Speccy! Untuk menjadi muda kembali ...
chx
4

Karat , 75 byte

|a,b|print!("How much {} would a {0}{} {1} if a {0}{1} could {1} {0}?",a,b)

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 dengan format!()dan mengembalikannya.

ruohola
sumber
4

05AB1E , 37 35 31 30 byte

“Howƒ×1€Þ a ÿ0€¬ a ÿƒˆ01?“T$ú‡

-5 byte terima kasih kepada @Grimy .

Mengambil daftar dua item: woodsebagai nilai pertama dan chucksebagai yang kedua.

Cobalah secara online atau verifikasi semua kasus uji .

Penjelasan:

Howƒ×1€Þ a ÿ0€¬ a ÿƒˆ01?“
      # Push dictionary string "How much1 would a ÿ0 if a ÿ could01?",
      # where the `ÿ` are automatically filled with the (implicit) input-list,
      # implicitly joined together to a single string
      #  i.e. ["wood","chuck"] → "How much1 would a woodchuck0 if a woodchuck could01?"
T     # Push 10
 $    # Push the input-list and 1
  ù   # Pad the strings in the input-list with this 1 amount of leading spaces
      #  ["wood","chuck"] → [" wood"," chuck"]
     # Transliterate the 10 ([1,0]) to these strings in the sentence
      #  → "How much wood would a woodchuck chuck if a woodchuck could chuck wood?"
      # (after which the result is output implicitly)

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?".

Kevin Cruijssen
sumber
1
31
Grimmy
1
30
Grimmy
1
@ Grim Sangat bagus! Saya sangat suka keduanya. Ide cerdik menggunakan seperti itu untuk menyimpan byte tambahan, terima kasih.
Kevin Cruijssen
1
Alternatif 30 . Saya tidak menemukan 29, jadi penjelasan Anda aman untuk saat ini;)
Grimmy
4

Applesoft BASIC, 77 76 byte

1INPUTA$,B$:?"How much "A$" would a "A$B$" "B$" if a "A$B$" could "B$" "A$"?

Hal di atas mungkin tidak terlihat seperti BASIC yang tepat, tetapi Applesoft memungkinkan beberapa pintasan saat menggunakan PRINTpernyataan:

  • Penggunaan ?di tempat PRINTketika memasukkan pernyataan
  • Karakter gabungan (salah satu ;atau +) dapat dihilangkan
  • Jika pernyataan berakhir dengan string yang dikutip, kutipan terakhir dapat dihilangkan Terima kasih, Mark !

Nomor baris diperlukan, atau INPUTpernyataan akan menyebabkan?ILLEGAL DIRECT ERROR

lee
sumber
1
Bisakah Anda menghilangkan tanda kutip trailing? Applesoft Basic adalah turunan Microsoft Basic, dan banyak versi Microsoft Basic memungkinkan Anda menghilangkan kutipan penutup pada sebuah string jika itu mengakhiri baris.
Tandai
@ Mark, Terima kasih atas tipnya!
lee
4

33 , 78 byte

"How much "p1btpt" would a "ptpz2btp" "ptbtp" if a "ptpbtp" could "ptbtp" "ptp

Cobalah online!

Mengambil input sebagai argumen baris perintah.

Bonus: 91 byte

"How much "p1bztp" would a "p1bztp2bztp" "p2bztp" if a "p1bztp2bztp" could "p2bztp" "p1bztp

Cobalah online!

Memberikan output yang menyerupai dirinya sendiri ketika diberi input 1bztpdan2bztp

TheOnlyMrCat
sumber
Mengatakan ini dengan keras, sekarang saya harus membersihkan semua ludah dari monitor saya.
BradC
3

Kotlin , 59 byte

{i,j->"How much $i would a $i$j $j if a $i$j could $j $i?"}

Cobalah online!

Quinn
sumber
Kotlin terdengar sangat menyenangkan!
M.Herzkamp
1
@ M.Herzkamp pasti!
Quinn
3

PowerShell , 65 byte

param($a,$b)"How much $a would a $a$b $b if a $a$b could $b $a`?"

Cobalah online!

Satu-satunya hal yang perlu diperhatikan adalah Anda harus lolos dari tanda tanya karena itu bisa menjadi bagian valid dari pengenal PowerShell

Veskah
sumber
3

VBA, 107 byte

Function q(a,b)
b=b&" "
c="ould "
q="How much "&a&" w"&c&"a "&a&b&b&"if a "&a&b&"c"&c&b&a&"?"
End Function

Harus dijalankan sebagai VBScript juga, saya menggunakan dua cara pintas: "ould" berulang dan "chuck" tidak pernah muncul tanpa ruang tambahan.

pengguna3819867
sumber
Anda bisa mendapatkan ini hingga 75 byte dengan mengonversi ke fungsi window langsung sebagai 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.
Taylor Scott
Maka Anda bisa mengambil rentang input bernama [A]dan [B]sebagai input membawanya ke 73. Saya tidak begitu mengerti bagaimana Anda melewati, merasa bebas untuk menambahkan jawaban Anda sendiri.
user3819867
1
Sayangnya itu bertentangan dengan bagaimana STDIN dan STDOUT didefinisikan untuk Excel VBA - Anda dapat menggunakan rentang yang tidak disebutkan namanya pada activesheet, tetapi tidak diizinkan untuk menggunakan rentang bernama per keputusan sebelumnya oleh komunitas
Taylor Scott
3

C # , 165 148 133 byte

class P{static void Main(string[]a){System.Console.Write("How much {0} would a {0}{1} {1} if a {0}{1} could {1} {0}?\n",a[0],a[1]);}}

Terima 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.

canttalkjustcode
sumber
Menggunakan C # 's' $ '( string interpolasi ) modern, Anda dapat menyimpan beberapa byte dengan mengganti {0} dengan {a [0]}, atau lebih baik lagi, mengambil dua variabel daripada array sehingga Anda bisa menggunakan a dan b. Agar tidak mencuri guntur Anda, untuk berbicara, saya akan menambahkannya sebagai versi c # yang berbeda
Andrew Baumher
Wow tidak tahu tentang itu! Terima kasih atas informasinya
canttalkjustcode
2
@canttalkjustcode umumnya, fungsi diterima. Untuk C #, ini termasuk lambdas: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]}?")
JAD
Ini benar tetapi hanya dalam C # Interactive Anda dapat menggunakan ekspresi lambda seperti ini. Dalam C # penuh Anda membutuhkan pernyataan lamda penuh. Pernyataan batal sederhana akan lebih cepat seperti yang ditunjukkan dalam cuplikan berikut:
canttalkjustcode
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]}?");
canttalkjustcode
3

Haskell , 76 byte

a?b=a++" "++b
a!b="How much"?a?"would a"?a++b?b?"if a"?a++b?"could"?b?a++"?"

Cobalah online!

Pertama coba, jadi saya harap saya tidak melanggar aturan.

David
sumber
2

Jelly , 39 byte

ŒPKŒP“µkþ¿µ‘ị“þ>Æƈ)taJṖ;ạʂ\4S%dñl»Ỵ¤ż”?

Program lengkap yang menerima daftar dua string.

Cobalah online!

... Atau (juga program lengkap yang menerima daftar dua string)

⁽4ṀDBịs€2ṭ€€⁶“þ>Æƈ)taJṖ;ạʂ\4S%dñl»Ỵ¤ż”?

Cobalah online!

Jonathan Allan
sumber
2

Python 3 , 80 byte

lambda n:'How much {0} would a {0}{1} {1} if a {0}{1} could {1} {0}?'.format(*n)

Cobalah online!

ketika di Roma, gunakan format str.

Diedit menggunakan trik squid.

Tryer
sumber
3
Bukankah ini tidak valid? Ini cuplikan - bukan fungsi atau program, bukan?
Pasang kembali Monica
Ya; perlu lambda n:sebelum itu, dan dapat drop print().
wizzwizz4
Anda harus mengubah kode Anda untuk mencetak How much ...bukan how much ....
ruohola
3
Seharusnya cukup mendefinisikan fungsi anonim sebagai 'how much {0} would a {0}{1} {1} if a {0}{1} could {1} {0}?'.format.
xnor
@ xnor Masih cukup baru, seperti apa TIO nantinya? Saya akan berpikir bahwa tanpa beberapa cara untuk lulus dalam argumen itu akan berjalan.
Tryer
2

C # (Visual C # Interactive Compiler) , 66 65 byte

x=>y=>$"How much {x} would a {x+y} {y} if a {x+y} could {y} {x}?"

Cobalah online!

sama seperti orang lain, kecuali C #. -1 byte dengan menggunakan currying strat a => b => c bukannya (a, b) => c

Andrew Baumher
sumber
Ubah tanda tangan fungsi dari Func<string,string,string>menjadi Func<string,Func<string,string>>dan ubah (x,y)kex=>y=>
Perwujudan Ketidaktahuan
Sepertinya taktik yang murah, tapi diskusi meta mengatakan itu adalah permainan yang adil, mungkin juga begitu. Terima kasih.
Andrew Baumher
2

R , 95 byte

function(a,b)cat("How much ",a," would a ",a,b," ",b," if a ",a,b," could ",b," ",a,"?",sep='')

Cobalah online!

minhsphuc12
sumber
2
Selamat datang di situs ini! TIO Anda sepertinya menautkan ke kode yang salah? Selain itu, sejauh yang saya tahu, Anda telah mengasumsikan input berada dalam variabel adan b, yang tidak diizinkan di bawah aturan Input / Output Default
caird coinheringaahing
Terima kasih @cairdcoinheringaahing untuk komentarnya. Saya menulis ulang dalam bentuk fungsi, semoga sesuai dengan aturan sekarang.
minhsphuc12
1

APL (Dyalog Unicode) , 56 59 byte

{∊'How much '' would a '⍺⍵' '' if a '⍺⍵' could '' ''?'}

Cobalah 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.

J. Sallé
sumber
Apakah Anda menghitung huruf Yunani sebagai satu byte?
Tomáš Zato
@ TomášZato ya. Mesin terbang Dyalog APL dapat direpresentasikan dalam satu byte menggunakan Adám's Single Byte Character Sheet yang merupakan standar untuk jawaban APL di sini.
J. Sallé
1

Jelly , 41 37 byte

⁾be,y“Ø[gœıJ9°m.OṚuHlh3Ƥ⁾$ɲ0øḲʂṇHẎṆȥ»

Cobalah online!

Program lengkap yang menggunakan sepasang string sebagai argumennya dan mencetak string yang diproses. Tautan monadik dapat dibentuk dengan menambahkan a Fsampai 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.

Nick Kennedy
sumber
@ Jonathan Allan benar sekali! Terima kasih.
Nick Kennedy
1

Keempat (gforth) , 116 byte

: x 2over type ; : y 2dup type ; : f ." How much "x ."  would a "x y ."  "y ."  if a "x y ."  could "y ."  "x ." ?";

Cobalah online!

Penjelasan Kode

\ x = output the first word
: x               \ start a new word definition
  2over type      \ copy the "first" word to the top of the stack and print it
;                 \ end word definition

\ y = output the second word
: y               \ start a new word definition
  2dup type       \ copy the "second" word to the top of the stack and print it
;                 \ end word definition

: f               \ start a new word definition
  ." How much "x  \ print "How much " followed by the first word   
  ."  would a "x  \ print " would a " followed by the first word
  y ."  if a "x   \ print the second word followed by " if a " and then the first word
  y ."  could "y  \ print the second word, then " could " then the second word again
  ."  "x ." ?"    \ print a space followed by the first word, followed by "?"
;                 \ end word definition
reffu
sumber
1

Lua , 82 byte

a,b=...print((('How much x would a xy y if a xy could y x?'):gsub('.',{x=a,y=b})))

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.

val
sumber
1

Bash , 58 byte

echo "How much $1 could a $1$2 $2 if a $1$2 could $2 $1?"

Mengambil input sebagai argumen baris perintah. Cobalah online!

gadzooks02
sumber