summary refs log tree commit diff homepage
diff options
context:
space:
mode:
-rw-r--r--2020/day08.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/2020/day08.c b/2020/day08.c
new file mode 100644
index 0000000..87b4585
--- /dev/null
+++ b/2020/day08.c
@@ -0,0 +1,29 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+static struct Ins {
+	char op[4];
+	int arg;
+} prog[1024];
+static int acc;
+static int pc;
+static void step(void) {
+	if (!strcmp(prog[pc].op, "acc")) {
+		acc += prog[pc].arg;
+	} else if (!strcmp(prog[pc].op, "jmp")) {
+		pc += prog[pc].arg;
+		return;
+	}
+	pc++;
+}
+int main(void) {
+	int i = 0;
+	while (EOF != scanf("%s %d\n", prog[i].op, &prog[i].arg)) {
+		i++;
+	}
+	int ran[1024] = {0};
+	while (!ran[pc]++) {
+		step();
+	}
+	printf("%d\n", acc);
+}