Обновление: победитель определен, но испытание еще не закончено!
Наконец, спустя почти 3 месяца после первого вопроса кто-то оставался последним ответчиком более недели! Поздравляем jimmy23013 с его ответом P1eq!
Есть еще менее 8 символов осталось: 48KSaclw
. Если кто-то действительно амбициозен, он может продолжать пытаться с этим: D
Огромное спасибо всем, кто принимал участие, особенно тем из вас, кто продолжал соревнования так долго с множеством ответов, особенно KennyTM с колоссальными 25 ответами !!
Кроме того, спасибо всем, кто обновлял список ответов, это очень помогло :) (особенно с тех пор, как я уехал из SE пару месяцев: P).
Оригинальный вопрос:
В 2005 году Американский институт кинематографии выпустил AFI «100 Years ... 100 Movie Quotes» , список лучших цитат в американском кино. Здесь они перечислены точно так, как они должны быть использованы в этой задаче:
(answer 6) 1. "Frankly, my dear, I don't give a damn." - Rhett Butler
(answer 7) 2. "I'm gonna make him an offer he can't refuse." - Vito Corleone
(answer 5) 3. "You don't understand! I coulda had class. I coulda been a contender. I could've been somebody, instead of a bum, which is what I am." - Terry Malloy
(answer 3) 4. "Toto, I've a feeling we're not in Kansas anymore." - Dorothy Gale
5. "Here's looking at you, kid." - Rick Blaine
(answer 2) 6. "Go ahead, make my day." - Harry Callahan
(answer 11) 7. "All right, Mr. DeMille, I'm ready for my close-up." - Norma Desmond
(answer 8) 8. "May the Force be with you." - Han Solo
(answer 12) 9. "Fasten your seatbelts. It's going to be a bumpy night." - Margo Channing
(answer 13) 10. "You talking to me?" - Travis Bickle
(answer 16) 11. "What we've got here is failure to communicate." - Captain
(answer 15) 12. "I love the smell of napalm in the morning." - Lt. Col. Bill Kilgore
(answer 4) 13. "Love means never having to say you're sorry." - Jennifer Cavilleri Barrett
14. "The stuff that dreams are made of." - Sam Spade
(answer 18) 15. "E.T. phone home." - E.T.
(answer 20) 16. "They call me Mister Tibbs!" - Virgil Tibbs
17. "Rosebud." - Charles Foster Kane
(answer 10) 18. "Made it, Ma! Top of the world!" - Arthur "Cody" Jarrett
(answer 17) 19. "I'm as mad as hell, and I'm not going to take this anymore!" - Howard Beale
(answer 25) 20. "Louis, I think this is the beginning of a beautiful friendship." - Rick Blaine
(answer 26) 21. "A census taker once tried to test me. I ate his liver with some fava beans and a nice Chianti." - Hannibal Lecter
(answer 9) 22. "Bond. James Bond." - James Bond
(answer 22) 23. "There's no place like home." - Dorothy Gale
(answer 29) 24. "I am big! It's the pictures that got small." - Norma Desmond
25. "Show me the money!" - Rod Tidwell
(answer 31) 26. "Why don't you come up sometime and see me?" - Lady Lou
(answer 27) 27. "I'm walking here! I'm walking here!" - "Ratso" Rizzo
(answer 14) 28. "Play it, Sam. Play 'As Time Goes By.'" - Ilsa Lund
(answer 28) 29. "You can't handle the truth!" - Col. Nathan R. Jessup
(answer 23) 30. "I want to be alone." - Grusinskaya
(answer 30) 31. "After all, tomorrow is another day!" - Scarlett O'Hara
(answer 1) 32. "Round up the usual suspects." - Capt. Louis Renault
(answer 24) 33. "I'll have what she's having." - Customer
(answer 36) 34. "You know how to whistle, don't you, Steve? You just put your lips together and blow." - Marie "Slim" Browning
(answer 19) 35. "You're gonna need a bigger boat." - Martin Brody
(answer 39) 36. "Badges? We ain't got no badges! We don't need no badges! I don't have to show you any stinking badges!" - "Gold Hat"
(answer 40) 37. "I'll be back." - The Terminator
(answer 33) 38. "Today, I consider myself the luckiest man on the face of the earth." - Lou Gehrig
(answer 37) 39. "If you build it, he will come." - Shoeless Joe Jackson
(answer 43) 40. "My mama always said life was like a box of chocolates. You never know what you're gonna get." - Forrest Gump
(answer 34) 41. "We rob banks." - Clyde Barrow
(answer 38) 42. "Plastics." - Mr. Maguire
43. "We'll always have Paris." - Rick Blaine
(answer 49) 44. "I see dead people." - Cole Sear
(answer 21) 45. "Stella! Hey, Stella!" - Stanley Kowalski
(answer 32) 46. "Oh, Jerry, don't let's ask for the moon. We have the stars." - Charlotte Vale
(answer 35) 47. "Shane. Shane. Come back!" - Joey Starrett
(answer 42) 48. "Well, nobody's perfect." - Osgood Fielding III
(answer 51) 49. "It's alive! It's alive!" - Henry Frankenstein
(answer 41) 50. "Houston, we have a problem." - Jim Lovell
(answer 45) 51. "You've got to ask yourself one question: 'Do I feel lucky?' Well, do ya, punk?" - Harry Callahan
(answer 55) 52. "You had me at "hello."" - Dorothy Boyd
(answer 46) 53. "One morning I shot an elephant in my pajamas. How he got in my pajamas, I don't know." - Capt. Geoffrey T. Spaulding
(answer 44) 54. "There's no crying in baseball!" - Jimmy Dugan
(answer 59) 55. "La-dee-da, la-dee-da." - Annie Hall
(answer 60) 56. "A boy's best friend is his mother." - Norman Bates
(answer 47) 57. "Greed, for lack of a better word, is good." - Gordon Gekko
(answer 56) 58. "Keep your friends close, but your enemies closer." - Michael Corleone
(answer 48) 59. "As God is my witness, I'll never be hungry again." - Scarlett O'Hara
(answer 50) 60. "Well, here's another nice mess you've gotten me into!" - Oliver
(answer 65) 61. "Say "hello" to my little friend!" - Tony Montana
(answer 66) 62. "What a dump." - Rosa Moline
(answer 52) 63. "Mrs. Robinson, you're trying to seduce me. Aren't you?" - Benjamin Braddock
(answer 61) 64. "Gentlemen, you can't fight in here! This is the War Room!" - President Merkin Muffley
(answer 68) 65. "Elementary, my dear Watson." - Sherlock Holmes
(answer 64) 66. "Take your stinking paws off me, you damned dirty ape." - George Taylor
(answer 53) 67. "Of all the gin joints in all the towns in all the world, she walks into mine." - Rick Blaine
(answer 72) 68. "Here's Johnny!" - Jack Torrance
(answer 71) 69. "They're here!" - Carol Anne Freeling
(answer 73) 70. "Is it safe?" - Dr. Christian Szell
(answer 54) 71. "Wait a minute, wait a minute. You ain't heard nothin' yet!" - Jakie Rabinowitz/Jack Robin
(answer 77) 72. "No wire hangers, ever!" - Joan Crawford
(answer 67) 73. "Mother of mercy, is this the end of Rico?" - Cesare Enrico "Rico" Bandello
(answer 70) 74. "Forget it, Jake, it's Chinatown." - Lawrence Walsh
(answer 74) 75. "I have always depended on the kindness of strangers." - Blanche DuBois
(answer 78) 76. "Hasta la vista, baby." - The Terminator
(answer 75) 77. "Soylent Green is people!" - Det. Robert Thorn
(answer 76) 78. "Open the pod bay doors, HAL." - Dave Bowman
(answer 80) 79. Striker: "Surely you can't be serious." Rumack: "I am serious...and don't call me Shirley." - Ted Striker and Dr. Rumack
(answer 84) 80. "Yo, Adrian!" - Rocky Balboa
(answer 81) 81. "Hello, gorgeous." - Fanny Brice
(answer 83) 82. "Toga! Toga!" - John "Bluto" Blutarsky
(answer 63) 83. "Listen to them. Children of the night. What music they make." - Count Dracula
(answer 87) 84. "Oh, no, it wasn't the airplanes. It was Beauty killed the Beast." - Carl Denham
(answer 88) 85. "My precious." - Gollum
(answer 86) 86. "Attica! Attica!" - Sonny Wortzik
(answer 57) 87. "Sawyer, you're going out a youngster, but you've got to come back a star!" - Julian Marsh
(answer 82) 88. "Listen to me, mister. You're my knight in shining armor. Don't you forget it. You're going to get back on that horse, and I'm going to be right behind you, holding on tight, and away we're gonna go, go, go!" - Ethel Thayer
(answer 58) 89. "Tell 'em to go out there with all they got and win just one for the Gipper." - Knute Rockne
(answer 90) 90. "A martini. Shaken, not stirred." - James Bond
(answer 85) 91. "Who's on first." - Dexter
(answer 62) 92. "Cinderella story. Outta nowhere. A former greenskeeper, now, about to become the Masters champion. It looks like a mirac...It's in the hole! It's in the hole! It's in the hole!" - Carl Spackler
(answer 69) 93. "Life is a banquet, and most poor suckers are starving to death!" - Mame Dennis
(answer 89) 94. "I feel the need - the need for speed!" - Lt. Pete "Maverick" Mitchell and Lt. Nick "Goose" Bradshaw
(answer 79) 95. "Carpe diem. Seize the day, boys. Make your lives extraordinary." - John Keating
(answer 91) 96. "Snap out of it!" - Loretta Castorini
(answer 92) 97. "My mother thanks you. My father thanks you. My sister thanks you. And I thank you." - George M. Cohan
(answer 93) 98. "Nobody puts Baby in a corner." - Johnny Castle
(answer 94) 99. "I'll get you, my pretty, and your little dog, too!" - Wicked Witch of the West
(answer 95) 100. "I'm the king of the world!" - Jack Dawson
(Не стесняйтесь отмечать кавычки как использованные.)
Есть 95 печатаемых символов ASCII (шестнадцатеричные коды от 20 до 7E), что довольно близко к 100:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
В этом задании пользователи по очереди пишут программы, которые каждый раз печатают одну из цитат из фильма, используя новый язык программирования и меньшее подмножество печатного ASCII.
Как это работает
Я уже отправил первый ответ и назвал его 95, так как мне было разрешено использовать все 95 печатных символов ASCII в моей программе. Это программа Python, которая выводит сотую кавычку "I'm the king of the world!" - Jack Dawson
на стандартный вывод.
Второй человек, который должен ответить, должен выбрать новую цитату, новый язык программирования и один из 95 печатных символов ASCII, чтобы исключить их из своего кода. Они должны написать программу без использования этого символа, который печатает выбранную им цитату на стандартный вывод. Они должны пометить свой ответ как 94, так как у них было 94 печатных символа ASCII для работы (думайте об этом как обратный отсчет).
Третий ответчик должен выбрать цитату и язык, которые не использовались в предыдущих ответах (в данном случае только 95 и 94), а также нового персонажа, от которого нужно отказаться. Они не должны использовать этот символ или любые ранее запрещенные символы в своем коде. Они отмечают свой ответ как 93.
Этот процесс ответа продолжается до тех пор, пока все печатные символы ASCII не будут запрещены, и кто-то даст ответ «1», или, что гораздо более вероятно, никто не сможет понять, как ответить снова.
Правила (пожалуйста, прочитайте внимательно)
Важно понимать, что только один человек может ответить одновременно, и каждый ответ зависит от предыдущего. Никогда не должно быть двух ответов с одинаковым номером, цитатой или языком программирования.
Должны быть конфликтующие ответы, представленные одновременно, и это нормально. Если это произойдет, человек, который технически ответил позже, должен быстро (например, 10 минут или меньше) удалить свое сообщение или отредактировать его, чтобы оно стало следующим ответом. В противном случае, не редактируйте код, если это действительно необходимо . Редактирование сообщений только для исправления форматирования приветствуется.
Особые правила
- Пользователь, который только что ответил, должен подождать не менее часа, прежде чем ответить снова.
- Пользователь не может ответить дважды подряд.
- Выбранный вами номер цитаты не должен быть больше 5 ниже вашего номера ответа. Например, в ответе 90 можно выбрать любую неиспользованную цитату из числа от 85 до 100. Это оставляет лучшие цитаты для более сложных ответов. Кроме этого правила нумерация цитат не имеет значения.
- Программы могут содержать только вкладки, новые строки и печатный символ ASCII, которые пока не запрещены. (Вкладки и переводы строк никогда не запрещаются.)
- Ограничения на длину программы нет, но в вашей программе может быть не более 64 вкладок или 64 новых строк.
- Языки считаются разными, если на них обычно ссылаются под разными именами. Различные версии языков программирования не считаются разными. (Языки разметки, такие как HTML, учитываются, но предпочтительнее использовать языки программирования.) Ваш язык должен существовать до начала этого конкурса.
- Если у вашего языка нет стандартного вывода текста, используйте какой-то похожий механизм вывода текста.
- Ваша программа не должна принимать данные или иметь неожиданные побочные эффекты, такие как создание файлов.
Пожалуйста, убедитесь, что ваша программа действительна. Он должен быть в состоянии работать как полноценная программа, а не только в среде REPL .
Обратите внимание, что «цитата», которую вы должны вывести, включает в себя кавычки и человека, который это сказал (но не номер цитаты). Ваша программа должна выводить вашу цитату в точности так, как она указана в приведенном выше списке (начальный / конечный перевод строки в порядке).
форматирование
Пожалуйста, отформатируйте ваши ответы следующим образом, их {stuff in curly braces}
необходимо заменить:
#{answer number}. {language}, uses no <code>{the forbidden character you just chose}</code>
{program}
Output is quote {quote number}:
{program output, should be identical to quote}
[Previously forbidden:]({url of previous answer (hit "share" just below it)}) <code>{the previous answerer's forbidden character followed by his previously forbidden list}</code>
{anything else you wish to say}
Эти <code>
метки могут быть заменены на обратные кавычки ( `
), пока не кавычка не происходит внутри них.
счет
Общая цель этой задачи - обеспечить получение ответов как можно дольше.
Официальный победитель - пользователь, который отвечает последним, после недели без дополнительных ответов. Я приму их последний ответ.
Список ответов (сначала новый)
4
Прогрессивный унарa
Bueuec
UdageS
1L_a105w
BinaryfuckK
Subskinl
23
n
P1eqt
Addleq9
машинный код x86r
BSMD
ShaFuck 0.2u
Тёмный лесO
Машинный код PDP-11f
ProgFki
NUMPADH
Tri2
ФЕРНАНДОP
Заостренныйm
SubleqG
FlogScript?
Nqubl%
Glypho!
3varq
расчетное время прибытияj
BrainSpace 1.0V
Бессонница`
ASDF6
Ленивый КC
! Py! Batch 1.5T
FuckfuckF
PoGoR
Golunarb
6502 машинный код + системный монитор Apple IIY
HeadsecksI
BRBU
BraincrashZ
экстатическийM
фермаA
КлизмаL
ADJUST$
битникN
Rebmug
DupdogB
GammaplexJ
Fuck45
A0A0W
GS2:
l33th
TonocoE
Malbolgek
D1ffe7e45e1
злоQ
CaneCoded
трава#
URSL|
бурлескx
Эмменталь~
Applesoft BASIC^
вперед7
80386 машинный код + DOS_
Argh!v
Rexx}
AlphaBetao
Супер стек!e
Pythz
Простой TeX>
WASD]
Оболочка POSIX&
тарабарщина/
GolfScript*
сборка x86_640
AppleScriptX
Deadfish ~,
Ложка-
ооо код=
J@
Mathematica.
Perl+
ДНК #<
число Пи)
постскриптум[
азбукаs
Округ Колумбия{
HTML(
Одинарный;
Ук!'
CJamPHP
"
Brainfuck\
Marbelous3
C ++y
Рубинp
JavaScript- питон
(Не стесняйтесь редактировать, если неправильно или устарело)
Этот вопрос работает лучше всего, когда вы сортируете по «самым старым».
ПРИМЕЧАНИЕ. Как и мой последний вопрос , это тест нового типа задачи, где каждый ответ зависит от последнего и возрастает по сложности. Приходите в чат или в мета, чтобы обсудить вопрос или идею в целом.
источник
Ответы:
8. P1eq (не использует
n
)Для корректной работы требуется 64-битная платформа, отличная от Windows, как и в ответе Addleq. Он использовал тот же трюк для -1.
Имеет 64 новых строки и 57 вкладок.
Это медленно и закончилось около 18 минут на моем компьютере.
Вывод цитата 8:
Ранее запрещено :
Осталось:
4
8
K
S
a
c
l
w
P1eq аналогичен Subleq и Addleq, с инструкцией B = A + 1 и скачком, если B не изменяется.
Объяснение:
Эта программа увеличивает * 444 и * 484 вместе и сбрасывает * 444, когда оно становится определенным значением. Когда * 484 равняется данным, * 444 будет остатком данных, деленным на некоторое значение.
Только 6 ячеек памяти в коде могут быть адресованы напрямую с помощью 4 и 8. Я должен повторно использовать некоторые из них. Кроме того, некоторые операции выполнялись не в том порядке, в котором я хотел, например, использование неинициализированных переменных. Но я могу просто отбросить все, что возвращается в первый раз цикла, и выполнить инициализацию после этого.
Некоторые другие языки оказались интересными, но больше не использовались:
.
)*
)A
но с учетом регистра, к сожалению) я нашел это в японской Википедии.Теперь у меня осталось 3 языка.
Для тех, кто хочет написать больше ответов, вот несколько направлений для поиска:
Если быть точным, у меня было:
источник
90. Brainfuck, не использует
"
Вывод цитата 90:
Ранее запрещено:
py3\
Кто-то должен был сделать это до того, как это
.+-
будет запрещено.Попробуйте это здесь: http://ideone.com/dlu8VE
источник
"
? Это как бы значит для всех людей после тебя.51. Мальболге (не использует
E
)(Новые строки предназначены только для пояснения и не являются частью источника.)
Вывод цитата 49:
Ранее запрещено :
"#&'()*+,-./0137;<=>@[\]^_ deopQksvxXyz{|}~
Остальные персонажи:
!
$
%
:
?
`
2
456
89
ABCD
FGHIJKLMNOP
RSTUVW
YZ
abc
fghij
lmn
qr
tu
w
Вы можете запустить его с эталонным интерпретатором Malbolge .
источник
10. Машинный код x86, не использует
9
Когда я понял, что оставшиеся символы включают коды операций для «Dec BX» и «Push BX», я пришел к выводу, что программа x86 все еще возможна.
Ссылка на код и файл .com
Код выглядит как гораздо более длинная версия этого:
Код, сжатый
bzip2
и закодированный в base-64, выглядит так:Вывод цитата 18:
Ранее запрещено :
Остальные персонажи:
4
8
K
S
a
c
l
n
t
w
Это самоизменяющийся код, который создает самоизменяющийся код, вот как это работает:
Текст сначала кодируется путем ввода прогонов «4», оканчивающихся на «8», которые соответствуют инструкциям, которые фактически являются NOP для этой программы. Затем BX уменьшается («K») до тех пор, пока не получит значение, в котором код печати окажется в стеке. Это нажимается 8 раз ('S'), а затем выполняется Pop All, 'a', чтобы настроить SI и DI на потом. Затем BX многократно уменьшается и выдвигается для ввода произвольных значений программы печати в стек (младший байт) вместе с байтом мусора (старший байт). Затем длинная последовательность декрементов возвращает BX к значению 0xAAAD, которое является двумя однобайтовыми инструкциями «Load Word» и «Store Byte». Каждая пара этих инструкций удалит один байт мусора из кода печати. Эти инструкции нажимаются 28 раз (размер программы печати), и остальная часть файла заполнена большим количеством инструкций декремента, чтобы действовать как NOP. Эти NOP будут выполняться до тех пор, пока не будет достигнута область памяти, используемая стеком, которая была перезаписана с помощью сокращающего кода. Сжатие кода выполняется, удаляя ненужные байты в коде в стеке (на что указывают SI и DI, которые были установлены ранее). Наконец, когда выполняется сжатие кода, программа печати была успешно сохранена в памяти при выполнении следующей инструкции.
Сборочный код для генерации машинного кода (FASM)
источник
IMUL
определенного типа), поэтому его можно назвать другим «языком». Я даже не пытался проверить, возможен ли x86 на этом этапе - очевидно, это так!61. 80386 машинный код + DOS, не использует
7
Вывод цитата 64:
Ранее запрещено:
"'&()*+-,./\03;<=>@X_[sovy pez]{}
Создание исполняемого файла, который использует только печатный ASCII, не простая задача. К счастью, не так много символов было запрещено предыдущими ответами, поэтому мне нужно было всего несколько патчей тут и там.
Чтобы запустить эту программу, скопируйте ее в файл с расширением
.com
и запустите его (разрывы строк используют формат DOS0d 0a
;TAB
в коде есть один символ). Жаль, что современные 64-битные системы Windows не поддерживают 16-битный код; для запуска кода нужна 32-битная система Windows или DOSBox .Я использовал
debug.com
отладчик DOS для разработки кода. Чтобы «собрать» исходный код, перенаправьте его в отладчик. На DOSBox:Исходный код:
Некоторые заметки:
0x41
,0x23
и0x24
. Я выбрал маски, которые не были запрещены.0xcd
и0xc3
. Они также маскируются XOR, поэтому код должен изменить себя.k
здесь очень важен: он кодируетIMUL
инструкцию умножения. Я использую его для получения значений констант: например, константа0x216b
, умноженная на0x45
, дает полезную константу0x01d7
, которая является указателем (со смещением, как описано выше) на код, который должен быть исправлен. Аналогичным образом, маска исправления0x2132*0x36=0x8c
(не против усечения там).and ax, 2142; and ax, 4221
.ax
не меняется.Редактировать: больше не использовать
_
символ (плохое время в посте) - нельзя использоватьpop di
, поэтому использованиеdi
регистра теперь намного реже.источник
@
в 78 уже забанен, выберите другой символ, пожалуйста.85. HTML5 (не использует
{
)Вывод цитата 91.
Ранее запрещено :
py3\" ';(
источник
12. ShaFuck 0.2 (не использует
D
)Исходный код имеет длину 4 784 128 байт и содержит все разрешенные символы, кроме
D
. Это выглядит как:здесь (a × 1017) означает символ «а», повторенный 1017 раз. Кодированный в Base64 bzip2-сжатый файл (247 байт):
Сумма SHA1 исходного файла должна быть 1250ecf73c61ef93a31c4f7dfaa0a7631ada50bf.
Вывод цитата 9:
Ранее запрещено :
Остальные персонажи:
4
8
9
K
S
a
c
l
n
r
t
w
ShaFuck - это вариант Brainfuck. Требуется каждый 1024-байтовый фрагмент, вычисляется дайджест SHA-1, а затем используется 20-байтовый вывод в качестве программы Brainfuck. Как объясняется в сообщении в блоге, связанном с вики, в v0.2 есть «уязвимость», которую выводит SHA-1 в виде:
принято Это позволяет выполнить прямое преобразование из команды brainfuck в 2048-байтовый фрагмент. Кодировщик использует
a
-z
в качестве набора символов, который нам не подходит. Поэтому нам нужно написать «майнер» самим. Теперь доступно 13 действительных персонажей. Предполагая, что вывод SHA-1 является случайным, если мы хотим исправить первые 3 байта, он соответствует 3 × log₁₃ (256) ~ 6,5 входных символов. Поэтому нам нужно перебрать все 7-символьные строки, сделанные из этих 13 алфавитов:Мы могли бы быстро получить эти эквиваленты:
Итак, наконец, у нас есть этот простой кодер:
источник
SUFFIX = 'a' * (1024 - 7)
- на всякий случай1024 - 7
не всегда1017
? :-)(1024 - 7)
более читабельно.87. Ook !, не использует
;
Вывод цитата 84:
Ранее запрещено:
py3\" '
источник
76. oOo CODE , не использует
-
Вывод цитата 78:
Ранее запрещено :
py3\" ';({s[)<+.@=
Я не буду публиковать другой BF эквивалент / производную. Promise.
РЕДАКТИРОВАТЬ: я обновил код, чтобы быть более читабельным. (смеется) Не влияет на запрещенные символы.
Я использовал этот инструмент для генерации моего чистого BF. Затем я преобразовал его в код OOo:
А затем использовал этот скрипт на Python для получения «читаемой» версии из чистого oOo CODE и входного текста:
источник
9. Addleq (не использует
t
)Пользы
sqasm.cpp
на странице esolang для сборки. Требуется не-Windows 64-битная платформа для правильной работы.В нем ровно 64 табуляции и 64 новых строки (без новых строк). Уф.
Вывод цитата 22:
Ранее запрещено :
Осталось:
4
8
K
S
a
c
l
n
w
«Addleq» в OISC похож на «Subleq», но использует сложение вместо вычитания.
Построение "-1"
Вывод в Addleq работает путем записи в адрес памяти -1. Поскольку все нечетные числа запрещены, мы не можем построить -1 обычным способом. Тем не менее, мы можем обмануть ассемблер в создании -1:
Здесь
sscanf(s, "%d", &ret)
ведет себя какret = strtol(s, NULL, 10);
(C11 §7.21.6.2 / 12), и когда переполнение входа,strtol
вернет LONG_MAX (C11 §7.22.1.4 / 8). Таким образом, еслиsizeof(long) > sizeof(int)
мы должны получитьret == -1
. Однако на платформе,sizeof(long) == sizeof(int)
например, на 32-битных платформах или Windows, мы получим 0x7fffffff, что сделает приведенное выше решение недействительным.Сохранение вкладок с ассемблером
В низкоуровневом addleq каждая инструкция состоит из 3 цифр. Поскольку у нас есть только 128 пробелов, мы должны напечатать всю строку с инструкциями 129/3 = 43. Этого совершенно недостаточно, поскольку самая короткая цитата (выбранная здесь) имеет длину 32 символа.
Тем не менее, ассемблер поддерживает некоторые сокращенные обозначения:
Правило № 2 было разработано для «subleq», чтобы быстро обнулить адрес. Но для «addleq» это позволяет нам удваивать значение без вкладок.
Это позволяет нам едва уместить всю программу в 129 номеров.
Создание чисел
Цитата выбрана потому, что она короткая и содержит много повторяющихся символов. Числа, которые мы должны создать:
Мы могли бы использовать числа по адресу 4, 8, 44, 48, 84, 88, .... Правило # 1 ассемблера уже поместило "9" в * 8 и "45" в * 44, поэтому мы просто будем использовать их (это хорошо, что они нечетные числа). Кроме того, мы попытаемся вписать «-1», «8» и «44» в эти адреса, переместив вычисления. В результате получается первая половина кода:
Последняя строка
После того, как все числа построены, мы можем напечатать каждый символ. Окончательная программа, однако, содержит более 67 строк, две слишком много. Поэтому мы должны объединить последние 3 строки вместе:
Поскольку в строке более двух чисел, мы должны вручную указать третий параметр инструкции. Это означает, что мы обмениваем каждую новую строку на 2 вкладки. К счастью, до комбинации мы использовали 60 вкладок, поэтому итоговый результат едва соответствовал требованиям.
источник
4
и8
были0
и7
.89. PHP, не использует
Вывод цитата 94:
Ранее запрещено :
py3\"
источник
'
сейчас !!!81. PI , не использует
<
Вывод цитата 81:
Ранее запрещено:
py3\" ';({s[)
Какая ? Пи без
3
?Мой переводчик здесь (извините за элементарный пользовательский интерфейс, основанный на этом ответе ): http://migl.io/projects/pi/index.php
источник
79. Perl 5, не использует
.
Вывод цитата 95:
Ранее запрещено:
py3\" ';({s[)<+
Как язык TMTOWTDI, Perl предлагает множество способов обойти ограничения. Используемый здесь метод состоит в том, чтобы построить оператор
print "that quote"
в виде строки и оценить его.Хотя
'
и"
запрещены, Perl дополнительно позволяет выражать строки используяq«…»
иqq«…»
соответственно. И хотя;
это запрещено, так как все утверждения не являются ложными, мы можем использовать ихand
для связывания воедино. С прописных буквP
,Y
,S
по - прежнему разрешены, мы могли быp
,y
,s
в конечной строке с помощьюlc
функции ( в нижнем регистре), в то время какchr
можно ставить символы"
и.
источник
$foo=0
конечно же, ложно.) В любом случае, очень мило; +1.54. CaneCode (использует нет
Q
)(Новые строки и пробелы не нужны.)
Вывод цитата 71:
Ранее запрещено :
"#&'()*+,-./037;<=>@[\]^_ deopsvxXyz{|}~
CaneCode - это просто еще одна производная BF с отображением:
Просто примечание: остальные символы:
!
$
%
:
?
`
12
456
89
ABCDEFGHIJKLMNOP
RSTUVW
YZ
abc
fghijklmn
qr
tu
w
источник
6. Subskin (использует нет
K
)Строка 9 в следующей программе заменена чем-то проверяемым. Он имеет 2 конечных символа новой строки и в общей сложности 64 символа новой строки.
Чтобы он соответствовал критериям, строку 9 следует заменить следующим большим числом. Я думаю, что это должно быть так же, как и эти унарные варианты.
a
. Таким образом, последняя цифраa
, где к = 0, и есть 159321460184447640588063043795531819638245990121854536131792918542864566418397339281153516086677425424423723475531974684547855358001230183547851703274577276601612622258171727288003902331619018508731805969660163575803761844794365403871421372122820829226554024584224464882571689865777 из них.8
.Обратите внимание, что построенное число находится в базе 16 (но числа в приведенном выше описании находятся в базе 10). Если мои расчеты верны, они должны совпадать с исходным числом в моде программы 8 * (16 ^ 234-1) / 15. Любое число, достаточно большое и удовлетворяющее этому критерию, должно работать, но я не знаю, как построить более короткое с одним
4
8
a
c
.Вывод цитата 1:
с передним и последующим переводом строки.
Ранее запрещено:
Оставшиеся символы:
4
8
S
a
c
w
.объяснение
Subskin - это OISC, где команда должна вычесть и пропустить следующую инструкцию, если результат отрицательный. Первые 3 поля в памяти отображаются на указатель инструкции, вывод и ввод. Указатель инструкции может использоваться как «goto», и чтение его может привести к некоторым числам, которые иначе недоступны, используя только используемые символы.
Сначала я попытался сжать код в цифры в некоторой базе. Но я не мог играть в гольф на 64 линии. Поэтому я переключился на модульный подход, который удалил уровень цикла.
Это в основном просто самый большой алгоритм общего делителя. A / B извлекается на каждом этапе. Затем установите A = B и B = A mod B и продолжайте.
Точнее, когда A> B, он увеличивает текущие данные, в противном случае он меняет местами числа и перемещает указатель. После этого меньшее число вычитается из большего числа.
Наконец, самораспаковывающийся код переопределяет что-то в цикле и прерывает его, и он продолжается в извлеченном коде. Извлеченный код довольно прост.
Код
поколение
Предположим, что A и B после процесса извлечения равны n и m. Легко обратить вспять этот прогресс и получить A и B (до того, как начнутся полезные данные) в терминах n и m. И A = an + bm, B = cn + dm. Установите для A произвольное число, которое достаточно велико и может сделать n и m положительными (и использовать только доступные символы). n и m могут быть рассчитаны с использованием модульной инверсии. Тогда B определяется по n и m.
Но нелегко сделать так, чтобы B также состоял только из этих символов. Я использовал дополнительный шаг, который должен только извлечь некоторые безобидные ненужные данные. Таким образом, новый B будет kA + B, где k - положительное целое число. Легко видеть, что такой ак существует. Но я не уверен, возможно ли найти такой, который достаточно короткий, чтобы его можно было проверить. И я использовал маленькую теорему Ферма, чтобы найти ту, которая работает в теории.
У меня остался только один язык №2.
источник
78. Mathematica, не использует
@
Вывод цитата 76:
Ранее запрещено:
py3\" ';({s[)<+.
Генерируется так:
Программа тогда:
со значениями для вставленных
n2
,ndiff
,d2
иddiff
и всех пространств удалены.Моя первоначальная идея состояла в том, чтобы использовать
ToString
,FromDigits
,IntegerDigits
,Partition
иFromCharacterCode
. Однако у обоихFromDigits
иIntegerDigits
естьs
в них то, чего я не заметил.источник
72. Сборка x86_64 (nasm), не использует
*
Использует 61 вкладку и 36 новых строк.
Вывод цитата 68:
Ранее запрещено:
py3\" ';({s[)<+.@=-,X0
Это использует
write
системный вызов с номером0x2000001
, который, вероятно, работает только в OS X. Сборка, подключение и запуск:источник
71. GolfScript, не использует
/
Вывод цитата 69:
Ранее запрещено:
py3\" ';({s[)<+.@=-,X0*
Спасибо Питеру Тейлору, который поделился со мной некоторыми причудами GolfScript для построения строки. Во-первых, я могу получить пустую строку без использования кавычек, назначив (пустое) содержимое STDIN переменной (
?
в данном случае). Затем я создаю вложенный массив чисел, которые, принимая мод 256, являются желаемыми кодовыми точками. Добавляя кратные 256, я могу избежать дубликатов и чисел, содержащих0
и3
. Наконец, я нажимаю пустую строку с?
и беру разность симметричного набора. Это сглаживает массив и приводит его в строку, где GolfScript заботится только об оставшемся моде 256.Проверьте это здесь.
источник
91. Marbelous , не использует
\
Вывод цитата 96:
Ранее запрещено :
py3
источник
95. Питон
Вывод цитата 100:
Ни один не запрещен.
источник
73. AppleScript, не использует
0
(Все «пробелы» являются «вкладками», как разрешено OP. Есть 25 вкладок и 8 новых строк.)
Вывод цитаты 70:
Ранее запрещено :
py3\" ';({s[)<+.@=-,X
Здесь мы сначала строим переменную,
c
которая является списком ASCII-кодов кавычек. В AppleScriptnumber & number
создает список из 2 элементов{number, number}
иlist & number
добавляет номер в список, что позволяет нам избегать использования{
или,
. Кроме того,&
имеет более низкий приоритет, чем*
и/
, поэтому мы можем создать весь список в одну строку, избегая(
или создавая переменные (что потере трех вкладок).После этого мы конвертируем список чисел
c
в строкуd
. Снова мы используем&
здесь, так какstring & string
это конкатенация. AppleScript нечувствителен к регистру, поэтому мы могли бы использоватьdiSPlaY
для обходаpys
символов.источник
set
и потерпел неудачу. У меня был ответ на цитату № 62, но я не могу использовать это сейчас; P57. Бурлеск (не использует
|
)Новые строки предназначены только для пояснения, но вкладки необходимы. Есть 4 вкладки.
Вывод цитата 87:
Ранее запрещено :
"'&()*+-,./\037;<=>@_[sovy pezxX]^{}~
Бурлеск похож на GolfScript, но обычно каждая команда состоит из 2 символов. Конструкция такая:
Burlesque поддерживает целочисленные значения произвольной точности, а также позволяет преобразовывать в базу 36. Поэтому мы сначала закодируем все символы нижнего регистра в базе 36:
К сожалению, это число содержит слишком много 0, 3 и 7, и все арифметические символы (
+-*/
) запрещены ... Обычно мы можем использовать модуль, но Бурлеск использует последовательность,.%
точка которой также недоступна. К счастью, оператор xor странно$$
, поэтому мы могли бы попытаться построить его, скопировав два числа, свободных от 0, 3, 7. Это причина огромного числа 41224222….Наконец, мы вставляем оставшиеся символы, такие как
,
,и т. Д. Обратно в строку. Плохая новость заключается в том, что функция «chr» использует последовательность,
L[
которая снова запрещена! Хорошая новость заключается в том, что существуют различные способы создания существующей строки (например,??
создание строки версии,"Burlesque - 1.7.3"
содержащей «пробел»), а затем извлечение (!!
) символа из нее.Инкремент и декремент операторы также использует запрещенные символы
.+
,.-
тем не менее есть альтернативы?i
,?d
которые имеют тот же эффект. Таким образом, мы могли бы генерировать весь спектр ASCII из этого.источник
34. 6502 машинный код + системный монитор Apple II (не использует
b
)(Использует 1 вкладку)
Вывод цитата 41:
Ранее запрещено :
"#$&'()*+,-./01357:;<=>@[\]^_ ABdeEghIJLMNopQksUvWxXyYzZ{|}~
Остальные персонажи:
!
%
?
`
2
4
6
89
CD
FGH
K
OP
RST
V
a
c
f
ij
lmn
qr
tu
w
Запустить на Apple // E (или эмулятор). Убедитесь, что символ табуляции копируется как табуляция, а не пробелы.
Это сочетание идей машинного кода 80386 + ответ DOS и моего ранее ответа на Applesoft BASIC .
Для тех, кто незнаком, системный монитор на компьютерах Apple II представляет собой интерпретатор / отладчик очень низкого уровня, который позволяет изменять память и запускать код (если вы используете интерпретатор BASIC, вы можете войти в системный монитор, выполнив это
CALL -151
). Обычный способ ввода машинного кода в системном мониторе заключается в следующем<addr>: <hex_byte> <hex_byte> ...
: выполнение кода выполняется с помощью<addr>G
(G означает «Go»). При вводе кода обычным способом используются запрещенные символы; однако входной буфер для ввода строки текста начинается с памяти 0x200. Таким образом, однострочник указывает системному монитору перейти на 0x262, а затем внедрить код в виде ASCII.Несмотря на то, что они не являются эзотерическим языком, ограничения на используемые коды операций делают код более похожим на производную от мозгового удара. Все, что доступно: чтение памяти (но не запись), увеличение и уменьшение памяти, вычитание из аккумулятора и разветвление не на 0. Исправлена только пара инструкций: вызов подпрограммы Monitor, которая выводит символ, и возврат закончить программу.
Разборка. Обратите внимание, что для всех символов ввода установлен старший бит:
источник
14. Машинный код PDP-11, не использует
O
Вывод цитата 28:
Ранее запрещено :
Остальные персонажи:
4
8
9
D
K
S
a
c
l
n
r
t
u
w
Несколько технических деталей:
Для проверки этого кода я использовал симулятор Ersatz-11 . Чтобы запустить код, запишите код в файл
test.pdp
, запустите симулятор и введите:Результат:
Исходный код (все цифры в восьмеричной записи):
Проще объяснить, как это работает от начала до конца. Выходная часть выглядит следующим образом (каждая итерация выводит 2 байта):
Этот код содержит много запрещенных байтов, как в коде, так и в выходном сообщении. Чтобы исправить это, код скремблируется: каждое слово (16 бит) представляется в виде суммы из 3 чисел:
Код исправления (расшифровки):
Этот код сам по себе содержит запрещенные байты, но он намного короче (9 слов). Патчер, который расшифровывает этот код, использует только разрешенные байты (он находится под комментарием «patch the patcher» в источнике), поэтому он имеет очень ограниченный набор операций (в основном, просто «add»), так что патчить много байтов будет слишком много кода.
Использовать этот патчер не просто. Для исправления больших объемов данных с помощью простого кода мне нужны были такие инструкции, как
add r5, (r3)+
иadd r5, -(r3)
- и единственные регистры, которые можно было использовать, как это, былиr3
иr5
. К сожалению, никакие разрешенные команды не могут быть использованы для инициализации этих регистров, поэтому мне пришлось исправлять инструкции, которые сделали это:Это потребовало исправления только 2 слова.
Я довольно долго искал способ сделать исправления; единственный способ, которым я придумал, это использовать печально известный «косвенный» режим:
Для выполнения этих двух инструкций требуется немного подготовки:
patch1
) в памятиЧтобы сгенерировать все эти константы, я использовал следующие инструкции:
Они используют слова по адресу 060562 и 060564 в качестве временных переменных; правильное расположение этих двух инструкций может генерировать любое значение за 10-20 шагов.
Инструкции, используемые в этом коде (исключая любые исправленные):
источник
7. 23 , не использует
l
С завершающим переводом строки (который должен присутствовать) в этом коде ровно 64 перевода строки.
Выполнение этого печатает вторую цитату:
Спасибо @ jimmy23013 за указание на этот вызов.
верификация
Поскольку приведенный выше код работает в онлайн-интерпретаторе , не использует пробелы ( чистые 23 ), ни x x ( 23.ixsy ), ни запятых ( 23.dezsy ), я предполагаю, что он действителен 23.easy (недокументированный), который просто принимает строку длина во внимание.
Код (читается в обратном направлении) эквивалентен следующему коду 23.dezsy :
17,62
поручает переводчику распечатать 62 целых числа, которые следуют в виде символов.Похоже, что для интерпретатора требуется на одну строку больше символа, чем следовало бы. Я предполагаю, что это для учета новых строк в стиле Windows. Чтобы код работал в соответствии со спецификацией (или в браузере, который вводит возврат каретки), удалите один
K
из каждой строки.Чтобы проверить код, вставьте его в область « Источник» , нажмите, Enterчтобы вставить конечный перевод строки, введите
23
в области « Консоль» (чтобы перейти от стандартного обозначения 23.dezsy к автоматическому определению) и нажмите Run Interpreter!.источник
66 - Pyth, не использует
e
Вывод цитаты 62:
Использует персонажей
12456789:CDGJPRSTdhjkmtx
.Ранее запрещено:
z" &'()*+,-./03;<=>@X[\]psy{
Он основан на серии подстановок регулярных выражений -
:
в pyth, каждый из которых заменяет `, символ обратного удара, с двухсимвольной строкой, содержащей новый символ, за которым следует обратный удар.Все подстановки применяются к исходной строке просто `(J).
Двухбуквенные строки генерируются с использованием функции изменения базы
j
на основе числа и основания, чтобы сгенерировать запись списка чисел, которые затем ASCII кодируются в 2-символьную строку вновь определеннойS
функцией.Объяснение:
источник
z
из 66 в вашем графике. Это разрывает цепочку, поскольку следующая запись находится на второй странице.60. Далее (не использует
^
)(Есть 54 новых строки и 51 вкладка.)
Вывод цитата 56:
Ранее запрещено :
"'&()*+-,./\037;<=>@X_[sovy pez]{}
источник
59. Applesoft BASIC, не использует
~
(Использует 11 новых строк)
Вывод цитата 55:
"La-dee-da, la-dee-da." - Энни Холл
Ранее запрещено:
"'&()*+-,./\037;<=>@X_[sovy pez]^{}
Работает на Apple // E (или эмулятор).
Краткое объяснение: после очистки экрана «CALL 2111» переходит к встроенному машинному коду 6502 в строках 4-15, который записывает каждый символ непосредственно на текстовую страницу.
Подробности:
Разборка:
Машинный код, безусловно, можно оптимизировать, но некоторые странности связаны с ограничениями кодирования, например:
источник
41. НАСТРОЙКА (использует нет
L
)(Там не должно быть никаких новых строк)
Вывод цитата 50:
Ранее запрещено :
"#$&'()*+,-./01357:;<=>@[\]^_ BdeEghJNopQksvWxXyz{|}~
Остальные персонажи:
!
%
?
`
2
46
89
A
CD
FGHI
K
M
OP
RSTUV
YZ
abc
f
ij
lmn
qr
tu
w
ADJUST - это двумерный язык с 1 регистром и 2 стеками. Указатель кода начинается с левого нижнего угла, затем идет в северо-восточном направлении. Инструкции основаны на простой факторизации текущего кода символа, например,
Z
= 90 = 5 × 3 × 3 × 2, поэтому символZ
будет выполнять действие «5» один раз, «3» дважды, а затем «2» один раз. Это позволяет нам иметь несколько способов выполнять одну функцию и избегать запрещенных символов.Основная идея программы:
На шаге 1 мы будем использовать эти буквы для предоставления 2 и 5:
F
(7 × 5 × 2)R
(41 × 2)t
(29 × 2 × 2)8
(7 × 2 × 2 × 2)Есть около 7, 29, 41, но это не повлияет на конечный результат. На шаге 2 мы будем использовать
K
(5 × 5 × 3), чтобы обеспечить «3». Обратите внимание, что пара «5» не работает.На шаге 3 мы выбираем
A
(13 × 5). На шаге 4 мы будем использоватьn
(11 × 5 × 2), чтобы контролировать размер стека иK
регулировать направление.Как правило, если шаг 1 не содержит ни одного
R
, мы используемKAnK
для печати символа и двигаться вверх на 4 строки. В противном случае мы используемKKA
для печати и двигаться вниз на 2 строки. Иногда также естьKnnK
возможность принудительно продвинуться на 4 линии, так как отправная точка должна быть в левом нижнем углу.Если кому-то интересно, вот рабочая среда для написания кода выше. Там нет автоматического генератора.
источник
23. Глифо , не использует
%
Вывод цитата 30:
Ранее запрещено :
!"#$&'()*+,-./013567:;<=>@[\]^_` AbBCdeEFghIjJkLMNopqQRsTUvVWxXyYzZ{|}~
Остальные персонажи:
?
2
4
89
D
GH
K
OP
S
a
c
f
i
lmn
r
tu
w
Обратите внимание, что это работает с интерпретатором Java , но это не согласуется со страницей esolangs по кодированию
[
и+
. Тем не менее, дизайн Glypho таков, что полный набор инструкций доступен, если у вас есть четыре различных символа, и все, кроме циклов, доступно, если у вас есть три, так что это незначительная деталь.Ранее я выбрал цитату, которая мне нравится, из фильма, который я действительно видел, но, видимо, я упустил из виду правило. :(
источник