This commit is contained in:
parent
41a34a2008
commit
45561fc5cb
Binary file not shown.
|
@ -0,0 +1,41 @@
|
|||
import
|
||||
std/strformat,
|
||||
std/strutils
|
||||
|
||||
import
|
||||
../../adventofcode
|
||||
|
||||
let input = adventofcode.getInput()
|
||||
|
||||
var score = 0
|
||||
|
||||
for pair in input.splitLines:
|
||||
let sepIdx = pair.find(',')
|
||||
assert sepIdx != -1
|
||||
|
||||
let range1Str = pair[0 ..< sepIdx]
|
||||
let range2Str = pair[sepIdx + 1 .. ^1]
|
||||
var range1: set[0 .. 65535]
|
||||
var range2: set[0 .. 65535]
|
||||
|
||||
for i in 0 .. 1:
|
||||
let rangeStr = block:
|
||||
if i == 0: range1Str
|
||||
else: range2Str
|
||||
let rangeStrSepIdx = rangeStr.find('-')
|
||||
assert rangeStrSepIdx != -1
|
||||
let rangeStart = parseInt rangeStr[0 ..< rangeStrSepIdx]
|
||||
let rangeEnd = parseInt rangeStr[rangeStrSepIdx + 1 .. ^1]
|
||||
if i == 0: range1 = {rangeStart .. rangeEnd}
|
||||
else: range2 = {rangeStart .. rangeEnd}
|
||||
|
||||
var total = range1 + range2
|
||||
when not defined(second):
|
||||
if range1.len == total.len or range2.len == total.len:
|
||||
score += 1
|
||||
else:
|
||||
if total.len != (range1.len + range2.len):
|
||||
score += 1
|
||||
|
||||
echo fmt"Answer: {score}"
|
||||
|
Loading…
Reference in New Issue