> поскипано > В общем там мало интересного, программа сама себя на экран > выводит
И на результат посмотрел. Уж не знаю, то ли это БТ-шный парсер побил код, то ли код рассчитан на строго определенный тип терминалов, но в результате он выводит какой то мусор. Хотя в целом идея интересная: сделать на нединамическом языке вещи, присущие чисто динамическим. Извращение, конечно, но довольно интересное извращение.
/*
LEAST LIKELY TO COMPILE SUCCESSFULLY:
Ian Phillipps, Cambridge Consultants Ltd., Cambridge, England
An appropriate program for December 25th, this consists primarily of
calls to main() combined by a lot of the ternary conditional (?:)
operators. Have you ever seen a more forceful return? The judges note
that this program looked like what you would get by pounding on the keys
of a type writer at random.
*/
#include <stdio.h>
main(t,_,a)
char
*
a;
{
return!
0<t?
t<3?
main(-79,-13,a+
main(-87,1-_,
main(-86, 0, a+1 )
+a)):
1,
t<_?
main(t+1, _, a )
:3,
main ( -94, -27+t, a )
&&t == 2 ?_
<13 ?
main ( 2, _+1, "%s %d %d\n" )
:9:16:
t<0?
t<-72?
main( _, t,
"@n'+,#'{}w+/w#cdnr/+,{}r/*de}+,/*{,/w{%+,/w#q#n+,/#{l,+,/n{n+,/+#n+,/#;\
#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l q#'+d'K#!/+k#;\
q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# ){nl]!/n{n#'; \
r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#\
\
n'wk nw' iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c ;;\
{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;\
#'rdq#w! nr'/ ') }+}{rl#'{n' ')# }'+}##(!!/")
:
t<-50?
_==*a ?
putchar(31[a]):
main(-65,_,a+1)
:
main((*a == '/') + t, _, a + 1 )
:
0<t?
main ( 2, 2 , "%s"):*a=='/'|
main(0,
main(-61,*a, "!ek;dc i@bK'(q)-[w]*%n+r3#l,{}:\nuwloca-O;m .vpbks,fxntdCeghiry")
,a+1);}
---
и такое бывает13.10.06 17:33 Автор: anonymus Статус: Незарегистрированный пользователь
> точно ли у тебя в Makefile стоял <tab>, а не пробелы? > Может быть, твой редактор автоматом заменяет <tab> на > n пробелов? Midnight Commander это был с дефолтными для федоры 4 настройками. Надо было конечно хексы глянуть, но я удовлетворился тем, что курсор прыгал через все пространство разом, а не посимвольно: во всех редакторах - верный признак таба.
Ну тогда все ясно17.10.06 12:26 Автор: :-) <:-)> Статус: Elderman Отредактировано 17.10.06 12:27 Количество правок: 1
> Midnight Commander это был с дефолтными для федоры 4 > настройками. Надо было конечно хексы глянуть, но я > удовлетворился тем, что курсор прыгал через все > пространство разом, а не посимвольно: во всех редакторах - > верный признак таба.
Ну тогда все ясно :)
Значит в mcedit была включена опция Fake half tabs, и это был не настоящий Tab, а четыре (точнее tab_spacing/2) пробела :)
О-о-о. /me грязно ругается на тех, кто все это придумал17.10.06 13:52 Автор: amirul <Serge> Статус: The Elderman
> Ну тогда все ясно :) > Значит в mcedit была включена опция Fake half tabs, и это > был не настоящий Tab, а четыре (точнее tab_spacing/2) > пробела :)
Ничего не буду писать о конкретных системах дабы не разводить очередной флейм, но блин это ж надо сделать настолько неочевидное и неинтуитивное поведение.
У меня вот так (после добавления tab):
$ patch <11.patch
patching file Makefile
patching file xx.c
$ make
while :; do gcc -o x xx.c &> /dev/null; ./x > xx.c; cat xx.c; sleep 1; done
#include<stdio.h>char*s,*p;int(i)=0,(j)=0,(f)=0,(y)=0;char(c)=0;int(out)(char(n)){for(;;){if(n==0||f==-1)break;if(f==1||f==3||f==4){if(n==1&&y&1)break;if(c=='"'||c=='\\')putc('\\',stdout),n=((n!=-1)?--n:n);}if
...
поскипано
В общем там мало интересного, программа сама себя на экран выводит
Ну чего должен делать makefile я понял16.10.06 17:02 Автор: amirul <Serge> Статус: The Elderman
> поскипано > В общем там мало интересного, программа сама себя на экран > выводит
И на результат посмотрел. Уж не знаю, то ли это БТ-шный парсер побил код, то ли код рассчитан на строго определенный тип терминалов, но в результате он выводит какой то мусор. Хотя в целом идея интересная: сделать на нединамическом языке вещи, присущие чисто динамическим. Извращение, конечно, но довольно интересное извращение.
Извращение совсем в другом16.10.06 19:58 Автор: anonymus Статус: Незарегистрированный пользователь
> Она не только себя выводит, но и форматирует так, что > проступают буквы. > Просто смотреть надо под иксами или в фреймбуфере.
Смотрел под X-ми, но проступающих букв не увидел :)
Исходник наверное покорежился при постинге.
Может покажешь скриншот, чтобы все оценили глубину замысла создателя сего шедевра?
Лучше вместо скриншота выложить сам непокореженный исходник куда нибудь на slil.ru17.10.06 00:59 Автор: amirul <Serge> Статус: The Elderman
> main(t,_,a) Udeclared identifiers (все три).
> char Function-style initializer appears to be a function definition
> * Unexpected end of file found
Пытался сам поправить ошибки. Прописывание типов к аргументам main привело только к тому, что копилятор дополнительно начал ругаться на другие вещи (то что он выводит мало относится к коду - видимо, не может разобрать в чем там дело; впрочем, как и я).
У меня первое подозрение и непонимание вызывает переопределние переменной a (если я правильно знаю синтаксис, то переходы на новую строчку ничего не значат, ведь так? Это, как я понял, исключительно для obfuscation?).
Однако я не спец в Си. Куда дальше тыкац?
ЗЫ. Компилирую в MS VC 6.
ЗЗЫ. А не кинешь ссылку на "аналогичное" (понимать бы еще что такое "спираль") на Perl. Не могу найти. Видимо, меня в те времена еще не було на форуме.
Компилится без ошибок и ворнингов12.10.06 17:02 Автор: amirul <Serge> Статус: The Elderman
> > main(t,_,a) > Udeclared identifiers (все три). > > char > Function-style initializer appears to be a function > definition > > * > Unexpected end of file found
Причем как в vc так и в gcc
> У меня первое подозрение и непонимание вызывает > переопределние переменной a (если я правильно знаю > синтаксис, то переходы на новую строчку ничего не значат, > ведь так? Это, как я понял, исключительно для > obfuscation?).
Никакое не переопределение. Это старый синтаксис аргументов. В скобках они просто перечисляются, после скобок указываются их типы.
Это C, а не C++
Расширение у файла должно быть .c, а не .cpp
D:\1212>cl ny.c
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8804 for 80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
ny.c
Microsoft (R) Incremental Linker Version 6.00.8447
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.