summaryrefslogtreecommitdiff
path: root/6/part1.c
diff options
context:
space:
mode:
authorBond_009 <bond.009@outlook.com>2020-12-06 09:36:49 +0100
committerBond_009 <bond.009@outlook.com>2020-12-06 09:36:49 +0100
commit58b1ffeba8a66990d306ed15503955489caa4c94 (patch)
tree30b9f2668d55a570723f3ec572edba42a29e0e22 /6/part1.c
parentbc21ee3e67ff6ba544ae1520fde9a2a6803bddb1 (diff)
Add day 6
Diffstat (limited to '6/part1.c')
-rw-r--r--6/part1.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/6/part1.c b/6/part1.c
new file mode 100644
index 0000000..1b38192
--- /dev/null
+++ b/6/part1.c
@@ -0,0 +1,37 @@
+#include <stdio.h>
+
+int plane_count(const char *filename)
+{
+ FILE *file = fopen(filename, "r");
+
+ // Include space for newline and string terminator
+ char buffer[32] = { 0 };
+
+ int tot = 0;
+ unsigned int current = 0;
+
+ while (fgets(buffer, 32, file)) {
+ if (buffer[0] == '\n') {
+ tot += __builtin_popcount(current);
+ current = 0;
+
+ continue;
+ }
+
+ char *p = buffer;
+ do {
+ current |= 1 << (*p - 97);
+ } while (*++p != '\n');
+ }
+
+ tot += __builtin_popcount(current);
+
+ fclose(file);
+
+ return tot;
+}
+
+int main(int argc, char *argv[])
+{
+ printf("%i\n", plane_count(argv[argc - 1]));
+}