Скільки коду має кодгольф гольф, якби кодегольф міг би гольф-код?


55

Напишіть функцію чи програму, яка має два слова як введення та виведення варіантів популярного англійського твістера язика "Скільки б деревини мав патрон, коли б дрітчак міг би потрошити деревину?".

Вихід буде використовувати перше слово чотири рази

  • Скільки woodб woodпатрон патрона, якби woodпатрон міг би патрон wood?

а друге слово чотири рази

  • Скільки б деревини, chuck chuckякби деревина chuckмогла chuckдрова?

при цьому решта результатів однакова для будь-яких входів.

  • How muchдерево would aбабака Патрон if aбабака 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?"

Це , тому виграє найменше байтів. Відповіді вітаються на всіх мовах, навіть якщо якась інша мова може це зробити в меншій кількості байтів.

(Натхненний цим мемом , який використовує одну вхідну пару краще, ніж ця жорстка модель ....)


2
Можемо припустити, що ці два слова будуть двома різними словами?
Джонатан Аллан

4
... Я здогадуюсь "", ""означає ні: p
Джонатан Аллан

1
@Chronocidal Я не витримую, щоб побачити вас розчарованим ....
Грег Мартін

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

Спробуйте в Інтернеті!

Я маю на увазі, якщо взуття підходить ..

Завдяки манетарній роботі за ловлю друку

Завдяки Ремко Хазінг за чудову ідею -3 байти

Я біжу від припущення, що це все-таки було б дійсним поданням (адже людина, це занадто круто, щоб не намагатися). Якщо ОП могла б уточнити, чи прийнятно це (оскільки я не написав функцію, сама по собі), це буде вдячно.

Оновлення: благословення отримано, все добре :)


Попередня версія:

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 Я думаю, що М. Герцкамп намагається сказати, що назва цієї відповіді має бути "Python 3.6", а не "Python 3".
Містер Лістер

8
Навіть коротше і Python 2 сумісні (67 байт): "How much {0} would a {0}{1} {1} if a {1}{0} could {1} {0}?".format. Це повертає функцію, прив'язану до неформатоване рядку.
Ремко Хашинг

1
Я не експерт Python, але оскільки 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

Ця версія працює на підмножині входів, які не містять цифри 2в першому слові .w

Оскільки я перебуваю в SQL, я можу попередньо завантажити всі приклади в таблицю та запустити їх усі відразу:

введіть тут опис зображення


2
+1000000 віртуальних поїздів для мегатрейн
Грег Мартін

5
Я припускаю, що "w" і "c" означають "wood" і "chuck" відповідно: P
user253751

Це можна зробити в 67 байтах в Oracle, як викликано з SQL * Plus (тому немає таблиці):select'How much &1 would a &1&2 &2 if a &1&2 could &2 &1?'from dual
Бен

16

Баш , 50 байт

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

Спробуйте в Інтернеті!

-5 байт завдяки допомозі в коментарях нижче.




1
Ви додали зайвий зворотний нахил під час адаптації гольфу Нахуеля. Ось 53. (Хоч насправді має бути 50, ніщо не заважає тобі взяти перше слово як 2 долари, а друге слово - 1 долар.)
Гриммі

2
@Grimy: Я бачу коментар до виклику з оригінального плаката, що дозволяє реверсувати параметри. Я поновлюю відповідь на відмінну відповідь у 50 байт. Дякую!
spuck

1
@roblogic: Косою рисою цитуються пробіли, щоб уникнути поділу слова на пробіли, а фігурні дужки розширюються вдвічі, утворюючи два слова, один раз на кожну рядок всередині дужок, та символи, які стежать за дужками (але частиною слова) додаються до кінця кожного рядка. Додавання квадратних дужок допоможе візуалізувати поділ слова: "[a {bc, de} f]" стає двома словами: "[abcf] [adef]". Тож "[{би, $ 1 \ якщо} \ а \ $ 2 $ 1]" стає "[буде \ a \ $ 2 $ 1] [$ 1 \ якщо \ а \ $ 2 $ 1]"
spuck

15

Стакс , 33 31 30 29 байт

-1 дякую рекурсивно !

¢è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 by може yb?", Потім робить пару замін.


"Ви помітите, що я розміщую обидва входи в одному рядку для кількох тестових випадків, і що вони знаходяться в зворотному порядку. Це необхідно, щоб взяти порожні рядки або рядки пробілів як вхідні дані." Якщо ви не використовуєте роздільника вхідних даних, вхід буде непорушеним , порожні рядки і все. Це просто незручно показувати кілька тестових випадків.
рекурсивна

1
Крім того, здається, що провідне рішення ,у вашому 31 байті може бути видалено. Наступні +неявно вискакують із вхідного стеку, тому поведінка ідентична.
рекурсивна

13

JavaScript, 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])

Спробуйте в Інтернеті!


Чи дозволено виводити функцію із завитками, як у першому прикладі?
Перокроун

@Feathercrown, я не виводячи функцію, я виклик як (наприклад, f(a)(b)) , як ви можете бачити в TIO. Але так, наші консенсуси щодо дозволених функцій, і я думаю, ми близькі до консенсусу щодо того, щоб дозволити функцію насправді повернути.
Кудлатий

Під виходом я мав на увазі, що код повертає функцію при оцінці; в даному коді немає дзвінків, що враховується в байтах. Я просто перевіряв, щоб переконатися, що curry був нормальним, оскільки я бачив, як тільки не повернулися непотрібні функції.
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-м введенням і y2-м.


