From 2a5e033b2d8882f50f2bfe4da25906c57f2a41f0 Mon Sep 17 00:00:00 2001 From: "H.J" Date: Thu, 7 Mar 2024 15:50:04 -0500 Subject: CodingQuest days 3 and 4 in Gleam --- codingquest2024/src/day3/data.txt | 1 + codingquest2024/src/day3/solution.gleam | 50 +++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 codingquest2024/src/day3/data.txt create mode 100644 codingquest2024/src/day3/solution.gleam (limited to 'codingquest2024/src/day3') diff --git a/codingquest2024/src/day3/data.txt b/codingquest2024/src/day3/data.txt new file mode 100644 index 0000000..ac7d887 --- /dev/null +++ b/codingquest2024/src/day3/data.txt @@ -0,0 +1 @@ +301 3 96 5 5 1 1 1 1 1 1 1 8 1 74 4 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 26 9 1 1 37 4 6 1 1 1 1 1 1 1 8 1 26 14 8 1 25 5 4 1 1 1 1 1 1 1 19 6 11 14 9 1 1 1 1 1 1 1 1 1 1 1 14 5 4 1 1 1 1 1 19 9 10 15 7 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 8 4 4 1 1 1 1 1 20 3 1 1 1 4 9 7 1 8 7 19 6 5 3 1 1 1 1 1 7 1 1 1 9 3 6 3 8 5 5 6 8 7 1 1 1 1 1 1 1 1 1 2 6 5 3 1 1 2 7 1 1 1 1 1 8 3 6 3 8 5 6 5 8 6 11 2 5 5 4 1 1 1 6 1 1 1 1 3 7 3 6 3 8 5 5 6 9 4 12 1 6 5 3 1 1 1 8 1 1 1 2 2 6 3 6 3 8 5 6 5 8 6 19 4 4 1 1 1 6 1 1 2 2 2 6 3 6 3 6 1 1 5 6 5 8 6 6 1 1 1 10 4 3 1 1 1 8 1 1 1 1 1 1 1 6 3 6 3 8 5 5 6 1 1 7 6 1 1 1 1 1 2 11 5 2 1 1 2 6 1 1 1 1 1 1 1 1 1 5 3 6 3 6 1 1 5 1 1 1 7 2 1 6 8 1 5 11 4 2 1 1 1 1 1 6 1 1 1 1 1 1 1 1 1 5 3 6 3 8 15 1 1 8 13 17 1 1 1 1 1 8 1 1 1 10 3 4 3 9 13 2 1 9 5 6 1 19 1 1 1 1 1 20 10 9 11 3 4 6 6 7 1 1 1 15 1 1 1 1 1 1 1 19 9 8 1 1 2 1 2 1 2 1 1 1 1 1 2 10 5 8 1 17 1 1 1 1 1 1 1 20 6 9 1 3 1 1 1 1 1 1 6 1 2 7 5 15 1 11 1 1 1 1 1 1 1 1 1 32 1 1 1 7 1 2 1 1 1 1 1 1 1 7 6 13 2 10 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 36 1 1 1 1 1 1 1 9 6 1 1 1 1 1 1 1 1 1 1 1 3 10 1 1 2 1 1 1 1 1 2 1 2 1 2 1 1 49 9 1 11 12 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 49 12 1 3 1 4 80 1 1 1 2 1 1 2 1 7 1 1 92 1 1 5 1026 2 1 4 9 10 14 3 1 1 1 1 7 1 1 1 10 2 1 2 26 9 7 14 11 11 1 6 8 6 26 10 7 14 12 17 7 1 1 6 24 1 1 4 2 3 6 6 4 6 10 18 7 8 18 1 4 5 4 3 5 5 7 6 9 5 1 1 1 1 1 1 1 1 1 1 10 8 16 1 1 1 1 1 1 1 1 4 4 3 5 5 8 5 9 5 20 7 16 1 2 1 2 1 1 4 6 2 5 5 8 5 10 3 22 7 17 1 1 1 2 4 2 1 3 3 5 5 8 5 9 5 19 2 1 6 19 1 1 4 1 3 4 2 5 6 6 6 9 14 11 1 1 6 20 4 2 3 3 4 5 5 6 6 8 6 1 1 1 7 10 7 20 4 2 4 3 3 6 7 2 1 1 6 8 6 3 1 1 6 9 1 1 6 19 4 1 5 4 3 5 16 9 4 7 7 9 6 19 3 2 6 3 4 7 13 10 1 1 1 10 6 7 7 17 5 1 7 4 3 10 1 1 1 1 6 11 1 11 6 7 1 1 6 16 4 2 7 3 4 14 6 24 5 7 1 1 5 16 4 4 1 2 1 7 2 14 5 24 7 6 1 1 5 16 12 1 1 3 4 12 6 25 6 7 1 1 5 16 14 4 3 12 5 26 7 6 1 1 5 17 13 3 4 11 6 26 6 7 1 1 5 17 13 3 4 10 6 15 1 11 5 8 7 17 2 1 7 1 1 4 1 1 2 9 6 12 7 7 6 8 1 1 6 18 19 9 5 14 6 5 1 1 6 9 1 1 1 1 1 1 1 17 1 1 1 1 16 28 9 1 7 1 1 8 9 20 1 2 1 1 8 1 1 30 15 1 1 9 1 1 3 1 2 68 1 1 6 1 1 91 1 2 1 1 1 1 1 233 4 4 4 88 5 3 4 88 4 4 4 85 2 2 2 93 3 10 4 82 4 4 2 4 4 14 2 65 5 3 4 2 5 13 3 58 12 3 11 12 5 32 11 12 13 4 11 12 9 16 26 6 14 7 10 13 14 2 35 2 13 15 5 15 60 20 3 18 36 7 15 46 21 21 8 56 5 34 1 21 \ No newline at end of file diff --git a/codingquest2024/src/day3/solution.gleam b/codingquest2024/src/day3/solution.gleam new file mode 100644 index 0000000..6314060 --- /dev/null +++ b/codingquest2024/src/day3/solution.gleam @@ -0,0 +1,50 @@ +import gleam/bit_array +import gleam/int +import gleam/io +import gleam/string +import gleam/string_builder.{type StringBuilder} +import simplifile + +pub fn main() { + let assert Ok(data) = simplifile.read(from: "./src/day3/data.txt") + + data + |> string.split(" ") + |> build_flat_image(" ", string_builder.new()) + |> bit_array.from_string() + |> print_next_slice() +} + +fn build_flat_image( + nums: List(String), + pixel: String, + acc: StringBuilder, +) -> String { + case nums { + [] -> string_builder.to_string(acc) + [h, ..t] -> { + let assert Ok(n) = int.parse(h) + let pixels = string.repeat(pixel, n) + build_flat_image(t, next_pixel(pixel), string_builder.append(acc, pixels)) + } + } +} + +fn print_next_slice(str: BitArray) -> Nil { + case str { + <> -> { + let assert Ok(out) = bit_array.to_string(slice) + io.println(out) + print_next_slice(rest) + } + _ -> Nil + } +} + +fn next_pixel(p: String) -> String { + case p { + " " -> "#" + "#" -> " " + _ -> panic + } +} -- cgit v1.2.3 From e1bf5bffe567324f66baef64d885afe11624ec17 Mon Sep 17 00:00:00 2001 From: "H.J" Date: Fri, 8 Mar 2024 12:15:34 -0500 Subject: fixing gitignore --- codingquest2024/src/day3/data.txt | 1 - 1 file changed, 1 deletion(-) delete mode 100644 codingquest2024/src/day3/data.txt (limited to 'codingquest2024/src/day3') diff --git a/codingquest2024/src/day3/data.txt b/codingquest2024/src/day3/data.txt deleted file mode 100644 index ac7d887..0000000 --- a/codingquest2024/src/day3/data.txt +++ /dev/null @@ -1 +0,0 @@ -301 3 96 5 5 1 1 1 1 1 1 1 8 1 74 4 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 26 9 1 1 37 4 6 1 1 1 1 1 1 1 8 1 26 14 8 1 25 5 4 1 1 1 1 1 1 1 19 6 11 14 9 1 1 1 1 1 1 1 1 1 1 1 14 5 4 1 1 1 1 1 19 9 10 15 7 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 8 4 4 1 1 1 1 1 20 3 1 1 1 4 9 7 1 8 7 19 6 5 3 1 1 1 1 1 7 1 1 1 9 3 6 3 8 5 5 6 8 7 1 1 1 1 1 1 1 1 1 2 6 5 3 1 1 2 7 1 1 1 1 1 8 3 6 3 8 5 6 5 8 6 11 2 5 5 4 1 1 1 6 1 1 1 1 3 7 3 6 3 8 5 5 6 9 4 12 1 6 5 3 1 1 1 8 1 1 1 2 2 6 3 6 3 8 5 6 5 8 6 19 4 4 1 1 1 6 1 1 2 2 2 6 3 6 3 6 1 1 5 6 5 8 6 6 1 1 1 10 4 3 1 1 1 8 1 1 1 1 1 1 1 6 3 6 3 8 5 5 6 1 1 7 6 1 1 1 1 1 2 11 5 2 1 1 2 6 1 1 1 1 1 1 1 1 1 5 3 6 3 6 1 1 5 1 1 1 7 2 1 6 8 1 5 11 4 2 1 1 1 1 1 6 1 1 1 1 1 1 1 1 1 5 3 6 3 8 15 1 1 8 13 17 1 1 1 1 1 8 1 1 1 10 3 4 3 9 13 2 1 9 5 6 1 19 1 1 1 1 1 20 10 9 11 3 4 6 6 7 1 1 1 15 1 1 1 1 1 1 1 19 9 8 1 1 2 1 2 1 2 1 1 1 1 1 2 10 5 8 1 17 1 1 1 1 1 1 1 20 6 9 1 3 1 1 1 1 1 1 6 1 2 7 5 15 1 11 1 1 1 1 1 1 1 1 1 32 1 1 1 7 1 2 1 1 1 1 1 1 1 7 6 13 2 10 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 36 1 1 1 1 1 1 1 9 6 1 1 1 1 1 1 1 1 1 1 1 3 10 1 1 2 1 1 1 1 1 2 1 2 1 2 1 1 49 9 1 11 12 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 49 12 1 3 1 4 80 1 1 1 2 1 1 2 1 7 1 1 92 1 1 5 1026 2 1 4 9 10 14 3 1 1 1 1 7 1 1 1 10 2 1 2 26 9 7 14 11 11 1 6 8 6 26 10 7 14 12 17 7 1 1 6 24 1 1 4 2 3 6 6 4 6 10 18 7 8 18 1 4 5 4 3 5 5 7 6 9 5 1 1 1 1 1 1 1 1 1 1 10 8 16 1 1 1 1 1 1 1 1 4 4 3 5 5 8 5 9 5 20 7 16 1 2 1 2 1 1 4 6 2 5 5 8 5 10 3 22 7 17 1 1 1 2 4 2 1 3 3 5 5 8 5 9 5 19 2 1 6 19 1 1 4 1 3 4 2 5 6 6 6 9 14 11 1 1 6 20 4 2 3 3 4 5 5 6 6 8 6 1 1 1 7 10 7 20 4 2 4 3 3 6 7 2 1 1 6 8 6 3 1 1 6 9 1 1 6 19 4 1 5 4 3 5 16 9 4 7 7 9 6 19 3 2 6 3 4 7 13 10 1 1 1 10 6 7 7 17 5 1 7 4 3 10 1 1 1 1 6 11 1 11 6 7 1 1 6 16 4 2 7 3 4 14 6 24 5 7 1 1 5 16 4 4 1 2 1 7 2 14 5 24 7 6 1 1 5 16 12 1 1 3 4 12 6 25 6 7 1 1 5 16 14 4 3 12 5 26 7 6 1 1 5 17 13 3 4 11 6 26 6 7 1 1 5 17 13 3 4 10 6 15 1 11 5 8 7 17 2 1 7 1 1 4 1 1 2 9 6 12 7 7 6 8 1 1 6 18 19 9 5 14 6 5 1 1 6 9 1 1 1 1 1 1 1 17 1 1 1 1 16 28 9 1 7 1 1 8 9 20 1 2 1 1 8 1 1 30 15 1 1 9 1 1 3 1 2 68 1 1 6 1 1 91 1 2 1 1 1 1 1 233 4 4 4 88 5 3 4 88 4 4 4 85 2 2 2 93 3 10 4 82 4 4 2 4 4 14 2 65 5 3 4 2 5 13 3 58 12 3 11 12 5 32 11 12 13 4 11 12 9 16 26 6 14 7 10 13 14 2 35 2 13 15 5 15 60 20 3 18 36 7 15 46 21 21 8 56 5 34 1 21 \ No newline at end of file -- cgit v1.2.3