Програмування дихотомії (буквально)


33

Розглянемо запитання, написане простою англійською мовою, відповідь якого включає два досить точні (але потенційно розумні) слова або фрази, які можна розділити словом "і":

З: Які дві сторони монети? A: голови та хвости

З: Які найкращі способи подорожі? A: літак і реактивний літак

З: Чому ворон схожий на письмовий стіл? Відповідь: тому що в обох є "b", а ні в "n"

Мета

Напишіть програму, яка при нормальному виконанні видає таке запитання.

Коли будь-який інший символ видаляється з програми, починаючи з другого символу, і результат повторно запускається, вихід повинен бути будь-яким зліва від відповіді "і".

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

(Само "і" не виводиться.)

Приклад

Якщо програма є

A1B2C3D4E5F6G7H8I9

і його вихід є

What are the two sides of a coin?

Тоді вихід ABCDEFGHIмає бути heads, а вихід 123456789повинен бути tails.

Правила щодо питань та відповідей

  • Ви можете використовувати мої приклади питань, але я закликаю вас скласти свої власні.
  • Питання та дві частини відповіді:
    • всі повинні бути виразними
    • має бути загальним граматичним значущим англійською
    • може містити лише друкований ASCII (шістнадцятковий від 20 до 7E)
  • В ідеалі питання буде з великої літери та пунктуації (але відповіді не потрібно).
  • Питання повинно мати принаймні 30 символів і мати ентропію вище або рівну 3,5. (Введіть рядок, обчисліть звернення , шукайте останній H (X) .)
  • Дві частини відповідей (не враховуючи [space]and[space]між ними) повинні мати щонайменше 5 символів з ентропією вище або дорівнювати 2.
  • Слово "і" може відображатися в будь-якій частині відповіді.

Правила щодо коду

  • Жоден з 3-х фрагментів коду не може:
    • містити коментарі або що-небудь інше, яке традиційно ігнорується компілятором / інтерпретатором (не хвилюйтеся, якщо ви додасте додаткову крапку з комою або дві, але якщо ви думаєте, що це коментар, це, мабуть)
    • вийти з програми в середині виконання
  • Код може містити будь-які символи, включаючи Unicode та недрукувальний ASCII.
  • Він може мати непарну або парну кількість символів.
  • Вихід йде в stdout або файл або все, що здається розумним. Введення немає.

Оцінка балів

Оскільки я не хочу заохочувати відповіді на гольф, але хочу ще більше заохотити розумні відповіді, то бал буде щось середнє між кодом-гольфом та популярністю:

Оцінка = (upvotes - downvotes) - floor((bytes in code that outputs question) / 3)

Виграє найвищий бал.

(Використовуйте http://mothereff.in/byte-counter як лічильник байтів.)


6
Гах, це так важко зробити "нормальною" мовою, як JavaScript. Найдальший я можу отримати щось подібне x0=00;;. Великий виклик!
Дверна ручка

@Doorknob вибачте, що спустіть човен, але 00;його компілятор традиційно ігнорує ...
Джон Дворак

2
Серйозно ... "яблуко" має ентропію Шеннона 1,92 ???
Джон Дворак

4
It may have an odd or even number of charactersЧи є кількість символів, яка не є непарною або парною?
Закуска

1
@Snack Це дозволяє людям знати, що дві частини коду відповіді не повинні мати однакову довжину.
Захоплення Кальвіна

Відповіді:


55

Javascript (148 байт)

Створює декілька дурниць, які мають нісенітницю, із побічним ефектом створення попередження * про запитання. (розбиття роблять подібне, але створюючи попередження * для кожної з відповідей).

"';"+alert( 'What is the ideal breakfast???')+/ " ;apl=e"rbta(k"esnc"r.armebplleadc ee g g s(" ) + " \/)k;e"/+ ",t'hceo 'c)a;kye= ailse rat (lpi)e "

Розщеплення:

";+lr('hti h da rafs??)/";p="baken".replace   (    /ke/ ,'co');y=alert(p) 

і

'"aet Wa steielbekat?'+  alert("scrambled eggs")+"\);"+"the cake is a lie"

 

Питання: What is the ideal breakfast???

Відповіді: baconіscrambled eggs


4
Це та якість, яка мені подобається на цьому сайті! Де ще можна знайти людей, які можуть це зробити ??
Cruncher

1
Я взяв імпровізовані заняття (можливо, очевидно), і я дам вам +1 тут за значення гумору. Але, як знають усі інженери з діафрагми, ми практикуючі науки ... так що насправді найсмішніша частина - це зробити акуратне пістолет . :-)
Доктор Ребму

