Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Tutto e di + - IOCCC - Programmi intenzionalmente incomprensibili
Forum - Tutto e di + - IOCCC - Programmi intenzionalmente incomprensibili

Avatar
R0gerBlack (Member)
Expert


Messaggi: 210
Iscritto: 10/06/2010

Segnala al moderatore
Postato alle 15:00
Mercoledì, 25/11/2015
Salve ragazzi, mi sono imbattuto sul sito di IOCCC aka International Obfuscated C Code contest per curiosità di come NON programmare (XD) e mi sono imbattuto in programmi davvero strambi...

Tipo questo è uno dei tanti (sì, è scritto in C), però mi ha particolarmente colpito, non si vede nemmeno la funzione main (nonè l'unico) xD.
Che ne pensate? Qualcuno di voi saprebbe spiegare come funziona? o.O

Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #define _$()                                         0
  3. #define __$()                                        1
  4. #define _$_()                                        10
  5. #define $_$(a)                                       a;
  6. #define $_(b,a)                                     a##b
  7. #define r(a,b)                                  r##a##b##urn 0;
  8. #define m(b,a,x) };                               m##a##b##n
  9. #define $(b,a,x)                                  a##b##x
  10. #define                                         ____ + __
  11. #define $_$_                                         =
  12. #define __(...)  (                              $(n,i,t))(\
  13. $(ze,si,of)(($(n,i,t)[]) { _$(), ##__VA_ARGS__})/$(ze,si,of) ($(n,i,t))-__$())
  14. $(n,i,t)  (*___)   ($(n,i,t))  = $(tch,  pu,  ar);   $(ub,do,le) _<::> $_$_ <%
  15.  
  16.          -2, 1, -1.3, 1.3     /* <-- Configure here: X1, X2, Y1, Y2 */
  17.  
  18. ,_$(), _$(),_$(),_$(),_$() ,_$(), __( ',',',',',' ,',' ,',')  * _$_() ,( _$_()
  19. - __('_','_')) * _$_(), _$(),_$(),_$(),__('_','_')*__('_','_', '_','_', '_') *
  20. __('_','_', '_','_', '_')*__('_','_', '_','_', '_')+__('_','_', '_','_' , '_')
  21. ,__('_','_','_','_','_','_','_','_',), _$() m(i,a,u)($(n,i,t) $_)<% $_ (f,i) (
  22. $_ $_(=,=) __(_) ) $_$($_(f,i)(_[ _$_()____(_,_) ]>_[ _$_()] )_[_$_()____ (_,_
  23. ,_,_,_,_,_)] $_$_ __(_) )$_(f,i)(_[_$_()____(_ ,_ ,_)] >_[  _$_()+ __$() ]  ||
  24. _[_$_()____(_,_,_,_,_,_,_)] $_ (=,=) __$()) r(e,t) _[__(_,_,_ ,_,_ ,_)] $_$_ _
  25. [__ (_,_,_,_,_,_,_)____(_,_,_,_,_,_) ]/_[__(_,_,_,_,_) ____(_,_,_,_,_,_)]*( _[
  26.   __$()]-_[_$()])+_[ _$() ];_[__(_,_,_,_,_,_,_)] $_$_ _[__(_,_,_,_,_,_,_) ____
  27. (_,_,_,_,_)]/_[_$_()]*(_[__(_,_,_,)]-_[__(_,_,)] )+_[__(_,_,)];_[__(_,_,_,_, _
  28. ,_,_,_)] $_$_ _[_$_() - __$()] $_$_ _[__(_,_,_,_,_)+ _$_()-__$()]  $_$_  _$();
  29. _f:_[__(_,_,_,_)]  $_$_  _[__( _,_,_,_, _,_,_, _)] * _ [__(_,_,_, _,_,_,_,_)];
  30. _[__(_,_,_,_,_)] $_$_ _[_$_() - __$()]*_[_$_() - __$()];_[__(_,_,_,_,_,_,_,_,_
  31. )] $_$_ __(_,_)*_[__(_,_,_,_,_,_,_,_)]*_[_$_() -__$()]+ _[__ (_,_,_,_,_,_,_)];
  32. _[__(_,_,_,_,_,_,_,_)] $_$_ _ [ __(_,_,_,_) ]-_[__(_,_,_,_,_)]+_[__(_,_,_,_,_,
  33. _)];$_$(_[_$_()____(_,_,_,_,)]++)$_(f,i)((_ [_$_() ____ (_,_,_,_,)]< _ [_$_ ()
  34. ____ (_,_,_,_,_)])&&(_[__(_,_,_,_)]+ _[__(_,_,_,_,_)]<_[_$_()____(_,_,_,_,_,_)
  35. ])) $_(to,go) _f; $_(ar,ch) $(m,i,au)[] $_$_ <% __(_,_,_) * _$_()____(_,_), __
  36. (_,_,_,_) * _$_()____(_,_,_),__(_,_,_,_,_,_) * _$_()____(_,_,_,_), __(_,_,_,_)
  37. *_$_() ____(_,_,_,_,_),__(_,_,_,_) * _$_() ____(_,_,_,_,_,_),__(_,_,_,_) * _$_
  38. ()____(_,_) %>;___($(m,i,au)[($(n,i,t)) _[_$_()____(_,_,_,_)]%__(_,_,_,_,_)]);
  39. $_$(_[__(_,_ ,_,_ ,_,_,_) + __(_,_,_,_,_,_)]++){m(i,a,u) ( _$()) ;$_$ (_[_$_()
  40. ____(_,_)]++)$_$(_[_$_()____(_,_,_)] $_$_ _$()) $_(f,i)(_ [__(_,_,_,_,_,_,_) +
  41. _$_()] != __(_)) ___(_$_()) ;{  m(i,a,u)(__$()); r(e,t)    /* IOCCC 2014*/  %>


PM Quote
Avatar
Roby94 (Member)
Guru


Messaggi: 1170
Iscritto: 28/12/2009

Segnala al moderatore
Postato alle 15:55
Mercoledì, 25/11/2015
ahahahah sarebbe carino risolverlo, se qualcuno ha tanta tanta tanta pazienza. oppure lo butti dentro un qualsiasi preprocessore del C e scopri in 2 secondi cosa dovrebbe essere XD

Ultima modifica effettuata da Roby94 il 25/11/2015 alle 16:07
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 16:44
Sabato, 28/11/2015
Compila con gcc o MSVC cl.exe usando la flag -E.

https://gcc.gnu.org/onlinedocs/gcc-4.4.0/gcc/Preprocessor-O ...

Testo quotato


If you use the -E option, nothing is done except preprocessing. Some of these options make sense only together with -E because they cause the preprocessor output to be unsuitable for actual compilation.





Il mio blog: https://piero.dev
PM Quote