my solutions to advent of code
aoc
advent-of-code
1import gleam/bit_array
2import gleam/crypto.{Md5, hash}
3import gleam/int.{to_string}
4import gleam/io.{println}
5import gleam/result.{unwrap}
6import gleam/string.{trim}
7import simplifile.{read}
8
9pub fn find_first_with_leading(input: String, leading: String, i: Int) {
10 let result =
11 hash(Md5, <<{ input <> to_string(i) }:utf8>>)
12 |> bit_array.base16_encode
13 |> string.starts_with(leading)
14 case result {
15 True -> i
16 False -> find_first_with_leading(input, leading, i + 1)
17 }
18}
19
20pub fn main() {
21 let input = read(from: "../input.txt") |> unwrap("") |> trim()
22 println(find_first_with_leading(input, "00000", 0) |> to_string)
23 println(find_first_with_leading(input, "000000", 0) |> to_string)
24}