···
import gleam/io.{println}
···
import gleam/string.{trim}
-
fn look_and_say(input, output, last_char, last_char_count, i) {
-
let char = string.slice(input, i, 1)
-
case char == last_char {
-
True -> look_and_say(input, output, char, last_char_count + 1, i + 1)
-
let output = output <> int.to_string(last_char_count) <> last_char
-
True -> look_and_say(input, output, char, 1, i + 1)
fn look_and_say_helper(input) {
-
let char = string.slice(input, 0, 1)
-
look_and_say(input, "", char, 1, 1)
let input = read(from: "../input.txt") |> unwrap("") |> trim()
|> list.fold(input, fn(acc, i) {
println(string.length(res) |> int.to_string)
···
import gleam/io.{println}
···
import gleam/string.{trim}
+
output: List(BitArray),
+
let char = bit_array.slice(input, i, 1)
+
case char |> unwrap(<<>>) == last_char {
+
True -> look_and_say(input, output, last_char, last_char_count + 1, i + 1)
+
|> list.prepend(<<int.to_string(last_char_count):utf8>>)
+
|> list.prepend(last_char)
+
Ok(char) -> look_and_say(input, output, char, 1, i + 1)
fn look_and_say_helper(input) {
+
let char = bit_array.slice(<<input:utf8>>, 0, 1) |> unwrap(<<>>)
+
look_and_say(<<input:utf8>>, [], char, 1, 1)
let input = read(from: "../input.txt") |> unwrap("") |> trim()
|> list.fold(input, fn(acc, i) {
+
True -> println(string.length(acc) |> int.to_string)
println(string.length(res) |> int.to_string)