23 lines
634 B
Forth

module advent_of_code.tasks.day_1.Star1
open System.IO
let stream = new StreamReader("tasks/day-1/input.txt")
let diff (line: string) =
let direction = if line.StartsWith("R") then 1 else -1
let count = (line.[1..] |> int)
direction * count
let solve (line: string) (start: int) =
let change = diff line
let newPos = (start + change) % 100
(newPos, if newPos = 0 then 1 else 0)
let rec main start zeroes =
let line = stream.ReadLine()
let newPos, newZeroes = solve line start
if stream.EndOfStream then
(newPos, zeroes + newZeroes)
else
main newPos (zeroes + newZeroes)