The International Obfuscated C Code Contest

Winning Entries

26th International Obfuscated C Code Contest (2019)

adamovsky - Unlambda interpreter

burton - Word count

ciura - Pangram generator

diels-grabsch1 - Tiny compress

diels-grabsch2 - Self hashing

dogon - X11 Golly game of Life

duble - Collaborative graphics editor

endoh - Backtrace quine

giles - WAV reverberator

karns - Breadth-first search on text

lynn - Haskell compiler

mills - Machine Learning on text

poikola - SHA, Prime, Fibonacci

yang - Text scrambler

25th International Obfuscated C Code Contest (2018)

algmyr - Converts text to sound using font as spectrogram

anderson - Visualizer of typographic rivers

bellard - Image compression demo

burton1 - Hex dumper

burton2 - Tokenize and count

ciura - Strunk & White checker

endoh1 - Animated GIF from text

endoh2 - Monty-Pythonesque animated quine

ferguson - Dawkins' weasel simulator

giles - SDL falling sand

hou - Converter of JSON to SVG pie chart

mills - PDP-7/11 simulator

poikola - Ursa Major ASCII animation

vokes - Computing strongly connected graph components

yang - Text rotator and shifter

24th International Obfuscated C Code Contest (2015)

burton - hex/decimal calculator

dogon - X11 Minecraft demo

duble - handwriting with Braille

endoh1 - reaction-diffusion system HTTP server

endoh2 - hidden text quine

endoh3 - 1984/mullender emulator

endoh4 - visual factorization

hou - MD5 without integers

howe - diff tool

mills1 - flappy bird

mills2 - uncompress

muth - preprocessor Turing engine

schweikhardt - Collatz bignum computation

yang - text encoder with sea star pattern, varies with C flavor

23rd International Obfuscated C Code Contest (2014)

birken - Klingon web server

deak - CPP and C99 abuse

endoh1 - QR encoder

endoh2 - ASCII to DNA transcoder

maffiodo1 - homage to a popular game

maffiodo2 - ASCII art 1-line converter

morgan - make clone

sinon - optimizer-controlled shooter game

skeggs - dynamic library abusing game

vik - Morse audio transcoder

wiedijk - Y combinator

22nd International Obfuscated C Code Contest (2013)

2013.tar.bz2 - all of the data for 2013 (2.3 MiB)

Makefile

README.html

README.text

hint.css

whowon.html

birken - use Tetris to paint a picture

cable1 - 1-liner party of a US President

cable2 - OCR in quick brown fox ASCII art

cable3 - IBM PC emulator

dlowe - ASCII spark line graph

endoh1 - SKI Combinator Calculus tool

endoh2 - JPEG quine that expands and inverts

endoh3 - play music with ABC notation

endoh4 - ASCII solid rotation

hou - ray tracer

mills - HTTP server ray tracing a timestamp

misaka - horizontal or vertical file concat

morgan1 - X11 based Solar system simulator

morgan2 - X11 & ASCII domino matching game

robison - multi-precision arithmetic

21st International Obfuscated C Code Contest (2012)

blakely - Animated GIFs of surfaces

deckmyn - Music notation printer

dlowe - Conway's game of death

endoh1 - ASCII fluid dynamics

endoh2 - Pi/e quine

grothe - Shamir secret sharing

hamano - PDF with little dancing men

hou - Syntax highlighter

kang - Decodes spelled out numbers

konno - Linear cellular automaton 1-liner

omoikane - Encodes text as a C program

tromp - Lambda interpreter

vik - Steganography

zeitak - Brace matcher

20th International Obfuscated C Code Contest (2011)

akari - Downsampler with 3 embeded programs

blakely - Life/reverse life

borsanyi - Bar graph plotter

dlowe - Neural network classifier

eastman - Bouncing Ball in ANSI Graphics

fredriksson - Aproximate grep

goren - Magritte tribute

hamaji - Paint by number puzzle

hou - Scientific calculator

konno - QWERTY keyboard position identifer

richards - JIT dc

toledo - Dual player tank shooter game

vik - Tracker player

zucker - Text raytracing

19th International Obfuscated C Code Contest (2006)

2006.tar.bz2 - all of the data for 2006 (598 KiB)

Makefile

README.text

guidelines.txt

rules.txt

birken - Circuit Simulator

borsanyi - Email address to gif image

grothe - Plays audio using a monitor

hamre - A calculator for rational numbers

meyer - A two player sudoku like game

monge - Graphical fractal generator

night - A maze game

sloane - Animated donut

stewart - IFS fractal generator

sykes1 - Bedlam cube solver

sykes2 - A clock in one line

toledo1 - Solve the knight chess problem

toledo2 - An 8080 emulator

toledo3 - An X11 chess game

