7 ms·
The 29th International Obfuscated C Code Contest (IOCCC) 2025 Winners
- aquir 4mo agoThe website itself is obfuscated, it’s not easy to find the C sources at all!
- lifebeyondfife 4mo agoCan jump straight to https://www.ioccc.org/2025/#inventory https://www.ioccc.org/2025/#inventory
- crazygringo 4mo agoEven that requires clicking on unintuitive username links... scrolling to the very bottom of what are sometimes very long pages... and locating the "entry source code" file out of a sometimes very large list of files. When most visitors obviously just want to glance at the programs and see what they do, this is horrifically organized.
- layer8 4mo agoThe first sentence links to the section that lists the winning entries, each of which have a “C code” link in the top right.
- hugh-avherald 4mo agoIt's really hard to navigate. I cannot work out what the contest is; it seems to assume you know what it is already.
- drfloyd51 4mo agoApparently, if your not cool enough to know how to get in the club, you are not cool enough to be in the club.
- TuringTourist 4mo agoAlternatively, I wouldn't want to be in a club that was lame enough to accept me. :)
- haunter 4mo agoThe GameBoy emulator's code also looks like the GameBoy. Slow clap this is insane, definitely my favorite entry. https://github.com/ioccc-src/winner/blob/master/2025/ncw1/prog.c https://github.com/ioccc-src/winner/blob/master/2025/ncw1/pr... The author, Nick Craig-Wood, is the creator of rclone!
- sourcecodeplz 4mo agoDamn, that is cool! Looking at me typing css & php...
- nickcw 4mo agoGlad you enjoyed it :-) If you want to see how the sausage was made, here is the source: https://github.com/ncw/ioccc-gameboy https://github.com/ncw/ioccc-gameboy You'll find an unobfuscated version (kind-of) there too. This the the one I actually worked on then I had a program squash all the variable names and squeeze it into the gameboy shape The size limit for the entry was the killer. You are allowed 2503 non white space characters (a simplification - the rules are complicated) in IOCCC entries and 4K total code size. This isn't a lot to fit a Z80 processor and a GameBoy hardware emulator in! I first wrote a full Gameboy emulator in C. It started out at about 6000 non white space characters. I then spent about about 100 hours work trying to get it to fit into the 2503 limit. For a long time I wasn't sure it was going to fit. I decided making the emulator play Tetris (which is a fairly simple game) was the target so I stripped out features like the half carry flag in the Z80 emulator and the windowing system in the Gameboy emulation which Tetris didn't need. I also abused the C code terribly doing things with implicit int I can never un-see. I also got creative with the IOCCC rules which are implemented in a C program which checks your source and I spent some time reverse engineering that looking for loopholes! I discovered that the operators defined in <iso646.h> only count for one token which was very useful. Once I had it small enough I had to supply some games to run with it. I created 4, a test program written in z80 assembler, a pi calculator (written in assembler), a 3d tic tac toe game (written in C with gbdk-2020) and a chess program also written in C. I discovered that quite a few open source games ran on the emulator too so I added a downloader for those where I could. Apparently not many games use BCD arithmetic - who would have thought! It was a fun project.
- larodi 4mo agoTis a pity to not have LLMs compete, given level of obfuscation they be capable of.
- lifthrasiir 4mo agoIn my experience LLMs were pretty good at deobfuscating many entries (including mine) but very awful at generating any significantly obfuscated code. So obfuscation can be regarded as a truly humane art---at least for now.
- nickcw 4mo agoI pointed Claude Opus 4.7 at my Forth entry ( https://github.com/ioccc-src/winner/blob/master/2025/ncw3/prog.c https://github.com/ioccc-src/winner/blob/master/2025/ncw3/pr... ) and it absolutely refused to have anything to do with it citing security violations and accusing me of creating malware :-) Claude seems OK with it now, so I don't know whether that was a glitch but it was quite funny.
- adampunk 4mo agoI was talking to a Claude Opus 4.7 chatbot about low-discrepancy sequences and made the mistake of framing a thought experiment as "deceiving" a vendor who owns a scrambler by making a hard to scramble low-discrepancy sequence generator. Admittedly that sounds sketchy but the conversation up to that point--without the explicit framing--was about the same subject just shorn of metaphor. With the framing I got a refusal message that likened my request to Dual_EC_DRBG!
- TZubiri 4mo agoI mean they can generate 1 million lines of code, it's obfuscation by brute force, how are you going to read that if not with another LLM
- lifthrasiir 4mo agoIOCCC disallows such entries for the obvious reason ;-)
- rurban 4mo agoSo like at a film festival, 90% of the entries won a price, but unlike a film festival there's not a single best. Weird, like modern education.
- deleted 4mo ago[deleted]
- lifthrasiir 4mo agoWhile this has been downvoted to the death, it is fun to guess how many entries are submitted to each IOCCC. My best guess is around 10^2.5, i.e. 3--400. Rationales: - The number of winning entries and losing entries that get revealed later in public suggests that this number should be at least 50. - The number of judging rounds, as the FAQ says, is at least 3 and possibly more. If each judging round eliminates about a half of entries, we should expect at least 10 submissions per each winning entries. I personally think the actual elimination rate can be as low as 1--20% at the end, but at least first few rounds should be easy so I think this is a good minimum guess: 1--200. - The current number of individual judges is just enough for the three-digit number of submissions. It has a striking resemblance with typical academic conferences with typical acceptance rate, by the way! If there were thousands of submissions (like today's AI conferences...) there ought to be much more judges, and more importantly, more levels of judges so that each judge can do just enough work throughout the entire process. So this establishes the maximum guess: 1,000. - My best guess is simply a geometric mean of two extrema.
- yayitswei 4mo agoIn case anyone was wondering, the IOCCC specifically permits LLM use in their guidelines. "The IOCCC has a rich history of remarkable winning entries created by authors who skillfully employed various techniques (often their own tools) to develop their code."
- zerr 4mo agoSo it turned into an LLM-gymnastics competition?
- tgv 4mo agoI'm in the no-AI camp, but for this case, I find it interesting, especially since there's little obfuscated C online, and LLMs cannot infer intention from the actual code. Did you spot any entries with LLM support? Also, the reverse is interesting: how well can they guess the function of the obfuscated code?
- deleted 4mo ago[deleted]
- Catloafdev 4mo agoIf you're talking about frontier AI, they have no issue de-obfuscating any of these accurately.
- Chu4eeno 4mo agoYeah, Claude, Grok and Gemini immediately recognized it as a SUBLEQ VM (and worked out from there all the details), only chatgpt got stumped and just said it was a "visual simulator". All the big labs have plenty of proprietary (i. e. paying PhD holders good money for writing stuff) and synthetic training data now compensating for the lack of "naturally occuring" SUBLEQ and similar stuff.
- asfjhq 4mo agoRule 7 would be self-contradictory if "tools" include AI. https://www.ioccc.org/2025/rules.html https://www.ioccc.org/2025/rules.html It seems to refer to custom code generators. Why would they mean AI if they explicitly talk about a "rich history" (when AI wasn't available)?
- s-macke 4mo agoMy favorite is the 366-byte C program emulator that can run Linux and Doom [0]. The VM implements an OISC - a One Instruction Set Computer [1]. [0] https://github.com/ioccc-src/winner/blob/master/2025/cable/prog.c https://github.com/ioccc-src/winner/blob/master/2025/cable/p... [1] https://github.com/ioccc-src/winner/blob/master/2025/cable/README.md https://github.com/ioccc-src/winner/blob/master/2025/cable/R...
- s-macke 4mo agoHere is the video: https://www.youtube.com/live/MoWCwZx1Swc?si=eIOlRsKWNKRVRZeB&t=8603 https://www.youtube.com/live/MoWCwZx1Swc?si=eIOlRsKWNKRVRZeB...
- cpldcpu 4mo agoWow! And it also implements a very interesting variant of SUBLEQ that is turing complete. >This VM implements an OISC - a One Instruction Set Computer. That instruction takes three signed 32-bit operands, a, b and c, and runs a program from memory m[] as follows: 1 PC (program counter) starts at 0 2 Fetch the next instruction (32-bit signed operands a, b and c) 3 If the low bit on any operand is set, remove it, and replace that operand with m[operand] i.e., a dereference of that address 4 Set m[b] = m[b] - m[a] 5 If m[b] is 0 or negative, set the PC to c, otherwise increment PC by 3 words 6 Go to step 2
- jpegqs 4mo ago> 3 If the low bit on any operand is set, remove it, and replace that operand with m[operand] i.e., a dereference of that address This dereference option makes a second instruction, this is not OISC.
- cpldcpu 4mo agoCISC view: Its another adressing mode. RISC view: SUBLEQ is already four instructions (2x memory access, alu, branch)
- 4mo ago
- nsoonhui 4mo agoI'm not sure this kind of competition is still meaningful, given that LLM can easily convert a program clearly written in any programming language to the most obfuscated C code, and can still easily verify it's correctness in an automated way. Do I miss anything?
- jjav 4mo ago> Do I miss anything? That human art is worth the humanity in the art. As soon as anything is automated, it's worth nothing.
- zabzonk 4mo agoChess?
- GTP 4mo agoI think what they mean is that this sort of competition makes sense because it's about humans competing against each other, so that, even if we could have LLMs do it, the human version is still what captures our interest. In a similar way, we don't look at chess tournaments with computers playing against each others, but we look at chess grandmaster challenging each other. Even if it has been decades now that computers can beat grandmaster.
- visha1v 4mo agoyes llm can do it but i think competitions have more to do with developing scientific temperament, competitive mindset and complex problem solving skills. that's why i think they are still relevant and will be relevant for a long time.
- hulitu 4mo ago> Do I miss anything? School ? /s
- s-macke 4mo agoYes, you haven’t tried it. LLMs are actually awesome at deobfuscation, but terrible at obfuscation. They just can’t do it yet. They also lack the creativity needed for those entries. Obfuscation is only one part of it. Coming up with the idea is another. Many entries also have special qualities that make them true works of art.
- TZubiri 4mo agoI love the submissions of IOCCC generally, but the schedule and submission process looks like a mess, is that part of the joke? Or is it just because being consistent and designing a simple process is hard¡
- ollybee 4mo agoI with the Underhanded C Contest would come back, it was far more interesting to me. No disrespect intended to the Obfuscated C competitors.
- ASalazarMX 4mo agoI miss it too, and think of it every year. This is also very nice, though.
- msk-lywenn 4mo agoOMG, my game boy game of life implementation is included in one of the winning entries!
- nickcw 4mo agoAfter I made the emulator I trawled GitHub to try to find games it could play within the 32K limit. I found yours - thank you :-) - and the ./try.sh script has an option to download it from GitHub for the user to test.
- bbbbbr 4mo agoIt's after the fact now, but I maintain a list of 32K Game Boy games on itch.io here: https://itch.io/c/3521183/game-boy-32k-roms https://itch.io/c/3521183/game-boy-32k-roms Great project btw
- roer 4mo agoThere's a Frieren [1] reference in there! https://www.ioccc.org/2025/yang2/index.html https://www.ioccc.org/2025/yang2/index.html One of the main characters is called Fern, and she almost exclusively uses the common offensive magic of Zoltraak. [1] https://en.wikipedia.org/wiki/Frieren https://en.wikipedia.org/wiki/Frieren
- normanthreep 4mo ago[flagged]
- deleted 4mo ago[deleted]
- roer 4mo agoGoing through your comment history makes me wish for a way to ignore hn users
- normanthreep 4mo ago[flagged]
- deleted 4mo ago[deleted]
- perching_aix 4mo agobaby's first insults
- omoikane 4mo agoThere are two Frieren references, the other one is https://www.ioccc.org/2025/yang1/index.html https://www.ioccc.org/2025/yang1/index.html
- Gathering6678 4mo agoThere's another contest called Underhanded C that I enjoyed a lot reading, but it has been inactive for a decade at this point...
- swordlucky666 4mo ago[flagged]
- locao 4mo agoBack in 2000 I was being interviewed for my first internship, to join a team of C programmers. They showed me one of the winner entries of the prior years, asked me to review the code and left the room. About 5 minutes later they came back: – And? – I'm sorry I wasted your time. I just can't understand it. They burst into laughs and asked me to start the joining process. I wonder if people still make fun of interns. I still have a good laugh when I remember myself freaking out.
- tomcloney007 4mo ago[flagged]
- stiray 4mo agoOOOOOH! IOCCC is back! All my love <3 <3 <3 to organizers, thank you for continuing the IOCCC context, please never go away again!
- EGreg 4mo agoWait, I kind of don't get it. So Obfuscated C Code Contest works but Capture the Flag doesn't? Because of AI? https://twit.tv/posts/tech/ai-disrupts-capture-flag-what-means-cybersecurity-training https://twit.tv/posts/tech/ai-disrupts-capture-flag-what-mea...
- omoikane 4mo agoCapture the flag has clear objectives while obfuscated C contest does not. I understand improvements in AI for goal-orientated contests, I am not sure what would be considered improvements in open-ended contests with artistic flair. Maybe you are asking "can't someone think up a clever idea and ask the AI to implement it according to IOCCC constraints?" And I believe current AI tools are still unable do that at a level that the human judges find worthy.
- sathyayoshi 4mo ago[dead]
- LearnYouALisp 4mo agoSome comments suggested the idea, have there been any IOCCC entries written in pre-64bit DEBUG.COM? (which could <read a file as input)
- purpleidea 4mo agoIs it zero-indexed, or are they really behind in choosing winners, or am I loosing my mind... Isn't it 2026 not 2025??
- ticulatedspline 4mo ago> We plan to open IOCCC30 towards the end of 2026 and have the contest run for a similar amount of time, closing sometime towards the end of Q1 2027. Based on that it Looks like the contest starts late and runs into the next year. the 2025 rules were finalized in December.