กอล์ฟ codegolf จะมีรหัสเท่าไรถ้า codegolf สามารถเล่นรหัสกอล์ฟได้?


55

เขียนฟังก์ชั่นหรือโปรแกรมที่ใช้สองคำในรูปแบบอินพุตและเอาท์พุตของลิ้น - ทอร์นาโดภาษาอังกฤษที่ได้รับความนิยม

ผลลัพธ์จะใช้คำแรกสี่ครั้ง

  • เชยเชยwoodจะเท่าไหร่woodถ้าwoodเชยสามารถเชยwood?

และคำที่สองสี่ครั้ง

  • ไม้เท่าไหร่ไม้chuck chuckถ้าไม้chuckสามารถchuckไม้?

ส่วนที่เหลือของเอาต์พุตจะเหมือนกันสำหรับอินพุตใด ๆ

  • How muchไม้would aWOODCHUCK เชยif aWOODCHUCK couldเชยไม้?

อินพุตและเอาต์พุตสามารถอยู่ในรูปแบบใด ๆ ที่ภาษาของคุณรับรู้อย่างสมเหตุสมผลว่าเป็นการจัดการกับสตริงข้อความ ผลลัพธ์จะต้องอยู่ในรูปแบบที่ระบุรวมถึงการใช้อักษรตัวพิมพ์ใหญ่ช่องว่างและการขาดและเครื่องหมายคำถามสิ้นสุด ขึ้นบรรทัดใหม่ที่เป็นทางเลือกเป็นที่ยอมรับ

รหัสของคุณจะจัดการกับอินพุตที่มีอักขระ ASCII ที่พิมพ์ได้ อย่างไรก็ตามได้รับอนุญาตให้ จำกัด การป้อนข้อมูลไปยังชุดย่อยที่เหมาะสมของ ASCII ที่พิมพ์ได้; เพียงระบุสิ่งนี้ในคำตอบของคุณ การจัดการชุดตัวละครขนาดใหญ่นั้นเป็นเรื่องปกติ

ตัวอย่างคู่อินพุต - เอาต์พุต:

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

นี่คือซึ่งมีจำนวนน้อยที่สุดที่จะชนะ คำตอบยินดีต้อนรับในทุกภาษาแม้ว่าภาษาอื่น ๆ จะสามารถทำได้ในไม่กี่ไบต์

(แรงบันดาลใจจากmeme นี้ซึ่งใช้หนึ่งอินพุตคู่ที่ดีกว่ารูปแบบที่เข้มงวดนี้ไม่ .... )


2
เราขอสมมติคำสองคำว่าเป็นคำสองคำที่ต่างกันได้ไหม
Jonathan Allan

4
... ฉันเดา"", ""ว่าไม่มี: p
Jonathan Allan

1
@Chronocidal ฉันทนไม่ได้ที่จะเห็นคุณผิดหวัง ....
Greg Martin

6
สอง. มันจะเล่นกอล์ฟสองรหัส
user2357112

1
อ๊ะฉันหวังว่านี่จะเป็นโปรแกรมสั้น ๆ ที่สามารถทำการแปลงกอล์ฟแบบง่าย ๆ ในรหัสอื่นได้
aschepler

คำตอบ:


40

Python 3 , 70 67 ไบต์

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

ลองออนไลน์!

ฉันหมายถึงถ้ารองเท้าพอดี ..

ขอบคุณmanatworkสำหรับการสะกดผิด

ขอบคุณRemco Haszingสำหรับแนวคิด -3 ไบต์ที่ยอดเยี่ยม

ฉันกำลังวิ่งออกไปจากข้อสันนิษฐานว่านี่จะยังคงเป็นข้อเสนอที่ถูกต้อง (เพราะผู้ชายมันเจ๋งเกินไปที่จะไม่ลอง) ถ้า OP สามารถอธิบายได้ว่านี่เป็นสิ่งที่ยอมรับได้หรือไม่ (เพราะฉันยังไม่ได้เขียนฟังก์ชั่นตามที่แนะนำ)

อัปเดต: ได้รับพรทุกอย่างดี :)


รุ่นก่อนหน้า:

lambda a,b:f"How much {a} would a {a+b} {b} if a {a+b} could {b} {a}?"

