+45
-12
2025/3/gleam/src/main.gleam
+45
-12
2025/3/gleam/src/main.gleam
···
24
list.range(2, 1)
25
|> list.fold(#(0, bank), fn(acc, i) {
26
let #(number, bank) = acc
27
-
let bank_find = case i {
28
-
2 ->
29
-
bank
30
-
|> list.reverse
31
-
|> list.drop(1)
32
-
|> list.reverse
33
-
_ -> bank
34
-
}
35
let max =
36
bank_find
37
|> list.max(int.compare)
···
45
#(
46
number
47
+ max
48
-
* case i {
49
-
2 -> 10
50
-
_ -> 1
51
-
},
52
list.drop(bank, max_loc + 1),
53
)
54
})
···
24
list.range(2, 1)
25
|> list.fold(#(0, bank), fn(acc, i) {
26
let #(number, bank) = acc
27
+
let bank_find =
28
+
bank
29
+
|> list.reverse
30
+
|> list.drop(i - 1)
31
+
|> list.reverse
32
+
33
+
let max =
34
+
bank_find
35
+
|> list.max(int.compare)
36
+
|> result.unwrap(list.last(bank) |> result.unwrap(0))
37
+
38
+
let max_loc =
39
+
bank
40
+
|> list.index_map(fn(n, i) { #(n, i) })
41
+
|> list.key_find(max)
42
+
|> result.unwrap(0)
43
+
#(
44
+
number
45
+
+ max
46
+
* float.round(
47
+
int.power(10, int.to_float(i - 1)) |> result.unwrap(0.0),
48
+
),
49
+
list.drop(bank, max_loc + 1),
50
+
)
51
+
})
52
+
acc + n
53
+
})
54
+
|> int.to_string
55
+
|> io.println
56
+
57
+
input
58
+
|> list.fold(0, fn(acc, bank) {
59
+
let #(n, _) =
60
+
list.range(12, 1)
61
+
|> list.fold(#(0, bank), fn(acc, i) {
62
+
let #(number, bank) = acc
63
+
let bank_find =
64
+
bank
65
+
|> list.reverse
66
+
|> list.drop(i - 1)
67
+
|> list.reverse
68
+
69
let max =
70
bank_find
71
|> list.max(int.compare)
···
79
#(
80
number
81
+ max
82
+
* float.round(
83
+
int.power(10, int.to_float(i - 1)) |> result.unwrap(0.0),
84
+
),
85
list.drop(bank, max_loc + 1),
86
)
87
})