Làm thế nào nhiều mã một golf codegolf nếu một codegolf có thể mã golf?


55

Viết một hàm hoặc chương trình lấy hai từ làm biến thể đầu vào và đầu ra của twister tiếng Anh phổ biến "Woodchuck sẽ kiếm được bao nhiêu gỗ nếu một woodchuck có thể tặc gỗ?".

Đầu ra sẽ sử dụng từ đầu tiên bốn lần

  • Bao nhiêu woodsẽ một woodchuck chuck nếu một woodchuck có thể chuck wood?

và từ thứ hai bốn lần

  • Gỗ sẽ là bao nhiêu gỗ chuck chucknếu gỗ chuckcó thể chuckgỗ?

với phần còn lại của đầu ra là như nhau cho bất kỳ đầu vào.

  • How muchgỗ would awoodchuck chuck if awoodchuck couldchuck gỗ?

Đầu vào và đầu ra có thể ở bất kỳ định dạng nào mà ngôn ngữ của bạn nhận ra một cách hợp lý là xử lý các chuỗi văn bản. Đầu ra phải chính xác ở định dạng được chỉ định, bao gồm viết hoa, dấu cách và thiếu nó, và dấu hỏi kết thúc. Một dòng mới tùy chọn là chấp nhận được.

Lý tưởng nhất là mã của bạn sẽ xử lý đầu vào có chứa bất kỳ ký tự ASCII có thể in nào. Tuy nhiên, nó được phép hạn chế đầu vào ở các tập hợp con hợp lý của ASCII có thể in được; Chỉ cần chỉ ra điều này trong câu trả lời của bạn. Xử lý bộ ký tự lớn hơn là tất nhiên tốt.

Ví dụ các cặp đầu vào-đầu ra:

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

Đây là , vì vậy ít byte nhất sẽ thắng. Câu trả lời được chào đón trong tất cả các ngôn ngữ, ngay cả khi một số ngôn ngữ khác có thể làm điều đó với ít byte hơn.

(Lấy cảm hứng từ meme này , sử dụng một cặp đầu vào tốt hơn mẫu cứng nhắc này ....)


2
Chúng ta có thể giả sử hai từ sẽ là hai từ riêng biệt ?
Jonathan Allan

4
... Tôi đoán "", ""có nghĩa là không: p
Jonathan Allan

1
@Chronocidal Tôi không thể chịu được khi thấy bạn thất vọng ....
Greg Martin

6
Hai. Nó sẽ chơi golf hai mã.
user2357112

1
Aw, tôi đã hy vọng đây sẽ là một chương trình ngắn có thể thực hiện một số chuyển đổi golf đơn giản trên các mã khác.
aschepler

Câu trả lời:


40

Python 3 , 70 67 byte

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

Hãy thử trực tuyến!

Ý tôi là, nếu giày vừa vặn ..

Cảm ơn manatwork đã bắt lỗi đánh máy

Cảm ơn Remco Haszing cho ý tưởng -3 byte tuyệt vời

Tôi đang chạy theo giả định rằng đây vẫn sẽ là một bài nộp hợp lệ (bởi vì bạn ơi, thật tuyệt khi không thử). Nếu OP có thể làm rõ liệu điều này có được chấp nhận hay không (vì tôi chưa viết hàm), điều đó sẽ được đánh giá cao.

Cập nhật: Phước lành nhận được, tất cả đều tốt :)


Phiên bản trước:

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

2
Có thể không liên quan, nhưng chuỗi định dạng tự động không có sẵn trong các phiên bản python trước 3.6
M.Herzkamp

3
@ M.Herzkamp Vậy sao?
ruohola

16
@ruohola Tôi nghĩ M.Herzkamp đang cố nói tiêu đề cho câu trả lời này phải là "Python 3.6" chứ không phải là "Python 3".
Ông Lister