18th International Obfuscated C Code Contest (2005)

2005.tar.bz2 - all of the data for 2005 (122 KiB)

Makefile

README.text

guidelines.txt

rules.txt

aidan - Sudoku solver

anon - Multi-dimensional sliding tile puzzle generator

boutines - Voronoi diagram generator

chia - Java parody

giljade - 2D sliding tile puzzle solver

jetro - Audio synthesizer

klausler - Anagram generator

mikeash - Self-printing Common Lisp interpreter

mynx - Web browser

persano - Generates animated knots

sykes - Commodore PET emulator

timwi - A BF lanaguage interpreter

toledo - Play chess

vik - Wolfenstein style graphics engine

vince - Rotating GL Cube demo

17th International Obfuscated C Code Contest (2004)

README

Makefile

rules

guidelines

mkentry.c

2004.tar.bz2 - all of the data for 2004 (81.3 KiB)

anonymous - Rendering of a stroked font

arachnid - Curses maze displayer/navigator with only line-of-sight visibility

burley - A Poker game

gavare - A ray tracer

gavin - Mini-OS

hibachi - A CGI capable HTTP server

hoyle - Curses based polynomial graphing with auto-scale

jdalbec - Conway's look'n'say sequence split into elements

kopczynski - OCR of 8, 9, 10 and 11

newbern - Renders arbitary bitmapped fonts

omoikane - A CRC inserter

schnitzi - Editor animation

sds - Space/tab/linefeed steganography

vik1 - X Windows car racing game

vik2 - Calculates prime numbers using only CPP

16th International Obfuscated C Code Contest (2001)

README

Makefile

rules

guidelines

mkentry.c

2001.tar.bz2 - all of the data for 2001 (72.0 KiB)

anonymous - optimizing dynamic binary translator, x86 progs on any host

bellard - A C subset programming system for x86

cheong - Computes arbitrary-precision square root

coupard - Outputs current time as a sound file

ctk - A driver game

dgbeards - Plays suicide chess

herrmann1 - A Turing machine using preprocessor

herrmann2 - A SIRDS/3D generator, the source is SIRDS/3D itself

jason - An Adventure-like game

kev - A Pong game across network

ollinger - Prints primes with a sieve graph

rosten - Makes X mouse pointer have inertia or anti-inertia

schweikh - Shell glob matcher

westley - Sorts/scrambles, outputs as text/punch-cards

williams - Plays X-based missile command

15th International Obfuscated C Code Contest (2000)

README

Makefile

rules

guidelines

mkentry.c

2000.tar.bz2 - all of the data for 2000 (583 KiB)

anderson - ASCII to semaphore code convertor

bellard - Prints M6972593 (2^6972593-1) by Modular Fast Fourier Transform

bmeyer - An image compressor

briddlebane - Verbally abuses the user

dhyang - Saitou Hajime image that prints a prog that prints a prog ...

dlowe - A dc-style calculator that uses embedded Perl

jarijyrki - An X-based spreadsheet program with graphing features!

natori - Phase of the moon

primenum - Source with English words that looks like a prime tester

rince - Plots the positions of the four Galilean moons of Jupiter

robison - Highly Compressed Program for Playing Hygienic Checkers

schneiderwent - Prints the aproximate time in words

thadgavin - Prints a dazzeling moving image under multiple interfaces

tomx - C source, shell program and Makefile

14th International Obfuscated C Code Contest (1998)

README

Makefile

rules

guidelines

mkentry.c

1998.tar.bz2 - all of the data for 1998 (118 KiB)

banks - A flight simulator!

bas1 - Outputs a gziped 3D beam maze in Postscript

bas2 - determines the size of stdin under IOCCC sizing rules

chaos - Rotates and zooms an object using ASCII graphics

df - A word guessing game

dlowe - Pootifies stdin (useful to view Microsoft html files)

dloweneil - A very addictive ASCII poot game

dorssel - ASCII / Morse code translator

fanf - Translates Lambda expressions into combinator expressions

schnitzi - Prints a C program that sorts arguments using strange functions

schweikh1 - Tests to see if your compiler and headers are standard

schweikh2 - Prints random 0's and 1's; causes some gcc's as passes to choke

schweikh3 - Finds duplicate files that waste disk space

tomtorfs - CRC generator

13th International Obfuscated C Code Contest (1996)

README

Makefile

rules

guidelines

mkentry.c

1996.tar.bz2 - all of the data for 1996 (73.6 KiB)

august - Subset of C compiler and byte code interpreter

dalbec - Generator of strong probable-primes to a given base

eldby - Flying 3D spheres in an ASCII display

gandalf - Displays the ASCII and 8 bit character tables

huffman - Braille to ASCII and vice versa

jonth - X based dual player tic-tac-toe game

