Day 4
This commit is contained in:
31
day_01/solve.nim
Normal file
31
day_01/solve.nim
Normal file
@@ -0,0 +1,31 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user