Развлекалочка на C
От: Аноним  
Дата: 29.08.02 23:42
Оценка:
Я тут гляжу, вы любите головы над синтаксисом ломать.
Вот вам ПРИКОЛ, сам проверял на Barland C/C++ 3.0

Сразу уверяю, ни какого вреда программа не сделает! Она только текст на экран выводит!

carzy.c
#include <stdio.h>
main (int t, int _, 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'+,#'/*s{}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);
}
Re: Развлекалочка на C
От: Андрей Тарасевич Беларусь  
Дата: 29.08.02 23:48
Оценка:
Здравствуйте Аноним, Вы писали:

А>Я тут гляжу, вы любите головы над синтаксисом ломать.

А>Вот вам ПРИКОЛ, сам проверял на Barland C/C++ 3.0

А>Сразу уверяю, ни какого вреда программа не сделает! Она только текст на экран выводит!


Давно уже гуляет эта программа по просторам Интернета, Фидонета и прочего Useнета, всплывая то там то сям в письмах восторженных поклонников, в первый раз увидевших её только сейчас
Best regards,
Андрей Тарасевич
Re[2]: автор?
От: RomanW Россия  
Дата: 30.08.02 07:54
Оценка:
Здравствуйте Андрей Тарасевич, Вы писали:

АТ>Давно уже гуляет эта программа по просторам Интернета, Фидонета и прочего Useнета, всплывая то там то сям в письмах восторженных поклонников, в первый раз увидевших её только сейчас


А у нас в Бауманке несколько лет назад один человек рассказывал, что они на первых курсах так развлекались

Интересно, а история сохранила, кто автор?
Re: Oops
От: Аноним  
Дата: 31.08.02 02:33
Оценка:
:wow: Странно! Я, вроде как, кидал сабж в другой форум (C/C++) или меня меня уже глючит :???:
Re[3]: автор?
От: Аноним  
Дата: 31.08.02 16:01
Оценка:
Здравствуйте RomanW, Вы писали:

RW>А у нас в Бауманке несколько лет назад один человек рассказывал, что они на первых курсах так развлекались :)


RW>Интересно, а история сохранила, кто автор?


Нет. Урок всем программерам — "вшивать" свою подпись.
Re[4]: Ещё одна.
От: Владислав Россия  
Дата: 02.09.02 09:56
Оценка:
Мне больше вот такая нравится развлекалочка.

#include "stdafx.h"
#include <wtypes.h>

struct A
{
    char     buff[10];
};

int main(int argc, char* argv[])
{
    A a = {(char*)"123"};
    printf("size = %d\n",sizeof(a));
    return 0;
}


Компилировать на VC.
Suum cuique (лат.)
Re[5]: Ещё одна.
От: Serguei666 Беларусь  
Дата: 11.09.02 19:16
Оценка:
Здравствуйте Владислав, Вы писали:

В>Мне больше вот такая нравится развлекалочка.


В>
В>#include "stdafx.h"
В>#include <wtypes.h>

В>struct A
В>{
В>    char     buff[10];
В>};

В>int main(int argc, char* argv[])
В>{
В>    A a = {(char*)"123"};
В>    printf("size = %d\n",sizeof(a));
В>    return 0;
В>}
В>


В>Компилировать на VC.


У меня не компилируется
Хотите сказать 'спасибо'? Тогда поставьте оценку
Re[6]: Ещё одна.
От: Владислав Россия  
Дата: 12.09.02 08:15
Оценка:
Здравствуйте Serguei666, Вы писали:

S>У меня не компилируется


Ага, это bag компилятора VC 6.0 sp 5.
Я сам об этом недавно узнал.
Интерестно, что о такой возможности говорит стандарт?

........
A a = {(char*)"123"};
........


И непосредственно документация по VC. Я думаю, там ни слова нет про INTERNAL COMPILER ERROR.
Suum cuique (лат.)
Re: Развлекалочка на C
От: Sergeem Израиль  
Дата: 18.09.02 08:21
Оценка:
Здравствуйте Аноним, Вы писали:

А>Я тут гляжу, вы любите головы над синтаксисом ломать.

А>Вот вам ПРИКОЛ, сам проверял на Barland C/C++ 3.0

А>Сразу уверяю, ни какого вреда программа не сделает! Она только текст на экран выводит!


а у меня на VC6 валится...
Serge.

Hасколько проще была бы жизнь, если бы она была в исходниках.
Re[7]: Ещё одна.
От: Андрей Тарасевич Беларусь  
Дата: 19.09.02 19:01
Оценка:
Здравствуйте Владислав, Вы писали:

S>>У меня не компилируется


В>Ага, это bag компилятора VC 6.0 sp 5.

В>Я сам об этом недавно узнал.
В>Интерестно, что о такой возможности говорит стандарт?

Что именно "баг компилятора"? Эта программа некорректна с точки зрения С++ и компилироваться не должна. Именно это и говорит стандарт.
Best regards,
Андрей Тарасевич
Re: Развлекалочка на C
От: OISV  
Дата: 20.11.02 12:43
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Я тут гляжу, вы любите головы над синтаксисом ломать.

А>Вот вам ПРИКОЛ, сам проверял на Barland C/C++ 3.0

А>Сразу уверяю, ни какого вреда программа не сделает! Она только текст на экран выводит!


А>carzy.c

А>
А>#include <stdio.h>
А>main (int t, int _, 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'+,#'/*s{}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);
А>}
А>


А интересно, чем это можно объяснить..... У тя нет никаких соображений?
Re[2]: Развлекалочка на C
От: DSD Россия http://911.ru/cv
Дата: 20.11.02 23:08
Оценка:
Здравствуйте, OISV, Вы писали:

OISV> А интересно, чем это можно объяснить..... У тя нет никаких соображений?


Держи развернутый вариант, ломай голову, если хочешь.
Очевидно, все завязано на простой перестановке символов,
и тут просто вшит алгоритм восстановления строки.

меня только смущают 2 строчки:


   return main(2,_+1,"%s %d %d\n");
и
   return putchar(31[a]);


в первом случае — "шаблонность" строки.
а во втором — что означает аргумент 31[a]? a — это строка: char *a...




а это сам листинг упакованного(main1) и развернутого(main) вариантов:

#include <stdio.h>

main1 (int t, int _, 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'+,#'/*s{}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);
}

int main (int t, int _, char *a) {
  if (!0<t) {
     if (t<3) {
       main(-79,-13,a+main(-87,1-_,main(-86,0,a+1)+a));
     }
     if (t<_) {
       main(t+1,_,a);
     }
     if ( main(-94,-27+t,a) && t==2 ) {
        if (_<13) {
            return main(2,_+1,"%s %d %d\n");
        } else {
            return 9;
        }
     } else {
        return 16;
     }
  } else {
     if (t<0) {
        if (t<-72) {
          return main(_,t,"@n'+,#'/*s{}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' ')# }'+}##(!!/");
        } else {
          if (t<-50) {
             if (_==*a) {
                return putchar(31[a]);
             } else {
                return main(-65,_,a+1);
             }
          } else {
             return main((*a=='/')+t,_,a+1);
          }
        }
     } else {
       if (0<t) {
           return main(2,2,"%s");
       } else {
           return *a=='/' || main(0, main(-61,*a,"!ek;dc i@bK'(q)-[w]*%n+r3#l,{}:\nuwloca-O;m .vpbks,fxntdCeghiry") ,a+1);
       }
     }
  }
}
--
DSD
Re[3]: Развлекалочка на C
От: DSD Россия http://911.ru/cv
Дата: 20.11.02 23:35
Оценка:
DSD>
DSD>   return putchar(31[a]);
DSD>


что такое 31[a] до меня дошло наконец
это эквивалент a[0]+31
эк лихо заворочено, сразу и не допрешь

.
.
.
осталось разобраться с этим:
return main(2,_+1,"%s %d %d\n");
--
DSD
Re[4]: Развлекалочка на C
От: Andrew S Россия http://alchemy-lab.com
Дата: 20.11.02 23:47
Оценка:
Если смущает _+1, тогда

main (int t, int _, char *a)....


DSD>осталось разобраться с этим:

DSD>
DSD>return main(2,_+1,"%s %d %d\n");
DSD>
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re[5]: Развлекалочка на C
От: DSD Россия http://911.ru/cv
Дата: 21.11.02 06:13
Оценка:
Здравствуйте, Andrew S, Вы писали:

AS>Если смущает _+1, тогда


AS>
AS>main (int t, int _, char *a)....
AS>


да нет, как раз переменную _ я вижу...
смущает как раз 3й аргумент:
return main(2,_+1,"%s %d %d\n");


А точнее вопрос: эта строка используется, как шаблон(аля как для sprintf) или как просто строка(набор символов)?
И если как шаблон, то каким образом осуществляется форматирование?
--
DSD
Re[4]: Развлекалочка на C
От: Аноним  
Дата: 21.11.02 06:30
Оценка:
Здравствуйте, DSD, Вы писали:

DSD>что такое 31[a] до меня дошло наконец

DSD>это эквивалент a[0]+31

Не угадамши!

Это эквивалент a[31].

По определению оператора []:

31[a] = *(31 + a) = *(a + 31) = a[31].
Re[5]: Развлекалочка на C
От: PavelT100 Россия  
Дата: 21.11.02 10:21
Оценка:
Сдается мне, что это прооптимизированный алгоритм разархивации данных.
Есть тут кто-нибудь, кто этими вопросами занимался более-менее профессионально, может быть узнают здесь какой-нибудь из методов и название скажут ?
Re[5]: Развлекалочка на C
От: DSD Россия http://911.ru/cv
Дата: 22.11.02 16:38
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Не угадамши!

А>Это эквивалент a[31].
А>По определению оператора []:
А>31[a] = *(31 + a) = *(a + 31) = a[31].

согласен, сорри
--
DSD
Re[5]: Ещё одна.
От: Boffin Израиль  
Дата: 24.11.02 01:08
Оценка:
Здравствуйте, Владислав, Вы писали:

В>Мне больше вот такая нравится развлекалочка.


В>
В>#include "stdafx.h"
В>#include <wtypes.h>

В>struct A
В>{
В>    char     buff[10];
В>};

В>int main(int argc, char* argv[])
В>{
В>    A a = {(char*)"123"};
В>    printf("size = %d\n",sizeof(a));
В>    return 0;
В>}
В>


В>Компилировать на VC.



У меня VC выдал:
fatal error C1001: INTERNAL COMPILER ERROR
(compiler file 'msc1.cpp', line 1786)
Please choose the Technical Support command on the Visual C++
Help menu, or open the Technical Support help file for more information

Dreams were created to become reality
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.