mirror of
https://github.com/Noratrieb/advent-of-code.git
synced 2026-01-14 09:35:01 +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",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "day10"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"divan",
|
||||
"helper",
|
||||
"nom",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "day11"
|
||||
version = "0.1.0"
|
||||
|
|
@ -208,6 +217,34 @@ dependencies = [
|
|||
"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]]
|
||||
name = "divan"
|
||||
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