2
อาจไม่เกี่ยวข้อง แต่สตริงรูปแบบอัตโนมัติไม่พร้อมใช้งานในเวอร์ชัน python ก่อน 3.6
M.Herzkamp

3
@ M.Herzkamp งั้นเหรอ?
ruohola

16
@ruohola ฉันคิดว่า M.Herzkamp กำลังพยายามพูดชื่อของคำตอบนี้ควรเป็น "Python 3.6" มากกว่า "Python 3"
นาย Lister

8
แม้สั้นและ Python 2 เข้ากันได้ (67 "How much {0} would a {0}{1} {1} if a {1}{0} could {1} {0}?".formatbytes): ฟังก์ชันนี้จะคืนค่าฟังก์ชันที่ผูกไว้กับสตริงที่ยังไม่ฟอร์แมต
Remco Haszing

1
ฉันไม่ผู้เชี่ยวชาญหลาม แต่เนื่องจากprint("How much {0} would a {0}{1} {1} if a {0}{1} could {1} {0}?".format("wood","chuck"))สร้างผลลัพธ์ที่ต้องการฉันเห็นเหตุผลที่จะไม่ยอมรับมัน :)
เกร็กมาร์ติน

25

T-SQL, 82 ไบต์

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

twc

หนึ่งไบต์ยาวขึ้น แต่ด้วยเหตุผลบางอย่างทำให้มีความสุขมากกว่า:

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

2w

เนื่องจากฉันอยู่ใน SQL ฉันสามารถโหลดตัวอย่างทั้งหมดล่วงหน้าลงในตารางและเรียกใช้พวกเขาทั้งหมดในครั้งเดียว:

ป้อนคำอธิบายรูปภาพที่นี่


2
+1000000 รถไฟเสมือนจริงสำหรับ megatrain
Greg Martin

5
ฉันคิดว่า "w" และ "c"
ย่อมา

ซึ่งสามารถทำได้ใน 67 ไบต์ใน Oracle ตามที่เรียกจาก SQL * Plus (ไม่มีตาราง):select'How much &1 would a &1&2 &2 if a &1&2 could &2 &1?'from dual
Ben

16

Bashขนาด 50 ไบต์

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

ลองออนไลน์!

-5 ไบต์เนื่องจากความช่วยเหลือจากความคิดเห็นด้านล่าง




1
คุณเพิ่มแบ็กสแลชที่ไม่จำเป็นเมื่อปรับตัวกอล์ฟของ Nahuel นี่คือ 53 (แม้ว่าจริง ๆ แล้วควรจะเป็น 50 แต่ไม่มีอะไรหยุดคุณจากการใช้คำแรกเป็น $ 2 และคำที่สองเป็น $ 1)
Grimmy

2
@Grimy: ฉันเห็นความคิดเห็นเกี่ยวกับความท้าทายจากโปสเตอร์ต้นฉบับที่อนุญาตให้มีการย้อนกลับของพารามิเตอร์ ฉันกำลังอัปเดตคำตอบเป็นคำตอบที่ยอดเยี่ยม 50 ไบต์ ขอบคุณ!
spuck

1
@roblogic: แบ็กสแลชอ้างถึงช่องว่างเพื่อหลีกเลี่ยงการแยกคำในช่องว่างและวงเล็บปีกกาจะถูกขยายสองครั้งเพื่อสร้างคำสองคำครั้งละสตริงในวงเล็บปีกกาและตัวอักษรที่ตามรอยวงเล็บ (แต่เป็นส่วนหนึ่งของคำ) จะถูกเพิ่มในตอนท้ายของแต่ละสตริง การเพิ่มเครื่องหมายวงเล็บสี่เหลี่ยมเพื่อช่วยให้เห็นภาพของการแยกคำว่า:“ [a {bc, de} f]” กลายเป็นคำสองคำ:“ [abcf] [adef]” ดังนั้น“ [{จะ, $ 1 \ if} \ a \ $ 2 $ 1]” จะกลายเป็น“ [จะ \ a \ $ 2 $ 1] [$ 1 \ if \ a \ $ 2 $ 1]]
spuck

15

Stax , 33 31 30 29 ไบต์

