présentation

Le Twenty-Ninth International Obfuscated C Code Contest (IOCCC) est de retour avec les résultats de la compétition 2025. Cette année, l'un des participants a présenté une nouvelle astuce : un cas d'utilisation valide.

Le IOCCC est un concours qui met à l'épreuve les compétences des programmeurs C en leur demandant de créer des programmes les plus courts et les plus créatifs possibles. Les juges, Landon Curt Noll et Leonid A. Broukhis, inventent de nouvelles catégories pour chaque gagnant.

fonctionnement

L'un des gagnants, Adrian Cable, a présenté un émulateur Subleq, un ordinateur à instruction unique (OISC) qui peut être émulé très facilement. Le code source de l'émulateur est remarquablement court, avec seulement 366 octets.

#include<SDL3/SDL.h> #define o s[1&s[t=e++]?s[t]/4:t]/4,t b,y,t,e,s[3<<27],V[32],*w,**g;main(_){for(g =SDL_GetWindowSurface(w=SDL_CreateWindow(0, 800,512,!read(b,s,'frog')));_ =o=y=o=o;~_?~y ?e=1>(s[y]-=_[s])?t:*s&&++b>8e5?s[memcpy(3[ g],6[s]+s,25<<16),b=SDL_UpdateWindowSurface (w)]=4*e,*s/4:e:e:SDL_PollEvent(V)?y[s]=6[V ]*(1537-2**V):0)_^64||timespec_get(s+_,1);}

Le code utilise les bibliothèques SDL pour afficher des graphiques et peut générer un ensemble de Mandelbrot en couleurs, jouer à Pong et exécuter Linux et des applications.

analyse

Les gagnants du IOCCC ont présenté des programmes remarquables, tels que le simulateur de tube Nixie de Yusuke Endoh, qui affiche des chiffres en couleur en utilisant le code source lui-même comme mécanisme de sortie.

Le programme de Jonah Uellenberg, un jeu de Pong, est un quine, c'est-à-dire qu'il génère son propre code source comme sortie. Le programme peut être compilé et exécuté, et il reformate son propre code source pour afficher un nouveau jeu de Pong.

implications

Le IOCCC montre que les programmeurs C peuvent créer des programmes très courts et créatifs, mais également très complexes et difficiles à comprendre. Les gagnants de cette année ont présenté des programmes qui poussent les limites de la programmation C et démontrent l'ingéniosité et la créativité des programmeurs.