29

Brainfuck (437 символів)

Я мушу визнати, що це моя перша програма, яка насправді робить щось значиме. Програма дуже оптимізована для систем з низькою пам'яттю, оскільки використовує лише 4 місця пам'яті.

Питання: What are the two main groups of trees?

Відповіді: conifersіbroadleafs

-+[[++++++++++++++++++++++[+>++++++[+>++++++++++++<>-+]+>+-+.++++++<+<+-+]+>+++++.+>++.+-..------.-<--..-+-+-+..->.-+-+-+.+<+++.+-+-+-+-+.++++.+++.+<.+>-+++-+++-+++-++.->]]++-+[[+-+-[[+++++++++++++++[>++>+++++>+++++++<<<-]>-->>---<++.+++++++++++++++++.-------.>.<<.>.>--.<++++.<.>>++.<+++.---.<.>>.+++.<++++++++++.<.>--.------------.++++++++.+++++.<.>-------.>-----.<++++++++.>+++.<+.>--.<<.>-.---------.<.>>+.--.<-..>+.<<[<++>-]<-.<]]]]

Основна петля

Програма складається з основного циклу (який насправді не є циклом, оскільки всі [] -блоки виконуються лише один раз) та двох розділів.

-+[[        // let answers enter
            * SNIP interleaved answer sections *
]]
++-+[[      // let odd answer and question enter
    +-+-[[  // let question enter
            * SNIP question section *
    ]]
]]

Якщо ви хочете перевірити розділи самостійно, потрібно врахувати основний цикл. Місце розташування 0 містить -1 парного відповіді, 1 - непарну відповідь та 2 - розділ питання.

Розділ відповідей

Парний відповідь (незвичайні інструкції видалено):

// location 0 contains minus 1 from main
// set location 1 = 10 * 10 minus 1 = 99 (c)
+++++++++++[>++++++++++<-]>-. // c
++++++++++++.-.     // on
-----.---.          // if
-.+++++++++++++.+.  // ers
<                   // goto 0 (which contains 0)
+-+-+-+-+-          // padding to match length of odd answer

Незвичайна відповідь (навіть інструкції видалено):

// location 0 contains 1 from main
// set location 1 = 16 * 6 plus 2 = 98 (b)  location used for characters below 'l'
// set location 2 = 16 * 7 plus 2 = 114 (r) location used for 'l' and above
+++++++++++++++[>++++++>+++++++<<-]>++.>++. // br
---.<               // o
-.+++.              // ad
>---.<              // l
+.----.+++++.       // eaf
>+++++++.           // s
>                   // goto 3 (which contains 0)

Розділ питань

Я вирішив зберігати простір для окремого розташування, оскільки його значення різко відрізняється від інших символів. Це дозволяє просто друкувати простір <.>.

// location 0 contains 2 from main
// set location 1 = 17 * 2 minus 2 = 32 (space)
// set location 2 = 17 * 5 plus 2 = 87 (W)   location used for characters below 'r'
// set location 3 = 17 * 7 minus 3 = 116 (t) location used for 'r' and above
+++++++++++++++[>++>+++++>+++++++<<<-]>-->>---<++. // W
+++++++++++++++++.  // h
-------.>.<         // at
<.>                 // (space)
.>--.<++++.         // are
<.>                 // (space)
>++.<+++.---.       // the
<.>                 // (space)
>.+++.<++++++++++.  // two
<.>                 // (space)
--.------------.    // ma
++++++++.+++++.     // in
<.>                 // (space)
-------.>-----.     // gr
<++++++++.>+++.     // ou
<+.>--.<            // ps
<.>                 // (space)
-.---------.        // of
<.>                 // (space)
>+.--.<-..>+.       // trees
<<[<++>-]<-.<       // ? (value_of_space * 2 minus 1)

Остаточне оновлення