-1 ต้องขอบคุณrecursive !

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

เรียกใช้และแก้ไขปัญหาได้ที่ staxlang.xyz!

ดันแต่ละองค์ประกอบไปยังสแต็กในลำดับย้อนกลับ

คลายการแพค (35 ไบต์) และคำอธิบาย:

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

ทุกสิ่งระหว่าง `` จะถูกบีบอัดสตริงตามตัวอักษร เครื่องหมายจุลภาคนั้นมีความสำคัญ ครั้งสุดท้ายที่ฉันอ่านจากอินพุตสแต็กฉันต้องป๊อปแทนที่จะมองเพื่อหลีกเลี่ยง "ชัค" ที่ส่วนท้ายของเอาต์พุตของฉัน

คุณจะสังเกตเห็นว่าฉันใส่อินพุตทั้งสองในบรรทัดเดียวกันสำหรับกรณีทดสอบสองสามกรณีและพวกเขาอยู่ในลำดับย้อนกลับ นี่เป็นสิ่งจำเป็นเพื่อใช้สตริงว่างหรือสตริงของช่องว่างเป็นอินพุต

27 26 ไบต์ที่มีข้อ จำกัด เกี่ยวกับอินพุต

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

เรียกใช้และแก้ไขปัญหาได้ที่ staxlang.xyz!

เช่นเดียวกับSOGL ของ @ dzaima สิ่งนี้จะล้มเหลวหากอินพุตแรกมีตัวอักษรตัวพิมพ์เล็ก 'y' กดสตริง "b จะเท่ากับ a ถ้า y ต่อ a yb ได้เท่าใด" จากนั้นทำการแทนที่คู่


"คุณจะสังเกตเห็นว่าฉันใส่อินพุตทั้งสองไว้ในบรรทัดเดียวกันสำหรับกรณีทดสอบสองสามกรณีและพวกเขาอยู่ในลำดับกลับกันนี่เป็นสิ่งจำเป็นที่จะต้องใช้สตริงว่างหรือสตริงของช่องว่างเป็นอินพุต" หากคุณไม่ใช้ตัวคั่นอินพุตอินพุตจะไม่ถูกรบกวนสตริงว่างและทั้งหมด มันแค่ทำให้อึดอัดใจในการแสดงกรณีทดสอบหลายรายการ
เรียกซ้ำ

1
นอกจากนี้ดูเหมือนว่า,โซลูชัน 31 ไบต์ของคุณสามารถลบออกได้ ต่อไปนี้+จะปรากฏโดยนัยจากอินพุตสแต็กดังนั้นพฤติกรรมจึงเหมือนกัน
เรียกซ้ำ

13

จาวาสคริปต์, 70 ไบต์

น่าเบื่อ!

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

ลองออนไลน์!

น่าเบื่อน้อยลง!

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

ลองออนไลน์!


คุณได้รับอนุญาตให้ส่งออกฟังก์ชั่น curried เช่นในตัวอย่างแรกนั้น
Feathercrown

@ ทุ่งเลี้ยงสัตว์ฉันไม่ได้ส่งออกฟังก์ชั่นฉันกำลังโทรหาทั้งคู่ (เช่นf(a)(b)) อย่างที่คุณเห็นใน TIO แต่ใช่เรายินยอมให้ฟังก์ชั่น curried และฉันคิดว่าเราอยู่ใกล้กับฉันทามติในการอนุญาตให้ฟังก์ชั่นที่จะกลับมาจริง
ขนดก

โดยการส่งออกฉันหมายถึงรหัสส่งกลับฟังก์ชั่นเมื่อประเมิน; ไม่มีการโทรอยู่ในรหัสที่กำหนดซึ่งนับเป็นไบต์ ฉันแค่ตรวจสอบเพื่อให้แน่ใจว่าการแกงไม่เป็นไรเนื่องจากฉันเพิ่งเห็นการทำงานแบบ noncurried กลับมา
Feathercrown

6

SOGL , 32 30 ไบต์

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

ลองที่นี่!

อินพุตแรกไม่สามารถมีตัวอักษรyซึ่งดูเหมือนว่าจะปล่อยให้ส่วนย่อยที่เหมาะสมของ ASCII (และ unicode) เหลือ

