aboutsummaryrefslogtreecommitdiff
path: root/2022/nim/day04
diff options
context:
space:
mode:
authorj-james2022-12-05 08:01:10 +0000
committerj-james2022-12-05 08:01:10 +0000
commit82be8473d21c15bc22c46cc4ba5463e3d2213c7d (patch)
treec09b49f5658b8363139ccc88825f1b2a5f882874 /2022/nim/day04
parentc278475cbbb71cbe182adcb1bc5776fa1f492655 (diff)
Day Four
Diffstat (limited to '2022/nim/day04')
-rw-r--r--2022/nim/day04/src/main.nim23
1 files changed, 23 insertions, 0 deletions
diff --git a/2022/nim/day04/src/main.nim b/2022/nim/day04/src/main.nim
new file mode 100644
index 0000000..bb024fb
--- /dev/null
+++ b/2022/nim/day04/src/main.nim
@@ -0,0 +1,23 @@
+# Day 4: Camp Cleanup
+import std/[os, strutils, sequtils, sugar]
+
+let input = paramStr(1).readFile().strip().split("\n")
+
+let assign = input.mapIt(it.split(","))
+ .mapIt(it.mapIt(it.split("-").map(parseInt)))
+
+func contains(a, b: seq[int]): bool =
+ return a[0] in b[0] .. b[1] and
+ a[1] in b[0] .. b[1] or
+ b[0] in a[0] .. a[1] and
+ b[1] in a[0] .. a[1]
+
+echo assign.filterIt(contains(it[0], it[1])).len
+
+func overlaps(a, b: seq[int]): bool =
+ return a[0] in b[0] .. b[1] or
+ a[1] in b[0] .. b[1] or
+ b[0] in a[0] .. a[1] or
+ b[1] in a[0] .. a[1]
+
+echo assign.filterIt(overlaps(it[0], it[1])).len