Під час остаточного оновлення я оптимізував множення, щоб було використано мінімальні інструкції. Також величезне вдосконалення виявилось включенням «l» до другої групи персонажів у розділі про незвичайні відповіді. Економія одного символу на непарній відповіді в основному означала два символи з усієї програми, оскільки це також зменшує прокладку від парної відповіді. Я також видалив звідти і там пару непотрібних інструкцій, і не думаю, що я можу далі оптимізувати код.


23

Партія - 84

Досить гордий цим

Повна програма: Які дві сторони монети? (консоль)

echo What are two sides of a coin?  2>>xx  2>>cc&&eecchhoo  hteaaidlss  2>>xx  2>>cc

Тільки Evens: heads (файл "c")

eh htaetosdso  on 2>x >c&echo heads 2>x >c

Лише шанси: хвости (файл "x")

coWa r w ie faci? >x 2>c&echo tails >x 2>c

Працює шляхом перенаправлення виводу помилки у файл в обох випадках.


Вже думав про спосіб її скоротити, але доведеться почекати до завтра.
Οurous

3
Це найвищий показник дотепер: 12 - 28 = -16.
justhalf

20

Пітон - 104 96 (гольф: 76)

Моє рішення досить просте (і якось читабельне):

"";print 'What is the color of a zebra?' ;""
paraianat= "' b l a c k '"
aparaianat="'w h i t e'"

Вихід:

What is the color of a zebra?
black
white

Чесно кажучи, я знайшов ідею для першого рядка у відповіді bitpwner.


Ще читабельніша альтернатива: - 113 105 97

"";print 'What is the color of a zebra?' ;""
"p r i n t ' b l a c k '" ;"p r i n t ' w h i t e '"

Ще коротша альтернатива: - 86 76

"";print'What is the color of a zebra?';""
"""";;pprriinntt''bwlhaictke''"""

"шахова дошка" також відповідає вимогам.
Мартін Ендер

3
@ MartinBüttner Zebra. :-P
Девід Річербі

Ой, мені подобається zebra. І це чудово вписується у "гольф" версію із запитанням про 30 символів. Таким чином я трохи змінив своє рішення. :)
Фалько

1
Рядки з посиланням на потрійне цитування - це не коментарі, а рядкові рядки. Оскільки вони також використовуються як doc рядки , вони можуть заплутатися в коментарях.
Фалько

1
Оновлене запитання має лише 29 символів.
Денніс

15

Ребму : 79 символів АБО (37 + довжина (p1) + 2 * max (довжина (p2), довжина (p3)))

Спочатку я дам рішення з 79 символів, яке запитує, які мови ви повинні вивчити? (ентропія 4.0, 30 літер не включаючи ?) та пропонує вам пропозиції Ребола та [Червоного] :

DD  11  DD :do dd {dd  {p{Which languages must you learn?}qt}} pp{{[RReebdo]l}}

Тут існує унікальна тактика, яка не є іншими мовами, завдяки використанню того факту, що фігурні дужки - це асиметричний роздільник рядків, який може легально гніздитися:

my-string: {"It's cool," said {Dr. Rebmu}, "for MANY reasons--like less escaping."}

Це дозволить мені створити узагальнене рішення, яке може працювати без зусиль у будь-якій програмі, яка не використовує послідовності втечі. Версія 79 символів була досить простою для швидкого доступу, але щоб правильно містити довільне програмне джерело для програм p2 та p3, вам знадобиться повний шаблон. Якби ми використовували це, це було б 87 символів:

DD  11  DD :do dd {dd  {p{Which languages must you learn?}qt}} ddoo{{pp{{[RReebdo]l}}}}

Шаблон для використання цього загального виду є те , що якщо у вас є три вихідних текстів послідовних символів довжини змінних (давайте використовувати приклад , як AAA, BBBBB, CCCCCCC) ви можете кодувати їх як - то вздовж ліній:

DD  11  DD :do dd {dd  {AAAqt}} ddoo{{BCBCBCBCBC C C}}