½ouiīZģ9Ο|ΧyΚ⅞ō÷Jeq(‚7‘เป็นสตริงที่บีบอัดของ"how much b would a by y if a by could y b?"(อักขระที่เลือกดังนั้นคำที่ต้องการทั้งหมดในพจนานุกรม 512 คำที่บีบอัดได้ดีกว่า) จากนั้นbจะถูกแทนที่ด้วยอินพุตที่ 1 และyที่ 2


+2 คะแนนอินเทอร์เน็ตสำหรับหนึ่งในข้อ จำกัด แบบสุ่มที่ฉันจำได้ (ในโซลูชันที่สั้นกว่าของคุณ)
Greg Martin

@GregMartin ไม่ใช่ว่าสุ่ม ฉันไม่พูด SOGL แต่ผมจบลงด้วยข้อ จำกัด เช่นเดียวกันกับ 'n' เมื่อลำดับสองทดแทนและy -> wood n -> chuckหนึ่งในสิบของ Dignity Point บอกว่าเป็นอย่างนั้นเช่นกัน
Khuldraeseth na'Barya

ฉันคิดว่าจิตวิญญาณที่สำคัญของคำถามนี้คือการเปิดเกี่ยวกับการให้การแก้ปัญหา ... ฉันอาจมีความเห็นที่ไม่อนุญาตให้ใช้ตัวอักษรที่แท้จริงในการป้อนข้อมูลเป็นเพียงร่างเล็กน้อย ยังไงก็ตาม: ทำไมยังbไม่ได้รับอนุญาตในอินพุตแรก แต่eก็โอเคในอินพุตที่สอง?
Greg Martin

@ GregMartin อ้าวฉันหมายถึงว่าอินพุต 1 ไม่สามารถมีได้eมิฉะนั้นจะถูกแทนที่ด้วยอินพุตที่ 2 ในการแทนที่ครั้งที่ 2
dzaima

เป็นไปไม่ได้ไหมที่เป้าหมายการเปลี่ยนจะไม่ใช่อัลฟาเพื่อหลีกเลี่ยงการห้ามอัลฟ่าจากอินพุต?
WGroleau

5

R , 90 77 76 ไบต์

-13 ขอบคุณ Sumner18
-1 ขอบคุณ Giuseppe

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

ลองออนไลน์!


2
สามารถทำสองเท่าgsubสำหรับ -13 ไบต์แทน tio.run/…
Sumner18

@ Sumner18 ขอบคุณ ใช่gsubแน่นอนเหมาะสมกว่า
Robert S.

ถ้าคุณรู้สึกว่าการใช้pryr, คุณจะได้รับมันลงไป 73
Khuldraeseth na'Barya

4
คุณควรจะระบุว่าคุณถือว่าการป้อนข้อมูลที่xไม่รวมถึงตัวละคร2; มันล้มเหลวในกรณีนี้ ( TIO )
Robin Ryder



4

JavaScript (V8) , 72 ไบต์

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

ลองออนไลน์!

การกำหนดตัวแปรจริงประหยัด 0 ไบต์ แต่ฉันคิดฉันต้องการให้มันอยู่ในเพียงเพื่อให้นี้เล็กน้อยที่ไม่ซ้ำกัน


แต่เทมเพลตใหญ่หนึ่งอันจะสั้นลง 1 อักขระ: ลองออนไลน์! .
จัดการ

@ การทำงานฉันพยายามนี้ แต่รวมพื้นที่พิเศษโดยไม่ได้ตั้งใจ: P ขอบคุณ!
IronFlare

4

ZX Spectrum Basic, 87 ไบต์

เพียงเพื่อความสมบูรณ์การใช้งานที่ตรงไปตรงมา:

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

การใช้IFคำหลัก (1 ไบต์) ทำให้คำหลักมีขนาด 3 ไบต์ แต่จะแบ่งเงื่อนไข "การใช้อักษรตัวพิมพ์ใหญ่" ให้เหมือนกัน:

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

เป็นเรื่องที่ดีที่จะแสดงเวอร์ชั่นที่โกงง่าย ๆ เช่นกัน :)
Greg Martin

