Skip to content
Related Articles

Related Articles

Improve Article

Print 12 Days Of Christmas in a few lines of code | The xmas.c code

  • Last Updated : 04 Aug, 2021

‘The Twelve Days Of Christmas’ is an English Christmas Special Carol song which got published in around 1780s, and it was said that it was written by Catholics in hiding during the days of Queen Elizabeth I of England’s persecution. It was invented to help teach children articles of the Catholic faith without drawing attention from government officials, using imagery as a tool to help the children remember. The song represents progressively grand gifts given throughout every day of The Twelve Days of Christmas. The Twelve Days of Christmas are the happy-festive days which begin on Christmas Day (25 December). This is additionally called & known as Christmastide and Twelvetide.
In 1988 an impressive & formidable piece of C code-named xmas.c was a winner in the International Obfuscated C Code Contest. 
The program is smaller than even the ‘compressed’ sort of its output, and so represents a brand new departure in text compression standards. The judges thought that this program sounded like what you’d get by pounding on the keys of an old typewriter haphazardly.
This could endure until the last word of doing nothing more than printing out the lyrics; however, you get the concept. This is one of the better obfuscated C programs I’ve come across because of using the substitution cypher along with recursion. That was followed by the addition of a small bit of unnecessary code and use of random arguments when the arguments were not made use of. An adorable little bundle of C code! Understanding what’s happening is still a long way from writing it — what an excellent example of creativity.

The legendary xmas.c code:

C




#include <stdio.h>
   
main(int t, char _, 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);
}

Output: 
 

On the first day of Christmas my true love gave to me
a partridge in a pear tree.

On the second day of Christmas my true love gave to me
two turtle doves
and a partridge in a pear tree.

On the third day of Christmas my true love gave to me
three french hens, two turtle doves
and a partridge in a pear tree.

On the fourth day of Christmas my true love gave to me
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.

On the fifth day of Christmas my true love gave to me
five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.

On the sixth day of Christmas my true love gave to me
six geese a-laying, five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.

On the seventh day of Christmas my true love gave to me
seven swans -swimming,
six geese a-laying, five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.

On the eighth day of Christmas my true love gave to me
eight maids a-milking, seven swans -swimming,
six geese a-laying, five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.

On the ninth day of Christmas my true love gave to me
nine ladies dancing, eight maids a-milking, seven swans -swimming,
six geese a-laying, five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.

On the tenth day of Christmas my true love gave to me
ten lords a-leaping,
nine ladies dancing, eight maids a-milking, seven swans -swimming,
six geese a-laying, five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.

On the eleventh day of Christmas my true love gave to me
eleven pipers piping, ten lords a-leaping,
nine ladies dancing, eight maids a-milking, seven swans -swimming,
six geese a-laying, five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.

On the twelfth day of Christmas my true love gave to me
twelve drummers drumming, eleven pipers piping, ten lords a-leaping,
nine ladies dancing, eight maids a-milking, seven swans -swimming,
six geese a-laying, five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.

 

 

Want to learn from the best curated videos and practice problems, check out the C Foundation Course for Basic to Advanced C.

My Personal Notes arrow_drop_up
Recommended Articles
Page :