AdventOfCode/2019/days/2/2/main.c

75 lines
1.3 KiB
C

#include <stdio.h>
#include <stdlib.h>
#define MAGICNUMBER 19690720
int main(void) {
int i, vi, c, wl, v[256];
char buffer[16];
for (i=0, vi=0; (c=getchar())!=EOF || wl == 1;) {
switch (c) {
case '9':
case '8':
case '7':
case '6':
case '5':
case '4':
case '3':
case '2':
case '1':
case '0': buffer[i++] = c;
wl=1;
default: break;
}
if (c == ',' || c==EOF) {
buffer[i] = '\0';
i=0;
wl=0;
if (buffer[0] != '\0') {
v[vi++] = atoi(buffer);
}
}
}
v[vi] = '\0';
int a, b, wv[256];
printf("\e[1;1H\e[2J\e[1;0HRunning\n");
for (a=1; a<99; a++) {
wv[0] = 0;
printf("\033[2;0HA:%i", a);
for (b=1; b<99; b++) {
for (int x=0; x<vi; x++) {
wv[x] = v[x];
wv[x+1] = '\0';
}
printf("\033[3;0HB:%i", b);
wv[1] = a;
wv[2] = b;
for (i=0; i < vi-3;) {
switch (wv[i]) {
case 1:
wv[wv[i+3]] = wv[wv[i+1]] + wv[wv[i+2]];
break;
case 2:
wv[wv[i+3]] = wv[wv[i+1]] * wv[wv[i+2]];
break;
case 99:
break;
default: return 1;
}
if (wv[i] == 99) {
break;
}
printf("\033[4;0HC:%i\n", i);
i=i+4;
}
if (wv[0]==MAGICNUMBER) {
printf("\e[1;1H\e[2JBingo! %i\n", 100*a+b);
return 0;
}
}
}
printf("Bad luck :C\n");
return 1;
}