2
โอ้ Speccy! จะเป็นหนุ่มสาวอีกครั้ง ...
CHX

4

สนิม 75 ไบต์

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

ลองออนไลน์!

ใช้เคล็ดลับนี้ซึ่งให้คุณข้ามดัชนีการจัดรูปแบบหนึ่งรายการต่อการจัดรูปแบบ

ยังใช้print!()เพราะมันสั้นกว่าการสร้างสตริงด้วยformat!()และส่งคืนหนึ่งไบต์


4

05AB1E , 37 35 31 30 ไบต์

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

-5 ไบต์ขอบคุณที่@Grimy

ทำรายการสองรายการ: woodเป็นค่าแรกและรายการchuckที่สอง

ลองมันออนไลน์หรือตรวจสอบกรณีทดสอบทั้งหมด

คำอธิบาย:

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)

ดู 05AB1E นี้เคล็ดลับของฉัน (ส่วนวิธีการใช้พจนานุกรม? )จะเข้าใจว่าทำไมเป็น“Howƒ×1€Þ a ÿ0€¬ a ÿƒˆ01?“"How much1 would a ÿ0 if a ÿ could01?"




1
@Grimy ดีมาก! ฉันชอบทั้งสองอย่างจริงๆ ความคิดที่แยบยลในการใช้เช่นนั้นเพื่อบันทึกไบต์เพิ่มเติมขอบคุณ
Kevin Cruijssen

1
สำรอง 30 ฉันไม่พบข้อ 29, ดังนั้นคำอธิบายของคุณจึงปลอดภัยในตอนนี้;)
Grimmy

4

Applesoft พื้นฐาน 77 76 ไบต์

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

ด้านบนอาจไม่เหมือน BASIC ที่เหมาะสม แต่ Applesoft อนุญาตให้ใช้ทางลัดบางอย่างเมื่อใช้PRINTคำสั่ง:

  • ใช้?แทนPRINTเมื่อป้อนคำสั่ง
  • อักขระการต่อข้อมูล (อย่างใดอย่างหนึ่ง;หรือ+) อาจถูกละเว้น
  • หากข้อความนั้นลงท้ายด้วยสตริงที่ยกมาเครื่องหมายคำพูดสุดท้ายอาจถูกตัดทิ้งขอบคุณทำเครื่องหมาย !

จำเป็นต้องมีหมายเลขบรรทัดหรือINPUTคำสั่งจะทำให้?ILLEGAL DIRECT ERROR


1
คุณสามารถละเว้นเครื่องหมายคำพูดต่อท้ายได้หรือไม่? Applesoft Basic เป็นอนุพันธ์ของ Microsoft Basic และ Microsoft Basic หลายรุ่นช่วยให้คุณไม่ต้องใส่เครื่องหมายอัญประกาศปิดในสตริงถ้ามันสิ้นสุดบรรทัด
มาร์ค

@ มาร์คขอบคุณสำหรับเคล็ดลับ!
lee

4

33 , 78 ไบต์

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

ลองออนไลน์!

รับอินพุตเป็นอาร์กิวเมนต์บรรทัดคำสั่ง

โบนัส: 91 ไบต์

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

ลองออนไลน์!

ให้เอาต์พุตคล้ายกับตัวเองเมื่อกำหนดอินพุต1bztpและ2bztp


พูดออกมาดัง ๆ ตอนนี้ฉันต้องทำความสะอาดน้ำลายทั้งหมดออกจากมอนิเตอร์
BradC


3

PowerShellขนาด 65 ไบต์

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

ลองออนไลน์!

สิ่งเดียวที่ควรทราบคือคุณต้องหลีกเลี่ยงเครื่องหมายคำถามเนื่องจากสิ่งเหล่านั้นอาจเป็นส่วนที่ถูกต้องของตัวระบุ PowerShell


3

VBA, 107 ไบต์

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

ควรเรียกใช้เป็น VBScript ด้วยฉันใช้ทางลัดสองทาง: "ould" กำลังทำซ้ำและ "chuck" ไม่เคยปรากฏโดยไม่มีที่ว่างเพิ่มเติม