(Примітка. Хоча ця схема не працюватиме без налаштування програм, які використовують символи втечі, це не є фатальним недоліком. Отримати неперевершену ліву дужку в рядку, розділеній дужками, потрібно щось на зразок {Foo ^{ Bar}..., але ви можете легко переписати це за допомогою альтернативне позначення рядків "Foo { Bar"і комбіновані випадки можна керувати склеюванням суміші нерозміщених рядків.)

Отже ... як щодо прикладу? Як тільки загальна форма була доступна, ця програма 573 символів була зібрана всього за пару хвилин із трьох попередніх рішень для коду для гольфу:

DD 11 DD: do dd {dd {rJ N 0% rN Wa1m2j S {\ x /} D00 Hc & [u [Ze? Wa Qs ~ rpKw [isEL00c [skQd2k] [eEV? KQ [tlQ]] pcSeg - b00 [ eZ 1 5] 3] prRJ [si ~ dSPscSqFHs] eZ 1 [s + dCa + wM2cNO]]] Va | [mpAp2j] prSI ~ w { } Ls2w Wl h01tiVsb01n -1 chRVs { } hLceVn01qt}} ddoo {{BrdSz [sn [{N sbeo [tIt0l1eV} 0e5gXN1 01L {5s0} C {1} 0 {0 Do5f0 0bMe1e0r0} 0]]] tMw9C9 Numz Jl [paN + [KperlCJBn [[ba sWS {B noJn a] N a nn] {K, j} b P {. } lf EZ - - n [N m {G otothestoreandbuysome more}] {T akeonedownandpassitar ound} c B w P lf]]}}

Якщо хтось хоче спробувати написати цю програму своєю мовою за вибором і думає, що вона може перемогти 573, дайте мені знати. Я зароблю вам велику репутацію, якщо ви це зробите - якщо вважати, що обрана вами мова не є Rebmu, тому що я знаю, що ці програми не мінімальні. :-)

Та "марнотратний" інтервал, який ви отримуєте в кінці, - це те, що відбувається, коли p2 і p3 мають незбалансовану довжину. Але всі 3 програми в цьому випадку мають різний розмір, тому для p2 / p3 вибирати не дуже добре. (Я вибрав їх, тому що в якості вхідних даних не було зовнішніх даних, таких як лабіринт чи що завгодно, не те, що вони були однакової довжини. Хоча я міг написати нові програми, які були більш оптимальними, я витратив достатньо часу, і справа в тому, що ви НЕ повинні писати нові програми ...)

Як це працює

(Примітка. Я почав з більш "творчого" підходу, який був не настільки обтічним, але цікавішим. Я перемістив його до запису в своєму блозі, оскільки опис цього підходу вже давно.)

Ключовим тут є хитрість "eval code as a string", як і деякі інші записи, у неї просто є козир асиметричного роздільника рядків. Почну з пояснення роботи випадку 80 символів.

Ось "ціла" програма, коригуючи пробіл для читабельності цього випадку:

DD 11                    ; assign 11 to dd (about to overwrite again)
DD :do                   ; make dd a synonym for DO (a.k.a. "eval")

; eval a string as source code that ends with QUIT (QT)
dd {dd  {p{Which languages must you learn?}qt}}

; we'll never get here, but whatever's here must be legally parseable
pp{{[RReebdo]l}}

Тут ми закінчуємо встановлення DD на синонім DO (він же "eval"). Але хитрість полягає в тому, що коли запускаються навпіл програми, вони завершують запущений код, єдиним ефектом якого є визначення D до нешкідливого буквального 1.

Ось що робить код непарних символів, пробіл знову коригується:

D 1                      ; assign 1 to d
D d                      ; assign d to itself, so it's still 1
d                        ; evaluates to integer, no side effect
{d pWihlnugsms o er?q}   ; string literal, no side effect
p {Rebol}                ; print "Rebol"

А ось код з рівними символами:

D 1                      ; assign 1 to d
D:od                     ; URL-literal (foo:...), no side effect
d                        ; evaluates to integer, no side effect
{{hc agae utyulan}t}     ; string literal (well-formed!), no side effect
p {[Red]}                ; print "[Red]"

Це насправді так, що для програми, що не вдвічі менша, програма dd {dd {(arbitrary code)qt}}виконує будь-який код, який ви хочете. Однак є два дзвінки на оцінку замість лише одного. Це тому, що в той час як вкладені дужки чудово працюють у переплетеному коді, вони псують евальську поведінку DO. Тому що:

do {{print "Hello"}}

Буде завантажувати рядок як програма, але ця програма закінчується лише постійною строкою {print "Hello"}. Таким чином, хитрість, яку я тут використовую, полягає в тому, щоб взяти свій DD (тримає те саме значення функції, що і DO) і запустити його двічі. Половинки жують в різних частинах струни, але вони не жують, якщо рівномірність / диваковість є правильною для вмісту, і тому, що те, що залишилося поза струни після половинки, є лише цілісною константою, dвони нешкідливі.

З цією схемою немає складнощів у написанні поведінки програми, коли вона не розрізана навпіл - ви можете вводити що завгодно, поки довжина символу коду є парною (непарне, якщо ви рахуєте QT, який є QUIT). Якщо вам потрібно отримати парне число від непарного, киньте пробіл (так, фактично в моїй формулі вище +1 на p1 для непарних довжин програми p1) . Трюк, здавалося б, записати той перемежований код згодом, який повинен пройти синтаксичний аналіз, якщо він не вдвічі. (Він не запускається через QT, але він повинен бути ЗАВАНТАЖЕНО перед тим, як буде виконаний.)

Цей випадок тривіальний; ppзавантажує штраф як символ, навіть якщо він не визначений, і розбивається на pдрук у кожній половині програми. Але ми можемо зробити ще один трюк, просто повторно скориставшись рядковим рядком. У половині програм все ще визначено DO нормально, тому ми також могли просто сказати:

ddoo{{pp{{[RReebdo]l}}}}

Маючи в усьому випадку єдину частину, яку підбирає парсер, це символічне слово ddooі рядковий буквал, ми можемо переплутати будь-які дві програми, які ми бажаємо всередині цього рядкового буквального, і не гнівати парсера. Вдвічі зменшені версії просто скажуть:

do{p{Rebol}}

..і ...

do{p{[Red]}}

Як я кажу, ця частина виглядає звичною для інших рішень, які розглядають програми як рядки та їх вирівнюють. Але у випадку змагань, коли програми, які ви упаковуєте, містять вкладені рядки, які кидають ключі для них. Тут єдині речі, які можуть зіткнутися з вами, - це використання втечі через догляд ( ^) ... який можна легко обійти.


(Невелика примітка "обману": Я додав QT для "QUIT" у відповідь на цю проблему. Насправді я раніше цілеспрямовано видалив абревіатуру для виходу з ладу ... тому що я якось вважав, що це корисно лише для використання консолі та просто зайняття двобуквенний пробіл, якщо його не було у відповіді. Я додаю його, тому що я бачу, що я помилявся, не додаючи його саме для цього випадку. Тим не менш, до цього зміни було б більше двох символів. Також, коли я вперше опублікував рішення, в Rebmu з’явилася помилка, яка не дозволила йому працювати фактично, хоча він і мав би ... зараз він працює.)


Ви фактично створили власну мову програмування?
голоси

2
@ tjt263 Краще подумати про кодування гольфу "кодування" існуючої мови Rebol . Люди робили подібні речі, наприклад, з Pyth , який в основному скорочує Python. Але Rebmu має досить цікаву відмінність у тому, що вона фактично може завантажуватися аналізатором Rebol і "сумісна". Ви можете ввірватися в Rebol будь-коли в середині його, див., Наприклад, Пісочний годинник . Раді обговорити це в чаті Rebol і Red, якщо бажаєте.
Доктор Ребму

15

Perl 186 139 135

"";print'What are the best things in life?';""&&pprriinntt("'hceraurs ht hyeo ulra meennetmaiteiso'n s   o f   t h e i r   w o m e n ")

Які найкращі речі в житті?

"pitWa r h ettig nlf?;"&print('crush your enemies'                 )

розчавити ворогів

";rn'htaetebs hnsi ie'"&print"hear the lamentations of their women"

чути голоси своїх жінок

Використання менш тривалих відповідей:

Перл 79 72

"";print'What are my preferred weapons?';""&&pprriinntt("'smwaocredss'")

What are my preferred weapons?(30Byte, H (X) = 3,76) swords(H (X) = 2,25) і maces(H (X) = 2,32)


9

Пітон - 139 103

"";print'What are the ingredients for success?';""; ";" ;id=='"RUaniincboorwnss'";;pprriinntt  id++"'"'

What are the ingredients for success?-> UnicornsіRainbows

Тест:

c="\"\";print\'What are the ingredients for success?\';\"\"; \";\" ;id==\'\"RUaniincboorwnss\'\";;pprriinntt  id++\"\'\"\'"
exec c        # What are the ingredients for success?
exec c[::2]   # Unicorns
exec c[1::2]  # Rainbows
print 
print c[::2]  # ";rn'htaeteigeinsfrsces'";"";d="Unicorns";print d+''
print c[1::2] # "pitWa r h nrdet o ucs?;" ; i='Rainbows';print i+""

Стара версія:

# What are the ingredients for success?
"";print(('What are the ingredients for success?'));""; ";" ;"pHrEiRnEt (C'OUMnEiSc oZrAnLsG'O)"; ";" ; "p,r iTnOtN(Y' RTaHiEn bPoOwNsY'.)"
# Unicorns
";rn('htaeteigeinsfrsces')";"";print('Unicorns');"";", TONY THE PONY."
# Rainbows
"pit(Wa r h nrdet o ucs?);" ; "HERE COMES ZALGO" ;  print('Rainbows')

6

Хаскелл, 117

Працювати з функціональною парадигмою Haskell означає, що все має бути присвоєно змінній або прокоментовано за допомогою коментарів рядків --або блоків {- -}; якщо безглузді функції виконуються без призначення. Отже, щоб я залишався здоровим, я тримав запитання та відповіді так коротко, наскільки це дозволяють правила.

Питання: Чого мені не вистачить?

main=putStrLn{---}"What can I not have enough of?"{- }
=u"Scrank=e"sS"h
omeasi"n
=mpauitnS=tpru taSntprt tmLi

-----}

