+5
-9
2015/8/gleam/src/main.gleam
+5
-9
2015/8/gleam/src/main.gleam
···
6
6
import simplifile.{read}
7
7
8
8
pub fn get_mem_size(str, cur_size, i) {
9
-
let rec = fn(i, extend) { get_mem_size(str, cur_size + 1, i + extend) }
10
-
11
9
case string.slice(str, i, 2) {
12
10
"" -> cur_size
13
-
"\\\\" | "\\\"" -> rec(i + 1, 1)
14
-
"\\x" -> rec(i + 1, 3)
15
-
_ -> rec(i, 1)
11
+
"\\\\" | "\\\"" -> get_mem_size(str, cur_size + 1, i + 2)
12
+
"\\x" -> get_mem_size(str, cur_size + 1, i + 4)
13
+
_ -> get_mem_size(str, cur_size + 1, i + 1)
16
14
}
17
15
}
18
16
···
21
19
}
22
20
23
21
pub fn get_encoded_size(str, cur_size, i) {
24
-
let rec = fn(next_size) { get_encoded_size(str, next_size, i + 1) }
25
-
26
22
let char = string.slice(str, i, 1)
27
23
case char {
28
24
"" -> cur_size + 2
29
-
"\\" | "\"" -> rec(cur_size + 2)
30
-
_ -> rec(cur_size + 1)
25
+
"\\" | "\"" -> get_encoded_size(str, cur_size + 2, i + 1)
26
+
_ -> get_encoded_size(str, cur_size + 1, i + 1)
31
27
}
32
28
}
33
29