Files
Landon Curt Noll 09750f8899 release winning entries of IOCCC28 under the year 2024
Congratulations to:

* 2024/anders - Prize in sound coding - layered music generator
* 2024/burton - Prize in pentagrammatology - wordle hard mode solver
* 2024/cable1 - Prize in bot talk - LLM inference engine
* 2024/cable2 - Prize in murky waters - salmon recipe
* 2024/carlini - Prize in perfect timing - Intel 4004 emulation
* 2024/codemeow - Prize in tray planting - bonsai generator
* 2024/endoh1 - Prize in patient pointillism - slow ray tracer in CPP
* 2024/endoh2 - Prize in solid body physics - rotating rigid body simulation
* 2024/ferguson1 - Prize in diabolical logistics - Oregon trail pact with the devil
* 2024/ferguson2 - Prize in yil-tas - Navajo code talker translator
* 2024/howe - Nice accent eh-ward - mini vi
* 2024/kramer - Prize in linguistic arithmetic - natural language numerical calculator
* 2024/kurdyukov1 - Prize in phased periodicity - phase of the Moon
* 2024/kurdyukov2 - Prize in art restoration - JPEG artifact removal
* 2024/kurdyukov3 - Prize in virtual quietus - gaming VM and doom
* 2024/kurdyukov4 - Prize in embiggening - encode without literals
* 2024/maffiodo - Prize in creative interpretation - Jav\*script interpreter
* 2024/mills - Prize in ℤ₃ - Infocom v3 story interpreter
* 2024/stedolan - Best one liner - icon from MD5
* 2024/straadt - Prize in imitative rebooting - OpenRISC CPU and Linux
* 2024/tmarrec - Prize in cyclonic coding - 3D tornado simulation
* 2024/tompng - Prize in quasi bijection - vortex encryptor decryptor
* 2024/weaver - Sur prize - rickroll

Ran `make update` to perform the above.
 	new file:   2024/burton/.entry.json
2025-08-02 14:43:07 -07:00

77 lines
2.0 KiB
C

/*
* bytecheck.c - writes the location of each string in a single char * but
* ignores multibyte characters for a diff to make sure the locations are the
* same in both versions of the data file. This is much less important with
* mbcheck.c as that tool almost obsoletes it if it does not entirely.
*
* This version uses the source data file, data.src by default, and it reads one
* 'string' at a time; it does not read in the whole file at once. With the -i
* option it allows for another file. Redirecting to two different files allows
* for comparing them, though there will be some differences based on emojis in
* ASCII art (for one example) and differences in strings (for another).
*/
#include <string.h>
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <getopt.h>
#include <errno.h>
int main(int argc, char **argv)
{
FILE *fp = NULL;
size_t len = 0;
char *buf = NULL;
char *filename = "data.src";
int k;
int byte;
size_t i = 0;
while ((k = getopt(argc, argv, "i:")) != -1)
{
switch (k)
{
case 'i':
filename = optarg;
break;
case ':':
case '?':
exit(1);
break; /* this triggered an annoying warning but it's an extra sanity check */
}
}
errno = 0;
fp = fopen(filename, "r");
if (fp == NULL)
{
fprintf(stderr, "couldn't open data file: %s: %s\n", filename, strerror(errno));
exit(1);
}
/*
* i now starts out at 1 due to the way the padded file is
*/
i = 1;
while (getdelim(&buf, &len, '\0', fp) != -1)
{
printf("<%zu>\n", i);
for (k = 0; k[buf]; ++k)
{
byte = k[buf];
if ((byte & 0xE0) == 0xC0)
++k;
else if ((byte & 0xF0) == 0xE0)
k+= 2;
else if ((byte & 0xF8) == 0xF0)
k += 3;
else putchar(byte);
}
++i;
}
fclose(fp);
fp = NULL;
}