So everybody just LLM'd this, right?
I think you can answer your own question
Reading last years entries, this image decompression oneliner outputs its own logo when passed the hash of its source code?! Pretty neat.
"While terseness was preferred over obscurity, this program hopefully still lives down to IOCCC’s usual standards of clarity."
“Several variants of this program were considered. Several.”
(They must have tried billions of variants to find the match on md5sum. Luckily, you don’t have to compile or run the code to find that match)
> By an astonishing coincidence, the number of bits in the input format is approximately the log2 of the number of MD5 evaluations that a five-year-old GPU can do in an hour.
> There are no magic numbers in the program, and bits of the input map to pixels of the output in a regular way, yet it outputs a nice icon for itself, if given the MD5 hash of its own source. How?
I'm assuming the fact that MD5 is completely broken plays into it somehow...
I read this to mean he calculated a matching hash on his GPU, in order to tune the magic constants of his app to produce the desired output.
> There are no magic numbers in the program
There are several:
long z,x,G;main(){for(puts("P1\n80 80"),scanf("%10lx",&G);3-z/2160;x=++z%81/8-5)putchar(5>x?!(16>>(x^-(x<1))+1&G<<5>>z/648*5)^49:10);}Changing any of the other numbers would surely impact the function of the program, I don't think you could get to a 40 bit brute-force there.
I think the brute-force was done by making non-semantic changes like variable names and changing the order of the declarations.
Yep. You have 17 bits of entropy just in the names of three single-letter variables.
This is right there in the mad scientist territory.
Incredible, pure bananas.
"Recalcitrant code."
Thus ended the use of Lattus-C, and Microsoft-C for a least 4 years. We went with Manx-C, and were able to complete all the assignments for that semester.
He saved the best for later. "Read 'on trusting trust'" which blew all out minds.
You can hide whole universes inside of a C compiler.
From : https://github.com/ioccc-src/winner/blob/master/2024/kurdyuk...
This code draws the current moon phase to the console. So if you’re a lycanthrope, you can monitor the phase of the moon.
#include <time.h> #include <stdio.h>
a,b=44,x,
y,z;main() {!a
?a=2551443,x= -b
,y=2-b,z=((time (
0)-592531)%a<<9)/ a
:putchar(++x>=a?x =
-b,y+=4,10:x<0?x= x
*x+y*y<b*b?a=1-x, -
1:x+1,32:"#."[( x
<a*(~z&255)>> 8)
^z>>8]),y> b?0
:main();}https://www.ioccc.org/2000/natori/index.html
https://github.com/ioccc-src/winner/blob/master/2000/natori/...
It's interesting how the same 2551443 bitmask appears in the time calculation for both.
cc -Wno-implicit-int -Wno-implicit-function-declaration phase.c && ./a.out Rule 2
Rule 2 requires that your submission satisfy BOTH Rule 2a AND Rule 2b.
You may check your code with respect to Rule 2a and Rule 2b prior to
submitting your code by giving the filename as a command like
argument to the iocccsize(1) tool. For example:
iocccsize prog.c
The source to iocccsize(1) may be found in the mkiocccentry repo.
See also the FAQ on “how to further test your submission” for more more thorough testing, including Rule 2.
See also Rule 2a, Rule 2b, and Rule 17.
Rule 2a
The size of your program source should NOT exceed 4993 bytes.
Rule 2b
When the filename of your program source is given as a
command line argument to the latest version of the official
IOCCC size tool (hereby referred to as iocccsize(1)),
the value printed should NOT exceed 2503.
See also Rule 17.edit: Nevermind, I misread the original rule.
Also, I like reading the "flavor text" about the elves and whatnot. Encouraging people to ignore it seems at odds with the design of AoC.
Edit: Before posting this, I looked to see if there was a repository I could contribute to to fix it, but I can't find one
https://github.com/ioccc-src/winner/blob/master/2005/persano...
I actually had another entry that I felt had much more clever coding that did some nice sixel animations but from what I understand there were many entries also doing that this year
In any case, wasn't using w3m/lynx this time, so just whitelisted the 2 domains github requires.
In what scenarios is a GitHub clone URL ever different from what one what “guess”?
I’m genuinely curious — all of the GitHub git clone URLs I’ve encountered were the exact same format. (https://github.com/$user/$repository with an optional “.git” at the end of the URL)
#include <stdio.h>
/
* PPM Pattern Generator * * This program generates a 80x80 black and white PPM image based on a * hexadecimal input pattern. The pattern is rendered as ASCII art using * bit manipulation to determine which pixels are on or off. /int main() { long pixel_index = 0; // Current pixel being processed (0-6399 for 80x80) long horizontal_offset; // Horizontal position relative to center long hex_pattern; // Input hexadecimal pattern
// Output PPM header for 80x80 black and white image
// P1 = ASCII black and white format
// 80 80 = width and height
puts("P1\n80 80");
// Read hexadecimal pattern from user (up to 10 hex digits)
scanf("%10lx", &hex_pattern);
// Process each pixel in the 80x80 image
// Continue until we've processed all pixels
// The condition (3 - pixel_index/2160) continues while pixel_index < 6480
// This accounts for 80x80 = 6400 pixels plus some margin
for (; 3 - pixel_index/2160; ) {
// Move to next pixel and calculate horizontal offset from center
pixel_index++;
horizontal_offset = (pixel_index % 81) / 8 - 5;
// Determine what to output for this pixel
if (horizontal_offset < 5) {
// We're in the main pattern area (central region)
// Complex bit manipulation to determine pixel state:
// 1. Calculate bit position based on horizontal offset
int bit_pos = (horizontal_offset ^ -(horizontal_offset < 1)) + 1;
// 2. Extract relevant bits from the pattern
// hex_pattern << 5 shifts the pattern
// >> (pixel_index/648*5) selects which part of pattern to use based on vertical position
long pattern_bits = (hex_pattern << 5) >> (pixel_index/648 * 5);
// 3. Check if the specific bit is set
int bit_is_set = (16 >> bit_pos) & pattern_bits;
// 4. Invert the bit and XOR with '1' (ASCII 49) to get '0' or '1'
char pixel_char = (!bit_is_set) ^ 49;
putchar(pixel_char);
} else {
// We're outside the pattern area - output newline
putchar(10); // ASCII 10 = newline character
}
}
return 0;
}/
* USAGE: * Compile: gcc -o pattern_gen pattern_gen.c * Run: ./pattern_gen * Input: Enter a hexadecimal number (e.g., 1234ABCD) * Output: PPM format image data that can be saved to a .pbm file * * EXAMPLE: * ./pattern_gen > output.pbm * Then input: DEADBEEF * * The resulting .pbm file can be viewed with image viewers that support PPM format * or converted to other formats using tools like ImageMagick. */The "salmon" string is mostly unicode TAG characters[1] which contains the printed string followed by 2 En Quad[2], which not so obviously has the effect that `putchar` returns 0 when given as it's argument. Then the defines aren't what they seem, and the body of main is never executed because it's surrounded by a while loop where the condition is 0 (due to putchar() with en quad).
What is K&C
Is this a typo
> This is an emulator capable of running a full modern Linux system with a minimal set of features.
> A full-fledged C64 emulator is included.
You really outdid yourself, didn't you?A particularly good language for writing bad code? Quite the euphemism.
Replace the text to the right of the Start button with: doomp.bin
Click the Start button.
Doom will launch in your browser.
https://github.com/ioccc-src/winner/blob/master/2024/burton/...
#include <stdarg.h>
#include <stdlib.h>
# include <stdio.h>
#define J(J) for (\
_ j=0; j<5; ++j) J;
#define/*IOCCC*/I \
\
\
\
_ W,_ O,_ R,_ D,_*L,_*E
#define A(A )for(_ j=0; !o&&j<5&&(k = t[l][j]); ++j)A&&++o;
typedef/* ; ; */void q; typedef int _ ; typedef char/* */p;
struct{ p a [257],b[9][ 5],c[5],d[5 ]; _ e,f; } i;p t[78557
][5]; _ s,a []={ 9,9,9, 10,13,18,27 ,39,55,1,18 ,2,1,1,35,2
,19,18,1,52 ,36,35,20,3 ,2,19,18,18 ,69,2,53,1, 52,37,3,20,
36,19,35,18 ,52,86,2,53 ,70,1,69,38 ,4,21,3,37, 19,36,35,25
,10,+17,15, 26,9,11,12, 23,2,06,18, 13,20,22,14 ,1,24,19,21
,16,5,7,4,8 ,3},u=' ';_ W(p*a,p*b){ for(p*c=a+5 ;a<c;)*a++=
*b++;return 0; } _ O(p* a,p b){ p*c =a+5; for(; a<c&&*a-b;)
++a; return a<c?5-(a-c) :0; } _ R(p *a, ... ) { va_list b ;
va_start(b, a); vprintf (a,b); exit (1); } q D( p*a){ if (s
==sizeof t/ 5)R("limit" " %d\n",s); p*b=s[t],i, j; for(i=j=
0; i<7&&!j; ++i)if(!(j= *a==10?i:0) )*b++=u|* a ++; j-5||++
s; } q L(p* a,_ b){ for (_ l=0,o=0, k; l<s; o=0 ){ A(i.c[j]
&&k-i.c[j]) A(i.a[k])A( i.d[j]&&!O( t[l],i.d[j] ))for(_ f=i
.e; f--&&!o ; )A(i.b[f] [j]==k)if(! o){ J(o+=t[ l][j]==a[j]
)o=o==5?b!= 5:0; } o?W( t[l],t[--s] ) :++l; } } _ e(I){ for
(; O<D; )L[ R++]=E[O+++ D*W];return R; } q S( _ O,_*l){ for
(_*s=&a[a[O ]],*e=a[-~O ]+s-a[O]; s <e; ){ _ i= *s++,j=i&15
,k=l[i>>=4] <l[+j]?k=l[ i],l[i]=l[j ],l[j]=k:i; } } _ o(I){
_ o=0, w=0; for(; o<D&w <D; )L[R++] =E[o+D*W]>= E[w+D*O]?E[
o+++D*W]:E[ w +++ D*O]; return e(O, w,e(W,o,R,D ,L,E),D,L,E
); } q l( _ n,_*f){ for (_* e=f+26, i,j; f<e&&* f>u; f+= i)
{ for(i=1,j =*f/u; i <n &&f[i]>>5== j; )++i;for (j=0; j <i;
++j)f[j] &= 31,f[j]|=a[ f[j]+a[~-9] ]<<5; S(i,f ); } } q v(
_ a,_*w,_*k ){ o(2,3,o( 0,1,0,a,w,k ),a,w,k); o (0,1,0,a+a,
k,w); l(a,k ); } p*E(p* d){ _ l,j,k =u,b[u] ,c[ k]; p*e[97]
[5 ]={ 0} ; for(l=0; l< k; ++l)c[l] =l; for(l=0 ; l<s; ++l)
J(c[t[l][j] -97]+=k)for (l= j=7; j< 22; j+=l)S( l,c+j-l); v
(l,b,c);for (l= 0; l<k; ++l)b[c[l]& ~-k]=l; for (k*=3,l= 0;
l<s; ++l) { _ i=0; J( i +=b[t[l][j] -97])if(i<k )J(e[i][ j]
||(e[i][j]= t[l],j=4))} for(l=0; l< k; ++l)for( p*b=0,k=j=0
; j<5&&(b=e [l][j]); k= !++j){ p c[ 32]={0} ; d =*d-120?d:b
; if(s>2)J( k+=++c[b[j] -97]>1); if (!k) return b; } return
d; } p*r(p* b){ _ k, l; for(_ j=k=l =0; j<5; ++ j) { signed
char n=b[j] ,o=b[j-~5]+ ~0x66; (o?i .b[i.e]:i.c )[j]=n; !o?
i.a[n]=!++k :O(i.d,n)|| (*(o<0?&i.a [n]:&i.d[i. f++])=l=n);
} i.e += !! l; L(b, k); return E("" "xyzzy"); } _ main(_ n,
char**v){ p *j=i .c-97, *l=j-11; n- 2?R("usage" ": %s dict"
"\n",* v):5 ; ; FILE*k= fopen(*++v, "r"); if(!k ) return //
perror(*v), 1; ; while( fgets(j, u^ n,k)) D(j); fclose (k);
; ; setbuf( stdout, 0); while(~-s){ printf("? " ); while(~(
n=getchar() )&&n-10&&l< j)*l++=n; l <j&&R("inp" "ut: guess"
" color\n") ;printf("%" ".5s\n",r(l =j+~10)); } return 0; }https://www.ioccc.org/2001/herrmann2/index.html
(It's an ASCII 3D-Image generator - and the code itself is a 3D-Image)
char*d,A[9876];char*d,A[9876];char*d,A[9876];char*d,A[9876];char*d,A[9876];char
e;b;*ad,a,c; te;b;*ad,a,c; te;*ad,a,c; w,te;*ad,a, w,te;*ad,and, w,te;*ad,
r,T; wri; ;*h; r,T; wri; ;*h; r; wri; ;*h;_, r; wri;*h;_, r; wri;*har;_, r; wri
;on; ;l ;i(V) ;on; ;l ;i(V) ;o ;l ;mai(V) ;o ;mai(n,V) ;main (n,V)
{-!har ; {-!har ; {har =A; {h =A;ad =A;read
(0,&e,o||n -- +(0,&e,o||n -- +(0,&o||n ,o-- +(0,&on ,o-4,- +(0,n ,o-=94,- +(0,n
,l=b=8,!( te-*A,l=b=8,!( te-*A,l=b,!( time-*A,l=b, time)|-*A,l= time(0)|-*A,l=
~l),srand (l),~l),srand (l),~l),and ,!(l),~l),a ,!(A,l),~l) ,!(d=A,l),~l)
,b))&&+((A + te,b))&&+((A + te,b))+((A -A+ te,b))+A -A+ (&te,b+A -A+(* (&te,b+A
)=+ +95>e?(*& c)=+ +95>e?(*& c) +95>e?(*& _*c) +95>(*& _*c) +95>(*&r= _*c) +95>
5,r+e-r +_:2-195,r+e-r +_:2-195+e-r +_:2-1<-95+e-r +_-1<-95+e-r ++?_-1<-95+e-r
|(d==d),!n ?*d||(d==d),!n ?*d||(d==d),!n ?*d||(d==d),!n ?*d||(d==d),!n ?*d||(d=
*( (char**)+V+ *( (char)+V+ *( (c),har)+V+ (c),har)+ (V+ (c),r)+ (V+ ( c),
+0,*d-7 ) -r+8)+0,*d-7 -r+8)+0,*d-c:7 -r+80,*d-c:7 -r+7:80,*d-7 -r+7:80,*d++-7
+7+! r: and%9- +7+! rand%9-85 +7+! rand%95 +7+!! rand%95 +7+ rand()%95 +7+ r
-(r+o):(+w,_+ A-(r+o)+w,_+*( A-(r+o)+w,_+ A-(r=e+o)+w,_+ A-(r+o)+wri,_+ A-(r+o)
+(o)+b)),!write+(o)+b,!wri,(te+(o)+b,!write+(o=_)+b,!write+(o)+b,!((write+(o)+b
-b+*h)(1,A+b,!!-b+*h),A+b,((!!-b+*h),A+b,!!-b+((*h),A+b,!!-b+*h),A-++b,!!-b+*h)
, a >T^l,( o-95, a >T,( o-=+95, a >T,( o-95, a)) >T,( o-95, a >T,(w? o-95, a >T
++ &&r:b<<2+a ++ &&b<<2+a+w ++ &&b<<2+w ++ ) &&b<<2+w ++ &&b<<((2+w ++ &&
!main(n*n,V) , !main(n,V) , !main(+-n,V) ,main(+-n,V) ) ,main(n,V) ) ,main),(n,
l)),w= +T-->o +l)),w= +T>o +l)),w=o+ +T>o +l,w=o+ +T>o;{ +l,w=o+T>o;{ +l,w &=o+
!a;}return _+= !a;}return _+= !a;}return _+= !a;}return _+= !a;}return _+= !a;}
_kb•6mo ago
4pkjai•6mo ago
rawling•6mo ago
This page explicitly links to name/index.html for each submission rather than just name, an ironic waste of bytes given the subject matter.