utils.gleam

 1import gleam/int
 2import gleam/string
 3import simplifile
 4
 5/// Read input for a given day. If example is True, reads from dayXX_example.txt
 6pub fn read_input(day: Int, example: Bool) -> Result(List(String), String) {
 7  let day_str = int.to_string(day) |> string.pad_start(2, "0")
 8  let suffix = case example {
 9    True -> "_example"
10    False -> ""
11  }
12  let path = "input/day" <> day_str <> suffix <> ".txt"
13
14  case simplifile.read(path) {
15    Ok(content) ->
16      Ok(
17        content
18        |> string.trim
19        |> string.split("\n"),
20      )
21    Error(e) -> Error("failed to read " <> path <> ": " <> string.inspect(e))
22  }
23}