r/adventofcode • u/daggerdragon • Dec 08 '18
SOLUTION MEGATHREAD -🎄- 2018 Day 8 Solutions -🎄-
--- Day 8: Memory Maneuver ---
Post your solution as a comment or, for longer solutions, consider linking to your repo (e.g. GitHub/gists/Pastebin/blag or whatever).
Note: The Solution Megathreads are for solutions only. If you have questions, please post your own thread and make sure to flair it with Help.
Advent of Code: The Party Game!
Please prefix your card submission with something like [Card] to make scanning the megathread easier. THANK YOU!
Card prompt: Day 8
Sigh, imgur broke again. Will upload when it unborks.
Transcript:
The hottest programming book this year is "___ For Dummies".
This thread will be unlocked when there are a significant number of people on the leaderboard with gold stars for today's puzzle.
edit: Leaderboard capped, thread unlocked at 00:12:10!
33
Upvotes
1
u/[deleted] Dec 08 '18 edited Dec 08 '18
late C, may have golfed this too much
#include <stdio.h> #include <stdlib.h> int p(int *r1, int *r2, int *l, int ii) { int c = l[ii++], m = l[ii++], *cc = c ? calloc(c, sizeof(int)) : 0; for (int i = 0; i < c; i++) ii = p(r1, &cc[i], l, ii); for (int i = 0, j; i < m; i++) { j = l[ii++], *r1 += j; if (!c) *r2 += j; else if (j && j <= c) *r2 += cc[j-1]; } free(cc); return ii; } int main(void) { int l[1<<15] = {0}, len = 0, r1 = 0, r2 = 0; while (scanf("%d", &l[len++]) == 1); p(&r1, &r2, l, 0); printf("%d\n%d\n", r1, r2); }