my solutions to advent of code
aoc advent-of-code

:( cant have it the nice way because gleam doesnt know that it should turn that into a loop

aylac.top b3ae54d5 5bd9f564

verified
Changed files
+5 -9
2015
8
gleam
+5 -9
2015/8/gleam/src/main.gleam
···
import simplifile.{read}
pub fn get_mem_size(str, cur_size, i) {
-
let rec = fn(i, extend) { get_mem_size(str, cur_size + 1, i + extend) }
-
case string.slice(str, i, 2) {
"" -> cur_size
-
"\\\\" | "\\\"" -> rec(i + 1, 1)
-
"\\x" -> rec(i + 1, 3)
-
_ -> rec(i, 1)
}
}
···
}
pub fn get_encoded_size(str, cur_size, i) {
-
let rec = fn(next_size) { get_encoded_size(str, next_size, i + 1) }
-
let char = string.slice(str, i, 1)
case char {
"" -> cur_size + 2
-
"\\" | "\"" -> rec(cur_size + 2)
-
_ -> rec(cur_size + 1)
}
}
···
import simplifile.{read}
pub fn get_mem_size(str, cur_size, i) {
case string.slice(str, i, 2) {
"" -> cur_size
+
"\\\\" | "\\\"" -> get_mem_size(str, cur_size + 1, i + 2)
+
"\\x" -> get_mem_size(str, cur_size + 1, i + 4)
+
_ -> get_mem_size(str, cur_size + 1, i + 1)
}
}
···
}
pub fn get_encoded_size(str, cur_size, i) {
let char = string.slice(str, i, 1)
case char {
"" -> cur_size + 2
+
"\\" | "\"" -> get_encoded_size(str, cur_size + 2, i + 1)
+
_ -> get_encoded_size(str, cur_size + 1, i + 1)
}
}