Files
advent-of-code-2022/day_01/day_01.nim
2022-12-17 08:25:36 +01:00

31 lines
876 B
Nim

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()