35 lines
1.1 KiB
Nim
35 lines
1.1 KiB
Nim
|
import std/strutils
|
||
|
import std/sequtils
|
||
|
|
||
|
proc run04_2(): string =
|
||
|
const input = staticRead"../input/day04.txt"
|
||
|
|
||
|
var ctr = 0
|
||
|
|
||
|
let lines = splitLines(input).filter(proc(p: string): bool = p != "")
|
||
|
|
||
|
for line in lines:
|
||
|
|
||
|
let pairs = line.split(",")
|
||
|
let sec1s = parseInt(pairs[0].split("-")[0])
|
||
|
let sec1e = parseInt(pairs[0].split("-")[1])
|
||
|
let sec2s = parseInt(pairs[1].split("-")[0])
|
||
|
let sec2e = parseInt(pairs[1].split("-")[1])
|
||
|
|
||
|
if (sec1s <= sec2s and sec2s <= sec1e) or (sec1s <= sec2e and sec2e <= sec1e):
|
||
|
ctr+=1
|
||
|
echo "[", sec2s, "..", sec2e, "]", " overlaps ", "[", sec1s, "..", sec1e, "]"
|
||
|
elif (sec2s <= sec1s and sec1s <= sec2e) or (sec2s <= sec1e and sec1e <= sec2e):
|
||
|
ctr+=1
|
||
|
echo "[", sec2s, "..", sec2e, "]", " overlaps ", "[", sec1s, "..", sec1e, "]"
|
||
|
else:
|
||
|
echo "[", sec1s, "..", sec1e, "]", " nolap ", "[", sec2s, "..", sec2e, "]"
|
||
|
|
||
|
return intToStr(ctr)
|
||
|
|
||
|
when not defined(js):
|
||
|
echo run04_2()
|
||
|
else:
|
||
|
proc js_run04_2(): cstring {.exportc.} =
|
||
|
return cstring(run04_2())
|