8
Thậm chí ngắn hơn và tương thích Python 2 (67 byte) : "How much {0} would a {0}{1} {1} if a {1}{0} could {1} {0}?".format. Điều này trả về một hàm bị ràng buộc với chuỗi không được định dạng.
Remco Haszing

1
Tôi không phải là chuyên gia Python, nhưng vì print("How much {0} would a {0}{1} {1} if a {0}{1} could {1} {0}?".format("wood","chuck"))tạo ra đầu ra mong muốn, tôi thấy không có lý do gì để không chấp nhận nó :)
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

Đầu vào được lấy từ bảng t có sẵn với các cột wc , theo quy tắc IO của chúng tôi .

Một byte dài hơn, nhưng vì một số lý do làm hài lòng hơn một chút:

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

Phiên bản này hoạt động trên một tập hợp con của các đầu vào không bao gồm chữ số 2trong từ đầu tiên w .

Vì tôi ở SQL, tôi có thể tải trước tất cả các ví dụ vào bảng và chạy tất cả chúng cùng một lúc:

nhập mô tả hình ảnh ở đây


2
+1000000 chuyến tàu ảo cho megatrain
Greg Martin

5
Tôi giả sử rằng "w" và "c" lần lượt là "gỗ" và "chuck": P
user253751

Điều này có thể được thực hiện bằng 67 byte trong Oracle như được gọi từ SQL * Plus (vì vậy không có bảng nào):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 $@?

Hãy thử trực tuyến!

-5 byte do sự giúp đỡ từ các bình luận bên dưới.




1
Bạn đã thêm một dấu gạch chéo ngược không cần thiết khi điều chỉnh golf của Nahuel. Đây là 53. (Mặc dù thực sự phải là 50, nhưng không có gì ngăn bạn lấy từ đầu tiên là $ 2 và từ thứ hai là $ 1.)
Grimmy

2
@Grimy: Tôi thấy nhận xét về thử thách từ poster gốc cho phép đảo ngược các tham số. Tôi đang cập nhật câu trả lời cho câu trả lời xuất sắc là 50 byte. Cảm ơn!
nhổ

