Skip to content

Commit 1906da5

Browse files
committed
Merge branch 'master' of github.com:Janiczek/advent-of-code
2 parents 495aa18 + b134225 commit 1906da5

File tree

4 files changed

+67
-1
lines changed

4 files changed

+67
-1
lines changed

gleam.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ gleam_otp = ">= 0.14.1 and < 1.0.0"
1919
gleam_regexp = ">= 1.0.0 and < 2.0.0"
2020
gleamy_structures = ">= 1.0.0 and < 2.0.0"
2121
gleam_deque = ">= 1.0.0 and < 2.0.0"
22+
rememo = ">= 3.1.0 and < 4.0.0"
23+
pocket_watch = ">= 1.0.0 and < 2.0.0"
2224

2325
[dev-dependencies]
2426
gleeunit = ">= 1.0.0 and < 2.0.0"

manifest.toml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,20 @@
33

44
packages = [
55
{ name = "argv", version = "1.0.2", build_tools = ["gleam"], requirements = [], otp_app = "argv", source = "hex", outer_checksum = "BA1FF0929525DEBA1CE67256E5ADF77A7CDDFE729E3E3F57A5BDCAA031DED09D" },
6+
{ name = "birl", version = "1.7.1", build_tools = ["gleam"], requirements = ["gleam_stdlib", "ranger"], otp_app = "birl", source = "hex", outer_checksum = "5C66647D62BCB11FE327E7A6024907C4A17954EF22865FE0940B54A852446D01" },
7+
{ name = "carpenter", version = "0.3.1", build_tools = ["gleam"], requirements = ["gleam_erlang", "gleam_stdlib"], otp_app = "carpenter", source = "hex", outer_checksum = "7F5AF15A315CF32E8EDD0700BC1E6711618F8049AFE66DFCE82D1161B33F7F1B" },
68
{ name = "decode", version = "0.5.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "decode", source = "hex", outer_checksum = "05E14DC95A550BA51B8774485B04894B87A898C588B9B1C920104B110AED218B" },
79
{ name = "envoy", version = "1.0.2", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "envoy", source = "hex", outer_checksum = "95FD059345AA982E89A0B6E2A3BF1CF43E17A7048DCD85B5B65D3B9E4E39D359" },
810
{ name = "filepath", version = "1.1.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "filepath", source = "hex", outer_checksum = "67A6D15FB39EEB69DD31F8C145BB5A421790581BD6AA14B33D64D5A55DBD6587" },
911
{ name = "gladvent", version = "2.1.0", build_tools = ["gleam"], requirements = ["argv", "decode", "envoy", "filepath", "gleam_erlang", "gleam_http", "gleam_httpc", "gleam_json", "gleam_otp", "gleam_package_interface", "gleam_stdlib", "glint", "parallel_map", "shellout", "simplifile", "snag", "spinner", "tom"], otp_app = "gladvent", source = "hex", outer_checksum = "50E05A8AA03F9EAACE2F44333927975754C3895B0F7A4EE48B3A125B358D30E7" },
1012
{ name = "gleam_community_ansi", version = "1.4.1", build_tools = ["gleam"], requirements = ["gleam_community_colour", "gleam_stdlib"], otp_app = "gleam_community_ansi", source = "hex", outer_checksum = "4CD513FC62523053E62ED7BAC2F36136EC17D6A8942728250A9A00A15E340E4B" },
1113
{ name = "gleam_community_colour", version = "1.4.1", build_tools = ["gleam"], requirements = ["gleam_json", "gleam_stdlib"], otp_app = "gleam_community_colour", source = "hex", outer_checksum = "386CB9B01B33371538672EEA8A6375A0A0ADEF41F17C86DDCB81C92AD00DA610" },
14+
{ name = "gleam_crypto", version = "1.4.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_crypto", source = "hex", outer_checksum = "8AE56026B3E05EBB1F076778478A762E9EB62B31AEEB4285755452F397029D22" },
1215
{ name = "gleam_deque", version = "1.0.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_deque", source = "hex", outer_checksum = "64D77068931338CF0D0CB5D37522C3E3CCA7CB7D6C5BACB41648B519CC0133C7" },
1316
{ name = "gleam_erlang", version = "0.33.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_erlang", source = "hex", outer_checksum = "A1D26B80F01901B59AABEE3475DD4C18D27D58FA5C897D922FCB9B099749C064" },
1417
{ name = "gleam_http", version = "3.7.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_http", source = "hex", outer_checksum = "A9EE0722106FCCAB8AD3BF9D0A3EFF92BFE8561D59B83BAE96EB0BE1938D4E0F" },
1518
{ name = "gleam_httpc", version = "4.0.0", build_tools = ["gleam"], requirements = ["gleam_erlang", "gleam_http", "gleam_stdlib"], otp_app = "gleam_httpc", source = "hex", outer_checksum = "76FEEC99473E568EBA34336A37CF3D54629ACE77712950DC9BB097B5FD664664" },
19+
{ name = "gleam_javascript", version = "0.13.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_javascript", source = "hex", outer_checksum = "F98328FCF573DA6F3A35D7F6CB3F9FF19FD5224CCBA9151FCBEAA0B983AF2F58" },
1620
{ name = "gleam_json", version = "2.1.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_json", source = "hex", outer_checksum = "0A57FB5666E695FD2BEE74C0428A98B0FC11A395D2C7B4CDF5E22C5DD32C74C6" },
1721
{ name = "gleam_otp", version = "0.14.1", build_tools = ["gleam"], requirements = ["gleam_erlang", "gleam_stdlib"], otp_app = "gleam_otp", source = "hex", outer_checksum = "5A8CE8DBD01C29403390A7BD5C0A63D26F865C83173CF9708E6E827E53159C65" },
1822
{ name = "gleam_package_interface", version = "1.1.0", build_tools = ["gleam"], requirements = ["gleam_json", "gleam_stdlib"], otp_app = "gleam_package_interface", source = "hex", outer_checksum = "CF3BFC5D0997750D9550D8D73A90F4B8D71C6C081B20ED4E70FFBE1E99AFC3C2" },
@@ -22,13 +26,19 @@ packages = [
2226
{ name = "glearray", version = "1.0.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "glearray", source = "hex", outer_checksum = "B99767A9BC63EF9CC8809F66C7276042E5EFEACAA5B25188B552D3691B91AC6D" },
2327
{ name = "gleeunit", version = "1.2.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleeunit", source = "hex", outer_checksum = "F7A7228925D3EE7D0813C922E062BFD6D7E9310F0BEE585D3A42F3307E3CFD13" },
2428
{ name = "glint", version = "1.1.1", build_tools = ["gleam"], requirements = ["gleam_community_ansi", "gleam_community_colour", "gleam_stdlib", "snag"], otp_app = "glint", source = "hex", outer_checksum = "5F6720081150AED8023131B0F3A35F9B0D6426A96CE02BEC52AD7018DF70566A" },
29+
{ name = "humanise", version = "1.0.2", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "humanise", source = "hex", outer_checksum = "44E0977BCA0C81DDDD46A8E4215BDD274FDBB18F5363B56BE617564135CA2F14" },
30+
{ name = "javascript_mutable_reference", version = "1.0.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "javascript_mutable_reference", source = "hex", outer_checksum = "3EE953EE7FE4FAFD17C16F24184F4C832FE260D761753F28F20D4AC1DA080F03" },
2531
{ name = "parallel_map", version = "2.1.0", build_tools = ["gleam"], requirements = ["gleam_erlang", "gleam_otp", "gleam_stdlib"], otp_app = "parallel_map", source = "hex", outer_checksum = "DE2BA9878728EF9EE34BE83FEDC7A18A1ABE4B2AC1E79C710E3E5D95F5E73404" },
32+
{ name = "pocket_watch", version = "1.0.0", build_tools = ["gleam"], requirements = ["birl", "gleam_stdlib", "humanise"], otp_app = "pocket_watch", source = "hex", outer_checksum = "CD8784CAC29735CDC2E6A67212FFC1C60A13A48D8F74470CE3DE15D41447227C" },
33+
{ name = "ranger", version = "1.3.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "ranger", source = "hex", outer_checksum = "B8F3AFF23A3A5B5D9526B8D18E7C43A7DFD3902B151B97EC65397FE29192B695" },
34+
{ name = "rememo", version = "3.1.0", build_tools = ["gleam"], requirements = ["carpenter", "gleam_erlang", "gleam_javascript", "gleam_otp", "gleam_stdlib", "javascript_mutable_reference", "youid"], otp_app = "rememo", source = "hex", outer_checksum = "B52F670DF63EA8F48200479DAA26E22BD525DADD6F95A19630E4EF5CA481C1B4" },
2635
{ name = "repeatedly", version = "2.1.2", build_tools = ["gleam"], requirements = [], otp_app = "repeatedly", source = "hex", outer_checksum = "93AE1938DDE0DC0F7034F32C1BF0D4E89ACEBA82198A1FE21F604E849DA5F589" },
2736
{ name = "shellout", version = "1.6.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "shellout", source = "hex", outer_checksum = "E2FCD18957F0E9F67E1F497FC9FF57393392F8A9BAEAEA4779541DE7A68DD7E0" },
2837
{ name = "simplifile", version = "2.2.0", build_tools = ["gleam"], requirements = ["filepath", "gleam_stdlib"], otp_app = "simplifile", source = "hex", outer_checksum = "0DFABEF7DC7A9E2FF4BB27B108034E60C81BEBFCB7AB816B9E7E18ED4503ACD8" },
2938
{ name = "snag", version = "1.0.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "snag", source = "hex", outer_checksum = "08E9EB87C413457DB1DD66CD704C6878DACC9C93B418600F63873D0CD224E756" },
3039
{ name = "spinner", version = "1.3.0", build_tools = ["gleam"], requirements = ["gleam_community_ansi", "gleam_stdlib", "glearray", "repeatedly"], otp_app = "spinner", source = "hex", outer_checksum = "B824C4CFDA6AC912D14365BF365F2A52C4DA63EF2D768D2A1C46D9BF7AF669E7" },
3140
{ name = "tom", version = "1.1.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "tom", source = "hex", outer_checksum = "228E667239504B57AD05EC3C332C930391592F6C974D0EFECF32FFD0F3629A27" },
41+
{ name = "youid", version = "1.2.0", build_tools = ["gleam"], requirements = ["gleam_crypto", "gleam_erlang", "gleam_stdlib"], otp_app = "youid", source = "hex", outer_checksum = "EF0F693004E221155EE5909C6D3C945DD14F7117DBA882887CF5F45BE399B8CA" },
3242
]
3343

3444
[requirements]
@@ -39,3 +49,5 @@ gleam_regexp = { version = ">= 1.0.0 and < 2.0.0" }
3949
gleam_stdlib = { version = ">= 0.34.0 and < 2.0.0" }
4050
gleamy_structures = { version = ">= 1.0.0 and < 2.0.0" }
4151
gleeunit = { version = ">= 1.0.0 and < 2.0.0" }
52+
pocket_watch = { version = ">= 1.0.0 and < 2.0.0" }
53+
rememo = { version = ">= 3.1.0 and < 4.0.0" }

src/aoc_2024/day_11.gleam

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import extra
2+
import gleam/bool
3+
import gleam/int
4+
import gleam/list
5+
import gleam/string
6+
import pocket_watch
7+
import rememo/memo
8+
9+
pub fn parse(input: String) -> List(Int) {
10+
use <- pocket_watch.simple("parse")
11+
input
12+
|> string.split(" ")
13+
|> list.map(extra.yolo_int)
14+
}
15+
16+
pub fn pt_1(input: List(Int)) {
17+
use <- pocket_watch.simple("pt_1")
18+
use cache <- memo.create()
19+
input
20+
|> list.map(c(_, 25, cache))
21+
|> int.sum
22+
}
23+
24+
pub fn pt_2(input: List(Int)) {
25+
use <- pocket_watch.simple("pt_2")
26+
use cache <- memo.create()
27+
input
28+
|> list.map(c(_, 75, cache))
29+
|> int.sum
30+
}
31+
32+
fn c(n: Int, i: Int, cache) -> Int {
33+
use <- memo.memoize(cache, #(n, i))
34+
use <- bool.guard(when: i == 0, return: 1)
35+
case n {
36+
0 -> c(1, i - 1, cache)
37+
_ -> {
38+
let str = int.to_string(n)
39+
let len = string.length(str)
40+
case len % 2 == 0 {
41+
True -> {
42+
let half = len / 2
43+
let left =
44+
extra.yolo_int(string.slice(str, at_index: 0, length: half))
45+
let right =
46+
extra.yolo_int(string.slice(str, at_index: half, length: half))
47+
c(left, i - 1, cache) + c(right, i - 1, cache)
48+
}
49+
False -> c(n * 2024, i - 1, cache)
50+
}
51+
}
52+
}
53+
}

src/aoc_2024/day_9.gleam

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import extra
22
import gleam/deque.{type Deque}
33
import gleam/int
4-
import gleam/io
54
import gleam/list
65
import gleam/order
76
import gleam/string

0 commit comments

Comments
 (0)