- commit
- 61e3b0fd22eeaf8cf0762d0d22aa621039ac5ef2
- parent
- 3dd2203eea1c0fdaad4851a2b97ed0c2751da90a
- Author
- Tobias Bengfort <tobias.bengfort@posteo.de>
- Date
- 2023-12-10 09:57
2023-12-10
Diffstat
A | 2023/10/input.txt | 140 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
A | 2023/10/solution.rs | 136 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
A | 2023/10/test1.txt | 5 | +++++ |
A | 2023/10/test2.txt | 5 | +++++ |
A | 2023/10/test3.txt | 9 | +++++++++ |
A | 2023/10/test4.txt | 10 | ++++++++++ |
A | 2023/10/test5.txt | 10 | ++++++++++ |
7 files changed, 315 insertions, 0 deletions
diff --git a/2023/10/input.txt b/2023/10/input.txt
@@ -0,0 +1,140 @@ -1 1 FJ77.F7F.FF.F..7-J.7F|7-7-7-7FJJ-7J-LL-7FL.F-7.F-F77F7F7-77-F--7-FF|-F-L7-|.F7|7.F-77..-FF|--F.J7..|7FFL-JJ7-F-..J77.|FFJ77L---J7F7.J-F77JJ. -1 2 F.J-F.7--J-JJ--77J7LF77...|---|JFJ.|.|--JF-J-7FJ.FL-JJJL-JLLJF|.LF-.|L7FF.F-LJ77.--J7FF--|.-JL-77-7.L-J.|JF|FF--7LJ||J-.FLL7-FJF-7|-L-JL7J.F -1 3 LF-FJ-77F-7L7|LLJJ..JL77-LF-JJ|J.FFLJ..LJ-|J-LJJ.|7|L|-L|JJ|-7L7LFLF-7LJ.7.|F||F-|F||LJF|L-.FLLFFJ|7FL-JL----7FL-7|L|..FJ.LJ-FJLLL7-L7|..FFJ -1 4 .--J.|F7JLJFJJ7L|.FJ.F|J.LLJ.FJ.F|.F|F7-|7L|.F7J.FF-7-7|.|--7L.L7||J.L-L7L77L|7LF|-JL-F.|F.F77FL7F77J|--|.L7||.L7JF-J-7|.F|FF77|.FL7J.LF.-LJ -1 5 ||LFFJ|JF---J||.-.FLFLJ7FFL.-7|LFJLFJF7LFJLJ7L--JL77|JLJ7||FJL7JF|J.F7JF77L7.LJL|J|.|J.F7FF7-F77L7JF7|.F-77J|JFFJ-77FLLFF-7JLJ--.F.L7-7L-L|. -1 6 L-7-.LL-J|F--FJ-7LF.LFLL777.LLJJL7-|.||FJ.F-7L|-7|.-7|FJ|LF|F|JL-777.|7F|L|LJ7F7J-FF7.FF7FJL7||F77FLL-.||.L--7J.-7|FJ77F-LJ.7--7F7.|LLLL7L|J -1 7 |FJ-J77FFLJF-|J||JJ.FJJ-LL-|-LJ7|.F|-JF||F-7|FFJF7LJL7LF--F7-|.|.L---F7LJJLL||7JF-7||F7|||F-J|LJL-7F|7LFF7LF||.7L|77--L7F7J-F--J7-7|-.FF.--J -1 8 F|J|.L-7F7.--7-7|.77|L77JLF-F7JF7F7LJJ|L-7|-|F|JL-..F7-|J|L--F-FF7J|-|J-J.7.LLJ-L7LJ|||||||F7|F---J77F.LF7F77J-FF-J7L|L|JJ|.J-|FJF|.LJ7LJ-LF -1 9 .J7-F-LFJ777.L|FL7LF-F7J7FF7||F||||7|F||LJ7---7JFJ-FFJLF-|7FF|.FJL-7L|7||..F|F77-L-7LJLJ||||LJL77F7J|JFFJLJL7LF7|.L|.|LJLF7L-77|7|J.F7|J.F-7 -1 10 F.F..|LLJ7LF|77|L-JF7||-F7|||L7|LJL--7L77LL|-JLF-7-LJLFJFFJ-77.L7F-J7.F77L77L7LJ|F-JF-7FJ||L7F-JFJL7FF7L-7F7L-JL-7.|7LF|-L7||L7L|JJ.LLL7FF|| -1 11 L-JL7|..|L--777J-JFJ||L-J||LJFJ|F7F--J-F7LFF-7F77F.|F7..7.L|F-F-JL-7F7FF|7L7FL-JFL--JF|L-J|FJL7FJF-JFJL--J|L--7F-J-|||LJ7.L--7J|.J|F7.LL-FL7 -1 12 |.FJ7.F|J-L.LLJ7LFL7LJF7FJL-7L7||LJF7.L||-LJ|F|JFF7-F77-|--F7-L---7||L-7||.7-JL7-F--7FJF--J|F-JL7L-7L----7|F7-LJF7-F--7.F7L|.|.J-LL-L7.|L|J7 -1 13 |F|F7.FJ|F-L-J||.|LL7FJLJF-7L7LJ|F-JL7.|L7J.F7-7FJ|FJL7.F7.||F-7F7|||F-JF7F7JF.LFL-7|L7L-7FJ|F7FJF-JF7F7FJLJL7-FJL-7LJJ.777FFJ-J7FLL-J-J7J.- -1 14 L-LLL-L-JJ-LL7|.FF--J|F7|L7L7|F-JL7F7L7L7|F7||-FJFJ|F-J-F77||L7||LJLJ|F7|LJL7F7F7F7||FJF-JL7|||L7|F-J|||L7F--JFJF-7|..F7.F7|LJ.||J7L..|JL7FL -1 15 LJ7J.|.L.L7--F--|L--7LJL7|L7|||F7L||L-JJ|LJ|||FJFJFJ|F7.|L7||FJ||F--7LJ|L7F-J|LJ||LJ|L7L7F7|LJL-J|L-7|||FJ|F--JFJLLJ7F|7F-J-|-F7L-|LJ7|.L-LJ -1 16 LL|-L|JJL-FJFLJ-JJ|JL--7L7.||||||FJL77F-JF-J||L7L-JFJ|L7L7|||L7LJL-7|F7|FJL7LL-7|L-7L7|FJ|||F----JJFJ|||L7LJF7FJF7F7-7L7--77|-JL7F7J|FF-|.|J -1 17 7-|7.|-FJ7.|JF..LF7JLF7L7L7|||||LJF7L7|F7L7FJL7|F--JFJFJFJ||L7L-7F-JLJLJL7FJF-7||F7L7LJ|FJ||L---7F7L7LJL-JF7|LJL||||L|J.LF|-7J7F|-J-|-L-L7JF -1 18 J|L--7-L---FF|7-F||.FJL7L7||LJ|L-7|L-JLJ|FJL-7||L--7L7L7L7||FJF-JL--7F7J7||-L7LJLJL7L-7|L7LJF---J|L7L--7F-JLJF7||||L7J.|JFL-J||JJ..LF7JFJ|-7 -1 19 .FFL-J7.F-FFF7F7FJL-JF7L-JLJF-JF7|L7F7FFJL--7|LJF--J||FJFJ||L7L7F---J||FFJL7-L--7F-JF7|L-JF-JF--7L7|7F-JL--7L|L-JLJFJ-|J.-|7F7||.F77L.-L-7.F -1 20 J7LL-J--7|LFJLJ|L----JL-7F-7L--JLJFJ||FJF---JL-7|F7-FJL7L7||FJFJ|JF7-|L7L7FJF---JL7L||L--7L77|F-JFJL7L7F---JFJF7F-7L7||.L-|-L|-77FJ-FJ.L||-| -1 21 |L77FJ|7L--L--7|F7F--7F-J|LL-7F--7|FJLJFJF7F7F7|||L7L-7|FJLJ|.L7L7|L7L7|FJL7L----7L7||F-7L7L7||F7L-7L7|L-7F7|FJLJ.L7L7-7J|L|.LL77|JJ||L.-7-| -1 22 L.LJ-FF-7|.|-L|LJ|L7FJL-7|F7FJL7FJ|L7F-J7|||||||||FJF-J||F--JF7|FJ|FJFJ||F-JF7F7FJFJ||L7|-|FJ|LJ|F7L7LJF-J||||F-7F7|FJ7..7|.-7F77.--JJ.7JLJL -1 23 FF-J|J|J7FFJ-FJF7L-J|F77LJ||L--JL7L7||JF7|||LJ||LJL7L-7LJL-7-||||FJL7L7LJL7FJ|||L7|-||FJ|FJ|||F-J||FL-7L7FJ||||FJ||LJF77-LL-F|-JJ-L7..|L-J|| -1 24 |.|FL-J-FLJJ.L-JL--7|||F7FJ|F7|F7L7LJ|FJ|||L7FJL7F7L-7|F---JFJLJ|L-7|7L7F-JL7LJ|FJL7||L7||FJFJ|F7|L7F7|FJL7LJLJL-J|F-JL7JLJ7F-J.||.7.77FJ7FJ -1 25 .L-LJF|FFJ.|-|FF7F-JLJ|||L7LJL-J|7L-7|L7LJ|-|L-7LJL-7|||F-77L--7|F-J|F-J|F7FJF7|L-7|||FJ||L-JFJ|||FJ||||F7|F---7F7|L7F-J7FLF-JLFF-777.-JFJL7 -1 26 F|7JLFLLL.|-FF-J|L---7||L7L-7F--JF--JL-JF7|FJF-JF7F7|LJLJFJF7F7|||F7|L-7||||FJLJF7|LJ|L7|L--7|7|LJL7|LJLJ||L--7LJLJFJL--7JL|7.FFJJLF7FL-J.LJ -1 27 F|7-F-J-|.|7.L-7L7F--J||FJF7|L7F7L---7F-JLJL7L7FJ|||L7F--JF|||LJ|||LJF-J||LJL7F7|LJF-JFJ|F-7|L-JF7FJL7F--J|F--JF-7FJF---JF7.77FLL.7||LJ7F7-J -1 28 |.|7LL7FF-|LLF-JFJL--7LJL-JLJFJ||F-7-||F--7L|FJ|FJ||FJ|F7F7||L-7||L7FJF-J|F--J||L-7L-7L7|L7||F--JLJ|FJ|FF7|L7F7L7||FJ.F7F7|F|-L|-JLF-JF|J|L| -1 29 7-|F||L|L-77-L-7|F7F7L------7|FJ||FJFJ|L-7|FJ|FJ|.||L7LJLJ||L-7|LJFJL7L77||F7.|L-7|F-J7|L-JLJL-7F7F7L7L7|LJFJ|L7|||L-7||||F7-JFFF--JJJ||7F.- -1 30 |L7-|7-|7J|7.F-JLJ|||F7F7-F7||L7|||FJFJF7|LJFJL7|FJ|FJF---JL-7|L-7L-7L7|FJ||L7L-7LJL--7L---7F--J|||L7|FJ|F-JJ|FJ|||F-J||||||7.FFJFJ|FF--FJ7| -1 31 7-J.|F-L7.FF7|F--7LJLJ||L7|LJL-JLJ|L7||||L-7|F7||L7|L7L---7F7|L-7|F-JFJ|L7||FJF7L-7F--JF---JL-7L||L7|||FJL--7|L-JLJ|F-JLJLJL--7J-F7JF|J|L-F7 -1 32 L-|FJ--F|7FJ|LJF7L---7|L7||F7F---7|||L7||F-JLJ|||FJL7|F---J|||F7LJL7FJFJFJ||L7|L7F|L-77L---7F-JFJL7|||||F---J|F----JL7F-------JFL|L7-LJF7..| -1 33 JLL-JJ77FLL7L--JL7F--JL7||LJLJF7FJL7L7||||F---J||L-7LJL7-F7||LJL--7LJFJ7L7|L7||FJFJF7L-7F7FJL-7|F-J|||||L7F7FJL-7F7JFJL-----777FFJFJFF7.77L. -1 34 FF-|F|.FJ-LL----7|L---7LJ|F-7FJ|L-7L-J||LJ|F7F7|L7FL7F-JFJ||L-7F-7|F7L7F7|L7||||FJFJL--J|LJF--J||F7||||L7LJLJF--J|L7L7F--7F-J-F7L7|-FL--LF-L -1 35 |J7|7LLL..LF--7J||F--7L-7|L7|L7|F7L7F-JL-7|||||L7|F7||F7L7||F-J|FJLJ|FJ||L7|||||L7|F7.F7L-7|F7-||||||||7|F---JF-7|FJFJ|F7LJL|||L7|L-7L|J.|F| -1 36 7L-JLJ.LFFFJF7L-J||F-JF7||FJL7|LJL-JL7F7FJLJ||L7|||||LJ|FJ|||F7||F7FJ|FJL7||||||FJ||L7||F7|||L7|||||LJ|FJL----JFJ||FJFJ||F7FF7L7LJF-J7|.L7|J -1 37 JFL7L.FF7FL-JL7F7LJL7FJLJLJF7LJF7F--7|||L--7|L7LJ||||F-J|LLJ||LJ|||L7|L-7||||||||FJ|FJ|||||LJFJ|||||F7LJ|F-----JFJLJFJ||||L7||FJF-J-L7JF|7|J -1 38 .JJJ.FFJ|F7F7LLJL7F7LJF7F7FJ|F-JLJF-J|||F7FJL7|F-J|||L7FJF--J|F-J|L7||F7|||LJ||LJ|FJ|FJ|||L-7L7||||LJ|F--JF---7||F--JF7|||FJ||L7L--7-JLLJJLJ -1 39 |L7.|FL7LJLJ|F7F7||L--JLJ|L7LJF-77L-7||||||F7||L-7|||F|||L-7FJ|F7|L||||LJ||F-JL-7||FJ|FJ|L7FJFJ|||L7FJL7F-JF-7L7|L7F7||||||FJL-JF--JF7.FL7L| -1 40 |FJ-L|FL---7LJ|||LJF----7L-JF7L7L---JLJ|||||LJL-7|||L7LJF--J|FJ|LJFJ||L-7|||F-7FJ||L7|L7|FJ|-L-J||FJL7FLJF7L7L-JL7LJLJLJLJLJF7F7L----7.|LJ-- -1 41 F7J..F---77L-7|||F7L---7L7F7||LL-7F7F7|LJ|||F7F7|LJ|FJF-JF-7|L7L-7|FJ|F7||||L7||FJ|FJL7||L7L---7LJ|F7|F--JL7L----JF--7F7F7F-JLJ|F-7F-J---JFJ -1 42 FJF-FL--7|F7FJLJLJL--7F|FJ|LJL--7LJLJL-77LJ|||||L7FJ|FJF7|FJ|.L7FJ||FJ||||||FJLJL-JL7FJ|L7L7F-7L-7||||L7F-7|F7F7F7L7FJ|||LJF--7LJJLJF7777L|. -1 43 LF|7LFF-JLJLJF--7F--7|FJL7L----7L------JF-7||LJ|FJ|FJL7||||FJF-JL7|||FJLJ||||JF-----JL7|FJFJL7|F7|LJLJ7LJFJLJLJLJL-JL-J|L7||F-JF--7FJL7FF7-- -1 44 .LLF--L7F---7|F-J|F-JLJF7L7.F7FJF7F7F7-FJFJ|L7FJ|FJ|F-J||||L7|F-7||||L-7FJ||L7L--7F-7FJ|L7L7FJ||LJJF7F-7FJF7F7F77F----7L7L7||F7|F-J|F-JFJ|7. -1 45 .FJF7J.LJF--J||F-J|F7F7|L7L-JLJFJ||LJL-JFJ|L7|L7|L-JL-7|LJ|FJ|L7||||L7FJL-JL7|F--J|FJ|FJFJ|||-|L7F-JLJFJL-J||LJL-JF---JFJFJ|LJLJL--JL--JFJ-7 -1 46 -F-JL7FLFJF-7|||F7LJLJ||L|F-7F7|.LJF-7F7|F-7LJFLJF----J|F-JL7|FJ||LJFJL---7LLJL7F-JL7|L7|F-J|FJFJL---7L---7LJF----JF7F7L-J7|F--7F7F7F--7|||7 -1 47 LL-7FJF7|FJFJ|LJ||F7F7LJFJ|LLJLJF-7L7|||LJFJLF7F7L7F-7FJ|F-7|||FJL77L7F-7FJF--7LJF--J|FJ|L7FJL7|F7F--JF7F7L-7L-7F-7|||L-7F7|L-7LJLJ|L7FJL-7| -1 48 |F-JL-JLJL7L-J7FJLJLJL--JFJF---7L7L-JLJL--JF7|LJ|FLJF||J|L7||||L7FJF7LJF|L7|F7L--JF7FJL7|7|L77|||LJF7FJLJ|F7L--J|FJ|||F-J|LJF7L7F-7L7|L---JJ -1 49 -|F7F7F-7FJF---JF7F7F7F7FJ7L--7L-JF---7F7F-JLJF7L---7||FJFJ|||L7|L-JL--7L7|LJ|F7F-J||F-JL7|FJFJ|L--JLJ-F7LJL--7L|L7||||F7|F-JL-J|FJ.|L7L|7J| -1 50 LLJ||LJFJ|.L--7FJ||LJLJLJF7FF7L--7|F--J|||F---JL7F-7|||L7L7||L7|L7F-7F7L7LJ.FJ||||FJ|L-7FJLJFJFJF------JL----7L7L7LJ|||||||F7-F7|L-7|FJL77.7 -1 51 |.FLJJ-|FJF7J.||LLJFF7F--JL-J|F7|LJL-7FJLJL---77LJ|||LJFJFJ|L7LJFJL7|||FJF--JFJ||FJFJF-J|F7FJFJ|L7F7F-------7L7L-JF-J|LJLJLJL-J||F-JLJ7..|-J -1 52 -J-JLJFLJFJ|7F||F7F-J|L-----7|||F7JF-J|F------JF7F7LJF-JFJ||FJF-JF-JLJ|L7|F7FJFJ||FJFJF7LJ|L7L-7.LJLJF----7FJFJF7FJF-JF---7F7F7||L-7F|7|--J. -1 53 ||F7J-L7LL7|F7LJ||L-7L------JLJLJL-JF7||JF7F7F7|LJL-7|F7L-7||FJF7L--7FJFJLJ|L7L7||L7L7||F7L7L--JF7F7-L---7LJ7L7|||FJF7L7F7LJLJ|LJF7L7L-|7..7 -1 54 L-||J7-FF7||||F7|L7JL--------7F--7F-JLJL-JLJLJLJF-7FJLJL7FJLJ|FJ|F-7|L7L-7F|FJFJ|L7|FLJLJ|FJF---JLJL--7F7L-7F7LJ|LJFJL7LJL---7L7FJ|FJ7.FJ-|. -1 55 LL-L.FF7|LJLJ||||FJF7F7F----7|L7FJ|F----7F7F7F--JJLJLF--JL--7||FJ||LJ7L7FJFJ|JL7|-||F----JL7L-----7F-7LJL--J||F7L7FJF7L7F----JJLJ7LJF7-7-LJJ -1 56 |FL-FFJLJF--7LJ|||FJLJLJF--7LJFJL-JL---7LJ|||L-7-F7F7L-7F7F-J||L7L-7F--JL7L7L-7LJFJ|L---7F7L7F----J|FJF7F---JLJL7|L-JL7|L7F7F7F7F7F-J|.|..LJ -1 57 L7|-FL-7FJF-JF7LJLJF7F7FJ|FJF7L7F------JF7LJ|F7L-JLJL7LLJ|L7-LJ|L7FJL7F-7|F|F7L7|L7|F---J|L-JL--7F-JL-JLJF------JL7F7FJL7LJLJLJLJLJF-J777-LF -1 58 .LJ.|F7|||L-7|L7F7FJ||||F-JFJL7|L7F7F7F-JL-7LJ|F----7L--7|FJJL|7FJL-7||-|L7LJ|FJ7.LJL7F-7|F-7F7.LJF7F--77L------77LJ|L7FJF-7F-7F--7L-7.-|7J| -1 59 F7LF-JLJL7F-J|FJ|LJFJ|LJL-7|7JLJ|LJLJLJF---JF7LJF7F7L---J||J-F-7|F7FJ||JL-J.LLJJ|FLF-JL7LJL7|||F-7|||F7L----7F--JF-7L-J|FJ|||FJ|F7L--JFFLL-F -1 60 |7||F7F--JL--JL-JF7L-JFF--JL7F---7F--7FJF7F7|L--JLJL--7F7LJF7|FJLJ|L7|L7J.L||L7F|7.L-7FJF--J|||L7|||LJL----7|L7F-JFJF7FJL-7||L7LJL--7-FJFJ7| -1 61 LJ7LJLJ|JF7F7F7F7||F7F7L----JL--7|L-7||FJLJLJF---7F-7FJ||.FJLJ|L|7|FJL7||-J|F-|-F7JFLLJJL7F7LJL-JLJL-------JL7||F7L-J|L7F-JLJJ|F----J7|F|LF| -1 62 .|LJJ.LF-J||LJLJLJ|||||F--7-F7F7||FFJ|LJF7F-7L--7|L7LJ||L-JF--J.F-JL-7LJ--FF|.|LJJJF--7F7||L7F------------7F-JLJ||F7FJJ|L----7||F----7J-L7F7 -1 63 .F7|7-LL-7|L---7F7|||||L-7|FJLJLJL7L7|F7||L7L-7FJL7L---JF-7L--7FJF7F7|JJ.FLJLJ|7|-LL-7LJLJ|JLJF-----------JL----JLJLJ|FJF---7||LJF7F-J-LLL-- -1 64 F-JL7.LF-JL----J||LJLJL-7||L-7F--7L-J||LJL7L-7|L-7|F-7F-J|L7F-JL7|||LJJ.F-7JLLJF-F-|FL----JF7FJF7F7F7F7F-----------7F7L7L--7LJ|F7|LJ.|FLFL|| -1 65 J|--F7.L-------7|L7F-7F7LJL-7LJF7L-7FJL7F7L--JL7FJ|L7|L-7F-JL7J-LJLJJ|..|L-77J|LLJ-LFF7F77FJLJFJLJ||LJLJF---------7LJL7|F--JF7LJ|L--7J--|LL7 -1 66 L|7L|-FF-------J|FJ|FJ|L7F-7L--JL7FJL-7LJL---7JLJ7L7|L7FJL7F-JJ.FLJ.LL7FL-LL7-F-|7.LFJLJL-JF--JF7F||F--7L--------7L-7FJ|L---JL7|L--7|.77J.|J -1 67 .L-JL|.L-7F7F7F7|L-J|FJLLJFL---7FJL--7L---7F-JF---7|L7LJ77||7LFJ-LJ7FL|7JF|J|-L777FFJF-7F7FJF--JL7LJL-7L---------JF7LJ|L-7F--7L---7|L7L--FL. -1 68 --J7-L7LFJ|LJ||LJF--J||F7F7F--7|L----JF--7LJF-JF--JL-JF7F7LJ7.|||-FF-FJJF.LFJLLLL|-L7||LJLJLL---7L7LF7L7F--------7|L----7LJ-FJF7F7|L-J.|7LJ7 -1 69 |7.L7JL7L-JF-J|F7L7F7|FJLJLJF7LJF7F---JF-JF7L-7L7F7|F7||||-F7-JF7F7.F|7FLJF7|7FL|J|FJ|F-7F7F7|F7L7L7|L7LJF------7LJF7F-7|F-7L-JLJLJ|FL-|F.FF -1 70 77F|-7LF77LL--J||FJ|LJL---7FJL--J||F---JF7||F-JFJ||FJ||LJL-J|7L--J|J-J|-.LF77FF7LFFL-JL7LJLJL7|L-JFJ|FJF7L-----7|F-JLJFJ||FJF--7F--777.|.FLJ -1 71 L--7J|||L-7F---J|L7|F-----J|F----J||F7F7|||LJF7L-J|L7LJF---7L-7J|.|J.|F7|.|J-|LJF-F---7L7F7F7|L--7|FJL-JL------JLJF7F7L-J|L-JF7LJF-J7-7|JJ.F -1 72 7|.LFF-JF-JL--7FJ|LJL7F-7F7|L7F---JLJLJLJLJF7|L7F7L-JF7L--7|F-JJJLF7.--L7.||-7-JFLL--7|J||LJ|L---JLJF------7JF7F--JLJ|F-7|F--JL--JF-7-JJ7L7J -1 73 F-JFFJF7|F7F7-||F7.F-J|7LJLJ.LJF--7F7F---7FJLJ.LJ|F7FJL7F-JLJFJJLF|77||L|FL-7JL-JL|.FJL7LJF-JF-7F7F7|F7|F-7L-JLJF----JL7|||F---7F7|FJJJLL.|| -1 74 |F77L-J|||LJL-JLJL7L--JF7F-----JF7LJLJ7F7|L----7LLJ|L7FJL-7F77F7--J|.|-F-F-JJ7.|L|F7L-7L--JF-JLLJ|||||L7L7L7F7F7L--7F7FJLJLJF7FJ|LJ|JL|.L-L7 -1 75 |LF-LF-JLJF-7F7F7FJF7F7||L----7FJL-----J|L7F7F-JF7FL-JL-7FJ||-7L|J.F|LFF.-|J.L|J|FJL--JF--7|F7F-7LJLJL7L-J7LJ|||F-7LJLJF7F7FJLJ||F-JL7.F.FFF -1 76 LFJJ|L--7FJ7LJ|||L-JLJ|||F7F7FJ|F---7F-7L7LJLJF-JL---7F7LJF||F77F-7FLFF-JL|.-7L-LL---7FJJFJ|||L7|-F7F7L7F--7||||L7|F---JLJLJF7F-JL--7J||FFJ| -1 77 LL||FJ.F||F--7LJL----7|||||||L-JL--7LJLL-JF---JF7F7F7LJL--7||7.FJ7L7JJ||F7JFJL7LLF--7LJF7L-J||FJL-JLJL7LJF7L7LJL-JLJF7F-----J|L7F---JF77FL|7 -1 78 FJ.-FJ.-||L-7|F7F7F--JLJ||||||F7F7-L---7F7|F---JLJLJL-----J||F77J7|.J7-LF.--JLL7|L-7L-7|L7LFJLJF--7F-7L--JL-JLF----7||L7F---7L-JL----J|--7JJ -1 79 F77-L--LLJF-JLJLJLJF---7LJLJL-JLJ|F----J|LJL--7F--------7F7||||F7F|77FJ.J7LL7J-FFF7L7FJL7L-JF-7|F-J||L7F-7F7F7|F---J|L-JL--7L7F-------J.L7-7 -1 80 JL-7L|FLLLL-7F-7F--JF7JL--7F----7|L-7F-7|F----J|F-------J|||||LJL7--FJ.FJ77|.FF--JL-J|F7L7F7|FJ||F7|F-JL7LJLJ|||F7F7|F7F7F7L7|L----7-|.7.|-7 -1 81 ||7J.LL7|L|FJ|FJ|F--JL---7LJF7F-JL7FJ|FJ|L----7||F7FF7F77||||L7F-JJ-7|-L|L7JFFL7F-7F7LJL7LJLJL-JLJLJ|F--JF---J|LJLJLJ|LJLJ|FJL7F7F-JL|--.-7J -1 82 LLL-|7-7JLLL7|L7|L7F7F7F7L-7||L--7|L7||FJF-7F-J|LJL7|LJL-JLJL7|L7|L-F|.F7||F|7LLJFLJL-7FJ7F7F-------J|F--JF7F7|F----7L---7|L7LLJLJJJ-77J7|L7 -1 83 ||L7||7.|.JLLJJ|L7LJ||||L-7|||F--JL-J|LJFJFJL--JF-7LJF7F7F-7FJ|FJ7-FLJF7.FFLF7.||F7F7FJL7FJ|L----7F7FJL---JLJLJL---7L----JL-JF7F7|F7.F777|.7 -1 84 JFFL7JL7|.LF---JFJ7FJ||L7FJLJLJF7F---JF-J7L7F-7FJLL7FJ|||L7||FJL--7.LF|L7F|LF77F7||||L-7|L7|F-7F7LJLJF-----7F7F7F--JF7|F7F7F7|LJL-JL-JL7-J.| -1 85 |F7||7JF7FLL----JF7L-JL-JL--7F-J||JF--JF7F7|L7|L-7LLJFJ||FJLJL7F--JF--JFJ7-F||7|LJLJL-7||FJ|L7||||F7JL----7|||||L---JL-JLJLJLJF--------JJL-J -1 86 FJL|L--L7.LF-----JL-7F7F7LF-JL-7||FJF--JLJ|L-JL--JJF7L-J|L-7F-JL--7L7F-JF77FJL7L---7F7|||L7|FJ|||FJ|F7F-7FJLJLJ|F----7F----7F7|LF7F-7JF|.F7J -1 87 LJ-77L||F-7L-------7|||||FJF-7FJLJL-JF----JF--7LF7FJ|F-7L-7|L--7F-JFJ|F7|L7|F-JF-7JLJ|LJL-JLJFJ||L7|||L7LJF7F7FJL---7||F7F7|||L-JLJFJF77|LJ- -1 88 L-.--7-|JFJ..F7F7F7|LJLJLJFJFJL7F----JF7F--JF-JFJ||FJ|FJF7LJF7FJL7FL7|||L7|||FFJFJF--JF---7F7L-JL-JLJL-JF-JLJ||F7F--JLJ|LJ|LJL7F--7|JJLF-7|. -1 89 |LL-JJ7J7FFFFJLJLJ|L7F7F-7|FJF-JL----7||L7F7L7JL7LJL-JL-JL7FJ|L7FJF7|LJL-J|||FJFJ|L-7FJF7FJ||F-7F7F7F7F7|F---JLJ|L-----JF7L-7FJ|F7||J.7--7|7 -1 90 F7JFL-L77LF7L-7F-7L7||||7LJL-JF7LF7F7LJL7||L-JF7|F7F------JL7|FJL7||L----7LJLJFJ77F7LJL||L7|LJ7||LJLJLJLJL----7FL------7||F7|L7LJ|LJJ.7L7|LJ -1 91 LF7|J7J.|FL||FJL7L7LJ|LJF--7.FJL-JLJL7F7LJL-7FJLJ|LJF--7F7-FJ|L7FJ||F---7|F---JF7FJ|-F7||JLJF-7LJJF-----7F----JF------7|||||L7|F7|-J.F-7L|.7 -1 92 F|-L.L7FL7J|FJF7L7L--JF7L-7L7L-----7FLJL7F-7LJF7FJF7|F-J|L7L7|FJL7||L7F-J|L7F--J|L7L7||||F-7L7|-F7L----7|L-----JF-----JLJLJ|FJ||||||.|-7F--- -1 93 FL.|F|L.F-F-JFJL7|F---J|F7L7L-7F7F7L---7LJFJF-J|L-J||L-7L7|L||L-7LJ|FJ|F7L7LJF7FJ-L7LJLJ|L7|FJL-J|F7-F-JL--7F7F7L-----7F7F7||FJ|LJ--F.FLFJ.| -1 94 |L-J7L7FL.|F7|LLLJL-7F7||L-JF7LJLJL----JF7L7|F7L7F-JL7FJFJL7||F7|F-J|FJ||FJF-JLJ|LFL7F-7L7||L7F-7LJL7L---7FLJLJL------J||||LJL-JF|JL-7JJF-J7 -1 95 |F|.7F|J.-LJLJ|F7|F7LJ|LJF7FJL7F7F-7F7F-JL7|LJL7||F--JL7L7FJ|LJLJL-7||FJ||FJF7FF7-F7LJFJFJ||FJL7L7F7|.F77L---77F---7F7FJLJL7F-7J-|7J.J.LL|.| -1 96 FF|-L-||.J-LF--J|FJL--JF7||L7-LJLJFJ|LJF7FJL---J||L---7L-J|7L-7F---J||L7||L7|L7||FJ|F7L7|FJ|L7FJ7LJ|L-JL----7L-JF--J|LJF7F7LJFJJ.|J.|.F77F-7 -1 97 -7|L|FL7.LF.L--7LJF--7FJLJL-JF7|F7L-JF-J|L--7FF7LJ-F7.L--7L--7||F-7|||FJ|L7||FJ|||FJ||FJ|L7|JLJLF7FJF7F7F--7L---JF7.|F-JLJL--JF7F777JFJ7JLJJ -1 98 .||LFF7F7.-..|7|F7|F-JL7F----JL-JL--7|F7L---JFJL7F7||F--7|F7FJ||L7L7||L7|FJ||L7|||L7|LJFJFJL7F7FJ|L7|LJLJF-J-F--7|L-JL----7F--JL-7LF7||J.F77 -1 99 FJL-F7-JF.FFFFFJ||||F--JL-------7F-7LJ||LF77FJF7LJ|||L-7|LJ|L7||JL7LJ|F|||FJL7|||L7|L7FJ-L7FJ||L7L7||F---J7F-JF-J|F---7F7FJ|F----J-FF|7-L-J7 -1 100 |7|L-.LFL-J.LFJFJLJLJF----------J|FJFFJ|FJL7|FJL--J|L7FJ|F-JFJ||F7|F-JFJ||L7FJ|||FJL-JL7F7|L7|L-JFJLJL-----JF-JF-JL7F7LJLJ-||F77|FF|J.F7L|JJ -1 101 -FJ-J7F7FJF7LL-JF--7FJF7F7F------JL-7L7|L7FJ||||F77L7|L7||F7L-J||LJL-7L7||FJL7|||L--7F7LJ|L7|L7F7|F7F7F-7F--J7FJF-7LJ|F7F7F|LJL-7J7J|7LL.|L7 -1 102 LL7L|JLJ7.FF-F7JL-7|L7|LJLJFF--7JF7FJFJL-J|FJL7FJL7FJ|FJ|LJL7F-JL-7F7|FJ|||F7|LJL7F7LJL7FJFJL7||LJ|||||FJL----JFJFJF7LJLJL-JF--7||L---7|.-.- -1 103 .-7.|.|FL77F7||FF7||-||F----JF7L-JLJJL7F--JL-7||F-JL7||FJF7FJL7FF7||LJ|FJ||||L-7FJ||F7FJL7|F7LJL-7|||||L7F-7F-7|JL-JL7F-7F-7L-7||JF|.L-77LF7 -1 104 .L|-LJ.F.FFJLJL-J||L7LJL--7F-JL7F---7FJ|F-7F-J||L7F7|LJ|FJ|L-7L7|||L7FJ|FJ||L-7|L7|||||F-JLJL7F--J||||L7||LLJ||L---7FJL7|L7L--JLJ|LJ-F.|L..J -1 105 7|JLF-FJ7LL7F7F-7|L7L7F7F-J|F7-LJF--J|FJL7|L-7||FJ||L-7|L7|F7|FJ||L7|L7|L7||F-J|FJ||||||F77F7||7F7||||7||L---7|F--7|L7FJL-J7F7F--7J|..LJL7-7 -1 106 LJ-7J|L||J-LJLJFJ||L7LJ|L--J||F--JF7FJ|F7||F-J|||FJL7FJL7|||LJ|FJ|FJL7||FJ||L-7|L7|||LJ||L7|||L7|LJ||L7||F--7|||F7LJJ|L--7F-JLJF7|.-7FLJF.|- -1 107 |FF.L77-JL..LF7L7L7|L-7|LF-7||L--7||L7||LJ|L7FJ|||F-JL7F||||F-JL7|L-7||||FJ|.FJ|LLJ|L7FJL7|||L7|L-7||FJ||L-7LJLJ|L-7FJF7FJ|F---J||7|FFL7J7.. -1 108 .JJ7FJLJ7.LF-JL-JFJF7FJL7L7|||F7L||L-JLJF-JFJL7|LJL--7L7||LJL7F7|L7FJ||LJL7|FJFJF7J|FJ|F7|LJL7|L7FJLJL7||F7L--7FJF7||FJ|L7|L---7LJLFJJ-|F77L -1 109 FJ7-7-F-7-|L7F--7L-JLJF7L-JLJLJL-JL--7F-JF7|F7|L---7FJFJLJJF7|||L7LJFJL-7FJ|L7|FJL-JL7LJ|L7F-J|L|L7F--J||||F-7LJFJLJLJFL7LJF7F7|F|.J|--7---L -1 110 |.LJ|L--.FF.LJF7|F7F7FJL-----7F--7F7FJ|F7||LJ||F7F-JL7L--7FJLJ|L7L77L7F-J|FJFJ|L--7F7L-7L-JL-7L7L7||F-7|LJLJ||F-JF7F7F7FJF7|||LJ--77L.JJ-|J. -1 111 JF|-777.F-JFF7||LJLJLJF------J|F7||LJL|||||F7|||LJ7F7L7F-J|F7FJ-L7L-7|L-7|L7L7|-F-J||F7|F----JFJF||||FJL7F7F7LJF7|LJ|||L-JLJLJ|..|L7-7J7F|F7 -1 112 LF7.||77|JF7|LJ|JF7.F7L7F-7F-7||LJL--7|||||||||L7F-JL-JL-7|||L7-FJF7|L7FJL7L7||FJF7|||LJL-7F-7L-7LJ||L-7LJ|||F-JLJF7LJL-------7--|-7-|LF|LJ7 -1 113 FJL--F7FFFJLJF7L-J|FJL-J|J||FJ||F7F7FJ||||||LJL-JL----7F-J||L7L7L-JLJFJL-7L-J||L7||||L7F-7||FJF7|F-JL7FJF7LJLJF7F7|L7F7F7F7F--JJF-JJ.J-||-JJ -1 114 -J77L||||L7F7||F-7LJF7F7|FJ|L7|LJ||LJJ||||||F---7F7F--JL-7LJ|L7L----7L7F7L7F-J|FJ|LJL7LJFJ||L7|LJ|F7FJ|FJ|F7F-JLJLJFJ|LJ|||L7|LF7.F.FLF|L7J7 -1 115 |7-7J|JL|LLJLJ|L7L-7|LJLJL7L7LJF7|L--7LJ||LJL7F7LJLJF7F-7L-7F-JF-7F7L7|||FJL7FJ|FJ.F-JF7L7||||||FJ|||FJL7|||L--7-F7L7|F7LJL7L77J.-F||FLJL|-- -1 116 -|.F-L.|.|JJF-JFJF-J|F7F-7L-JJFJLJF-7L-7SJFF-J||F7F7||L7L7FJL-7L7LJ|FJLJLJF-J|FJ|F-JF7||FJLJFJL7L7|LJL-7|LJL7F7L-JL7|LJL--7|FJ.7.|L|FF|7J|-J -1 117 ||-L7FJ--|7.|F-J7L7FJ||L7L----JF-7L7L7FJF-7L-7|||||||L7L7||F--JFJ7FJ|F7F7FJF-JL7|L7FJ|||L--7L7FJFJL-7F-JL--7||L7F-7||F----J||J|--|-FJ7-|FL7| -1 118 777.7J-FJJFF||7FF-JL7|L-JF--7F7|-L7L7|L7L7L--J|LJ||LJFJFJLJ|F-7L-7L7LJLJ|L7L-7FJ|FJL7LJ|F--JFJL7L7F7|L7F7F-JLJFJL7LJLJF--7-LJ-.|LF.-7J7LJJ-L -1 119 JJF7F7.|7J|7LJF-JF7FJL--7|F-J|LJF-JFJL-JLL7F7FJF-JL7||FJ.F-J|FJF-J||F7F7L7|F7|L7|L-7|F-JL--7|F7L7||||FJ||L---7L-7L7F--JF-J.|-J.|-F-FJ|L7.LFJ -1 120 FF.-J7.FF7F|.LL-7|||F---J|L-7|7FJF7L---7FFJ|||FL7F7|FJL-7|F7|L7L--7||LJ|FJ||||FJL7J|||F7F7FJLJL-JLJ||L7|L--7FJF-JFJ|F--JJ7L7.L-JFL-J7FJFJL|7 -1 121 -JJJ.--FJJLL-FLFJ|LJL7F7FJF-J|FJFJ|F7F7L7L-JLJF-J|LJ|F7FJ||||FJF7FJ|L7JLJFJ|LJL-7L7||LJ|||L--7-F--7||J|L-7.LJ-L-7|J|L7F7.||.7F|.L-FFFJF.F-JL -1 122 FL7FF|..L|JL7LL|FJF--J||L7L7FJ|FJFJ|LJL7L-7JF-JF7L7.|||||LJ||L7|LJFJFJF7LL7|F---JFJ|L-7||L7F7|FJF7LJL7|F7L7LF-7FJL-JFJ|L-7F7--FF.F7JLF7-|7F. -1 123 F-F7LL-7-F7LF.FJL7L---JL7|FJ|FJ|LL7L7F7|F7|FJF7|L7L7||||F-7LJFJL-7L7L-JL-7LJL-7F7L7L--J|L7||LJL7|L7F7|LJL7L7L7||F7F7L-JF7LJ|.LFJ-LJ7F|.FLLJ. -1 124 JJ|..|||JLJ||-L--J-F--7|LJ|FJL7|F7L7LJ|||LJL7|||FJFJLJ|LJFJF-JF7FJ7L7F7F-J|F7FJ||FJF---JFJLJF-7LJLLJ|L7F7L7L7||LJLJL7F7|L--JJFJJF|FLL--J.JJ. -1 125 |.|-|J7|FJ7-77|LL|.L-7L-7FJL7||||L-JF-J|L-7FJ|LJL7|F7FJF7L7L-7||L-7FJ||L---J|L7|LJ-L7F7FJ-F7L7L-7F--JFJ|L7L7LJL--7LFJ||L7JFJ-7JJFJ-LJ-FJ-J77 -1 126 F7.F|.LLL.L.J-|7|LFF7L-7LJF7|FJ||F-7|F7|F7|L-JF--JLJ|L7||FJF-J||F7||FJ|F----JFJL--7FJ||L--J|FJF7LJF-7L-JFJFJF7F7FJFJFJ|FJ7-L7|77L.7|7FJ||.L| -1 127 .JJJ-77.|.|..LLFLF-JL--JF7||||FJ||FJLJ|||LJF--JF7F7FJJ|||L7|F7|||LJ||L|L---77|F-7FJL-J|F-7FJ|FJL-7|F|F7FJ.L7|LJLJFL-J-LJ-||.FJF-JFF|JLF-77F- -1 128 F7J|7F7J|F-JF7-L.L--7F7FJ||||LJFJ|L7F7||L-7L7F7|||||F-J|L-J|||||L-7||FJF7F7|FJ|FLJF-7FJ|||L7||F7FJ|FJ||L7F-JL-7F7F7-|FJ.|.77L--7.F||..|.J-7J -1 129 .|JF|||F|J|.-..FFLL|||||J||LJF-JFJFJ|LJL--J-LJ|||||||F7L--7||||L7FJ|||FJLJ||L7L---JFJL7|FJFJLJ|LJFJ|FJ|FJ|F7F-J||||F77-FF.L|L---FLJ-L-|FLL|7 -1 130 F-.LL7|F7FL|JL-L7LFFJ|LJ-LJ7LL7FJ|L7L-------7FJ|LJ||LJ|F7FJ||LJFJL7|||L-7FJL7L-7F--JJ-LJL7|JLFJF7L7|L7LJ7LJ||7FJLJLJL-7LLJL|L|7.|-|7.L|7.|JJ -1 131 |-J-J-LFL7.J.|.LJ7L|FJJ.FJJF-FJ|F7F|F7F-7F7FJL7|F-JL77||||-|L-7L7FJ|||F-JL7FJF-JL---7.LF-JL-7L7|L7|L7L---7||L-JF7F----J-F7.|.|-7J-|FFF|7..-- -1 132 77JFLJFFJF7LL77L--JLJJ||7L-7-|FJ|L-J||||LJ||LLLJL7F7L7LJ|L7L--JFJL7LJLJ-LFJL7L-7F-7FJ-F|F-7FJFJ|F|L7L7F-7L7L7F-J|L--7J|LLFFJF-J|LLJJJ-----|| -1 133 |7F7.LL-7|LFJL|JF7FJJF|J|.LF-LJJL-7FJLJ7|FLJ7JF--J|L7L-7L7L---7|F7|7.|JFJL--JFFJL7LJ-FFLJ-LJLL7L7L-JFJL7L7|FJL7FL7F-J|F7L|J.L..|..JJ.F.|.FFJ -1 134 F-|L|J|.|F-L77F7LLJ|LJ7.|--J.LL.J-LJ7LLF|7F|7LL--7|FJF-J||F7F-JLJLJJ--7LFJLJJLL7FJ7|7||LLFFJ7.|FJJJ-L7FJ-|||F7L7FJL---7-FJL7||F7-JJ.FJ.F|J|. -1 135 L|..J.-FF-.|LFJ77|.L7||-|L7J77FF7||LJFLLL--7J-LJF||L7|7FLLJLJJ|FJF|7J|-FL--|7J||L-7J-JLJ|||FF-LJJ--7J||F-J|LJ|FJ|F7F--J-|LFJ|7J|LL|-J--7.--| -1 136 FF.L7LL7JLFLF-JJ-J.L|7LJ|FL7L|7JLF|7LJJ7.|-F7-|FFLJL|L-77L|LJ|LFJJ.77LFFJJJL7-F|F-J|.FL.FJ.J|LJ|7L||LLJL7FJ-LLJ7LJ||-LJ7--FJ.L7-F-7L||.JJJ.7 -1 137 7JFLL-LJ.LJJ||JFJF7-|FJF-JJ7|LF7F||F.LLF-JLLL-JFF-|LL--J7--.FL|J|J7.|.LJJ|F|J.LLJLLL7J|7..LLL.LL---7J|..||FFJLLLLLLJJ.L|7-||7LJJJ||.-77FL.F| -1 138 |.J7L7JJ..LJ|F7JLL7F-JF77LL-7F|77-JJFFJLL7-L|FFLJ7|7JJ|F|.JFF-7-7F7-|L-||F|7-.JJ|FLF7-LJJ-FF.L7|L7LLF7-7LJ-JF77FJ.|FF7.LL-JLJ.LFFF-FJ|FL-7L| -1 139 J-|-|-7-J7F7-LJLFJL|7FJ||7FFF7JLL7J.7J7.F7.|LL7L||.L7LF|J|.FL-|JL-|FLL-|FFL7.JJJLJF-JF.FL.FF-JFJFF7-F.F-LLF-|-77|FL|L-7.FL|F7LF|..F77F7JF77F -1 140 L--J|7J-LJ-J7J.FJLLL77.FJ-F-JJF.LLJ-LL|-F7-7LLJJF--J7.LF.-7.LFJ--J.JJ-LJJL|J-LLJLL7JL7-L|-LJ--J-F-|L|-L--JJ-LJL-L-L|J-J-L--J--7LFLJLJ-LFFJ-L
diff --git a/2023/10/solution.rs b/2023/10/solution.rs
@@ -0,0 +1,136 @@ -1 1 use std::collections::HashSet; -1 2 -1 3 #[path = "../lib.rs"] -1 4 mod lib; -1 5 -1 6 const TOP: u8 = 1; -1 7 const RIGHT: u8 = 2; -1 8 const BOTTOM: u8 = 4; -1 9 const LEFT: u8 = 8; -1 10 -1 11 fn cmp(a: u8, b: u8) -> bool { -1 12 return a & b == b; -1 13 } -1 14 -1 15 fn to_char(cell: u8) -> char { -1 16 return if cmp(cell, LEFT | RIGHT) { '-' } -1 17 else if cmp(cell, TOP | BOTTOM) { '|' } -1 18 else if cmp(cell, TOP | RIGHT) { 'L' } -1 19 else if cmp(cell, BOTTOM | RIGHT) { 'F' } -1 20 else if cmp(cell, TOP | LEFT) { 'J' } -1 21 else if cmp(cell, BOTTOM | LEFT) { '7' } -1 22 else { '.' }; -1 23 } -1 24 -1 25 fn parse_input() -> (Vec<Vec<u8>>, usize, usize) { -1 26 let mut x0 = 0; -1 27 let mut y0 = 0; -1 28 -1 29 let map: Vec<Vec<u8>> = lib::iter_input().enumerate() -1 30 .map(|(y, line)| { -1 31 line.chars().enumerate() -1 32 .map(|(x, c)| match c { -1 33 '-' => LEFT | RIGHT, -1 34 '|' => TOP | BOTTOM, -1 35 'L' => TOP | RIGHT, -1 36 'F' => BOTTOM | RIGHT, -1 37 'J' => TOP | LEFT, -1 38 '7' => BOTTOM | LEFT, -1 39 'S' => { -1 40 x0 = x; -1 41 y0 = y; -1 42 return 0; -1 43 }, -1 44 '.' => 0, -1 45 _ => unreachable!(), -1 46 }) -1 47 .collect() -1 48 }) -1 49 .collect(); -1 50 -1 51 return (map, x0, y0); -1 52 } -1 53 -1 54 fn get_pipe(map: &Vec<Vec<u8>>, x0: usize, y0: usize, dir0: u8) -> HashSet<(usize, usize)> { -1 55 let mut pipe = HashSet::new(); -1 56 let mut x = x0; -1 57 let mut y = y0; -1 58 let mut dir = dir0; -1 59 -1 60 while pipe.len() == 0 || x != x0 || y != y0 { -1 61 match map[y][x] - dir { -1 62 TOP => { y -= 1; dir = BOTTOM; }, -1 63 RIGHT => { x += 1; dir = LEFT; }, -1 64 BOTTOM => { y += 1; dir = TOP; }, -1 65 LEFT => { x -= 1; dir = RIGHT; }, -1 66 _ => unreachable!(), -1 67 } -1 68 pipe.insert((x, y)); -1 69 } -1 70 -1 71 return pipe; -1 72 } -1 73 -1 74 fn count_inside(map: &Vec<Vec<u8>>, pipe: &HashSet<(usize, usize)>) -> usize { -1 75 let mut count = 0; -1 76 let mut inside; -1 77 let mut enter_direction; -1 78 for y in 0..map.len() { -1 79 inside = false; -1 80 enter_direction = 0; -1 81 for x in 0..map[y].len() { -1 82 if pipe.contains(&(x, y)) { -1 83 let vertical = map[y][x] & (TOP | BOTTOM); -1 84 -1 85 if vertical == TOP | BOTTOM { -1 86 inside = !inside; -1 87 } else if vertical != 0 { -1 88 if enter_direction == 0 { -1 89 enter_direction = vertical; -1 90 } else { -1 91 if enter_direction != vertical { -1 92 inside = !inside; -1 93 } -1 94 enter_direction = 0; -1 95 } -1 96 } -1 97 print!("{}", to_char(map[y][x])); -1 98 } else if inside { -1 99 count += 1; -1 100 print!("."); -1 101 } else { -1 102 print!(" "); -1 103 } -1 104 } -1 105 println!(""); -1 106 } -1 107 return count; -1 108 } -1 109 -1 110 fn main() { -1 111 let (mut map, x0, y0) = parse_input(); -1 112 let mut dir0 = 0; -1 113 -1 114 if x0 > 0 && map[y0][x0 - 1] & RIGHT != 0 { -1 115 dir0 = LEFT; -1 116 map[y0][x0] |= LEFT; -1 117 } -1 118 if y0 > 0 && map[y0 - 1][x0] & BOTTOM != 0 { -1 119 dir0 = TOP; -1 120 map[y0][x0] |= TOP; -1 121 } -1 122 if y0 < map.len() - 1 && map[y0 + 1][x0] & TOP != 0 { -1 123 dir0 = BOTTOM; -1 124 map[y0][x0] |= BOTTOM; -1 125 } -1 126 if x0 < map[0].len() - 1 && map[y0][x0 + 1] & LEFT != 0 { -1 127 dir0 = RIGHT; -1 128 map[y0][x0] |= RIGHT; -1 129 } -1 130 -1 131 let pipe = get_pipe(&map, x0, y0, dir0); -1 132 let count = count_inside(&map, &pipe); -1 133 -1 134 println!("part1: {}", pipe.len() / 2); -1 135 println!("part2: {}", count); -1 136 }
diff --git a/2023/10/test1.txt b/2023/10/test1.txt
@@ -0,0 +1,5 @@ -1 1 -L|F7 -1 2 7S-7| -1 3 L|7|| -1 4 -L-J| -1 5 L|-JF
diff --git a/2023/10/test2.txt b/2023/10/test2.txt
@@ -0,0 +1,5 @@ -1 1 7-F7- -1 2 .FJ|7 -1 3 SJLL7 -1 4 |F--J -1 5 LJ.LJ
diff --git a/2023/10/test3.txt b/2023/10/test3.txt
@@ -0,0 +1,9 @@ -1 1 ........... -1 2 .S-------7. -1 3 .|F-----7|. -1 4 .||.....||. -1 5 .||.....||. -1 6 .|L-7.F-J|. -1 7 .|..|.|..|. -1 8 .L--J.L--J. -1 9 ...........
diff --git a/2023/10/test4.txt b/2023/10/test4.txt
@@ -0,0 +1,10 @@ -1 1 .F----7F7F7F7F-7.... -1 2 .|F--7||||||||FJ.... -1 3 .||.FJ||||||||L7.... -1 4 FJL7L7LJLJ||LJ.L-7.. -1 5 L--J.L7...LJS7F-7L7. -1 6 ....F-J..F7FJ|L7L7L7 -1 7 ....L7.F7||L7|.L7L7| -1 8 .....|FJLJ|FJ|F7|.LJ -1 9 ....FJL-7.||.||||... -1 10 ....L---J.LJ.LJLJ...
diff --git a/2023/10/test5.txt b/2023/10/test5.txt
@@ -0,0 +1,10 @@ -1 1 FF7FSF7F7F7F7F7F---7 -1 2 L|LJ||||||||||||F--J -1 3 FL-7LJLJ||||||LJL-77 -1 4 F--JF--7||LJLJ7F7FJ- -1 5 L---JF-JLJ.||-FJLJJ7 -1 6 |F|F-JF---7F7-L7L|7| -1 7 |FFJF7L7F-JF7|JL---7 -1 8 7-L-JL7||F7|L7F-7F7| -1 9 L.L7LFJ|||||FJL7||LJ -1 10 L7JLJL-JLJLJL--JLJ.L