"Взуття" та "торти":

mi=uSrn--"htcnInthv nuho?{ 
uSrn="Shoes"
main=putStr mi
--}
anpttL{-}Wa a  o aeeog f"-}="cakes"
main=putStr anpttL
---

NB: Поява в crankрозділі "Чого мені не вистачить?" не слід розглядати як значуще.


1
Коментарі не дозволені
гордий haskeller

А як другий є синтаксисом haskell?
гордий haskeller

оригінальний код має незакритий блок коментарів, оскільки пара закриття знаходиться в рядковому коментарі. код "торти" навіть не схожий на код - чи не anpttL функція? де знак = = це його визначення? це насправді не називається anpttLWa?
гордий haskeller

@proudhaskeller пропустив правило щодо коментарів. Вибач за це. Перша програма не містить незакритого блоку коментарів. Це просто розбирає. Коментарі коментарів до рядків безглузді в блокових коментарях. Другий дійсний, оскільки коментарі до рядків дійсні. anpttL - рядок. Вийміть коментар до блоку, і ви побачите, що це дорівнює "торти". Wa знаходиться в коментарі до блоку, так що ні, це насправді не anpttLWa.
змагальний

2
@proudhaskeller Моя голова дозволяє GHCi робити роботу від її імені.
змагальний

4

