diff options
Diffstat (limited to 'aoc2017-gleam/src/aoc_2017/day_5.gleam')
-rw-r--r-- | aoc2017-gleam/src/aoc_2017/day_5.gleam | 48 |
1 files changed, 0 insertions, 48 deletions
diff --git a/aoc2017-gleam/src/aoc_2017/day_5.gleam b/aoc2017-gleam/src/aoc_2017/day_5.gleam deleted file mode 100644 index a0b9b80..0000000 --- a/aoc2017-gleam/src/aoc_2017/day_5.gleam +++ /dev/null @@ -1,48 +0,0 @@ -import gary.{type ErlangArray} -import gary/array -import gleam/int -import gleam/list -import gleam/result -import gleam/string - -pub fn parse(input: String) -> ErlangArray(Int) { - input - |> string.split("\n") - |> list.map(int.parse) - |> result.values() - |> array.from_list(default: 0) - |> array.make_fixed() -} - -pub fn pt_1(input: ErlangArray(Int)) { - next_step(input, 0, 0, part: 1) -} - -pub fn pt_2(input: ErlangArray(Int)) { - next_step(input, 0, 0, part: 2) -} - -fn next_step( - instructions: ErlangArray(Int), - pointer: Int, - step: Int, - part part: Int, -) { - case array.get(from: instructions, at: pointer) { - Ok(distance) -> { - let delta = delta(distance, part) - let assert Ok(updated_instructions) = - array.set(instructions, at: pointer, put: distance + delta) - next_step(updated_instructions, pointer + distance, step + 1, part) - } - Error(_) -> step - } -} - -fn delta(d: Int, part: Int) { - case part, d { - 1, _ -> 1 - _, n if n < 3 -> 1 - _, _ -> -1 - } -} |