···
1
+
import gleam/bit_array
import gleam/io.{println}
···
import gleam/string.{trim}
8
-
fn look_and_say(input, output, last_char, last_char_count, i) {
9
-
let char = string.slice(input, i, 1)
10
-
case char == last_char {
11
-
True -> look_and_say(input, output, char, last_char_count + 1, i + 1)
11
+
output: List(BitArray),
12
+
last_char: BitArray,
16
+
let char = bit_array.slice(input, i, 1)
17
+
case char |> unwrap(<<>>) == last_char {
18
+
True -> look_and_say(input, output, last_char, last_char_count + 1, i + 1)
13
-
let output = output <> int.to_string(last_char_count) <> last_char
15
-
True -> look_and_say(input, output, char, 1, i + 1)
22
+
|> list.prepend(<<int.to_string(last_char_count):utf8>>)
23
+
|> list.prepend(last_char)
25
+
Ok(char) -> look_and_say(input, output, char, 1, i + 1)
fn look_and_say_helper(input) {
23
-
let char = string.slice(input, 0, 1)
24
-
look_and_say(input, "", char, 1, 1)
33
+
let char = bit_array.slice(<<input:utf8>>, 0, 1) |> unwrap(<<>>)
34
+
look_and_say(<<input:utf8>>, [], char, 1, 1)
37
+
|> bit_array.to_string
let input = read(from: "../input.txt") |> unwrap("") |> trim()
|> list.fold(input, fn(acc, i) {
48
+
True -> println(string.length(acc) |> int.to_string)
println(string.length(res) |> int.to_string)