Лісп (76 символів)

Питання з 31 символом, 6 символів у кожній відповіді ⟹ довжина - корисне навантаження = 33

'(: (pprriinncc''fmuacghesnitaa))':(princ "What is your favorite pink hue?")

Я хотів використати "Який ваш улюблений колір?", Але навіть потягнувся до британського правопису, він лише досягнув мінімуму 30 символів для тривалості питання, і мені було потрібно нечетне запитання, щоб збалансувати подвійні лапки.

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

Багато реалізацій Lisp викрикують кольори, оскільки вони перетворюють символи на великі регістри. Якщо це вас турбує, перейдіть ''fmuacghesnitaaна ""fmuacghesnitaa"".


Оскільки це питання було складовою для голосування, я наділив його, щоб привернути увагу, щоб спробувати отримати більше голосів. Але щедрість закінчилася, і, як я не можу дати собі балів :-) Я подаю це на ваш запис на основі мови предка Ребму, і рекомендую вам перевірити це, якщо ви цього ще не робили! codegolf.stackexchange.com/a/36114/57
д-р Ребму

3

СТАТА 295

Питання: Які найкращі десерти випікати зараз? Відповідь: брауні та файли cookie.

Пояснення: Команди в STATA розмежовані новими рядками.
Поки "//" є коментарем у STATA, "///" повідомляє компілятору перейти до наступного рядка та включити його вміст у поточну команду.