rcm - Gunzip equivalent

schweikh1 - Calculates Easter dates from 1582 to 2199 AD

schweikh2 - Search for a limited class of expressions that equal a constant

schweikh3 - Determins the memory allocation honesty of the OS

westley - Shows the time on clock with a configurable face and style

12th International Obfuscated C Code Contest (1995)

README

Makefile

rules

guidelines

mkentry.c

1995.tar.bz2 - all of the data for 1995 (44.1 KiB)

cdua - Generate a maze on the scren and then solve it

dodsond1 - Text to "Pig Latin" translator

dodsond2 - Interactive 3D Maze

esde - Searches for words in a file which have the same Soundex code

garry - Environment-expansion and binary output via escaped env vars

heathbar - 16 bit addition the easy/hard way

leo - Output interesting patterns and cycles in PostScript

makarios - Emits the base 8 representation of prime palindromic in base 8

savastio - Infinite-precision factorial calculator

schnitzi - Find divisors: where a core dump is a feature, not a bug

spinellis - Abusing the rules

vanschnitz - Towers of Hanoi via the C pre-processor

11th International Obfuscated C Code Contest (1994)

README

Makefile

rules

guidelines

mkentry.c

1994.tar.bz2 - all of the data for 1994 (49.8 KiB)

dodsond1 - plays a game of othello

dodsond2 - Hunt the Wumpus (gziped source)

horton - Plot cubic equations on a tty

imc - print a random n by n magic square

ldb - print a random line from stdin

schnitzi - flips stdin along a diagonal (source mirrored along diagonal)

shapiro - print time of day on an tty

smr - world's smallest self reproducing program

tvr - interactive fractals for the X Window System

weisberg - prints prime numbers

westley - Adventure/Dungeon like game played via the C pre-processor

10th International Obfuscated C Code Contest (1993)

README

Makefile

rules

guidelines

mkentry.c

1993.tar.bz2 - all of the data for 1993 (52.3 KiB)

ant - egrep utility with Posix-like documentation

cmills - X11 program that shatters and bounces windows

dgibson - plays the game of like using cpp

ejb - tower of Hanoi and patience pizzle

jonth - game of Tetris

leo - game of mastermind (cows & bulls)

lmfjyh - source is the filename, prints value of __FILE__

plummer - prints numbers up to a given value

rince - game state machine language, comes with a number of games

schnitzi - answers questions about English text in a file

vanb - calculator that prints in octal

9th International Obfuscated C Code Contest (1992)

README

Makefile

rules

guidelines

mkentry.c

1992.tar.bz2 - all of the data for 1992 (72.0 KiB)

adrian - grep-like utility using a state machine transition language

albert - factors multi-precision numbers with factors < MAX_LONG

Makefile

albert.c

albert.hint

albert.orig.c