1
@roblogic: Dấu gạch chéo ngược trích dẫn khoảng trắng để tránh chia tách từ trên khoảng trắng và dấu ngoặc nhọn được mở rộng hai lần để tạo thành hai từ, một lần với mỗi chuỗi bên trong dấu ngoặc và ký tự theo dấu ngoặc (nhưng là một phần của từ) được thêm vào cuối mỗi chuỗi. Thêm dấu ngoặc vuông để giúp trực quan hóa việc chia tách từ: R [ Vì vậy, [[would, $ 1 \ if} \ a \ $ 2 $ 1], trở thành
tên lửa

15

Stax , 33 31 30 29 byte

-1 nhờ đệ quy !

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

Chạy và gỡ lỗi nó tại staxlang.xyz!

Đẩy từng thành phần vào ngăn xếp theo thứ tự ngược lại, sau đó nối tất cả với khoảng trắng.

Giải nén (35 byte) và giải thích:

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

Tất cả mọi thứ giữa `` là chuỗi ký tự nén. Dấu phẩy đó là quan trọng. Lần cuối cùng tôi đọc từ ngăn xếp đầu vào, tôi phải bật chứ không nhìn lén để tránh thêm tiếng "chuck" ở cuối đầu ra.

Bạn sẽ nhận thấy rằng tôi đặt cả hai đầu vào trên cùng một dòng cho một vài trường hợp thử nghiệm và chúng sẽ theo thứ tự ngược lại. Điều này là cần thiết để lấy chuỗi trống hoặc chuỗi khoảng trắng làm đầu vào.

27 26 byte với các hạn chế về đầu vào

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

Chạy và gỡ lỗi nó tại staxlang.xyz!

Giống như SOGL của @ dzaima , điều này sẽ thất bại nếu đầu vào đầu tiên chứa chữ cái thường 'y'. Đẩy chuỗi "Bao nhiêu b sẽ y nếu a có thể yb?", Sau đó thực hiện một cặp thay thế.


"Bạn sẽ nhận thấy rằng tôi đặt cả hai đầu vào trên cùng một dòng cho một vài trường hợp thử nghiệm và chúng theo thứ tự ngược lại. Điều này là cần thiết để lấy các chuỗi trống hoặc chuỗi khoảng trắng làm đầu vào." Nếu bạn sử dụng không có dấu phân cách đầu vào, đầu vào sẽ không bị xáo trộn , chuỗi trống và tất cả. Nó chỉ làm cho nó khó xử khi hiển thị nhiều trường hợp thử nghiệm.
đệ quy

1
Ngoài ra, có vẻ như hàng đầu ,trong giải pháp 31 byte của bạn có thể bị xóa. Các mục sau đây +bật ra từ ngăn xếp đầu vào, do đó hành vi là giống hệt nhau.
đệ quy

13

JavaScript, 70 byte

Nhàm chán!

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

Hãy thử trực tuyến!

Nhẹ nhàng bớt nhàm chán!

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

Hãy thử trực tuyến!


Bạn có được phép xuất một hàm curried như trong ví dụ đầu tiên đó không?
Feathercrown

@Feathercrown, tôi không xuất ra một chức năng, tôi đang gọi cả hai (ví dụ f(a)(b):) như bạn có thể thấy trong TIO. Nhưng vâng, sự đồng thuận của chúng tôi cho phép các chức năng bị cấm và tôi nghĩ rằng chúng tôi gần với sự đồng thuận về việc cho phép một chức năng thực sự được trả lại.
Xù xì

Theo đầu ra tôi có nghĩa là mã trả về một hàm khi được đánh giá; không có cuộc gọi nào trong mã đã cho tính byte. Tôi chỉ kiểm tra để chắc chắn rằng cà ri vẫn ổn, vì tôi chỉ thấy các chức năng không được cung cấp trở lại.
Feathercrown

6

SOGL , 32 30 byte

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

Hãy thử nó ở đây!

Đầu vào đầu tiên không thể chứa chữ cái y, dường như để lại một tập hợp con hợp lý của ASCII (và unicode) còn lại.

½ouiīZģ9Ο|ΧyΚ⅞ō÷Jeq(‚7‘là một chuỗi nén "how much b would a by y if a by could y b?"(các ký tự được chọn để tất cả các từ cần thiết đều nằm trong 512 từ hàng đầu của từ điển sẽ nén tốt hơn), sau đó bđược thay thế bằng đầu vào thứ 1 và ythứ 2.


+2 điểm internet cho một trong những hạn chế ngẫu nhiên nhất mà tôi có thể nhớ (trong giải pháp ngắn hơn của bạn)
Greg Martin

@GregMartin Không ngẫu nhiên. Tôi không nói SOGL, nhưng tôi đã kết thúc với cùng một hạn chế về 'n' khi giải trình tự hai lần thay thế y -> woodn -> chuck. Một phần mười của Điểm nhân phẩm nói rằng đó cũng là trường hợp.
Khuldraeseth na'Barya

Tôi nghĩ rằng tinh thần chính của câu hỏi này là cởi mở về việc cho phép các giải pháp ... chỉ khi tôi bỏ qua việc không cho phép một chữ cái thực sự trong một đầu vào là một chút sơ sài. Dù sao: tại sao bđầu vào ethứ hai không được phép trong đầu vào thứ hai?
Greg Martin

@GregMartin rất tiếc, tôi muốn nói rằng đầu vào thứ 1 không thể chứa e, vì nếu không nó sẽ được thay thế bằng đầu vào thứ 2 trong lần thay thế thứ 2
dzaima

Có phải mục tiêu thay thế không phải là alpha để tránh phải cấm alpha từ đầu vào không?
WGroleau

5

R , 90 77 76 byte

-13 cảm ơn Sumner18
-1 nhờ Giuseppe

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

Hãy thử trực tuyến!


2
gsubThay vào đó có thể tăng gấp đôi cho -13 byte. tio.run/ cường
Sumner18

@ Sumner18 Cảm ơn. Vâng, gsubchắc chắn có ý nghĩa hơn.
Robert S.

Nếu bạn cảm thấy thích sử dụng pryr, bạn có thể giảm xuống 73 .
Khuldraeseth na'Barya

4
Bạn nên xác định rằng bạn giả sử đầu vào xkhông bao gồm ký tự 2; nó thất bại trong trường hợp này ( TIO ).
Robin Ryder



4

JavaScript (V8) , 72 byte

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

Hãy thử trực tuyến!

Việc gán biến thực sự tiết kiệm 0 byte, nhưng tôi nghĩ rằng tôi sẽ giữ nó chỉ để làm cho điều này hơi độc đáo.


Nhưng một chuỗi mẫu lớn ngắn hơn 1 ký tự: Hãy thử trực tuyến! .
manatwork

@manatwork Tôi đã thử cách này nhưng bao gồm một khoảng trắng thừa do nhầm lẫn: P Cảm ơn!
IronFlare

4

Phổ ZX cơ bản, 87 byte

Chỉ để hoàn thiện, thực hiện đơn giản:

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

Sử dụng IFtừ khóa (1 byte) để giảm 3 byte, nhưng phá vỡ điều kiện "viết hoa giống nhau":

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

Thật tuyệt khi hiển thị các phiên bản hơi gian lận quá :)
Greg Martin

2
Ôi, Đặc biệt! Để được trẻ lại ...
chx

4

Rust , 75 byte

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

Hãy thử trực tuyến!

Sử dụng thủ thuật này , cho phép bạn bỏ qua chỉ mục định dạng một lần cho mỗi mục để định dạng.

Cũng sử dụng print!(), bởi vì nó ngắn hơn một byte so với việc xây dựng một chuỗi với format!()và trả về nó.


4

05AB1E , 37 35 31 30 byte

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

-5 byte nhờ @Grimy .

Có một danh sách gồm hai mục: woodgiá trị thứ nhất và giá trị chuckthứ hai.

Hãy thử trực tuyến hoặc xác minh tất cả các trường hợp thử nghiệm .

Giải trình:

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)