คุณสามารถได้รับนี้ลง 75 a=[A1]:b=[B1&" "]:o="ould ":?"How much "a" w"o"a "a b b"if a "a b"c"o b a"?ไบต์โดยการแปลงฟังก์ชั่นหน้าต่างทันที นำข้อมูลจากและ[A1] [B1]เรามีเคล็ดลับสำหรับการเล่นกอล์ฟใน VBAที่คุณควรพิจารณาดู
Taylor Scott

จากนั้นคุณสามารถใช้ช่วงชื่อที่ป้อน[A]และ[B]เป็นอินพุตที่นำมาลงที่ 73 ฉันไม่เข้าใจว่าคุณผ่านไปได้อย่างไรอย่าลังเลที่จะเพิ่มคำตอบของคุณเอง
user3819867

1
น่าเสียดายที่ไม่ตรงกับวิธีการกำหนด STDIN และ STDOUT สำหรับ Excel VBA - คุณสามารถใช้ช่วงที่ไม่มีชื่อใด ๆ บน activesheet ได้ แต่ไม่ได้รับอนุญาตให้ใช้ช่วงที่ตั้งชื่อตามชุมชนก่อนหน้านี้
Taylor Scott

3

C # , 165 148 133 ไบต์

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]);}}

ขอบคุณAndrew Baumher ที่บอกฉันเกี่ยวกับสายการสอดแทรก !!
แก้ไข: ตอนนี้ชั้นเรียนเต็มเพิ่ม
แก้ไข: ขอบคุณKenneth K. ที่ให้ฉันเคล็ดลับในการทำให้สั้นลง
แก้ไข: ขอบคุณแอนดรูอีกครั้งสำหรับการบอกฉันว่าการใช้สตริงที่สอดแทรกอยู่ในสถานการณ์นี้จริง ๆ แล้ว


การใช้ C # 's' $ '( สตริงการแทรก ) ที่ทันสมัยคุณสามารถบันทึกสองสามไบต์โดยแทนที่ {0} ด้วย {a [0]} หรือดีกว่าโดยใช้ตัวแปรสองตัวแทนอาร์เรย์เพื่อให้คุณสามารถใช้ a และ b เพื่อที่จะไม่ขโมยฟ้าร้องของคุณดังนั้นเพื่อที่จะพูดฉันจะเพิ่มมันเป็นรุ่นอื่นของ c #
Andrew Baumher

ว้าวไม่รู้เรื่องนั้น! ขอบคุณสำหรับข้อมูล
canttalkjustcode

2
@canttalkjustcode โดยทั่วไปฟังก์ชั่นได้รับการยอมรับ สำหรับ C # รวมถึง 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

นี่เป็นเรื่องจริง แต่ใน C # Interactive เท่านั้นที่คุณสามารถใช้แลมบ์ดานิพจน์เช่นนี้ได้ ใน C # แบบเต็มคุณต้องมีคำสั่ง lamda แบบเต็ม คำสั่งโมฆะง่าย ๆ จะเร็วขึ้นดังที่แสดงในตัวอย่างต่อไปนี้:
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


2

เยลลี่ขนาด 39 ไบต์

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

โปรแกรมเต็มรูปแบบยอมรับรายการของสองสาย

ลองออนไลน์!

... หรือ (เป็นโปรแกรมแบบเต็มที่ยอมรับรายการของสองสาย)

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

ลองออนไลน์!


2

Python 3 , 80 ไบต์

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

ลองออนไลน์!

เมื่ออยู่ในกรุงโรมให้ใช้รูปแบบ str

แก้ไขโดยใช้เคล็ดลับของปลาหมึก


3
สิ่งนี้จะไม่ถูกต้องหรือไม่ มันเป็นตัวอย่าง - ไม่ใช่ฟังก์ชั่นหรือโปรแกรมใช่ไหม?
Reinstate Monica

ใช่; ความต้องการก่อนที่จะสามารถวางlambda n: print()
wizzwizz4

คุณควรเปลี่ยนรหัสของคุณที่จะพิมพ์แทนHow much ... how much ...
ruohola

3
'how much {0} would a {0}{1} {1} if a {0}{1} could {1} {0}?'.formatมันควรจะพอเพียงที่จะเพียงแค่กำหนดฟังก์ชั่นที่ไม่ระบุชื่อเป็น
xnor

