summary refs log tree commit diff homepage
path: root/2020
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--2020/day15.c42
1 files changed, 28 insertions, 14 deletions
diff --git a/2020/day15.c b/2020/day15.c
index f5ee806..1a6a867 100644
--- a/2020/day15.c
+++ b/2020/day15.c
@@ -1,21 +1,35 @@
 #include <stdio.h>
 #include <stdlib.h>
 int main(void) {
-	int nums[2048];
-	int len = 0;
-	while (0 < scanf("%d,", &nums[len])) {
-		len++;
+	static int turns[30000000];
+	int turn = 1;
+	int last, next;
+	scanf("%d,", &last);
+	while (0 < scanf("%d,", &next)) {
+		turns[last] = turn;
+		last = next;
+		turn++;
 	}
-	while (len < 2020) {
-		int last = nums[len-1];
-		int next = 0;
-		for (int i = len - 2; i >= 0; --i) {
-			if (nums[i] == last) {
-				next = len - 1 - i;
-				break;
-			}
+	while (turn != 2020) {
+		if (turns[last]) {
+			next = turn - turns[last];
+		} else {
+			next = 0;
 		}
-		nums[len++] = next;
+		turns[last] = turn;
+		last = next;
+		turn++;
 	}
-	printf("%d\n", nums[len-1]);
+	printf("%d\n", last);
+	while (turn != 30000000) {
+		if (turns[last]) {
+			next = turn - turns[last];
+		} else {
+			next = 0;
+		}
+		turns[last] = turn;
+		last = next;
+		turn++;
+	}
+	printf("%d\n", last);
 }
pan>shared.c: use die_errno() where appropriateJohn Keeping 2013-05-22html.c: die when write failsJohn Keeping 2013-05-22ui-log: add <span/> around commit decorationsJohn Keeping 2013-05-22Makefile: fix parallel "make test"John Keeping 2013-05-18cache.c: fix cache_lsJohn Keeping 2013-05-13t0109: "function" is a bash-ismJohn Keeping 2013-05-13New mailing list.Jason A. Donenfeld 2013-04-30ui-snapshot: do not access $HOMEJason A. Donenfeld 2013-04-27t0001: validate Git -rcN version numbers correctlyJohn Keeping 2013-04-27git: update to 1.8.2.2John Keeping 2013-04-17scan-tree: fix regression in section-from-path=-1John Keeping 2013-04-15t0001: ignore ".dirty" suffix on Git versionJohn Keeping 2013-04-15tests: set TEST_OUTPUT_DIRECTORY to the CGit test directoryJohn Keeping 2013-04-15t0109: test more URLsJohn Keeping 2013-04-10cgitrc.5.txt: Specify when scan-path must be defined before.Jason A. Donenfeld 2013-04-10ui-snapshot.c: Prepend "V" when guessing ref namesLukas Fleischer 2013-04-10t0107: Skip ZIP tests if unzip(1) isn't availableLukas Fleischer 2013-04-10tests/: Do not use `sed -i`Lukas Fleischer 2013-04-10Add branch-sort and repo.branch-sort options.Jason A. Donenfeld 2013-04-10t0109: chain operations with &&John Keeping 2013-04-10cgit.c: Do not restore unset environment variablesLukas Fleischer 2013-04-09t0107: Use `tar -z` for gzip'ed archivesLukas Fleischer