summary refs log tree commit diff homepage
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--2020/day17.c48
1 files changed, 48 insertions, 0 deletions
diff --git a/2020/day17.c b/2020/day17.c
new file mode 100644
index 0000000..6cab278
--- /dev/null
+++ b/2020/day17.c
@@ -0,0 +1,48 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+struct Dim {
+	char _[32][32][32];
+};
+static int neighbors(const struct Dim *d, int z, int y, int x) {
+	int active = 0;
+	for (int i = -1; i <= +1; ++i)
+	for (int j = -1; j <= +1; ++j)
+	for (int k = -1; k <= +1; ++k) {
+		if (!i && !j && !k) continue;
+		active += (d->_[z+i&31][y+j&31][x+k&31] == '#');
+	}
+	return active;
+}
+static struct Dim step(const struct Dim *prev) {
+	struct Dim next;
+	for (int z = 0; z < 32; ++z)
+	for (int y = 0; y < 32; ++y)
+	for (int x = 0; x < 32; ++x) {
+		int active = neighbors(prev, z, y, x);
+		if (prev->_[z][y][x] == '#') {
+			next._[z][y][x] = (active == 2 || active == 3 ? '#' : '.');
+		} else {
+			next._[z][y][x] = (active == 3 ? '#' : '.');
+		}
+	}
+	return next;
+}
+int main(void) {
+	struct Dim init = {0};
+	for (int y = 0;; ++y) {
+		if (scanf("%s\n", init._[0][y]) < 1) break;
+	}
+	struct Dim prev = init;
+	for (int i = 0; i < 6; ++i) {
+		struct Dim next = step(&prev);
+		prev = next;
+	}
+	int active = 0;
+	for (int z = 0; z < 32; ++z)
+	for (int y = 0; y < 32; ++y)
+	for (int x = 0; x < 32; ++x) {
+		active += (prev._[z][y][x] == '#');
+	}
+	printf("%d\n", active);
+}
span title='2021-02-09 21:06:24 -0500'>2021-02-09Show minutes left instead of battery percentageJune McEnroe 2021-02-09Set antialiasing and unhinting globallyJune McEnroe 2021-02-09Open youtube and twitch with mpvJune McEnroe 2021-02-09Add volume control bindings to cwmJune McEnroe sndioctl is nice and easy. 2021-02-09Use w3m to open other URLsJune McEnroe 2021-02-09Disable mouse mode in xtermJune McEnroe I do not ever want to use this feature. 2021-02-09Add pbcopy, pbpaste, open dispatch scriptsJune McEnroe 2021-02-09Use flags for pbd client behaviourJune McEnroe 2021-02-08Add macOS-like copy and paste to xtermJune McEnroe 2021-02-08Only update clock script every minuteJune McEnroe 2021-02-08Use 4M- for window resizing in cwmJune McEnroe 2021-02-08Tweak trackpad scaling, mouse accelerationJune McEnroe This feels more comfortable. 2021-02-08Use xsel in up and add it do install.shJune McEnroe 2021-02-07Swap root window coloursJune McEnroe 2021-02-07Add -X flag to install X stuff on OpenBSDJune McEnroe 2021-02-07Adjust brightness by smaller incrementsJune McEnroe 2021-02-07Fix cwm window cycling, move big by defaultJune McEnroe 2021-02-07Use class names for Foreground, Background, BorderColorJune McEnroe I'm not really sure what difference this makes, but it seems like the right thing to do to be generic? 2021-02-07Add simple battery status and clock to xsessionJune McEnroe I love how simple this is. 2021-02-07Set cursor theme and sizeJune McEnroe 2021-02-07Use scrot for up -s if no screencaptureJune McEnroe Still missing putting the URL in an X selection. 2021-02-07Enable mouse acceleration in XJune McEnroe 2021-02-07Set colours for Xt and cwmJune McEnroe And increase XTerm internalBorder. 2021-02-07Set urgency on bell in xtermJune McEnroe 2021-02-07Add bindings for brightness controlJune McEnroe Weirdly the Fn key doesn't change how the F row registers... I wonder if I can do something about that. 2021-02-07Set X key repeat rateJune McEnroe 2021-02-07Bump font size to 12June McEnroe 11 is what I use on macOS, but I feel like my eyes are working harder here. 2021-02-07Fully configure and rebind cwmJune McEnroe This is sort of a mix of trying to emulate macOS somewhat for my muscle memory and just rebinding some of the cwm defaults to use 4- rather than M-. 2021-02-07Add BintiJune McEnroe 2021-02-07Finish configuring xtermJune McEnroe 2021-02-06Enable tapping, reverse scroll, set scaling in wsconsctlJune McEnroe 2021-02-06Set root window to black on purple snowJune McEnroe 2021-02-06Add xmodmap configurationJune McEnroe 2021-02-06Add initial OpenBSD X configurationJune McEnroe cwm still needs a lot more rebinding, and I need to actually look at its other options. xterm definitely still needs some configuration, but I at least managed to get it to use a decent looking font. Very happy that OpenBSD includes Luxi Mono, which is what my usual font, Go Mono, is based on anyway. Still missing is xmodmap and such. 2021-02-06Add xterm output to schemeJune McEnroe