Leo Broukhis (leob _at_ mailcom -dot- com) reported that this entry still has a bug that results in an infinite loop while checking 10000000001 instead of finding the factor 101. Albert van der Horst did send him an unobfuscated (but somewhat limited since it doesn't check the number for factors 2, 3, 5, 7) version of his program. Leo used the unobfuscated version, with the previously mentioned limitation to fix the 10000000001 bug which may be found in albert.fix.c. For more details see Leo's EMail message.

ant - make utility

buzzard.1 - print factorial, gcd or prime test using a Babbage-like engine

buzzard.2 - forth-like stack machine

gson - anagram generator

imc - Mandelbrot/Julia drawer

kivinen - X11 space invaders, dropout and knockout games

lush - prints "Hello, World" using error messages

marangon - game to balance a grid of digits to all 5's

nathan - obfuscation by (trivial) encryption (source not exported)

Makefile

nathan.c

nathan.hint

Brian Westley decided to just ``screw the (US) government'' and make the real source available. The source at that site no longer exists. Around the same time, were were notified by Nathan Sidwell (who lives outside the US) that his source available on the Web as well. The source at that site also no longer exists. Update: We were told that Google has a comp.lang.c archive with a copy of the source ported by Nathan Sidwell.

vern - plays chess

westley - print ASCII world map and mark a location by lat/long

8th International Obfuscated C Code Contest (1991)

README

Makefile

rules

ansi.mk

common.mk

1991.tar.bz2 - all of the data for 1991 (35.4 KiB)

ant - compressed vi-like editor

brnstnd - sorta stack language

buzzard - walk thru a maze from a first person point of view

cdupont - prints a message without vowels

davidguy - plays life on a root window, doesn't need Xlib or include files

ansi.mk

common.mk

davidguy.c

davidguy.hint

davidguy.orig.c

The "doesn't need Xlib or include files" part resulted in significant bit rot of this entry. Prof. David Applegate took his time to fix it to search for proper socket type, and to allow the entry to run on displays with 16-bit color. The fix is applied to the original entry; merging it with the presented code is left as an exercise for the reader. As before, you need to turn off access control of the X11 server, and to use a window manager that does not obscure the root window.

dds - basic compiler, heavily compressed

fine - rot13s lines of input

rince - game with sprites, boulders, dimonds, and keys

westley - plays tic-tac-toe, compile output for next move, prints board

7th International Obfuscated C Code Contest (1990)

README

Makefile

rules

ansi.mk

common.mk

1990.tar.bz2 - all of the data for 1990 (26.1 KiB)

baruch - short prog to solve N-queens problem

cmills - squished blackjack game

dds - basic interpreter, heavily compressed

dg - rot13 done with strange cpp macros

jaw - compress & atob standins

pjr - the quick brown fox... cppd, structs of functions

scjones - trigraph-abusing self-reproducing program

stig - nested-comment tester (all on command line)

tbr - simple compressed shell, silly layout

theorem - numerically solves the equation y'=f(x,y)

westley - poetic exchange between lovers, prints "luvs me, luvs not"

6th International Obfuscated C Code Contest (1989)

README

Makefile

rules

1989.tar.bz2 - all of the data for 1989 (19.8 KiB)

fubar - self-reconstructing, recompiling factorial program

jar.1 - char*_="Hello world.

";

jar.2 - lisp interpreter, compressed

ovdluhe - monkey-typer following template, 'APE' identifiers

paul - print fibonacci base 2 by simulating turing machine

robison - apl-expression interpreter (binary), written in C--

roemer - prints e, script-pi shaped layout, _31415 identifiers

tromp - squished tetris

vanb - one-liner prints all subsets of arguments

westley - reversible, rot13able program that reverses and/or rot13s.

5th International Obfuscated C Code Contest (1988)

README

Makefile

rules

1988.tar.bz2 - all of the data for 1988 (13.5 KiB)

applin - massive #define stuff, includes itself; prints table of primes

dale - prints command line, using lots of system calls

isaak - table driven table of the elements; cpp, self-inclusion

Makefile

isaak.c

isaak.ansi.c

isaak.hint

isaak.encode

The original code expects K&R-style preprocessor and BSD-style sprintf ; use isaak.ansi.c instead.

litmaath - sorts each arg using only argc, argv, and 'while(<cond>);'

phillipps - 'first day of christmas', tables, heavily main() calling

reddy - prints name of 'char *(*(foo[16])();', compressed

robison - print e in any base, uses only --, >=, and while()

spinellis - #include "/dev/tty"

westley - prints '3.141', circle made of '_-_-_-_' in layout

Makefile

westley.c

westley.hint

Misha Dynin suggests a fix that works for both traditional K&R and ANSI C preprocessors.

4th International Obfuscated C Code Contest (1987)

README

Makefile

rules

1987.tar.bz2 - all of the data for 1987 (9.7 KiB)

biggar - program: "P;" defined on command line

heckbert - obfuscated fold program

hines - counts goto's, all ids anagrams of 'goto', all flow w goto

korn - one-liner that prints a message on a Un*x system

lievaart - very good othello player

wall - roman numeral -> decimal and vice versa conversion

westley - individually palindromic lines prints a palindrome

3rd International Obfuscated C Code Contest (1986)

README

Makefile

rules

1986.tar.bz2 - all of the data for 1986 (8.3 KiB)

applin - hello world works under cc, /bin/sh, and f77

august - struct-heavy e-computation, memory allocation with sbrk

bright - hex dump, cpp compressed, uses lost of << for constants

hague - morse code filter written with 'DIT DAH _DIT DIT_DAH'

holloway - prints hello world! via a recursive main

marshall - train engine-shaped program prints "choo choo"

pawka - prints 'obfuscated?' big, uses xyyyx idents...

stein - prints HHMMSS in UTC time

wall - dvorak keyboard emulator

2nd International Obfuscated C Code Contest (1985)

README

Makefile

rules

1985.tar.bz2 - all of the data for 1985 (4.4 KiB)

applin - one-liner to print hello world, with execlp

august - cpp obfuscated, compressed, main-recursive primes in binary

lycklama - heavily cpped with o_oo identifiers, scrolls text right

shapiro - two defines, one 7-liner, results in a maze

sicherman - rot13 with strange #defs that create comment headers etc.

1st International Obfuscated C Code Contest (1984)

README

Makefile

rules

1984.tar.bz2 - all of the data for 1984 (4.0 KiB)

anonymous - prints hello world, where read is write

decot - prints garbage, weird cpp defines (keywords for others)

laman - prints spiralling numbers, laid out in columns

mullender - hardcoded vax and pdp-11 code to move :-) across the screen