+2 Інтернет-бали за одне з найбільш випадкових обмежень, які я пам'ятаю (у вашому коротшому рішенні)
Грег Мартін,

@GregMartin Не такий випадковий випадок . Я не розмовляю SOGL, але в кінцевому підсумку я мав таке ж обмеження на 'n', коли послідовно виконували дві заміни y -> woodта n -> chuck. Десята частина пункту гідності говорить, що так і тут.
Khuldraeseth na'Barya

Я думаю, що головний дух цього питання полягає в тому, щоб бути відкритим щодо прийняття рішень ... Лише в сторону я можу зауважити, що не допускати фактичного письма у вкладенні є трохи схематичним. У будь-якому разі: чому bна першому вході ще не дозволено, а на другому e- нормально?
Грег Мартін

@GregMartin, мабуть, я хотів сказати, що 1-й вхід не може містити e, оскільки в іншому випадку він буде замінений другим входом у 2-й заміні
dzaima

Чи не можна, щоб ціль заміни була не альфа-альфа, щоб уникнути необхідності заборонити альфа-вхід?
WGroleau

5

R , 90 77 76 байт

-13 завдяки Sumner18
-1 завдяки Джузеппе

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безумовно, має більше сенсу.
Роберт С.

Якщо ви хочете користуватися pryr, ви можете зменшити його до 73 .
Khuldraeseth na'Barya

4
Ви повинні вказати, що ви вважаєте, що вхід xне містить символу 2; у цьому випадку вона не вдається ( TIO ).
Робін Райдер



4

JavaScript (V8) , 72 байти

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

Спробуйте в Інтернеті!

Присвоєння змінної насправді економить 0 байт, але я подумав, що буду тримати це лише для того, щоб зробити це трохи унікальним.


Але одна велика рядок шаблону на 1 символ коротша: Спробуйте в Інтернеті! .
манатура

@manatwork Я спробував це, але включив додатковий простір помилково: 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$;"?"

Приємно також показувати трохи хитрі версії :)
Грег Мартін

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 Дуже приємно! Мені дуже подобається те і інше. Геніальна ідея використання подібного, щоб зберегти додатковий байт, дякую.
Кевін Круїссен

1
Чергувати 30 . Я не знаходжу жодної 29, тому ваше пояснення зараз безпечне;)
Гриммі

4

Applesoft BASIC, 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, які ви можете розглянути.
Тейлор Скотт

Тоді ви можете взяти введений діапазон [A]і [B]як введення, зменшивши його до 73. Я не зовсім розумію, як проходить ваш шлях, хоча сміливо додайте свою відповідь.
користувач3819867

1
Це, на жаль, суперечить тому, як визначено STDIN та STDOUT для Excel VBA - ви можете використовувати будь-який неназваний діапазон на аркуші активів, але заборонено використовувати названі діапазони за попереднім рішенням спільноти
Тейлор Скотт,

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

Дякую Ендрю Баумхеру за те, що він розповів мені про інтерпольовані рядки !!
EDIT: Повний клас тепер додано
EDIT: Дякую Кеннету К. за те, що він дав мені кілька порад щодо його скорочення
EDIT: Ще раз дякую Ендрю за те, що він сказав мені, що використання інтерпольованого рядка насправді довше в цьому сценарії.


Використовуючи сучасний C # 's' $ '( інтерпольовані рядки ), ви можете зберегти кілька байт, замінивши {0} на {a [0]}, а ще краще, взявши дві змінні замість масиву, щоб ви могли просто використовувати a і b. Щоб не вкрасти ваш грім, так би мовити, я додам його як іншу версію c #
Ендрю Бамхер,

Нічого не знав про це! Дякуємо за інформацію
canttalkjustcode

2
@canttalkjustcode загалом, функції приймаються. Для C # сюди входять лямбда: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

Python 3 , 80 байт

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

Спробуйте в Інтернеті!

коли в rome, використовуйте формат str

Відредаговано за допомогою трюку кальмарів.


3
Не було б це недійсно? Це фрагмент - не функція чи програма, правда?
Відновіть Моніку

Так; потребує 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 для цього тоді? Я б подумав, що без жодного способу передачі аргументу це було б можливим.
Спробуй

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=>
Втілення Невідомості

Здається, це дешева тактика, але мета-дискусія говорить про те, що це чесна гра. Дякую.
Ендрю Баумхер

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 так. Гліфи Dyalog APL можуть бути представлені в одному байті за допомогою єдиного байтового символьного листа Adám, який є стандартним для відповідей APL.
Дж. Салле


1

Желе , 41 37 байт

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

Спробуйте в Інтернеті!

Повна програма, яка бере аргумент пари рядків і друкує оброблюваний рядок. Монадичне посилання може бути створене, додавши Fдо кінця (спасибі @JonathanAllan за вказівку на це).

Зараз я перейшов на використання "b" та "e" в якості заповнювачів, натхненний відповіддю SOGL @ dzaima, тому не забудьте підтримати і цей! Це означає, що перше слово не може містити букву e.


@JonathanAllan цілком прав! Дякую.
Нік Кеннеді


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

Луа , 82 байти

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

Спробуйте в Інтернеті!

Повна програма, прийміть дані як аргументи.

Тут нічого особливого. Сподіваємось, що існує коротша версія, але очевидних способів скоротити це не на перший погляд.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.