import std/[strutils, sequtils, sugar, algorithm] iterator parseElves(data: seq[string]): seq[string] = var items = newSeq[string]() for line in data: if line.isEmptyOrWhitespace: yield items items.setLen 0 else: items.add(line) const lines = readFile("day_01/day_01_input.txt").splitLines proc solveMostCalories() = var mostCalories = 0 for item in parseElves(lines): mostCalories = max(mostCalories, item.map(it => it.parseInt).foldl(a + b)) echo "Most calories: " & $mostCalories proc solveTop3() = var allElves = newSeq[int]() for inventory in parseElves(lines): allElves.add(inventory.map(it => it.parseInt).foldl(a + b)) allElves.sort(SortOrder.Descending) allElves.setLen(3) let top3Calories = allElves.foldl(a + b) echo "Top 3 calories: " & $top3Calories if isMainModule: solveMostCalories() solveTop3()