From 0416db0542c7e09b079e3b4cd56091d2b060eee8 Mon Sep 17 00:00:00 2001 From: Felix Van der Jeugt Date: Wed, 8 Dec 2021 08:37:36 +0100 Subject: [PATCH] day 8 part 1 --- day08/part1.lua | 21 +++++++++++++++++++++ utils.lua | 15 +++++++++++++++ 2 files changed, 36 insertions(+) create mode 100755 day08/part1.lua diff --git a/day08/part1.lua b/day08/part1.lua new file mode 100755 index 0000000..e232ba3 --- /dev/null +++ b/day08/part1.lua @@ -0,0 +1,21 @@ +#!/usr/bin/env luajit +require("utils") + +function isunique(v) + return #v == 2 or #v == 3 or #v == 4 or #v == 7 +end + +local entries = {} +local uniques = 0 +for line in io.lines(arg[3]) do + local words = split(line, " ") + local patterns = { unpack(words, 1, 10) } + local values = { unpack(words, 12, #words) } + table.insert(entries, { + patterns = patterns, + values = values, + }) + uniques = uniques + count(values, isunique) +end + +print(uniques) diff --git a/utils.lua b/utils.lua index 4e32290..9dae1cb 100644 --- a/utils.lua +++ b/utils.lua @@ -23,3 +23,18 @@ function foreach(t, f) t[k] = f(v) end end + +function printtable(t) + for k, v in pairs(t) do + io.write(k..":"..v.." ") + end + io.write("\n") +end + +function count(t, pred) + local count = 0 + for k, v in pairs(t) do + if pred(v) then count = count + 1 end + end + return count +end