mirror of
https://github.com/Noratrieb/advent-of-code.git
synced 2026-01-16 18:45:02 +01:00
stuff
This commit is contained in:
parent
7f4d9bce74
commit
4da0b11cab
33 changed files with 2480 additions and 0 deletions
37
2024/Cargo.lock
generated
37
2024/Cargo.lock
generated
|
|
@ -198,6 +198,15 @@ dependencies = [
|
||||||
"nom",
|
"nom",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "day10"
|
||||||
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"divan",
|
||||||
|
"helper",
|
||||||
|
"nom",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "day11"
|
name = "day11"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
|
|
@ -208,6 +217,34 @@ dependencies = [
|
||||||
"rustc-hash",
|
"rustc-hash",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "day12"
|
||||||
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"divan",
|
||||||
|
"helper",
|
||||||
|
"nom",
|
||||||
|
"rustc-hash",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "day13"
|
||||||
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"divan",
|
||||||
|
"helper",
|
||||||
|
"nom",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "day24"
|
||||||
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"divan",
|
||||||
|
"helper",
|
||||||
|
"nom",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "divan"
|
name = "divan"
|
||||||
version = "0.1.16"
|
version = "0.1.16"
|
||||||
|
|
|
||||||
15
2024/day10/Cargo.toml
Normal file
15
2024/day10/Cargo.toml
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
[package]
|
||||||
|
name = "day10"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
nom.workspace = true
|
||||||
|
helper.workspace = true
|
||||||
|
divan.workspace = true
|
||||||
|
|
||||||
|
[[bench]]
|
||||||
|
name = "benches"
|
||||||
|
harness = false
|
||||||
3
2024/day10/benches/benches.rs
Normal file
3
2024/day10/benches/benches.rs
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
fn main() {
|
||||||
|
day10::bench();
|
||||||
|
}
|
||||||
53
2024/day10/input.txt
Normal file
53
2024/day10/input.txt
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
65456780121098450187634569763232345103213014321223456
|
||||||
|
56565097632787543296323478890141234234102125630310767
|
||||||
|
67874198545601612345610165765650105145693496543407898
|
||||||
|
32923238723432709654326543034789076008786587854343210
|
||||||
|
41010129610549878723017832129878989019895674963210349
|
||||||
|
03498034534698965014898901038965432123107895674310478
|
||||||
|
12567012345787854198743230123453219654256456789321565
|
||||||
|
01698107659834723085650134562104508723340349876459874
|
||||||
|
98787238543225610176590121875698698812451210145960123
|
||||||
|
07456549850110765203485430984788767904322109236871234
|
||||||
|
12349654763234894312176534983109456765012218347120105
|
||||||
|
45898763120125234523054325672112309876544367898034876
|
||||||
|
36765812034576127654369010766043218987432458765565989
|
||||||
|
29876903107681038923478001897652345898901089014877856
|
||||||
|
10945789218996987610569123078901236754321198123966987
|
||||||
|
89032654309345678510787430121230109865120567001855496
|
||||||
|
70121023498210709425698945230381210778034056532743345
|
||||||
|
63210110567601812334321876545496321689765123443412210
|
||||||
|
54216787014503956745430965496587434509894329856301101
|
||||||
|
09105496923212345866787634987676543213456018763456932
|
||||||
|
18012387836781078975898523432345232122347890345367873
|
||||||
|
27601078745896769784309410541230143021038901276216784
|
||||||
|
34587669654305854693210305670321056523427987689105698
|
||||||
|
03490548741214903543211234781987897012310094576543567
|
||||||
|
12321239230903212650106521892016798987454123467612430
|
||||||
|
12332102107812121786787430752105678901960013438900421
|
||||||
|
01489237876543080695890124567234787017871012543321530
|
||||||
|
90574323965012891234301233208943296323702387654487651
|
||||||
|
87665010121026700343210120112350185410213498703599341
|
||||||
|
96556901212345619656903234013461234554396569812678210
|
||||||
|
03467832303434328743874105684570789689487876101432387
|
||||||
|
12346345694540345012565106799688778776536964566501498
|
||||||
|
01653210789691236522210239888799669890123453677890567
|
||||||
|
18764101988780987121329845677234550187652122989108906
|
||||||
|
89765001877101071030456776540112341290343001010267210
|
||||||
|
67896982769612132549105689432101032301234578981354310
|
||||||
|
78767853458743247678014988654312121000225665432458981
|
||||||
|
69656765432658958976529812763243029810116767898567652
|
||||||
|
30345899891067867789438701890156710723209852101438943
|
||||||
|
21230014780890986290105610981260823654367643067324321
|
||||||
|
10101423634761870121234327876501994569498543458015100
|
||||||
|
45672344543052765436543234566782987678534412109176211
|
||||||
|
34985495652143781287430110545093456767623303678989321
|
||||||
|
43856784743430690398710325432112129865414510510076450
|
||||||
|
32981012892121589459621234521001036772301623423165569
|
||||||
|
01670143345023498764560149693456345681066739654234678
|
||||||
|
12365294256510107643498238782347652397659848765985589
|
||||||
|
03454385107898212532567345601098701498943707678876432
|
||||||
|
12763476543789123431052101598709876510232110569845001
|
||||||
|
29854307630076034521043015691612389323101023454032132
|
||||||
|
38765218921165087654321126780543432134569878998108941
|
||||||
|
47894356712234198765230105621234567023878565089237650
|
||||||
|
21012349803343289890121234310123498012967432176546321
|
||||||
0
2024/day10/input_small.txt
Normal file
0
2024/day10/input_small.txt
Normal file
48
2024/day10/src/lib.rs
Normal file
48
2024/day10/src/lib.rs
Normal file
|
|
@ -0,0 +1,48 @@
|
||||||
|
use helper::{Day, Variants};
|
||||||
|
|
||||||
|
pub fn main() {
|
||||||
|
helper::main::<Day10>(include_str!("../input.txt"));
|
||||||
|
}
|
||||||
|
|
||||||
|
struct Day10;
|
||||||
|
|
||||||
|
helper::define_variants! {
|
||||||
|
day => crate::Day10;
|
||||||
|
part1 {
|
||||||
|
basic => crate::part1;
|
||||||
|
}
|
||||||
|
part2 {
|
||||||
|
basic => crate::part2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Day for Day10 {
|
||||||
|
fn part1() -> Variants {
|
||||||
|
part1_variants!(construct_variants)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2() -> Variants {
|
||||||
|
part2_variants!(construct_variants)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part1(_input: &str) -> u64 {
|
||||||
|
0
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2(_input: &str) -> u64 {
|
||||||
|
0
|
||||||
|
}
|
||||||
|
|
||||||
|
helper::tests! {
|
||||||
|
day10 Day10;
|
||||||
|
part1 {
|
||||||
|
small => 0;
|
||||||
|
default => 0;
|
||||||
|
}
|
||||||
|
part2 {
|
||||||
|
small => 0;
|
||||||
|
default => 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
helper::benchmarks! {}
|
||||||
3
2024/day10/src/main.rs
Normal file
3
2024/day10/src/main.rs
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
fn main() {
|
||||||
|
day10::main();
|
||||||
|
}
|
||||||
16
2024/day12/Cargo.toml
Normal file
16
2024/day12/Cargo.toml
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
[package]
|
||||||
|
name = "day12"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
nom.workspace = true
|
||||||
|
helper.workspace = true
|
||||||
|
divan.workspace = true
|
||||||
|
rustc-hash = "2.1.0"
|
||||||
|
|
||||||
|
[[bench]]
|
||||||
|
name = "benches"
|
||||||
|
harness = false
|
||||||
3
2024/day12/benches/benches.rs
Normal file
3
2024/day12/benches/benches.rs
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
fn main() {
|
||||||
|
day12::bench();
|
||||||
|
}
|
||||||
140
2024/day12/input.txt
Normal file
140
2024/day12/input.txt
Normal file
|
|
@ -0,0 +1,140 @@
|
||||||
|
UUUKKKKZZZZZZEEEEEEEEEEEEEEEOOOOOOOOOOOOOOHHHHYYYYYYYYYYYYYEYYOOMNNMUUUUUUUUUYGYYYYYGGGGGZSSSSSSSSOOOOOOOOOOOOOOOODDDDDDDDDDAAAAAAJJJJJJJJJJ
|
||||||
|
UUKKKKKZZZZZZEEEEEEEEEEEEEEEOOOOOOOOOOOOOOOHHHYYYYYYYYYYYYYYYYOOMMMMUUUUUUUUUYYYYYYYGGGGZZZSSSSSSSOOOOOOOOOOOOOOOWDDDDDDDDDAAAAAAAJJJJJJJJJJ
|
||||||
|
UUKKKKKKKZZZZZEEEEEJEEEEEEEOOOOOOOOOOOOOOOHHYYYYYYYYYYYYYYYYYYMMMMMMMUUUUUUUUYYYYYYYYZZZZZZZSSSSSSOOOOOOOOOOOOOOODDDDDDDDDAAAAAAAHJJJHJJJJJJ
|
||||||
|
UUKKKKKKKKKZZZEEEEJJEEEETTEOOOOOOOOOOOOOOOHHYYYYYYYYYYYYYYYKYYYMMMMMUUUUUUUUUUUYYYYYYDDZZZZZZSSSSSOCOOOOOOOOOOOOOTDDFFFDDUAAAAAAHHHJHHJJJJJJ
|
||||||
|
KKKKKKKKKKKKZEEEEEJEEJEETTTOOOOOOOOOOOOPORYHYYYYYYYYYYYYYQKKKKMMMMMMMUUUUUUUUUUYYYYYDDZZZZZZZZSSOOOOOOOOOOOOOOOOOODDFFFFAAAAAAAHHHHJHHHJJJJJ
|
||||||
|
KKKKKKKKKKKKZZEEEJJJJJJJTTTOOOOOOOOOOOPPPYYYYYYYYYYYYYKYUKKKKMMMMMMMMMUDDDUDDDDDDDYDDZZZZZZZZZSSOOOOKOOOOOOOFOOOOOOFFFFFAAAAAHHHHHHHHHJJJJJJ
|
||||||
|
KKKKKKKKKKZZZZEEEEJJJJJJTTTOOOOOOOOOOOOPPPPPPPPPYYYYYYKKKKKKXXMMMMMMMMUDDDDDDDDDDDDDDZZZZZZZZSSSSOOOOOOOOOOOFOOOOOFFFFFAAGAAHHHHHHHHHHHJJJJJ
|
||||||
|
NNKKKKKKKZZZZZEEZJJJJJJJJTOOOOOOOOOOOOOPPPPPPPPPPPYYYKKKKKKKKMMMMMMMMMUDDDDDDDDDDDDNZZJJJZZZZZZZZOOOOOTTOOOOFFFAOOFFFFFAGGGAGHHHHHHHHHJJJJJJ
|
||||||
|
NNKKKKKKYZZZZZZZZJJJJJJJJJJOOOOOOOOOGGXPPPPPPPPPPYYYYKKKKKKKMMMMMMMMMUUDDDDDDDDDDDMMMMJJJZZZZOOOOOOOOOETOOFFFFFFFFFFFFVVVGGGGHHHHHHHHHHHJJJJ
|
||||||
|
NNNNKKKKYZZZZZZZJJJJJJJJJJJMDDOOOOOOOXXPPPPPPPPPPPPPYYKKKKKKKOMMMMMMMUUDDDDDDDDDDDDMMMMJJZZOOOOOOOOODDTTTTTFFFFFFFFFFFVVGGGGHHHHHHHHHJJJJJJJ
|
||||||
|
NNNNNNKYYYZYZZZJJJJJJJJJJJMMMDDOODXXXXXXPPPPPPPKKKKKKKKKKKKGGGMMMMMMUUDDDDDDDDDDDDDMMMQQJJZOOOOOOOOONDTTTTTTFFFFFFFFFFVVGGGGHHGHHHHJJJJJJJJJ
|
||||||
|
NNNNNNNYYYYYZZZZZJJJJJJJJJMMDDDDDDXXXXXXXXPPPPPKKKKKKKKKKKGGGGUMUUUMUUUDDDDDDDDDDDDBBBQQAAAAOOOOOONNNDDTTTTTFFFFFFFFFNNNNNNNNGGGHKHJJJJJJJJJ
|
||||||
|
NNNNNNYYYYYYYZZZJJJJJJJJJJMDDDDDDDXXXXXXXXXXXPPKKKKKKKKKKKKUGUUUUUUUUDDDDDCCDDCCDCDBBQQQAAAAQQOONNNNNDDTTTDTFFFFFNNNNNNNNNNNNGGGGYHYJYYJJJYY
|
||||||
|
NNNNNNYYYYYYZZYZZJJJJJJJJJDDDDDDDDDDXXXXXXXXXXXKKKKKKKKKKKKUUUUUUUUUDDDDDCCCCCCCCCCQQQQQAAAAAAONNNNNNDDTDDDDFFFFNNNNNNNNNNNNNGGGGYNYYYYYYYYY
|
||||||
|
NNNNNYYYYYYYYYYYJJJJJJJJJDDDDDDDDDDQXXXXXXXXXXXXKKKKKKKKKKKKKUUUUUUUUDDDDDCCCCCCCCCCCQQQAAAAAAOONNNNNDDDDDDDDDDFNNNNNNNNNNNNNGGGGYNYYYYYYYYY
|
||||||
|
NNNNYYYYYYYYYYSYYJJJJDDDDDDDDDDDDDDQQXXXXXXXXXXXXXKKKKKKKKKKUUUUUUUUUTTTTCCCCCCCCCCCCQQQQQQAAAQOONNNDDDDDDDDDDDDNNNNNNNNNNNNNGGGYYNNYYYYYYYY
|
||||||
|
NNNNNNYYYYYYYYYYYJJJJJJDDDDDDDDDDDDQQXXXXXXXXXXXXKKKKKKKKKKKKMLLLLULLLTCCCCCCCCCCCCCCCQQQQQAAAQQOONNDDDDDDDEDDDDNNNNNNNNNNNNNGGGYYYYYYYYYYYY
|
||||||
|
NNNNNYYYYYYYYYYYYJJJJJDDDDDDDDDDIIDQXXXXXXXXXXXXXKKDKKKUKKKKKMMMLLLLLLLCCUUUUCCCCCCQQQQQQQQAAAQOOOONNDDDEEEEEDNNNNNNNNNNNNNNNGGGYYYMYYYYYYYY
|
||||||
|
NNNNNYYYYYYYYYYYYJJJDDDDDDDDDDDDDDDDXXXXXXXXXXXXXDDDDKKKKKKKKEEELLLLLLLLELCCCCCQCCCCQQQQQQQQZZZOODDDDDDEEEEEEXNNNNNNNNNNNNNNNSGGYYMMYYYYYYYY
|
||||||
|
NNNNNNYYYYYYYYYYYYZZZZDDDDDDDDDDDDDDDXFFXXXFFXFXXFFFDKKKEEEEKEEELLLLLLLLLLJJJJCCCCCCQQQQQQQQZZZZDDDDDDEEEEEEEENNNNNNNNNNXXXGGSSSSMMYYYYYYYYY
|
||||||
|
NNNNNNNNYYYYYYYYYZZZZZDZDZDDDDDDDDDFFFFFXFFFFXFFFFFFFKEEEEEEEEEEEELLLLLLLLJJJJJQQQQQQQQQQQQQZZZZZZDDDDEEEEEEEENNNNNNNNNNXXXGGGSSSMMYYYYYYYYY
|
||||||
|
NNNNNNNYYYYYYYYYYZZZZZZZZZZZDDDDDDDFFFFFFFFFFFFFFFFFKKEEEEEEEEEEEEEELLLLLLJJJJJJQQQQQQQQQQZZZZZZZZZZZLLLEEELEENNNNNNNNNNXGGGSSKSSSMYYYYYYYYY
|
||||||
|
NNNNNNNNYYYYYYHHZZZZZZZZZZZZDDDHBBDDFFFFFFFFFFFFFFFFFKEEEEEEEEEEEEEEELLLLLJJJJJJQQQQZQQQQQQZZZZZZZZLLLLLLLELEENNNNNNNNNNNNNGSSKSSSMMYYYYYYYY
|
||||||
|
NNNNNNNNNYYYRHHHZZZZZZZZZZZDDDDHBBBBBFFFFFFFFFFFFFFFFEEEEEEEEEEEEEELLLLLJCCJJJJJJQQQZQQQQQZSZZZZZZZLLLLLLLLLEENNNNNNNNNNNNNSSSSSSSMMYYYYYYYY
|
||||||
|
NNNNNNNNYYTTHHHHHHHHZZZZSSZZZDPBBBBBBBFFFFFFFFFFFFKKEEEEEEEEEEEEEEEELLLLJJJJJJJJQQZZZQQQQQZZZZZZZZZZLLLLLLLLEYNNNNNNNNNNNNSSSSSSSMMYYYYYYYYY
|
||||||
|
NNNNNNNNNNTTHHHHHHHZHZZZSSSSZDPBBBBBBBAAFFFFFFFFFFFFEEEEBBEBBEEEEEEELLLLLJJJJJJZZZZZQQQQQQQZZZZZZZZZLLLLLLRLEYNNNNNNNNNNNNASSSSSSMMMYAYYYYYS
|
||||||
|
NNNNNNNNNNTTHHHHHHHHHHHZSSYSSDPBBBBBBBBAAFFFMFFFMFIIIEEEEBBBBEBEEEELLLLLLJJJJJJZZZZZQQQQQZZZZZZZZZZYZLLLRRRYYYQNNNNNNNNNNQQQSSSSSMMMSSSYYYSS
|
||||||
|
NNNNNNNNNNNHHHHHHHHHHHHZHSSSSPPPBBBBOBBAFFFFMMMMMFIIIEEEBBBBBBBEELLLLLLLLJJJJZJZZZZZZZZZZHYZZZZZZZZZZZLLRRYYYYYNNNNNNNNNNQSSSSSSSSSSSSSYYYSS
|
||||||
|
LNNNNNNWWWNWHHHHHHHHHHHHHSSSSPPPBBJBOBBBMFFFMMMMFFIIIEEEBBBBBBBBBBLLLLJJJJJJJZZZZZZZZZZZHHHZZZZZZZZZLLLLYYYYYYYYQQQQQQQQQQQSSSSSSSGSSSSSSYSS
|
||||||
|
LLLNNNNWWWWWHWHHHHHHHHHHHSKKKKKKKJJJMMMMMMFMMMMMEFIIYPEBBBBBBBBBBBBLLLLJJJJJZZZZZZZZZZZZHHZZZZZZZZZYYYYYYYYYYYQQQQQQQQQQQQSSSSSSSSSSSSSSSSSS
|
||||||
|
LLLLWWNWWWWHHWHHHHHHHHHHSSKKKKKKJJJJMMMMMMMMMMMMMMIYYYYYBBBBBBBBBBBLLLLJJJJLLZZZZZZZZZZXXXZZZQQVVZZYYYYYYYYYYYQQQQQQQQQQQSSSSSSSSSSSSSSSSSSS
|
||||||
|
LLLLWWWWWWWHWWHHHHHHHHSHSSKKKKKKJJJJJMMMMMMMMMMMMMYYYXBBBBBBBJJBBBFFLLAJJJJTLZZZZZZZZZZUUULQQQQVYYYYYYYYYYYYYYYQQQQQQQQSSSSSTSSSSSSSSSSSSSSS
|
||||||
|
LLLLLWWWWNWWWWSHHHHHHSSSSSKBKKKKKKJJMMMMMMMMMMMMMMMMMXBBBBBBBJJBBBBFBAATTDDTTZZZZZZZZZZUUUUQQQVVYYYYYYYYYYYYYYYYQQQQQQQQSSQSTTSSSSSSSSSSSSSS
|
||||||
|
LLLLLLWWWNNWNSSSHSHSSSSSSSKKKKKKKDMMMMMMMMMMMMMMXXXXXXXBBXBBJJJBBBBBBTTTTTTTTZZZZZZZZUUUUUUUUQVYYYYYYYYYYYYYYYYYQQQQQQQQQQQQFTSSSSSSSSSSSSSS
|
||||||
|
LLLLLLWWWNNNNSSSSSSSSSSSKKKKKKKKKKMZZMMMMMMMMMMMXXXXXXXXXXBJJJBBBBBBYTTTTTTTTVZZZNZZZUUUUUUUUVVVVYYYYYYYYYNYYYNSSSQQQQQQQQQFFTFSSSSSSSSSSSSS
|
||||||
|
LXXGWWWWNNNNNSSSSSSSSSSSKKKKKKKPFOFFZZMMMMMMMMMMMXXXXXXXXXBBBBBBBBYYYTTTTTTTVVNZNNNZZZUUUUUUUVVVYYYYYYYYYYNNNNNNSSQQQQQQFQFFFFFSSSSSSSSSSSSS
|
||||||
|
XXXGWWWNNNNNNNNSSSSSSSSSKKKKSFFFFFFFFFMMMMMMMMMMMMXXXXXXXXBBBBBBCBFYTTTTTTDDNNNNNNJZZZIUUUUUUWWWHYYYYYYYNNNNNNNNNSSQQGQFFFFFFFFSSSSFSSSSSSSS
|
||||||
|
AXXGWWWWYYNNNNNNSSSSSZSSKSKSSSFFFFFFFFMMMMMMMMMMMXXXXXXXFFFFFFFBFFFTTTTTTTNDNNNNNNJJZZUUUUUUWWWWWWYYYYYYNNNNNNNNNQQQQGQQQQFFFFFSSSSFSSSSSSSS
|
||||||
|
AXGGGSSYYYNNNNNNNSSSSZZSSSSSSFFFFFFFFFFMMMMUMMMMMMNXXXXFKFFFFFFFFFFPTTTTTTNNNNNNNJJJZJUUUUUWWWWWWWYYYYYNNNNNNNNNNQQQQQQQQQQQFFFFSSSFFSSSSSUU
|
||||||
|
SSSSSSTNNNNNNNZNNZSSSZZSSSSSSFFFFFFFFFFFMMUUAANNMNNFFFXFFFFFFFFFFFFTTTTNNNNNNNNNJJJJJJUQUUUMMWWWWWWWWYYNNNNNNNQQNNNQQQQQQQQQQQFFFFUUFSUSUUUU
|
||||||
|
SSSSSSTNNNNNNNZNNZZZZZZZSSSFFFFFFFFFFFFFMUUUAANNNNTFFFFFFFFFFFFFFFFQQTTTQNNNNNNNJJJJJJJMMMMMMMWWWWWWWYFNNNNNNNNQQQQQQQQQQQQQQQFFFFUUUFUUUUUU
|
||||||
|
SSSSSNNNNNNNNNZNNZZZZZZZSSSFFFFFFFFFFWFFMUUUUAAAAATTTFFFFFFFFFFFFFFQQQQQQQQQQQNNJJJJJQQMMMMMMMWWWWWWWFFFYNNNNNNQFQQQQQQQQQQQQQQFFFFUUUUUUUUU
|
||||||
|
PSSSSSSNNNNNNNZZNZZZZZZZZZSFFFFFFFFFFFFFFUUUUUAAAATTTZZZFFFFFFFFFFFFQQQQQQQQQNNJJJJQQQMMMMMMMMWWWWWFWWFFYNNNNNNFFQQQQQQQQQQQQQFFFUUUUUUUUUUU
|
||||||
|
SSSSSNNNNNNNNNNZZZZZZZZZZRRFFFFFFFFFUFFFFUUUUAAAATTTTZZZZFFFFFFFFFFFQQQQQQQQQWNNJJJQQQMMMMMMMMWWWWWFWWWFNNNNFFFFFQFFFQQQQQQQFFFUUUUUUUUUUUUU
|
||||||
|
SSSSSSNNCCCCCCCCCCZZZZZZRRFFFFFFFFFFUUUUUUUUUAAAATTTTZZZZFFFFFFFFFFFQQQQQQQQQJJOOOOOOOMMMMMMMMWWWWWFFFFFNNFFFFFFFFFFFQQQQQQQQFFFUUUUUUUUUUUU
|
||||||
|
SSSSSSSFCCCCCCCCCCCZZZZZRRFFFFFFFFFFUUUUUUUUUAAATTTTTTZZZFFFFFFFFFQQQQQQQQQRJJJOOOOOOOJMMLLLMMMMMWFFFFFFFNFFFFFFFFFFGFFUCQQAQFHFUUUUUUUUUUUU
|
||||||
|
SSSSSSSSCCCCCCCCCCCZZZZZRRFFFFFFFFFFUUUUUUUUUAAAAZZTZZZZZFFFFFFFQQQQQXQQJJJJJJJOOOOOOOJLLLOOOOLMMWWJFFFFFFFFFFFFFFFFFFUUCCQAAHHHUUUUUUUUUUUU
|
||||||
|
ESSSSSSECCCCCCCCCCCZZZZZRFFFFFFFRFFUUUUUUUUUUAAAAAZZZVVVVFFFAFFFFQQQQXQQQJJJJJJOOOOOOOLLLLOOOOLMMJJJFFFFFFFFFFFFFFFFFUUUCCCHAAHHUUUUUUUUUUUU
|
||||||
|
EESSSCCCCCCCCCCCCCCZZZZRRRRRFFRFRRFUUUUUUUUUUUAAAUZZZVVVVVVFFVVVFQQQXXXQQQAJJJJOOOOOOOLLLLOOOOLMMJJJJJFFFFFFFFFFXFFFFUUUHHHHHHHHHHCUHUHUUUUU
|
||||||
|
EEEEECCCCCCCCCCCCCCZRRRRRRRRFFRRRRRUUUUUUUUUUUUUUUZZXXXVVVVVVVVVVQQQQXXXQQQQQTTOOOOOOOLLLNOOOOJJJJJJJJJFFFFFFMMFFFFFFUUUHHHHHHHHHHHHHHHHHUUU
|
||||||
|
CCCCCCCCCCCCCCCCCCCZRRRRRRRRFFRRRUUUUUUUUUUUUUUUUZZZXXXXXVVVVVVVVVVQXXXXQQQQQTTOOOOOOOLENNOOOOZZZJJJJJFFFFFFFMMFFFFFFUUUHHHHHHHHHHHHHHHHUUUU
|
||||||
|
CCCCCCCCCCCEECCCCCCZRRRRRRRRRRRRRRUUUUUUUUUUUUUUUUXXXXXXXVVVVVVVVVVVXXXOOOOOOOOOOOOOOOOOOOOOOOZZZJJJJJJJFJJJMMMMFFFFUUUHHHHHHHHHHHHHHHUUUUUU
|
||||||
|
CCCCCCCCCCCCCCCCCCCRRRRRRRRRRRRHHRHUUUHHHUUUUUUCUXXXXXXXVVVVVVVVVVVVVTTOOOOOOOOOOOOOOOOOOOOOOOZZZZJJJJJJJJMMMMMUUFUUUUUUUHHHHHHHHHUUUUUUUUUU
|
||||||
|
EEEEECCCCCCCCCCCCCCRRRRRRRRRHRRHHHHHHHHHHUUUUUUCCXXXXXXXXVVVVVVKKKKVVTTOOOOOOOOOOOOOOOOOOOOOOOZZJJJJJJJJJJMMMMMUUUUUUUUUUHHHHHHHHHHUUUUUUUUU
|
||||||
|
EEPPPCCCCCCCCCCRZRZRRRRRRRRHHHHHHHHHHHHHHHHUUUCCCCXXXXXXXVVVVVVKKKKKKTTOOOOOOOOOTTTTTOOOOOOOOOZZJJIIJJJJMJMMMMMMMUUUUUUUUHHHHHHHHHTTTUUUUUUU
|
||||||
|
RPPPPCCCCCCCCCCRRRRRRRRRRRRRHHHHHHHHHHHHHUUUCUCFFXXXXXXXXVVVVVVVKKKKKTTOOOOOOOOOTTTTNOOOOOOOZZZZIIIJJJMMMMMMMMMMUUUUUUUUHHHHHHHHHTTWTTWWWUUU
|
||||||
|
PPPPPCCCCCCCCCCARRRRRRRRRRRRROHHHHHHHHHHHHHHFFCFFQQXXXXXVVVVVVVKKKKKKKTTTTTTTTTTTTTNNOOOOOOOEZZZIIIIJMMMMMMMMMMMMUUUUUCCCCHHHHHHHHHWWWWWWWWU
|
||||||
|
PPPPPPPPEECCCCCARRRRRRRRRRRRROHHHHHHHHHHHHFFFFFFFFQQXXVXVVVVVKKKKKKKKKKTTPTPPTTTTTTNNOOOOOOOEZEIIIIIISSMMMMMMMMMMUUUUCCCKCMHHHHHHRWWWWWWWDDD
|
||||||
|
PPPPPPPPJJCCCCCUZZZRRURRRRRRRRHHHHHHHHHHHHFFFFFFFFFFFVVVVVVVVKKKKKKKKKKKKPPPPPPTTTTTNTOOOOOOEEEIIIIIIIIMMMMMMMMMMMMMCCCCCCHHHHHHHWWWWWWWWWDD
|
||||||
|
PPPPPPRJJJCCCCCUZZRRUURRRURUUUUHHHHHHHHHHFFFFFFFFFFFFVVVVVVVTTDKKKKKKKKKKUPPPPPPPTTTTTOOOOOOEEIIIIIIIIIMMMMMMMMMMCCCCCCCCCHYYYHHHWWWWWWWWDDD
|
||||||
|
PPPPPPRRJUCCCCCUZZZUURRRRUUUUUUHHHHHHHHHKFFFFFFFFFFFVVVVVVVTTTKKKKKKKKKKKKKPPPPPPPPTKKOOOOOOEEIIIISIIIIZMMMMMMMMMCCCCCCCCCYYYYYYHWWWWWWWWWDD
|
||||||
|
PRRPRRRRRRUUUUZZZZZUUUUUUUUUUUUUHHJHHHHHFFFFFFFFFFFVVVVVVVVTTTTKTTKKKKKKKXXPPPPPPPPCCKOOOOOOEIIIIISUUIUMMMMMVMMTMCCCCCCCCDYYYYYYWWWWNWWWWWDD
|
||||||
|
ERRRRRRRRUUUUUUUZZUUUUUUUUUUUUUUHSSSHHHHFFFFFFFFFFFVVVVVVVVTTTTTTTKKKKKKKXXPPPPPPPPKKKOOOOOOESISISSUUUUUMMMMMMMTMCCCCCCCCCCCCCCDDWWDWWWWWDDD
|
||||||
|
EERRRRRRJUUUUUUUZZZZUUUUUUUUUUUSSSSSSHHFFFFFFFFRFFFVVVVVZTTTTTTTTTKKKKKKXXXPPPPPPPPKKKKBEEESSSSSSSSSUUUUMMMMMMMTDCCCCCCCCCCCCCCDDDDDDDDDDDDD
|
||||||
|
EERRRRRRRUUUUUUUZZZZZUUUUUUUUUUSSSSGSHHHFFFFFFFFFFVVVVVVZTTTTTTTTTKKKKKKKXXPPPPPPPXKKKKBBEEESSSSSSSSSSUUUUMMMMMMDCCCCCCCCCCCCCCDDDDDDDDDDDDD
|
||||||
|
EERRRRRRRRUUUUUUUZZUUUUUUUUUUUUSSSSGGGGHDFFFFFFFFFMMVVVRTTTTTTTTTTKRRKKKXXXXPMPPPPXXKBBBQDEVSNSSSSSSSUUUUUUUUUUJDDDDDDCCCCCCCCCHHDDDDDDDDDDD
|
||||||
|
ERRRRRRRRRUUUAAAAAZZUUTUWUUUUUUUSSGGGGFFFFFFFFFFFFVVVVRRRRRRTDTTTTTRTXXXXXXXXPPPPXXQMQBQQQVVSSSSSSSSSUUUUUUUUUUDDDDDDDCCCCCCCCCHHHDDDDDDDDDD
|
||||||
|
EERRRRRRRRRUAAAAAAAAAATTWWUUUUUUSSGGGGGFFFFFFFFFFRRRVVRRRRRRRTTTTTTTTXEXXXXXXXXXXXXQQQQQQQQVSSSSSSSSSUUUUUUUUUUDDDDDDDCCCCCCCCCHHDDDDDDDDDDD
|
||||||
|
VVARRRRURRUUUAAAAAAAAWWWWWWUUUUUSFGGGGGFFFFFFFFFFRRRRRRRRRRRTTTTTTTTTEEXXXXXXXXXXXQQQQQQQQQSSSSSSSSSUUUUUUUUUUUDDDDDDDCCCCCCCCCHHHDDDDDDDDDD
|
||||||
|
VVVKRRUUUUUUUAAJAAAAAWWWWWWUUUUUFFGGGGFFFFFFFFFFJRRRRRRRRRRRRRRTTTTEEEEXXXJXXXXXXXQQQQQQQQQRRSSSSSSSUUUUUUUUUUUUDDDDDDCCCCCCCCCHHHHDDDDDDDDD
|
||||||
|
VDVKRRUUUUUUUAAAAAAAWWWWWWZUUUUFFFFGGGFFGFFFTTFJJJRFRRRRRRRRRRSTTTEEEEEEJJJJJXJXXXXQQQQQQQSSSSSSSSSUUUUUUUUUUUUUUDDDDCCCCCCCCCCHHUUHDDDDDDDD
|
||||||
|
VDVVRUUUUUUUUAUAWAAAWWWWWWWWUUFFFFFFGGGGGFGGGJJJJJRRRRRRRRRREEEEEEEEEEEJJJJJJJJXXXXQQQQQQQQQSSSSSSSSUUUUUUUUUUUUGDDDDCCCCCCCCCCHHHHHDDDDDDDD
|
||||||
|
VVVVUUUUUUUUUUUWWAAAWWWWWWWWUUUUFFFFFFGGGGGGGGJJJJRRRRRRRREEEEEEEEEEEEEJJJJJJJJXXXXQQQQQQQQQQSSSSSSSSUUUUAUUUUUGGGDDDCCCCCCHHHHHHHHHDHDDDDDD
|
||||||
|
VVVVUUUVUDUUDDDDWWAWWWWWWWWWUUUFFFFFZZFGGGGGGGGJJJRRRRRRRRREEEEEEEEEEEEJJJJJJJJJJJQQQYYYYYZQQSSSSSSUUUUAUAUUUUGGGGDDDCCCCCCHHHHHHHHHHHDDDDDD
|
||||||
|
VVVVUVUVUDDDDDDDWWWWWWWWWWWWUUUFFFFFZFFGFFGGGGGJJJJRRRRRRRRESEEEEEEEEEEJJJJJJJJJJJJJJYYYYYYYYSSSSSSUSUAAAAAUUUGGEGDDDCCCCCCHHHHHHHHHHHDDDDDD
|
||||||
|
VVVVVVVVDDDDDDDDWWWWWWWWWWWWUUFFFFFFFFFFFFFGGGGGJJJJRRRRRRREEEEEEEEEEEEEJJJJJJJJJJJJJYYYYYYYYYSSSSSSSUAAAAAUUGGGGGDDDCCCCCCHHHHHHHHHHHHHDDDD
|
||||||
|
VVVVVVDVDDDDDDDDWWWWWKKKWWWWWGTFFFFFFFFFFFFFFFGJJJJJRRRRREEEEEEEEEEEEEEJJJJJJJJJJJJJJJYYYYYYYYYYSCSCSUAAAAUUGGGGGGGGDCCCCCCHHHHHHHHHHHHHPDDD
|
||||||
|
VVVVVVVDDDDDDDDDWWKWWKKKWWWWWGFFFFFFFFFFFFFFFFJJJJJJHLHRRQEEEEEEEEEEEEEJJJJJJJJJJJJJJYYYYYYYYYYYYCCCCKKKAAUUUUGGGGDDDCCCCCCHHPKHHHHHHHHHHDVD
|
||||||
|
VVVVMVVMDDDDDDDDKKKKKKKKKKWKGGGFFFFFFFFFFFFFGFJJJJJHHHHRRQEEEEEEEEEEEEJJJJJJJJJJJJXJJYYYYYYYYYYYYCCCCKKKDUUUUUGGGGGDDDCCCCPPYPPHHHQHQQVHHDDD
|
||||||
|
VVVMMVMMMDDDDDDDDKKKKKKKKKKKKGGFFFFFFFZZZZVGGGJJJJJHHHHHZHEEPEEEMMEMMJJJJJJJJJJJJJJJJYYYYYYYYYYCCCCCCCKKDDCUUUGGGGGDDDCCCCPPPPPPQFQQQVVVDDID
|
||||||
|
VMMMMMMMMDDDDDDDDKKKKKKKKKKKGGGGGGGFFFVVVVVGGGJJJJHHHHHHHHHEPEEEIMMMMYYYJJJJJJJJJQJJJYYYYYYYYYYYCCCCCCKKCCCUUUUGYGGDDDCCCCPPPPPPQFQQQQVQIIII
|
||||||
|
VMMMMMMNDDDDDDDDKKKKKKKKKKKKKGGGGGGFZZVVVVVVBGJJJHHHHHHHHHHHPPPEMMMQMMMMPJJJXJJJJJJWWYYYYYYYYYYYYCCCCCCKCCCCCCCYYGYDNNNNNNPPPPPOQQQQQQQQIIII
|
||||||
|
MMMMNNNNDDDDDDDDDNKKKKKKKKKKKKGGGGGGGVVVVVVVBBBBBBHHHHHHHHHHPPMMMMMMMMMMMMMJJHHHHHJJWYYYYYYYYYYYYCCCCICCCCCCCCCYYYYLNNNOOPPPPPOOQQQQQQQQQQII
|
||||||
|
MMMMMNNNNNDDDDDDDDKKKKKKKKKKKKGGGGGGGPUVVVVBBBBBBBBHHHHHHHHHHMMMMMMMMMMMMMMJHHHHHHHHHYYYYYYYYYYYCCCCIICCCCCCCCLLLLLLNNNOOKXXKKQQQQQQQQQQQIII
|
||||||
|
MMMNNNNNNNNDDDDDDKKKKKKKKKKKKKGGGGGRRUUVVVBBBBBBBBBHHHHHHHHHMMMMMMMMMMMMMMUUUUUUUUKHKYYYYYYYYYTYCIIIIICCCCCCCCLLLILOOOOOOXXOXKKKQQQQQQQQQIII
|
||||||
|
MMNNNNNNNNNNDDDDDKDJKKKKKKKEKGGGGGUUUUUQVVBBBBBBBBBBHHHHHHHHHMMMMMMMMMMMUUUUUUUUUUKKKYYYYYYYTTTTIILIIIIICCCCCILOOILOOOOOQXXXXXXQQQQQQQQQIIII
|
||||||
|
MMNNNNNNNNNDDDDDDDDDYKKKPKPZZZGGGUUUUUUBBVBKBBBBBBBBHHHHHHHHHHEMMMMMMMMMMUUUUUUUUUKKKYYYYTTTTTTTIIIIIIIIICCIIIIOOOLOOOOOQQXXXXXXQQQQQQQIIIII
|
||||||
|
MMNNNNNNNNNNDDDDDDDDDEKPPPPZZGGGGUUUUUUUBBBBBBBBBBBBHHHHHHHHEEEDDDDDDDMMMUUUUUUUQUKKKQYYYTTTTTTIIIIIIIIIINCIOIOOOOOOOOOOQOXXXXXXMQRRQQQIIIII
|
||||||
|
NNNNNNNNNNDDDDDDDDDDDXPPPPPZZZGGUUUUUUUUUBBBBBBBBBOOHHHHHHHHHEEDDDDDDDMMMMUUUUUUQUKQRQFYTTTTTTTTTIIIIIIIIIIIOOOOOOOOOOOOOOOXXXXXQQXQQQQILIII
|
||||||
|
NNNNNNNNNRRRDDIDDDDDDXXXXXXZZZZZUUUUUUUUUBBBBBBBBBOHHHHHHHHDDDDDDDDDDDMMMMUUUUUUQQZQQQQYTYYTTTTTTTIIIIIIIIIIOOOOOOOOOOOOOOXXXXXXXXXXQQQQLLII
|
||||||
|
NNNNNNNNRRRRRRDZDDXXXXXXXXEZZZZZZXZUUUUUUUUBBBBOBOOOHHHHHHHDDDDDDDDDDDMMMUUUUUUUQQQQQQOYYYYYTTTTTTJJJJJJJJIIIIUIIOOOOOOOOOOXXXXXXLLLLQLLLLLU
|
||||||
|
MMMNNNNNNRRRRDDDDDXXXXXXXXEZZZZZZZZUUUUUUUUUUUUOOOOOHHHHHHHDDDDDDDDDDDMMUUUUUUUUQQQQQQOYYYYYYTYTIIJJJJJJJJIIIIIIIOOOOOOOOOOOXXXXLLLNLLLLLLLU
|
||||||
|
NNNNNNNNNRRRRRRLDOOOXXXXXXEZZZZZZZZQQUUUUUUUUUUUUVVVEEEHHHEDDDDDDDDDDDMUUUUUUUUUUUQQQQQYYYYYYYYTTTJJJJJJJJIIIIIIIOOOOOOOOXXXXXXXLLLLLLLLLLLU
|
||||||
|
PNNNNNNNRRRRRRRLOOOOOXXXXXZZZZZZZZZZQUUUUUUUUUUUUUVEEEEEHHEDDDDDDDDDDDMUUUUUUUQQQQQQQQQYYYYYYYYYTIJJJJJJJJIEIIIIIOKOOOGKKXXXXXXXXLLLLLLLLUUU
|
||||||
|
PNNNNNNNRRRRRODOOOOOOXXXXXIZZZZZZZZQQUJZUUUUUUUUUVVVVEEEEEEDDDDDDDDDDDUUUUUPUQQFFQQQQQQYYYYYYYYYYYJJJJJJJJIIIIIIOOKKKKKKKBBXXIXXXLLLLLLLLUUS
|
||||||
|
PZNNNNNRRRRRNOOROOOOOXXXXIIIIZZZZZZQQQZZUUUUUUUUUUVVVEEEEEEDDDDDGGGGUUUUUUUUUUUHHQHHQYYYYYYYYYYYYYJJJJJJJJJJWWWWIKKKKKKKNKXXXIXLLLLLLLLLLSUS
|
||||||
|
PZDNNNNZZZZZOOOOOOOOOOXXIIIIIZZZZZZQQZZZUUUUUUUUUUMBBEEEBBEDDDDDHHHHUUUUUUUUUUUHHHHHQYYYYYYYYYYYWWJJJJJJJJJJWWWWWKKKKKKKKKKXOXXGGGZLLLLLLSSS
|
||||||
|
ZZDDNNNZZZZZOOOOOOOOOOOXXIIIQZZZZZZQZZZZZZZZRUUUUUUBBBBBBEEDDDDDHHHHHHHGUUUUUHHHHHHHQYYYYYYYYYYYWWWWWIIIIJJJWWWWWKKKKKKKKKKOOXGGGGZLZZSSSSSS
|
||||||
|
ZZZZZZZZZZZZZOOOOOOOOOOTOOIIQZZZQQQQQQQZZZZZZZUUUWWBBBBBBEEEEEEHHHHHHUHHOOHHHHHHHHHHYYYYYYYYYYYYWWWWWIIIIJJJWWWWWKKKKKKKMMKOOOMGGZZZZZSSSSSS
|
||||||
|
GZZOZZZZZZZZOIOZOOOOYOOOOOOQQQQQQQQQQQZZZZZZZZUUUWBBBBOBBEEEHEEEHHHHXHUOOOOOHHHHHHHHYYYYYYYYYYYUXXWWWIIIIIJJWWWWWWKKKKKQQMMMMMMMZZZZZZSSSSSS
|
||||||
|
ZZZZZZZZZZZOOOOOAOOYYOMMMMQQQQQQQQQZZZZZZZZZZJJJWWWOOOOOBEHEHHHHHHHHHHHOOOOHHHHHHHHHHHYYYYYYYYYYXXXXXXXXXXJJWWWWWWWWKKQQMMMMMMMZZZZZZTSOSSSS
|
||||||
|
ZZZZZZZZZZZOOOOOOXOOOOMMMMMQQQQQQQQZKZZZZZZZJJJJJJWWOOOOEEHHHHHHHHOOHHOOOOOHHHHHHHHHHHYYDDYYYNYFXXXXXXXXXXJJWWWWWWNNRRNNNMMMMMMMZZZZZZSSSSSS
|
||||||
|
ZZZZZZZZZZPOOOORRMMJOMMMMMQQQQQQQQQQZZZZZZJZJJJJJJJWOOOOOHHHHHHHHHOOOOOOOOYHHHHHHHHHHHHDDDYYYYFFXXXXXXXXXXXXWWWWNWNNNNNNMMMMMMMZZZZZZUSSSHSS
|
||||||
|
ZZZZZZZZZZZDDDOOOMMMMMMQQQQQQQQQQQQQXXZZJJJJJJJJJJJWOOOOOHHHHHHHHHHHOOOOOOOHHHHHHHHHLHDDDDYYYWXXXXXXXXXXXXXXWWWWNNNNNNNNMMMMMMZZZZZZZZSHHHHH
|
||||||
|
ZZZZZZZZZZDDDDDMMMMMMMMQQMPPQQQQQQQFQQAAJJJJJJJJJJOOOOOOHHHHHHHHHHHHOOOOOOVHHHHHHHHHHDDDDDYWWWAXXAXXXXXXXXXXWWWWWNNNNNNLMMMMMMMZZZZZZPSHHHHH
|
||||||
|
ZZZZZZZZZDDDDDDDMMMMMMMMMMMMQQQQQQQQQAAAJJJJJJJJJJUUOOOOHHHHHHHHHHHHOOOOOOVHHHHHHHHHHHHDDDAAAAAAAAXXXXXXXXXXXXWWWNNNNNNLMMMMMMMZDZZZZSSSHHHH
|
||||||
|
ZZZZZZZZTZZZDDDMMMMMMMMMMMMTQQQQQQQQQAAAJJJJJUJJUUUUOOOOAHHHHHHHHHHHOOOOOOVVHHHHHHHHHEEEDDDAAAAAAAXXXXXXXXXXXXWWWWWNNNNWMMMMMMWDDDZZZZHHHHHH
|
||||||
|
ZZZZZZZZZZZZDDDMMMMMMMMMMMMMQQQQQQQQQNAAJJUUUUUUUUUUOOOHHHHHHHHHWWWWWWOOOOOOHHHHHHHEEEEEDAAAAAAAAAXXXXXXXDEXXXWWWWWWWWWWWMMFDDDDDDYZDDDDHHHH
|
||||||
|
ZZZZZZZZZZDDDDDMMMMMMMMMMMJRRQQQQQQQQNNNJUUUUUUTUUTOOOOHHHHHHHHHWWWWWWOOOOOHHHHEEEEEEEEEDDDAAAAAAAXXXXXXDDDWWWWWWWWWRWWWWFFFDDDDDDYDDDDHHHHH
|
||||||
|
ZZZZZZZZZZZDMMDMMMMJJJJJJMJRRRQQBBBBQCNNJJUUUUTTTTTOOOTHHHWHHHHHWWWWWWOOOOOHHEEEEEEEEEEEDDDAAAASAAXXXDXXDDWWWWWWWWWWRRWFFFFFFDDDDDDDDDDHHHHH
|
||||||
|
ZZZZZZZZZZZMMMMMMMMMKJJJJMJQQQQQBBBNNNNNNNUUUUTTTTTOBTTTHWWQHHHHWWWWWWOJJOJJEEEEEEEEEEEECCCAASASXXXXXDDDDDDWWDWWWWWRRRFFFFDFDDDDDDDDDDDDHHHH
|
||||||
|
ZZZZZZZZQQQQQEQMMMMJJJJJJJJJKBBBBBNNNNNNNNNUUUTTTTTBBBTTTQQQNHNHWWWWWWXXJJJJJJJJEEEEEEEEECCASSSSSSSXIDDDDDDDDDWWWRWWRRRFFFDDDDDDDDDDDDDAHHHH
|
||||||
|
ZZZZZZZZRQQQQQQZZZZJOJJJJJJJJJJBBBNNNNNNNNNTTTTTTTTTBBBTTQQQNNNWWWWWWWNXXXJJXXXXXEEEEEECCCCASSSSSSTTDNDDDDDDDDWWWRRWRRRRRFDDDDDDDDDDDDDAHHHH
|
||||||
|
ZZZZZZZRRQQQQQQZZZZJJJJJJBBBBBBBBBBBNNNNNNNTTTTTTTTTTTTTTTQQNNNWWWWWWWNXXXXXXXXXXXEECCCCCCCCCCCSSSDDDDDDDDDDDDDWRRRRRRRFFFDDDDDDDDDDDDDDTTHH
|
||||||
|
UUUZZUQQQQQQQQQZZZZJJJJJJBBBBBBBBMBNNNNNNNNTTTTTTTTTTTTTTQQQNNNWWWWWWWNNXXXXXXXXEEEEECCCCCCCCCCRSSDDDDDDDDDDDDDDRRRRRRRRRFDDDDDDDDDDDDTTTTTH
|
||||||
|
UUUUUUSQQQQQQQQZBZZJJJJJBBBBBBBBMMMNNNNNNNNTTTDDTTTTTTTTTTQQQNQWWWWWWWXXXXXMMMMMMMEEEERCCCCCCSRRKDDDDDDDDDDDDDDDRRRRRRRFFFFDDDDDDDDDDTTTTTTT
|
||||||
|
UUUUUSSQQQQQQQYBBZBBYYJBBBBBBBBMMMMNNNNNNNNDDDDTTTYTTTTTTTQQQQQQQQQQIIXXXXXMMMMMMMEEERRCCCCCCSRKKKGGDDDDDDDDDDRRRRRRRRRRRRFFDDDDDDDDDDTTTTTT
|
||||||
|
UUUUSSSQQQQQQQBBBBBBBBBBBBBBBBMMMMMMNNNNNDDDDDDDDDTTTTTTTTQQQQQQQQQIIIXXMMMMMMMMMMEERRRRCCCCSSSKKKGKDKVDDDDDDCCRRRRRRRRRRRRFDUDDDDDDDDTTTTTT
|
||||||
|
UUSSSSSQQQQQQQQBBEBBBBBBBBBBBBBMMMMMMMNNNTTTDDDSSSGGTSTTTQQQQQQQQQQIBBXXMMMMMMMMMMEERRRCCCSSSSSWKKKKKKVVDDDCDCCRRRRRRRRRRRFFFDDDNNNNDDDTTOOO
|
||||||
|
UUSSSSQQQQQQQQQQBBBBBBBBBBBJJMMMMMMMMMTTTTTTTDDDSSSSSSSTTSSSQQQQQQQIIXXXMMMMMMMMMMWERRRCCCSSSSSWKSKKKKVVVDVCCCCCRRRERRRRFFFFFFDNNNNNDDTTOOOO
|
||||||
|
SSSSSSQQQQQQQQQQBQQBBBBBBBBJJJJMMMMKMTTTTTTTTTDDSSSSSSSSSSSEEQQQQQIIIXXXMMMMMMMMMMWERERCCCCSSSSSKSKKKVVVVVVCCCCRRRRRRRRFFFFFFNNNNNNNNNOOOOOO
|
||||||
|
SSSSSSSSQQQQQQQQQQQBBBBBBBBJJJJMMMMMMMTTTTTTTTDDSSSSSSSSSSSEEEQQQIIIIIXXMMMMMMMMMMEEEECCCCSSSSSSSSSSKKVVVVVVVCRRRRRRJJRFFFFNNNNNNNNNNNHOOOOO
|
||||||
|
SSSSSSSSQQQQQQQQQQZBBBBBRRJJJJJJJJMMPPTTTSSSSSODSSSSSSSSSSSEEEQQQJEEIIXXMMMMMMMMMMEEEECCCCSSSSSSSSSKKKVVVVVVCCCCCRJJJJJFFFFFFFNNWNNNNNNNOOOP
|
||||||
|
SSSSSSSSQQQUUQQQQQQBRRRRRRJJJJJJJJJMPPTTSSSSSSOOOSSSSSSSSEEEEQQQQEEMMMMMMMMMMMMMMEEEECCCCSSSSSSSSSSKKVVVVVSVDDDDDAJJJJJFFFFFFNNNNNNNNNNHHHHP
|
||||||
|
SSSSSSSQQQUUUUUUQQQQRRRRRRJJJJVJVVJJPTTTTSSSSSOOSSSSSSSSSSEEEEEQEEEMMMMMMMMMMMMMEEEEEECEESESSSSSSKKKKKKVDDDSSDDDDDDJJJJFFFFFFMANNNNNNNHHHHHP
|
||||||
|
SSSSSSSQUUUUUUURRQRRRRRRRJJJJJVVVVVVTTTSSSSSOOOOOOSSSSSSSEEEEEEEEEEMMMMMMMMMMMMMEEEEEEEEEEESSSSSKKKKKKKDDDDDDDDDDDJJJJJFFMMFMMMDMMMMNNUHHHHH
|
||||||
|
SSSSSSSAAUUUUUURRRRRRRRRRJJJJJJVVVVVTTTTSSSSSOOOOOOKSSSSEEEEEEEEEEEMMMMMMMMMMMMMIEEEEEEEEEESYSKSSKKKKKKDDDDDDDDDDDJJJJFFFMMMMMMMMMMMHHHHHHHH
|
||||||
|
SSSSSSAAAUUURRRRRRRRRRRRJJJJJVVVVVVVSVTSSSSSOOOOOOOKKSSOOEEEEEEEEEEMMMMMMMMMMMMMIIYEEEYYEEESHHKSKKKKKKKKKDDDDDDDDGGGGGMMMMMMMMMMMMMMHHHHHHHH
|
||||||
|
SSSSSSSSAAAURERRRRRDDRRRRRRRJRVVVVVVVVVVSSSOOOOOOOOKKSOOOOOEEEEEEEEMMMMMMMMMMMMMIYYEEEYYEEEEHHHKKKKKKKKDDDDDDDDDDGGGGGMIMMMMMMMMMMMMHEHHHHHH
|
||||||
|
SSSSSSSEAAAAEEEERRRDDDRDDDRRRRVVVVVVVVVVVSOOOOOOOOKKKKKKKOOBBEEEEEEMMMMMMMMMMMMMYYYYYYYYEEEHHHHHKKKHKKDDDDDDDDDDDDGGGMMMMMMMMMMMMMMMMHHHHHHH
|
||||||
|
SSSSSSSEAEEAEEEEDDDDDDDDDRRRRRRVVVVVVVVVVVOOOOOOOOKKKKKKKBJBBEEEPEEMMMMMMMMIIYYYYYYYYYYYEEEHHHHHHHHHKKDDDDDDDDDDDDDDGGGGMMMMMMMMMMMMHHHHHHHH
|
||||||
|
SSSSESSEEEEEEEVVDDDDDDDDDDRRRRRVVVVVVVVVVVOOOOOOKKKKKKBBBBBBEEEPPPIIIIIIIIIIIYYYYYYYYJJJEEHHHHHHHHHHHHDDDDDDDDDDDDDGGGMMMMMMMMMMMMMRHHHHHHHH
|
||||||
|
SSEEEEEEEEEEEEDDDDDDDDDDDDDRVRVVVVVVVVVVVVMOMOMMMKKKBBBBBBBBEJEPPPIIIVIIIIIIIIYYYYYGYYYJJJHHHHHHHHHHHHDDDDDDDDDDDDDGCCCCMMMMMMMMMMMMHHHHHHHH
|
||||||
|
SSSSEEEEEEEEEEWDDDDDDDDDDDDVVVVVVVVVVVVVVVMMMMMMKKKBBBBBBBBBBJJJPPJJIIIJIIIIJJYYYYYYYJJJJJHHHHHFHHHHDDDDPDDDDDDDDDDGCCCCSMMMMMMMMMHHHHHHHHHH
|
||||||
|
SSSSEEEEEEEEEEWWDDDDDDDDDLDDYYYVVVVVVVVVVVMMMMMMKFHHBBBBBBBBZJJJJJXJIJJJJIIIJJYYYYYQYJJJJJJJZZZZZHHZZZDZDDDDZDDDCGGGCCCCSMMMMMMMMMHHHHHHHHHH
|
||||||
|
SSSSSEEEEEEEEDDDDDDDDDDDDDYYYYYYVVVVVVVVVVMMMMMFFFHFBBNBBBBBJJJJJJJJJJJJJIIJJJYYJYYYJJJJJJJJZZZZZZZZZZZZZZDZZDAACCCCCCCCMMMMMMMHMMHHHHHHHHHH
|
||||||
|
SSSSEEEEEEEEEEDDDDDDDDDDDYYYYYYVVVVVVVVXVVMMMMMMFFFFFBBBBBBJJJJJJJJJJJJJIIIJJJYJJJJJJJJJJJJJJZZZZZZZZZZZZZZZZZCCCCCCCCCCCMMMMMHHHHHHHHHHHHHH
|
||||||
|
SSSEEEEEEEEEEEVDDDDDDDDDDYYYYYYYYVVVVVVVVVMMMMMMMFFFFFFFFFBJJJJJJJJJVJJJJIIIIJJJJJJJJJJJJJJZZZZZZZZZZZZZZZZZZZCZZCCCCCCCCCCMHMHHHHHHHHHHHHHH
|
||||||
|
SSEEEEEEEWEEEEVVDDDDDDDYDYYYYYYYVVVVMMVVVMMMMMMMMMFFFFFFFFJJJJJJJJJJJJJJJJIIIJJJJJJJJJJJJJJJJZZZZZZZZZZZZZZZZZZZZCYCCCCCCCCCHHHHHHHHHHHHHHHH
|
||||||
|
SSSEEEEEEWWWEVVVVVDDDDYYYYYYYYYYYVEVVMMMMMMMMMMMMMMFFFFFFFJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJZZZZZZZZZZZZZZZZZZZCYCCCCCCCCCCHHHHHHHHHHHHHHH
|
||||||
4
2024/day12/input_small.txt
Normal file
4
2024/day12/input_small.txt
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
AAAA
|
||||||
|
BBCD
|
||||||
|
BBCC
|
||||||
|
EEEC
|
||||||
5
2024/day12/input_small2.txt
Normal file
5
2024/day12/input_small2.txt
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
OOOOO
|
||||||
|
OXOXO
|
||||||
|
OOOOO
|
||||||
|
OXOXO
|
||||||
|
OOOOO
|
||||||
10
2024/day12/input_small3.txt
Normal file
10
2024/day12/input_small3.txt
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
RRRRIICCFF
|
||||||
|
RRRRIICCCF
|
||||||
|
VVRRRCCFFF
|
||||||
|
VVRCCCJFFF
|
||||||
|
VVVVCJJCFE
|
||||||
|
VVIVCCJJEE
|
||||||
|
VVIIICJJEE
|
||||||
|
MIIIIIJJEE
|
||||||
|
MIIISIJEEE
|
||||||
|
MMMISSJEEE
|
||||||
240
2024/day12/src/lib.rs
Normal file
240
2024/day12/src/lib.rs
Normal file
|
|
@ -0,0 +1,240 @@
|
||||||
|
use std::u32;
|
||||||
|
|
||||||
|
use helper::{Day, Variants};
|
||||||
|
use rustc_hash::FxHashSet;
|
||||||
|
|
||||||
|
pub fn main() {
|
||||||
|
helper::main::<Day12>(include_str!("../input.txt"));
|
||||||
|
}
|
||||||
|
|
||||||
|
struct Day12;
|
||||||
|
|
||||||
|
helper::define_variants! {
|
||||||
|
day => crate::Day12;
|
||||||
|
part1 {
|
||||||
|
basic => crate::part1,sample_count=1000;
|
||||||
|
}
|
||||||
|
part2 {
|
||||||
|
basic => crate::part2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Day for Day12 {
|
||||||
|
fn part1() -> Variants {
|
||||||
|
part1_variants!(construct_variants)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2() -> Variants {
|
||||||
|
part2_variants!(construct_variants)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part1(input: &str) -> u64 {
|
||||||
|
let width = input.bytes().position(|b| b == b'\n').unwrap() + 1;
|
||||||
|
|
||||||
|
let mut regions = Vec::<FxHashSet<usize>>::new();
|
||||||
|
let mut tile_exterior_edges = vec![None::<u32>; input.len()];
|
||||||
|
|
||||||
|
let mut id = 0;
|
||||||
|
|
||||||
|
for (i, c) in input.bytes().enumerate() {
|
||||||
|
if c == b'\n' || tile_exterior_edges[i].is_some() {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
let region_id = id;
|
||||||
|
id += 1;
|
||||||
|
regions.push(FxHashSet::default());
|
||||||
|
|
||||||
|
fn propagate(
|
||||||
|
tile_exterior_edges: &mut [Option<u32>],
|
||||||
|
regions: &mut Vec<FxHashSet<usize>>,
|
||||||
|
input: &[u8],
|
||||||
|
id: u32,
|
||||||
|
i: usize,
|
||||||
|
width: usize,
|
||||||
|
) {
|
||||||
|
if tile_exterior_edges[i].is_some() {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
tile_exterior_edges[i] = Some(u32::MAX);
|
||||||
|
|
||||||
|
let mut exterior_edges = 0;
|
||||||
|
|
||||||
|
regions[id as usize].insert(i);
|
||||||
|
let c = input[i];
|
||||||
|
if input.get(i + 1) == Some(&c) {
|
||||||
|
propagate(tile_exterior_edges, regions, input, id, i + 1, width);
|
||||||
|
} else {
|
||||||
|
exterior_edges += 1;
|
||||||
|
}
|
||||||
|
if i > 0 && input[i - 1] == c {
|
||||||
|
propagate(tile_exterior_edges, regions, input, id, i - 1, width);
|
||||||
|
} else {
|
||||||
|
exterior_edges += 1;
|
||||||
|
}
|
||||||
|
if input.get(i + width) == Some(&c) {
|
||||||
|
propagate(tile_exterior_edges, regions, input, id, i + width, width);
|
||||||
|
} else {
|
||||||
|
exterior_edges += 1;
|
||||||
|
}
|
||||||
|
if i >= width && input[i - width] == c {
|
||||||
|
propagate(tile_exterior_edges, regions, input, id, i - width, width);
|
||||||
|
} else {
|
||||||
|
exterior_edges += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
tile_exterior_edges[i] = Some(exterior_edges);
|
||||||
|
}
|
||||||
|
|
||||||
|
propagate(
|
||||||
|
&mut tile_exterior_edges,
|
||||||
|
&mut regions,
|
||||||
|
input.as_bytes(),
|
||||||
|
region_id,
|
||||||
|
i,
|
||||||
|
width,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut total = 0;
|
||||||
|
|
||||||
|
for region in regions {
|
||||||
|
let area = region.len() as u64;
|
||||||
|
let mut perimeter = 0;
|
||||||
|
|
||||||
|
// To count the total perimeter, we just count all the non-interior edges of every tile.
|
||||||
|
for tile in ®ion {
|
||||||
|
perimeter += tile_exterior_edges[*tile].unwrap() as u64;
|
||||||
|
}
|
||||||
|
|
||||||
|
total += area * perimeter;
|
||||||
|
}
|
||||||
|
|
||||||
|
total
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2(input: &str) -> u64 {
|
||||||
|
struct DontCount {
|
||||||
|
top: bool,
|
||||||
|
right: bool,
|
||||||
|
bottom: bool,
|
||||||
|
left: bool,
|
||||||
|
}
|
||||||
|
let width = input.bytes().position(|b| b == b'\n').unwrap() + 1;
|
||||||
|
|
||||||
|
let mut regions = Vec::<FxHashSet<usize>>::new();
|
||||||
|
let mut tile_exterior_edges = vec![None::<u32>; input.len()];
|
||||||
|
|
||||||
|
let mut id = 0;
|
||||||
|
|
||||||
|
for (i, c) in input.bytes().enumerate() {
|
||||||
|
if c == b'\n' || tile_exterior_edges[i].is_some() {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
let region_id = id;
|
||||||
|
id += 1;
|
||||||
|
regions.push(FxHashSet::default());
|
||||||
|
|
||||||
|
fn propagate(
|
||||||
|
tile_exterior_edges: &mut [Option<u32>],
|
||||||
|
regions: &mut Vec<FxHashSet<usize>>,
|
||||||
|
input: &[u8],
|
||||||
|
id: u32,
|
||||||
|
i: usize,
|
||||||
|
width: usize,
|
||||||
|
dont_count: DontCount,
|
||||||
|
) {
|
||||||
|
if tile_exterior_edges[i].is_some() {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
tile_exterior_edges[i] = Some(u32::MAX);
|
||||||
|
|
||||||
|
let mut exterior_edges = 0;
|
||||||
|
|
||||||
|
regions[id as usize].insert(i);
|
||||||
|
|
||||||
|
let c = input[i];
|
||||||
|
|
||||||
|
let no_edge_top = i >= width && input[i - width] == c;
|
||||||
|
let no_edge_right = input.get(i + 1) == Some(&c);
|
||||||
|
let no_edge_bottom = input.get(i + width) == Some(&c);
|
||||||
|
let no_edge_left = i > 0 && input[i - 1] == c;
|
||||||
|
|
||||||
|
if no_edge_top {
|
||||||
|
propagate(tile_exterior_edges, regions, input, id, i + 1, width, DontCount {
|
||||||
|
top: false,
|
||||||
|
bottom: false,
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
exterior_edges += 1;
|
||||||
|
}
|
||||||
|
if no_edge_left {
|
||||||
|
propagate(tile_exterior_edges, regions, input, id, i - 1, width);
|
||||||
|
} else {
|
||||||
|
exterior_edges += 1;
|
||||||
|
}
|
||||||
|
if no_edge_bottom {
|
||||||
|
propagate(tile_exterior_edges, regions, input, id, i + width, width);
|
||||||
|
} else {
|
||||||
|
exterior_edges += 1;
|
||||||
|
}
|
||||||
|
if no_edge_top {
|
||||||
|
propagate(tile_exterior_edges, regions, input, id, i - width, width);
|
||||||
|
} else {
|
||||||
|
exterior_edges += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
tile_exterior_edges[i] = Some(exterior_edges);
|
||||||
|
}
|
||||||
|
|
||||||
|
propagate(
|
||||||
|
&mut tile_exterior_edges,
|
||||||
|
&mut regions,
|
||||||
|
input.as_bytes(),
|
||||||
|
region_id,
|
||||||
|
i,
|
||||||
|
width,
|
||||||
|
DontCount {
|
||||||
|
top: false,
|
||||||
|
right: false,
|
||||||
|
bottom: false,
|
||||||
|
left: false,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut total = 0;
|
||||||
|
|
||||||
|
for region in regions {
|
||||||
|
let area = region.len() as u64;
|
||||||
|
let mut perimeter = 0;
|
||||||
|
|
||||||
|
// To count the total perimeter, we just count all the non-interior edges of every tile.
|
||||||
|
for tile in ®ion {
|
||||||
|
perimeter += tile_exterior_edges[*tile].unwrap() as u64;
|
||||||
|
}
|
||||||
|
|
||||||
|
total += area * perimeter;
|
||||||
|
}
|
||||||
|
|
||||||
|
total
|
||||||
|
}
|
||||||
|
|
||||||
|
helper::tests! {
|
||||||
|
day12 Day12;
|
||||||
|
part1 {
|
||||||
|
"../input_small.txt" => 140;
|
||||||
|
"../input_small2.txt" => 772;
|
||||||
|
"../input_small3.txt" => 1930;
|
||||||
|
"../input.txt" => 0;
|
||||||
|
}
|
||||||
|
part2 {
|
||||||
|
"../input_small.txt" => 80;
|
||||||
|
"../input_small2.txt" => 436;
|
||||||
|
"../input_small3.txt" => 1206;
|
||||||
|
"../input.txt" => 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
helper::benchmarks! {}
|
||||||
3
2024/day12/src/main.rs
Normal file
3
2024/day12/src/main.rs
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
fn main() {
|
||||||
|
day12::main();
|
||||||
|
}
|
||||||
15
2024/day13/Cargo.toml
Normal file
15
2024/day13/Cargo.toml
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
[package]
|
||||||
|
name = "day13"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
nom.workspace = true
|
||||||
|
helper.workspace = true
|
||||||
|
divan.workspace = true
|
||||||
|
|
||||||
|
[[bench]]
|
||||||
|
name = "benches"
|
||||||
|
harness = false
|
||||||
3
2024/day13/benches/benches.rs
Normal file
3
2024/day13/benches/benches.rs
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
fn main() {
|
||||||
|
day13::bench();
|
||||||
|
}
|
||||||
1279
2024/day13/input.txt
Normal file
1279
2024/day13/input.txt
Normal file
File diff suppressed because it is too large
Load diff
0
2024/day13/input_small.txt
Normal file
0
2024/day13/input_small.txt
Normal file
48
2024/day13/src/lib.rs
Normal file
48
2024/day13/src/lib.rs
Normal file
|
|
@ -0,0 +1,48 @@
|
||||||
|
use helper::{Day, Variants};
|
||||||
|
|
||||||
|
pub fn main() {
|
||||||
|
helper::main::<Day13>(include_str!("../input.txt"));
|
||||||
|
}
|
||||||
|
|
||||||
|
struct Day13;
|
||||||
|
|
||||||
|
helper::define_variants! {
|
||||||
|
day => crate::Day13;
|
||||||
|
part1 {
|
||||||
|
basic => crate::part1;
|
||||||
|
}
|
||||||
|
part2 {
|
||||||
|
basic => crate::part2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Day for Day13 {
|
||||||
|
fn part1() -> Variants {
|
||||||
|
part1_variants!(construct_variants)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2() -> Variants {
|
||||||
|
part2_variants!(construct_variants)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part1(_input: &str) -> u64 {
|
||||||
|
0
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2(_input: &str) -> u64 {
|
||||||
|
0
|
||||||
|
}
|
||||||
|
|
||||||
|
helper::tests! {
|
||||||
|
day13 Day13;
|
||||||
|
part1 {
|
||||||
|
small => 0;
|
||||||
|
default => 0;
|
||||||
|
}
|
||||||
|
part2 {
|
||||||
|
small => 0;
|
||||||
|
default => 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
helper::benchmarks! {}
|
||||||
3
2024/day13/src/main.rs
Normal file
3
2024/day13/src/main.rs
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
fn main() {
|
||||||
|
day13::main();
|
||||||
|
}
|
||||||
15
2024/day24/Cargo.toml
Normal file
15
2024/day24/Cargo.toml
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
[package]
|
||||||
|
name = "day24"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
nom.workspace = true
|
||||||
|
helper.workspace = true
|
||||||
|
divan.workspace = true
|
||||||
|
|
||||||
|
[[bench]]
|
||||||
|
name = "benches"
|
||||||
|
harness = false
|
||||||
3
2024/day24/benches/benches.rs
Normal file
3
2024/day24/benches/benches.rs
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
fn main() {
|
||||||
|
day24::bench();
|
||||||
|
}
|
||||||
15
2024/day24/day00/Cargo.toml
Normal file
15
2024/day24/day00/Cargo.toml
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
[package]
|
||||||
|
name = "day24"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
nom.workspace = true
|
||||||
|
helper.workspace = true
|
||||||
|
divan.workspace = true
|
||||||
|
|
||||||
|
[[bench]]
|
||||||
|
name = "benches"
|
||||||
|
harness = false
|
||||||
3
2024/day24/day00/benches/benches.rs
Normal file
3
2024/day24/day00/benches/benches.rs
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
fn main() {
|
||||||
|
day24::bench();
|
||||||
|
}
|
||||||
0
2024/day24/day00/input.txt
Normal file
0
2024/day24/day00/input.txt
Normal file
0
2024/day24/day00/input_small.txt
Normal file
0
2024/day24/day00/input_small.txt
Normal file
48
2024/day24/day00/src/lib.rs
Normal file
48
2024/day24/day00/src/lib.rs
Normal file
|
|
@ -0,0 +1,48 @@
|
||||||
|
use helper::{Day, Variants};
|
||||||
|
|
||||||
|
pub fn main() {
|
||||||
|
helper::main::<Day24>(include_str!("../input.txt"));
|
||||||
|
}
|
||||||
|
|
||||||
|
struct Day24;
|
||||||
|
|
||||||
|
helper::define_variants! {
|
||||||
|
day => crate::Day24;
|
||||||
|
part1 {
|
||||||
|
basic => crate::part1;
|
||||||
|
}
|
||||||
|
part2 {
|
||||||
|
basic => crate::part2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Day for Day24 {
|
||||||
|
fn part1() -> Variants {
|
||||||
|
part1_variants!(construct_variants)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2() -> Variants {
|
||||||
|
part2_variants!(construct_variants)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part1(_input: &str) -> u64 {
|
||||||
|
0
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2(_input: &str) -> u64 {
|
||||||
|
0
|
||||||
|
}
|
||||||
|
|
||||||
|
helper::tests! {
|
||||||
|
day24 Day24;
|
||||||
|
part1 {
|
||||||
|
small => 0;
|
||||||
|
default => 0;
|
||||||
|
}
|
||||||
|
part2 {
|
||||||
|
small => 0;
|
||||||
|
default => 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
helper::benchmarks! {}
|
||||||
3
2024/day24/day00/src/main.rs
Normal file
3
2024/day24/day00/src/main.rs
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
fn main() {
|
||||||
|
day24::main();
|
||||||
|
}
|
||||||
313
2024/day24/input.txt
Normal file
313
2024/day24/input.txt
Normal file
|
|
@ -0,0 +1,313 @@
|
||||||
|
x00: 1
|
||||||
|
x01: 1
|
||||||
|
x02: 1
|
||||||
|
x03: 1
|
||||||
|
x04: 0
|
||||||
|
x05: 1
|
||||||
|
x06: 0
|
||||||
|
x07: 1
|
||||||
|
x08: 0
|
||||||
|
x09: 1
|
||||||
|
x10: 1
|
||||||
|
x11: 1
|
||||||
|
x12: 1
|
||||||
|
x13: 0
|
||||||
|
x14: 1
|
||||||
|
x15: 0
|
||||||
|
x16: 0
|
||||||
|
x17: 1
|
||||||
|
x18: 0
|
||||||
|
x19: 1
|
||||||
|
x20: 0
|
||||||
|
x21: 0
|
||||||
|
x22: 0
|
||||||
|
x23: 1
|
||||||
|
x24: 0
|
||||||
|
x25: 0
|
||||||
|
x26: 1
|
||||||
|
x27: 1
|
||||||
|
x28: 0
|
||||||
|
x29: 0
|
||||||
|
x30: 1
|
||||||
|
x31: 1
|
||||||
|
x32: 1
|
||||||
|
x33: 1
|
||||||
|
x34: 1
|
||||||
|
x35: 0
|
||||||
|
x36: 1
|
||||||
|
x37: 0
|
||||||
|
x38: 1
|
||||||
|
x39: 1
|
||||||
|
x40: 0
|
||||||
|
x41: 0
|
||||||
|
x42: 0
|
||||||
|
x43: 0
|
||||||
|
x44: 1
|
||||||
|
y00: 1
|
||||||
|
y01: 1
|
||||||
|
y02: 1
|
||||||
|
y03: 1
|
||||||
|
y04: 1
|
||||||
|
y05: 0
|
||||||
|
y06: 0
|
||||||
|
y07: 0
|
||||||
|
y08: 0
|
||||||
|
y09: 0
|
||||||
|
y10: 1
|
||||||
|
y11: 0
|
||||||
|
y12: 0
|
||||||
|
y13: 0
|
||||||
|
y14: 1
|
||||||
|
y15: 1
|
||||||
|
y16: 0
|
||||||
|
y17: 1
|
||||||
|
y18: 0
|
||||||
|
y19: 1
|
||||||
|
y20: 0
|
||||||
|
y21: 0
|
||||||
|
y22: 0
|
||||||
|
y23: 0
|
||||||
|
y24: 1
|
||||||
|
y25: 1
|
||||||
|
y26: 0
|
||||||
|
y27: 1
|
||||||
|
y28: 0
|
||||||
|
y29: 1
|
||||||
|
y30: 1
|
||||||
|
y31: 1
|
||||||
|
y32: 1
|
||||||
|
y33: 0
|
||||||
|
y34: 1
|
||||||
|
y35: 1
|
||||||
|
y36: 1
|
||||||
|
y37: 1
|
||||||
|
y38: 0
|
||||||
|
y39: 1
|
||||||
|
y40: 0
|
||||||
|
y41: 0
|
||||||
|
y42: 1
|
||||||
|
y43: 0
|
||||||
|
y44: 1
|
||||||
|
|
||||||
|
sjd XOR mcr -> mvb
|
||||||
|
phj OR mhq -> kdf
|
||||||
|
bbb OR rrh -> qhk
|
||||||
|
x30 AND y30 -> gjm
|
||||||
|
pbd XOR vvt -> z36
|
||||||
|
pqv XOR nws -> z19
|
||||||
|
bdd OR jjf -> fmk
|
||||||
|
x18 AND y18 -> z18
|
||||||
|
y13 XOR x13 -> nfq
|
||||||
|
rtb AND tnr -> qtg
|
||||||
|
scd XOR mgv -> z28
|
||||||
|
bwk OR tdq -> wfr
|
||||||
|
y33 XOR x33 -> hhg
|
||||||
|
y04 XOR x04 -> tcf
|
||||||
|
y22 AND x22 -> hmb
|
||||||
|
rqd XOR dpg -> z30
|
||||||
|
x41 XOR y41 -> qhh
|
||||||
|
x37 XOR y37 -> hrn
|
||||||
|
mfk XOR fmm -> wss
|
||||||
|
x26 XOR y26 -> pjf
|
||||||
|
rkf AND mgk -> kmj
|
||||||
|
pvk XOR kdf -> z10
|
||||||
|
scs AND rds -> dcv
|
||||||
|
x17 XOR y17 -> vhf
|
||||||
|
pbd AND vvt -> jrj
|
||||||
|
hmt OR pdq -> scs
|
||||||
|
x08 XOR y08 -> mcr
|
||||||
|
y13 AND x13 -> pdq
|
||||||
|
bvv XOR tkf -> z31
|
||||||
|
wwr OR jvw -> fmj
|
||||||
|
jvg AND fgc -> kpt
|
||||||
|
gtd XOR qpn -> z20
|
||||||
|
tsg XOR cnb -> z15
|
||||||
|
cnb AND tsg -> rrh
|
||||||
|
y16 XOR x16 -> cvn
|
||||||
|
x23 AND y23 -> fwj
|
||||||
|
hqb OR nwd -> sgh
|
||||||
|
x40 AND y40 -> fpf
|
||||||
|
cvn XOR qhk -> z16
|
||||||
|
bvv AND tkf -> dkm
|
||||||
|
gcv OR bvj -> mvj
|
||||||
|
x35 XOR y35 -> fpq
|
||||||
|
pjf AND vhm -> npv
|
||||||
|
x35 AND y35 -> prf
|
||||||
|
y26 AND x26 -> cdf
|
||||||
|
nfq AND fmk -> hmt
|
||||||
|
y20 XOR x20 -> gtd
|
||||||
|
wwn OR pwv -> wch
|
||||||
|
y19 XOR x19 -> pqv
|
||||||
|
x38 AND y38 -> wwn
|
||||||
|
mvk XOR shr -> z32
|
||||||
|
mgv AND scd -> tdq
|
||||||
|
fwj OR vsq -> z23
|
||||||
|
y16 AND x16 -> fgn
|
||||||
|
y12 AND x12 -> bdd
|
||||||
|
y27 AND x27 -> grd
|
||||||
|
sfr AND scr -> cws
|
||||||
|
jrj OR qtk -> jrs
|
||||||
|
shw OR wss -> nws
|
||||||
|
y18 XOR x18 -> fmm
|
||||||
|
y24 AND x24 -> fmp
|
||||||
|
rbp AND snr -> jjf
|
||||||
|
y12 XOR x12 -> rbp
|
||||||
|
bmn AND wqk -> jwd
|
||||||
|
qgd AND hjm -> tgn
|
||||||
|
x03 AND y03 -> nmn
|
||||||
|
hjm XOR qgd -> z06
|
||||||
|
y21 AND x21 -> rjm
|
||||||
|
y19 AND x19 -> rmp
|
||||||
|
y11 AND x11 -> rpw
|
||||||
|
y33 AND x33 -> dpb
|
||||||
|
mvf AND jbg -> snp
|
||||||
|
y27 XOR x27 -> mvf
|
||||||
|
mvj XOR tsw -> z43
|
||||||
|
x34 XOR y34 -> ggn
|
||||||
|
smq XOR ggn -> z34
|
||||||
|
x14 AND y14 -> rds
|
||||||
|
cws OR fpf -> rmb
|
||||||
|
y36 AND x36 -> qtk
|
||||||
|
y42 XOR x42 -> ssh
|
||||||
|
cdv OR prf -> vvt
|
||||||
|
x24 XOR y24 -> wqk
|
||||||
|
ggn AND smq -> wng
|
||||||
|
msq AND fmj -> vvf
|
||||||
|
fmp OR jwd -> jvg
|
||||||
|
scs XOR rds -> z14
|
||||||
|
y17 AND x17 -> vmq
|
||||||
|
nfw OR kmj -> rwp
|
||||||
|
dkm OR hgm -> shr
|
||||||
|
x31 AND y31 -> hgm
|
||||||
|
tht OR mtg -> rqd
|
||||||
|
x02 AND y02 -> wwr
|
||||||
|
qfj AND rcg -> bck
|
||||||
|
vrk OR nhn -> z45
|
||||||
|
x28 AND y28 -> bwk
|
||||||
|
pvc XOR sgh -> z44
|
||||||
|
x29 XOR y29 -> gqk
|
||||||
|
qmd XOR bpr -> bmn
|
||||||
|
x36 XOR y36 -> pbd
|
||||||
|
y08 AND x08 -> wdc
|
||||||
|
y41 AND x41 -> mgc
|
||||||
|
prv XOR fpq -> z35
|
||||||
|
cjw OR mcv -> qfj
|
||||||
|
msq XOR fmj -> z03
|
||||||
|
mqw OR rpw -> snr
|
||||||
|
kqp OR hrw -> mqb
|
||||||
|
y43 XOR x43 -> tsw
|
||||||
|
wch XOR brj -> z39
|
||||||
|
y40 XOR x40 -> scr
|
||||||
|
y02 XOR x02 -> kfr
|
||||||
|
y31 XOR x31 -> tkf
|
||||||
|
x14 XOR y14 -> jss
|
||||||
|
jrp OR wrk -> rcq
|
||||||
|
rmp OR npb -> qpn
|
||||||
|
x30 XOR y30 -> dpg
|
||||||
|
y15 XOR x15 -> cnb
|
||||||
|
snp OR grd -> mgv
|
||||||
|
x07 AND y07 -> qtw
|
||||||
|
fmk XOR nfq -> z13
|
||||||
|
x22 XOR y22 -> qns
|
||||||
|
ngc AND rcq -> mqw
|
||||||
|
bmn XOR wqk -> z24
|
||||||
|
x28 XOR y28 -> scd
|
||||||
|
y00 AND x00 -> mgk
|
||||||
|
fgn OR cpm -> qfp
|
||||||
|
qtg OR qtw -> sjd
|
||||||
|
bpr AND qmd -> vsq
|
||||||
|
x06 AND y06 -> shf
|
||||||
|
pqv AND nws -> npb
|
||||||
|
pjf XOR vhm -> z26
|
||||||
|
y09 XOR x09 -> rpg
|
||||||
|
wfr AND gqk -> mtg
|
||||||
|
rpg XOR ggm -> z09
|
||||||
|
x25 XOR y25 -> fgc
|
||||||
|
qns XOR qtq -> z22
|
||||||
|
x42 AND y42 -> gcv
|
||||||
|
shr AND mvk -> hrw
|
||||||
|
jrs XOR hrn -> z37
|
||||||
|
ssh AND vcr -> bvj
|
||||||
|
mvb OR wdc -> ggm
|
||||||
|
qtq AND qns -> ksj
|
||||||
|
mgc OR fgh -> vcr
|
||||||
|
qfj XOR rcg -> z05
|
||||||
|
mcr AND sjd -> z08
|
||||||
|
y32 AND x32 -> kqp
|
||||||
|
mqb AND hhg -> bwc
|
||||||
|
tsw AND mvj -> nwd
|
||||||
|
x01 AND y01 -> nfw
|
||||||
|
gkw XOR mhv -> z21
|
||||||
|
vvf OR nmn -> ncp
|
||||||
|
y05 XOR x05 -> rcg
|
||||||
|
mqb XOR hhg -> z33
|
||||||
|
qhk AND cvn -> cpm
|
||||||
|
kdv OR kdk -> chf
|
||||||
|
scr XOR sfr -> z40
|
||||||
|
djs XOR chf -> z38
|
||||||
|
ncp AND tcf -> cjw
|
||||||
|
pvk AND kdf -> jrp
|
||||||
|
y10 XOR x10 -> pvk
|
||||||
|
cdf OR npv -> jbg
|
||||||
|
rkf XOR mgk -> z01
|
||||||
|
y44 XOR x44 -> pvc
|
||||||
|
rtb XOR tnr -> z07
|
||||||
|
ksj OR hmb -> bpr
|
||||||
|
hrn AND jrs -> kdv
|
||||||
|
x07 XOR y07 -> rtb
|
||||||
|
qhh AND rmb -> fgh
|
||||||
|
y38 XOR x38 -> djs
|
||||||
|
y34 AND x34 -> qmr
|
||||||
|
x01 XOR y01 -> rkf
|
||||||
|
djs AND chf -> pwv
|
||||||
|
jvg XOR fgc -> z25
|
||||||
|
kfr AND rwp -> jvw
|
||||||
|
rwp XOR kfr -> z02
|
||||||
|
qpn AND gtd -> qgt
|
||||||
|
sgh AND pvc -> vrk
|
||||||
|
y11 XOR x11 -> ngc
|
||||||
|
kpt OR tqk -> vhm
|
||||||
|
wng OR qmr -> prv
|
||||||
|
shf OR tgn -> tnr
|
||||||
|
x23 XOR y23 -> qmd
|
||||||
|
y03 XOR x03 -> msq
|
||||||
|
bck OR qtn -> hjm
|
||||||
|
gkw AND mhv -> dvk
|
||||||
|
y37 AND x37 -> kdk
|
||||||
|
y43 AND x43 -> hqb
|
||||||
|
y09 AND x09 -> phj
|
||||||
|
rmb XOR qhh -> z41
|
||||||
|
x44 AND y44 -> nhn
|
||||||
|
phf OR qgt -> gkw
|
||||||
|
vmq OR jvq -> mfk
|
||||||
|
ggm AND rpg -> mhq
|
||||||
|
y05 AND x05 -> qtn
|
||||||
|
bwc OR dpb -> smq
|
||||||
|
y20 AND x20 -> phf
|
||||||
|
rqd AND dpg -> pps
|
||||||
|
wch AND brj -> mwm
|
||||||
|
x04 AND y04 -> mcv
|
||||||
|
mfk AND fmm -> shw
|
||||||
|
ssh XOR vcr -> z42
|
||||||
|
dcv OR jss -> tsg
|
||||||
|
pps OR gjm -> bvv
|
||||||
|
gqk XOR wfr -> z29
|
||||||
|
snr XOR rbp -> z12
|
||||||
|
x29 AND y29 -> tht
|
||||||
|
y10 AND x10 -> wrk
|
||||||
|
x00 XOR y00 -> z00
|
||||||
|
qfp XOR vhf -> z17
|
||||||
|
tcf XOR ncp -> z04
|
||||||
|
vhf AND qfp -> jvq
|
||||||
|
dvk OR rjm -> qtq
|
||||||
|
mvf XOR jbg -> z27
|
||||||
|
ngc XOR rcq -> z11
|
||||||
|
x06 XOR y06 -> qgd
|
||||||
|
fpq AND prv -> cdv
|
||||||
|
x15 AND y15 -> bbb
|
||||||
|
x25 AND y25 -> tqk
|
||||||
|
x32 XOR y32 -> mvk
|
||||||
|
y39 AND x39 -> dpd
|
||||||
|
y39 XOR x39 -> brj
|
||||||
|
x21 XOR y21 -> mhv
|
||||||
|
dpd OR mwm -> sfr
|
||||||
10
2024/day24/input_small.txt
Normal file
10
2024/day24/input_small.txt
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
x00: 1
|
||||||
|
x01: 1
|
||||||
|
x02: 1
|
||||||
|
y00: 0
|
||||||
|
y01: 1
|
||||||
|
y02: 0
|
||||||
|
|
||||||
|
x00 AND y00 -> z00
|
||||||
|
x01 XOR y01 -> z01
|
||||||
|
x02 OR y02 -> z02
|
||||||
139
2024/day24/src/lib.rs
Normal file
139
2024/day24/src/lib.rs
Normal file
|
|
@ -0,0 +1,139 @@
|
||||||
|
use std::collections::HashMap;
|
||||||
|
|
||||||
|
use helper::{Day, IteratorExt, Variants};
|
||||||
|
|
||||||
|
pub fn main() {
|
||||||
|
helper::main::<Day24>(include_str!("../input.txt"));
|
||||||
|
}
|
||||||
|
|
||||||
|
struct Day24;
|
||||||
|
|
||||||
|
helper::define_variants! {
|
||||||
|
day => crate::Day24;
|
||||||
|
part1 {
|
||||||
|
basic => crate::part1;
|
||||||
|
}
|
||||||
|
part2 {
|
||||||
|
basic => crate::part2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Day for Day24 {
|
||||||
|
fn part1() -> Variants {
|
||||||
|
part1_variants!(construct_variants)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2() -> Variants {
|
||||||
|
part2_variants!(construct_variants)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part1(input: &str) -> u64 {
|
||||||
|
#[derive(Debug, Clone, Copy)]
|
||||||
|
enum Value {
|
||||||
|
None,
|
||||||
|
Known(bool),
|
||||||
|
Op(Op, usize, usize),
|
||||||
|
}
|
||||||
|
#[derive(Debug, Clone, Copy)]
|
||||||
|
enum Op {
|
||||||
|
And,
|
||||||
|
Or,
|
||||||
|
Xor,
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut wires = Vec::new();
|
||||||
|
let mut wire_by_name = HashMap::new();
|
||||||
|
|
||||||
|
fn intern<'i>(
|
||||||
|
wires: &mut Vec<Value>,
|
||||||
|
wire_by_name: &mut HashMap<&'i str, usize>,
|
||||||
|
name: &'i str,
|
||||||
|
) -> usize {
|
||||||
|
*wire_by_name.entry(name).or_insert_with(|| {
|
||||||
|
let idx = wires.len();
|
||||||
|
wires.push(Value::None);
|
||||||
|
idx
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
let (start, gates) = input.split_once("\n\n").unwrap();
|
||||||
|
|
||||||
|
for initial in start.lines() {
|
||||||
|
let (wire, value) = initial.split_once(": ").unwrap();
|
||||||
|
let value = value.parse::<u8>().unwrap() == 1;
|
||||||
|
|
||||||
|
let wire = intern(&mut wires, &mut wire_by_name, wire);
|
||||||
|
wires[wire] = Value::Known(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
for computed in gates.lines() {
|
||||||
|
let (expr, wire) = computed.split_once(" -> ").unwrap();
|
||||||
|
let [lhs, op, rhs] = expr.split(' ').collect_array().unwrap();
|
||||||
|
|
||||||
|
let wire = intern(&mut wires, &mut wire_by_name, wire);
|
||||||
|
let lhs = intern(&mut wires, &mut wire_by_name, lhs);
|
||||||
|
let rhs = intern(&mut wires, &mut wire_by_name, rhs);
|
||||||
|
|
||||||
|
let op = match op {
|
||||||
|
"AND" => Op::And,
|
||||||
|
"OR" => Op::Or,
|
||||||
|
"XOR" => Op::Xor,
|
||||||
|
_ => panic!("Invalid op: {op}"),
|
||||||
|
};
|
||||||
|
|
||||||
|
wires[wire] = Value::Op(op, lhs, rhs);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn eval(wires: &mut Vec<Value>, wire: usize) -> Option<bool> {
|
||||||
|
match wires[wire] {
|
||||||
|
Value::None => None,
|
||||||
|
Value::Known(v) => Some(v),
|
||||||
|
Value::Op(op, lhs, rhs) => {
|
||||||
|
let lhs = eval(wires, lhs)?;
|
||||||
|
let rhs = eval(wires, rhs)?;
|
||||||
|
let result = match op {
|
||||||
|
Op::And => lhs & rhs,
|
||||||
|
Op::Or => lhs | rhs,
|
||||||
|
Op::Xor => lhs ^ rhs,
|
||||||
|
};
|
||||||
|
|
||||||
|
wires[wire] = Value::Known(result);
|
||||||
|
|
||||||
|
Some(result)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut result = 0;
|
||||||
|
|
||||||
|
for (wire_name, wire) in wire_by_name {
|
||||||
|
let Some(bit_number) = wire_name.strip_prefix("z") else {
|
||||||
|
continue;
|
||||||
|
};
|
||||||
|
let bit_number = bit_number.parse::<u32>().unwrap();
|
||||||
|
|
||||||
|
let value = eval(&mut wires, wire).unwrap();
|
||||||
|
|
||||||
|
result |= (value as u64) << bit_number;
|
||||||
|
}
|
||||||
|
|
||||||
|
result
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2(_input: &str) -> u64 {
|
||||||
|
0
|
||||||
|
}
|
||||||
|
|
||||||
|
helper::tests! {
|
||||||
|
day24 Day24;
|
||||||
|
part1 {
|
||||||
|
small => 4;
|
||||||
|
default => 41324968993486;
|
||||||
|
}
|
||||||
|
part2 {
|
||||||
|
small => 0;
|
||||||
|
default => 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
helper::benchmarks! {}
|
||||||
3
2024/day24/src/main.rs
Normal file
3
2024/day24/src/main.rs
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
fn main() {
|
||||||
|
day24::main();
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue