31 lines
876 B
Nim
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() |