aboutsummaryrefslogtreecommitdiff
path: root/aoc2023/build/packages/adglent/src/adglent.gleam
diff options
context:
space:
mode:
Diffstat (limited to 'aoc2023/build/packages/adglent/src/adglent.gleam')
-rw-r--r--aoc2023/build/packages/adglent/src/adglent.gleam56
1 files changed, 56 insertions, 0 deletions
diff --git a/aoc2023/build/packages/adglent/src/adglent.gleam b/aoc2023/build/packages/adglent/src/adglent.gleam
new file mode 100644
index 0000000..077d49d
--- /dev/null
+++ b/aoc2023/build/packages/adglent/src/adglent.gleam
@@ -0,0 +1,56 @@
+import simplifile.{type FileError}
+import gleam/list
+import gleam/string
+
+pub type Example(a) {
+ Example(input: String, answer: a)
+}
+
+pub fn inspect(value: a) -> String {
+ let inspected_value = string.inspect(value)
+ case
+ inspected_value
+ |> string.starts_with("\"")
+ {
+ True ->
+ inspected_value
+ |> string.drop_left(1)
+ |> string.drop_right(1)
+ False -> inspected_value
+ }
+}
+
+pub fn get_input(day: String) -> Result(String, FileError) {
+ simplifile.read("src/day" <> day <> "/input.txt")
+}
+
+pub fn get_test_folder(day: String) -> String {
+ "test/day" <> day
+}
+
+pub type Problem {
+ First
+ Second
+}
+
+pub fn get_part() -> Result(Problem, Nil) {
+ case start_arguments() {
+ ["1"] -> Ok(First)
+ ["2"] -> Ok(Second)
+ _ -> Error(Nil)
+ }
+}
+
+pub fn start_arguments() -> List(String) {
+ get_start_arguments()
+ |> list.map(to_string)
+}
+
+type Charlist
+
+/// Transform a charlist to a string
+@external(erlang, "unicode", "characters_to_binary")
+fn to_string(a: Charlist) -> String
+
+@external(erlang, "init", "get_plain_arguments")
+fn get_start_arguments() -> List(Charlist)