@xnor ยังใหม่อยู่ดี TIO จะมีหน้าตาเป็นอย่างไร? ฉันคิดว่าไม่มีวิธีที่จะผ่านในการหาเรื่องมันจะทำงานได้
Tryer

2

C # (Visual C # Interactive Compiler) , 66 65 ไบต์

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

ลองออนไลน์!

เหมือนกับทุกคนยกเว้น C # -1 ไบต์โดยใช้ currying strat a => b => c แทน (a, b) => c


เปลี่ยนฟังก์ชั่นลายเซ็นจากFunc<string,string,string>เป็นFunc<string,Func<string,string>>และเปลี่ยน(x,y)เป็นx=>y=>
ศูนย์รวมของความไม่รู้

ดูเหมือนว่ามีกลยุทธ์ราคาถูก แต่การสนทนาเมตาบอกว่ามันเป็นเกมที่ยุติธรรม ขอบคุณ
Andrew Baumher

2

R , 95 ไบต์

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

ลองออนไลน์!


2
ยินดีต้อนรับสู่เว็บไซต์! ดูเหมือนว่าลิงค์ TIO ของคุณเชื่อมโยงไปยังรหัสผิดหรือเปล่า? นอกจากนี้เท่าที่ฉันสามารถบอกได้คุณสันนิษฐานว่าอินพุตเป็นตัวแปรaและbไม่ได้รับอนุญาตภายใต้กฎอินพุต / เอาท์พุตเริ่มต้น
caird coinheringaahing

ขอบคุณ @cairdcoinheringaahing สำหรับความคิดเห็น ฉันเขียนมันใหม่ในรูปแบบฟังก์ชั่นหวังว่ามันจะเป็นไปตามกฎตอนนี้
minhsphuc12


1

APL (Dyalog Unicode) , 56 59 ไบต์

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

ลองออนไลน์!

dfn ตรงไปตรงมาสวย บันทึกไบต์ด้วยการตัดถ้าเราได้รับอนุญาตให้ส่งกลับอาร์เรย์ของสตริงแทนที่จะเป็นสตริงเดียว

เพิ่ม 3 ไบต์เพราะฉันลืมเพิ่มเครื่องหมายคำถาม


คุณนับตัวอักษรกรีกเป็นหนึ่งไบต์หรือไม่?
Tomáš Zato

@ TomášZatoใช่ ร่ายมนตร์ของ Dyalog APL สามารถแสดงเป็นไบต์เดียวโดยใช้แผ่นอักขระ Single Byte ของAdámซึ่งเป็นมาตรฐานสำหรับคำตอบของ APL ที่นี่
J. Sallé


1

เจลลี่ , 41 37 ไบต์

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

ลองออนไลน์!

โปรแกรมเต็มรูปแบบที่รับสตริงเป็นอาร์กิวเมนต์และพิมพ์สตริงที่ถูกประมวลผล ลิงก์ monadic สามารถเกิดขึ้นได้โดยการเพิ่ม a Fto end (ขอบคุณ @JonathanAllan สำหรับการชี้ให้เห็น)

ตอนนี้ฉันได้เปลี่ยนไปใช้ "b" และ "e" เป็นตัวยึดตำแหน่งซึ่งได้แรงบันดาลใจจากคำตอบ SOGL ของ @ dzaimaดังนั้นโปรดแน่ใจว่าได้อัปเกรดนั้นเช่นกัน! นี่หมายความว่าคำแรกไม่สามารถรวมตัวอักษร e


@JanathanAllan ค่อนข้างถูกต้อง! ขอบคุณ
Nick Kennedy


1

มา (gforth) , 116 ไบต์

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

ลองออนไลน์!

รหัสคำอธิบาย

\ 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

1

Lua , 82 ไบต์

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

ลองออนไลน์!

โปรแกรมเต็มรูปแบบรับอินพุตเป็นอาร์กิวเมนต์

ไม่มีอะไรพิเศษที่นี่ หวังว่าจะมีเวอร์ชั่นที่สั้นกว่านี้ แต่ไม่มีวิธีที่ชัดเจนในการย่อให้สั้นลงในครั้งแรก


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.