Xem mẹo 05AB1E này của tôi (phần Làm thế nào để sử dụng từ điển? ) Để hiểu tại sao “Howƒ×1€Þ a ÿ0€¬ a ÿƒˆ01?“"How much1 would a ÿ0 if a ÿ could01?".




1
@Grimy Rất đẹp! Tôi thực sự thích cả hai. Ý tưởng khéo léo của việc sử dụng như thế để lưu byte bổ sung, cảm ơn.
Kevin Cruijssen

1
Thay thế 30 . Tôi không tìm thấy bất kỳ 29, vì vậy giải thích của bạn là an toàn cho đến bây giờ;)
Grimmy

4

CƠ BẢN Applesoft, 77 76 byte

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

Ở trên có thể trông không giống BASIC thích hợp, nhưng Applesoft cho phép một vài phím tắt khi sử dụng PRINTcâu lệnh:

  • Sử dụng ?thay thế PRINTkhi nhập báo cáo
  • Ký tự nối (có thể ;hoặc +) có thể được bỏ qua
  • Nếu câu lệnh kết thúc bằng một chuỗi trích dẫn, trích dẫn cuối cùng có thể được bỏ qua Cảm ơn, Mark !

Số dòng là bắt buộc, hoặc INPUTcâu lệnh sẽ gây ra một?ILLEGAL DIRECT ERROR


1
Bạn có thể bỏ qua dấu ngoặc kép? Applesoft Basic là một công cụ phái sinh của Microsoft Basic và nhiều phiên bản của Microsoft Basic cho phép bạn bỏ qua trích dẫn kết thúc trên một chuỗi nếu nó kết thúc dòng.
Đánh dấu

