🏡 part2.nim

Day 04 part 2

var answer: Natural

func pairOverlaps(a, b: HashSet[int]): bool =
  return (a * b).len > 0

proc fillSet(a,b: int): HashSet[int] =
  result = initHashSet[int](b - a)
  for i in a..b: result.incl i

for l in "input.txt".lines:
  var a,b,c,d: int
  if not scanf(l, "$i-$i,$i-$i", a,b,c,d): continue
  if pairOverlaps(fillSet(a, b), fillSet(c, d)): answer.inc

Answer is: 835

import strformat, strutils, sets
import std/strscans
import nimib

const 
  DAY = 4
  PART = 2
  DOCNAME = fmt"d{DAY:02}p{PART}"

nbInit
nb.title = DOCNAME

nbText: fmt"""
# Day {DAY:02} part {PART}
"""

nbCode:
  var answer: Natural

  func pairOverlaps(a, b: HashSet[int]): bool =
    return (a * b).len > 0

  proc fillSet(a,b: int): HashSet[int] =
    result = initHashSet[int](b - a)
    for i in a..b: result.incl i

  for l in "input.txt".lines:
    var a,b,c,d: int
    if not scanf(l, "$i-$i,$i-$i", a,b,c,d): continue
    if pairOverlaps(fillSet(a, b), fillSet(c, d)): answer.inc

nbText: fmt"""
Answer is: **{answer}**
"""

nb.filename = fmt"../../html/{DOCNAME}.html"
nbSave