-3

My professor posted this code for us to decipher it for kicks and giggles. It outputs '12 days of christmas'

#include <stdio.h>  

int 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;# ){n\  
l]!/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(a[31]):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);  
}  

That is exactly how he posted it. I have executed it and it works alright, but it's a jumble.

Mav14
  • 19
  • 1
  • Looks like an entry from the obuscated code contest. Good luck with that. – woolstar Dec 08 '13 at 07:00
  • Are you sure it doesn't `#include` anything else? Something like this probably uses macros. – Fiddling Bits Dec 08 '13 at 07:01
  • 3
    This question appears to be off-topic because it is about (de-)obfuscation. –  Dec 08 '13 at 07:04
  • 1
    Pleeeeeeaseeeeee, people who have had retained a tiny bit of your sense of quality, **don't upvote this mess** for the love of ``! –  Dec 08 '13 at 07:05
  • 3
    Your prof has way too much time on his hands and is wasting yours (and ours). – Duck Dec 08 '13 at 07:06
  • Looks like a professor fed up from his class – P0W Dec 08 '13 at 07:10
  • 1
    duplicate [here](http://stackoverflow.com/questions/727930/three-arguments-to-main-and-other-obfuscating-tricks) – Edper Dec 08 '13 at 07:16
  • @woolstar actually it doesn't even need that include and no it doesn't use macros. Okay technically one should include for `putchar()` but it's not strictly required. It won't work (as is) for modern systems but I fixed it a while back (working with the judges on this and have fixed most so far but still have a few more to fix). Must go or otherwise I might include the full code in an answer. – Pryftan May 20 '23 at 13:53

1 Answers1

3

This is an ancient entry into the IOCCC. It has been reverse engineered.

Cory Nelson
  • 29,236
  • 5
  • 72
  • 110