@Mark, Cảm ơn vì tiền boa!
lee

4

33 , 78 byte

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

Hãy thử trực tuyến!

Lấy đầu vào là đối số dòng lệnh.

Tiền thưởng: 91 byte

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

Hãy thử trực tuyến!

Cung cấp đầu ra giống như chính nó khi cho đầu vào 1bztp2bztp


Nói to điều này, bây giờ tôi cần phải làm sạch tất cả nhổ ra khỏi màn hình của tôi.
BradC


3

PowerShell , 65 byte

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

Hãy thử trực tuyến!

Điều duy nhất cần lưu ý là bạn phải thoát dấu chấm hỏi vì chúng có thể là các phần hợp lệ của mã định danh PowerShell


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

Cũng nên chạy như VBScript, tôi đã sử dụng hai phím tắt: "ould" đang lặp lại và "chuck" không bao giờ xuất hiện mà không có thêm khoảng trắng.


Bạn có thể giảm xuống còn 75 byte bằng cách chuyển đổi sang chức năng cửa sổ ngay lập tức như a=[A1]:b=[B1&" "]:o="ould ":?"How much "a" w"o"a "a b b"if a "a b"c"o b a"?. Lấy đầu vào từ [A1][B1]. Chúng tôi có Mẹo chơi golf trong VBA mà bạn xem xét.
Taylor Scott

Sau đó, bạn có thể đưa phạm vi được đặt tên đầu vào [A][B]khi đầu vào giảm xuống 73. Tôi hoàn toàn không hiểu cách thức của bạn đi qua, hãy thoải mái thêm câu trả lời của riêng bạn.
dùng3819867

1
Điều đó không may đi ngược lại cách STDIN và STDOUT được định nghĩa cho Excel VBA - bạn có thể sử dụng bất kỳ phạm vi chưa được đặt tên nào trên bảng kích hoạt, nhưng không được phép sử dụng các phạm vi được đặt tên cho mỗi lần xử lý trước đó của cộng đồng
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]);}}

Cảm ơn Andrew Baumher đã cho tôi biết về chuỗi nội suy !!
EDIT: Toàn bộ lớp hiện đã thêm
EDIT: Cảm ơn Kenneth K. đã cho tôi một vài mẹo để rút ngắn
EDIT: Cảm ơn Andrew một lần nữa vì đã nói với tôi rằng sử dụng chuỗi nội suy thực sự dài hơn trong kịch bản này.


Sử dụng '$' ( chuỗi nội suy ) hiện đại của C # , bạn có thể lưu một vài byte bằng cách thay thế {0} bằng {a [0]} hoặc tốt hơn là lấy hai biến thay vì một mảng để bạn chỉ cần sử dụng a và b. Để không đánh cắp sấm sét của bạn, có thể nói, tôi sẽ thêm nó dưới dạng phiên bản khác của c #
Andrew Baumher

Wow không biết về điều đó! Cảm ơn thông tin
canttalkjustcode

2
@canttalkjustcode nói chung, các chức năng được chấp nhận. Đối với C #, điều này bao gồm 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

Điều này đúng nhưng chỉ trong C # Interactive, bạn mới có thể sử dụng biểu thức lambda như thế này. Trong C # đầy đủ, bạn cần một tuyên bố lamda đầy đủ. Một câu lệnh void đơn giản sẽ nhanh hơn như được hiển thị trong đoạn trích sau:
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++"?"

Hãy thử trực tuyến!

Lần thử đầu tiên, vì vậy tôi hy vọng tôi đã không phá vỡ bất kỳ quy tắc nào.



2

Python 3 , 80 byte

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

Hãy thử trực tuyến!

khi ở rome, sử dụng định dạng str.

Chỉnh sửa bằng mẹo của mực.