Команди в STATA часто можна скоротити до того моменту, коли вони вважаються достатньо унікальними, щоб бути диференційованими (так "генерування" стає "г", "глобальний" стає "gl" або "glo", "захоплення" стає "шапкою", " відображення "стає" ді "тощо). Команда дисплея виводить текст на екран. Команда захоплення фіксує всі помилки (включаючи синтаксичні помилки), саме тому ця програма компілюється належним чином.

Я думаю, якщо ви хочете отримати вибагливий, будь-який додатковий "/" після перших трьох послідовних рядків у рядку ігнорується компілятором. Також у програмі "брауні" технічно + "" є коментарем. Але я стверджую, що вона все-таки рахується, тому що команда захоплення все-таки зробила б її неактуальною, навіть якби не коментар.

Дякую, що прочитали моє дійсно довге пояснення. Тепер про код:

"Які найкращі десерти зараз спекти?"

g   a = "g   q   /b/a/" 
g l= "b = ""b r o w n i e s "
g   c = "g   /b/a/" 
g lpo= "d = ""c o o k i e s "
g   e = "c a p  "  /////
 +  "d i ""$ b "
g   f = "c a p  "  /////
 +  "d i ""$ d "
g   g = "c a p  "  /////
 + "c a p   / / /  "+ "/ / /"
di "What are the best desserts to bake right now?"

"брауні"

g a="    ba"
gl b="brownies"
    g /// 
 p="  "       
g e="   " //
 di "$b"
    cap ///
+" "  
g g="   " //
  cap ///   +"  "
i"htaetebs esrst aergtnw"

"куки"

    g q /// 
 ="  "        
g c="  ba"
glo d="cookies"
    cap ///
+" "  
g f="   " //
 di "$d"
    cap  ///
+ "       " ///
d Wa r h etdset obk ih o?

2

Ksh (82 символи)

Питання на 35 символів, 5 символів у кожній відповіді ⟹ довжина - корисне навантаження = 37

ec=\'o'(;)eehc(h)oe cChroi m$e1;; '\'
echo  What\'s the  country\'s worst problem?

Я зловживаю синтаксисом визначення функції поза POSIX. Dash and bash не можуть прийняти це, але ksh (загальнодоступний домен або ATT) може.

Нічого чудового не відбувається, лише трохи відлуння. Не витрачайте, не хочу.


2

PowerShell 88

"" > $x;{What is my favorite equipment?};"" >> ${x}

${XsXwXoXrXdX};;;${XsXhXiXeXlXdX}

Яке моє улюблене обладнання? (30 знаків, H (X) = 4,0314)

"  x{hti yfvrt qimn?;"> {}
{sword};$XXXXXXX

меч (5 символів, H (X) = 2,32193)

">$;Wa sm aoieeupet}" >$x
$XXXXXX;;{shield}

щит (5 символів, H (X) = 2,558496)

У повній програмі він перенаправляє порожні рядки на неіснуючу змінну ${x}(лапки для цих порожніх рядків використовуються для формування нісенітного рядка, який переспрямовується або на порожній блок, {}або на неіснуючу змінну $xу парних / непарних версіях), після чого друкує питання та оголошує 2 невикористаних змінних (які друкуються і розміщуються поруч з іншою невикористаною змінною $XXXXXXабо $XXXXXXXв різних випадках).


1

GolfScript, 51 байт

"Which are the sides of a coin? ".;""thaeialdss""

Вихідні дані

Which are the sides of a coin? 

Як це працює

.;дублює рядок і видаляє копію. ""висуває порожню рядок. thaeialdssне визначено, тому нічого не робить.

Непарні символи

"hc r h ie faci?";"heads"

Вихідні дані

heads

Як це працює

; видаляє першу рядок із стека.

Навіть символи

Wihaetesdso  on ."tails"

Вихідні дані

tails

Як це працює

Wihaetesdsoі onє петлями. .дублює порожній рядок у стеці.

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