diff options
author | j-james | 2022-12-05 08:01:10 +0000 |
---|---|---|
committer | j-james | 2022-12-05 08:01:10 +0000 |
commit | 82be8473d21c15bc22c46cc4ba5463e3d2213c7d (patch) | |
tree | c09b49f5658b8363139ccc88825f1b2a5f882874 /2022/nim/day04 | |
parent | c278475cbbb71cbe182adcb1bc5776fa1f492655 (diff) |
Day Four
Diffstat (limited to '2022/nim/day04')
-rw-r--r-- | 2022/nim/day04/src/main.nim | 23 |
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 |