3
Điều này sẽ không hợp lệ? Đó là một đoạn trích - không phải là một chức năng hoặc một chương trình, phải không?
Phục hồi lại

Vâng; cần một lambda n:trước đó, và có thể thả print().
wizzwizz4

Bạn nên thay đổi mã của bạn để in How much ...thay vì how much ....
ruohola

3
Nó chỉ đủ để xác định một chức năng ẩn danh là 'how much {0} would a {0}{1} {1} if a {0}{1} could {1} {0}?'.format.
xnor

@xnor Vẫn còn khá mới, TIO sẽ trông như thế nào sau đó? Tôi nghĩ rằng nếu không có cách nào đó để vượt qua trong một cuộc tranh cãi thì nó sẽ có thể chạy được.
Người thử

2

C # (Trình biên dịch tương tác Visual C #) , 66 65 byte

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

Hãy thử trực tuyến!

giống như mọi người khác, ngoại trừ C #. -1 byte bằng cách sử dụng phân tầng curry a => b => c thay vì (a, b) => c


Thay đổi chữ ký hàm từ Func<string,string,string>thành Func<string,Func<string,string>>và thay đổi (x,y)thànhx=>y=>
Hiện thân của sự thiếu hiểu biết

Có vẻ như là một chiến thuật rẻ tiền, nhưng thảo luận meta nói rằng đó là trò chơi công bằng, vì vậy cũng có thể. Cảm ơn.
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='')

Hãy thử trực tuyến!


2
Chào mừng đến với trang web! Liên kết TIO của bạn dường như liên kết đến mã sai? Ngoài ra, theo như tôi có thể nói, bạn đã giả sử đầu vào nằm trong các biến ab, không được phép theo quy tắc Đầu vào / Đầu ra mặc định
caird coinheringaahing

Cảm ơn @cairdcoinheringaahing đã bình luận. Tôi viết lại nó dưới dạng hàm, hy vọng nó tuân thủ các quy tắc bây giờ.
minhsphuc12


1

APL (Dyalog Unicode) , 56 59 byte

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

Hãy thử trực tuyến!

Khá đơn giản dfn. Lưu một byte bằng cách cắt nếu chúng ta được phép trả về một chuỗi các chuỗi thay vì một chuỗi.

Đã thêm 3 byte vì tôi quên thêm dấu hỏi.


Bạn đã đếm các chữ cái Hy Lạp là một byte?
Tomáš Zato

@ TomášZato có. Các glyph của Dyalog APL có thể được biểu diễn trong một byte bằng cách sử dụng Bảng ký tự đơn Byte của Adám, đây là tiêu chuẩn cho các câu trả lời của APL tại đây.
J. Sallé


1

Thạch , 41 37 byte

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

Hãy thử trực tuyến!

Một chương trình đầy đủ lấy một cặp chuỗi làm đối số của nó và in chuỗi đã xử lý. Một liên kết đơn âm có thể được hình thành bằng cách thêm một Fđến cuối (cảm ơn @JonathanAllan vì đã chỉ ra điều này).

Bây giờ tôi đã chuyển sang sử dụng "b" và "e" làm trình giữ chỗ, lấy cảm hứng từ câu trả lời SOGL của @ dzaima, vì vậy hãy chắc chắn cũng nâng cấp câu hỏi đó! Điều này không có nghĩa là từ đầu tiên không thể bao gồm chữ e.


@Jonathan ALLan hoàn toàn đúng! Cảm ơn.
Nick Kennedy


1

Forth (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 ." ?";

Hãy thử trực tuyến!

Giải thích mã

\ 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 byte

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

Hãy thử trực tuyến!

Chương trình đầy đủ, lấy đầu vào làm đối số.

Không có gì đặc biệt ở đây. Hy vọng rằng có phiên bản ngắn hơn, nhưng không có cách rõ ràng để rút ngắn điều này từ cái nhìn đầu tiên.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.