- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
\let~\catcode~`76~`A13~`F1~`j00~`P2jdefA71F~`7113jdefPALLF
PA''FwPA;;FPAZZFLaLPA//71F71iPAHHFLPAzzFenPASSFthP;A$$FevP
A@@FfPARR717273F737271P;ADDFRgniPAWW71FPATTFvePA**FstRsamP
AGGFRruoPAqq71.72.F717271PAYY7172F727171PA??Fi*LmPA&&71jfi
Fjfi71PAVVFjbigskipRPWGAUU71727374 75,76Fjpar71727375Djifx
:76jelse&U76jfiPLAKK7172F71l7271PAXX71FVLnOSeL71SLRyadR@oL
RrhC?yLRurtKFeLPFovPgaTLtReRomL;PABB71 72,73:Fjif.73.jelse
B73:jfiXF71PU71 72,73:PWs;AMM71F71diPAJJFRdriPAQQFRsreLPAI
I71Fo71dPA!!FRgiePBt'el@ lTLqdrYmu.Q.,Ke;vz vzLqpip.Q.,tz;
;Lql.IrsZ.eap,qn.i. i.eLlMaesLdRcna,;!;h htLqm.MRasZ.ilk,%
s$;z zLqs'.ansZ.Ymi,/sx ;LYegseZRyal,@i;@ TLRlogdLrDsW,@;G
LcYlaDLbJsW,SWXJW ree @rzchLhzsW,;WERcesInW qt.'oL.Rtrul;e
doTsW,Wk;Rri@stW aHAHHFndZPpqar.tridgeLinZpe.LtYer.W,:jbye
И снова TeX.
Кто угадает, что выводит программа, тому ничего.
inkanus-gray 25.04.2016 21:16 # 0
https://en.wikibooks.org/wiki/TeX/catcode
kegdan 25.04.2016 21:20 # +9
inkanus-gray 25.04.2016 21:34 # +4
Теперь у нас алфавит служебных символов переназначен. Да, его можно переназначать прямо на ходу во время работы программы.
inkanus-gray 25.04.2016 23:17 # +5
С учётом разобранной нами части кода этот кусок распарсится так:
Что он делает? Определяет макрос A с одним параметром(#1), который назначает своему аргументу catcode=13 («активный» символ, который будет работать как оператор) и вставляет ключевое слово \def.
После этого фрагмент ALLFP развернётся в \catcode`L=13 \def L{}. Т. е. делаем символ L активным оператором и определяем макрос L как {} (пустую операцию).
Более интересный фрагмент A//71F71iP развернётся в \catcode`/=13 \def /#1{#1i}. Символ / делаем оператором, определяем макрос / с одним параметром, который к своему аргументу будет добавлять символ «i».
Ещё более интересный фрагмент ARR717273F737271P развернётся в \catcode`R=13 \def R#1#2#3{#3#2#1}. Это макрос с тремя параметрами, который выводит свои аргументы в обратном порядке.
guest 26.04.2016 00:36 # −3
kegdan 26.04.2016 01:14 # 0
inkanus-gray 26.04.2016 01:21 # 0
http://www.slac.stanford.edu/comp/unix/package/tex/guides/webguide/webguide.html#x1-120003
Там дальше пойдут ветвления и циклы.
inkanus-gray 26.04.2016 01:42 # 0
Короче, программа выводит поэму из 12 строф. В последней строфе 13 строк. Каким-то образом поэму удалось сжать в небольшую программку.
3.14159265 27.04.2016 14:04 # +3
sfx zip voretion
То-то я и думаю что оно на выхлоп архиватора/криптософтины похоже.
inkanus-gray 28.04.2016 18:58 # +1
Обратим внимание на самые интересные:
\def K#1#2{#1l#2#1} — превращает Kab в alba
\def R#1#2#3{#3#2#1} — переставляет свои аргументы: Rabc → cba
\def W#1{} — «вычёркиватель», вычёркивает свой аргумент.
\def Y#1#2{#2#1#1} — превращает Yab в baa
\def q#1.#2.{#1#2#1} — превращает qa.b. в aba
Ничего не напоминает?
А макросы B и U вообще рекурсивные и мне даже страшно представить, что они делают.
inkanus-gray 28.04.2016 19:24 # +3
P.P.S. Гугл, Яндекс и Бинг при поиске фрагментов этого кода теперь первой строкой показывают Говнокод.
inkanus-gray 27.04.2016 00:30 # +2
kegdan 27.04.2016 08:34 # +1
1 + 2 - один разделить на два
1(*%+)2 - произведение поделить на сумму
если это возможно реализовать, то ок
inkanus-gray 01.05.2016 12:31 # 0
Сейчас приходят в голову такие варианты:
1. Использовать паттерн-матчинг аргументов. Пример:
Тогда выражение \j 1 + 2 выведет 3. А если макрос сделать рекурсивным, то можно будет считать суммы любого количества слагаемых.
Недостаток: паттерн нельзя перегрузить. Т. е. при наличии \def\j #1+#2 нельзя определить \def\j #1*#2.
2. Назначить математические символы (+, -, *, /) операторами. Тогда придётся придумывать, как вытащить то, что слева. Сейчас я не знаю, можно ли это сделать.
3. Считать математические символы аргументом макроса. В макросе будет свитч по символу операции:
guesto 01.05.2016 17:48 # +1
inkanus-gray 01.05.2016 18:06 # +3
guesto 01.05.2016 20:06 # 0
kegdan 01.05.2016 20:18 # +1
guesto 02.05.2016 03:14 # +5
inkanus-gray 02.05.2016 17:13 # +5
defecate-plusplus 02.05.2016 17:17 # +5
эх, как непостоянна любовь толпы
inkanus-gray 02.05.2016 18:18 # +3
Rooster 24.05.2019 16:37 # 0
PA3yMHblu_nemyx 24.05.2019 16:52 # 0
Rooster 24.05.2019 16:35 # 0
Что?
bormand 24.05.2019 19:17 # 0
Rooster 24.05.2019 20:21 # 0
Rooster 24.05.2019 20:21 # 0
bormand 24.05.2019 21:06 # +1
inkanus-gray 29.04.2016 23:46 # 0
http://ambrevar.bitbucket.org/xii/index.html
3_14dar 01.05.2016 17:50 # −3
inkanus-gray 01.05.2016 18:05 # +7
inkanus-gray 07.05.2016 23:47 # 0
Осторожно! Возможны кобенационные мраковские цепи.
Perevedi_na_PHP 03.03.2020 23:30 # 0