Compare commits
1 Commits
master
...
fa57f8b4fc
| Author | SHA1 | Date | |
|---|---|---|---|
|
fa57f8b4fc
|
@@ -8,8 +8,6 @@ edition = "2021"
|
|||||||
[dependencies]
|
[dependencies]
|
||||||
anyhow = "1.0.75"
|
anyhow = "1.0.75"
|
||||||
lazy_static = "1.4.0"
|
lazy_static = "1.4.0"
|
||||||
nalgebra = "0.32.3"
|
|
||||||
petgraph = "0.6.4"
|
|
||||||
regex = "1.10.2"
|
regex = "1.10.2"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
|
|||||||
@@ -1,794 +0,0 @@
|
|||||||
R 4 (#4b18e0)
|
|
||||||
U 4 (#0b4f93)
|
|
||||||
R 4 (#6d70b0)
|
|
||||||
U 12 (#86edc3)
|
|
||||||
R 4 (#435460)
|
|
||||||
U 3 (#07f023)
|
|
||||||
R 8 (#33dd00)
|
|
||||||
U 5 (#599aa3)
|
|
||||||
L 11 (#83c702)
|
|
||||||
U 5 (#3f0501)
|
|
||||||
L 7 (#4bf232)
|
|
||||||
U 9 (#3f0503)
|
|
||||||
L 2 (#4955d2)
|
|
||||||
U 5 (#24f2e3)
|
|
||||||
L 9 (#16abf2)
|
|
||||||
U 6 (#60f753)
|
|
||||||
L 3 (#678dd2)
|
|
||||||
U 3 (#736093)
|
|
||||||
L 3 (#007482)
|
|
||||||
D 7 (#446e11)
|
|
||||||
L 6 (#0482a2)
|
|
||||||
D 8 (#997fd1)
|
|
||||||
L 4 (#4891e2)
|
|
||||||
D 6 (#2547b1)
|
|
||||||
L 5 (#501bf2)
|
|
||||||
D 8 (#7ed033)
|
|
||||||
L 8 (#0dabe2)
|
|
||||||
U 8 (#7184d3)
|
|
||||||
L 2 (#748a42)
|
|
||||||
U 5 (#12e093)
|
|
||||||
L 7 (#672432)
|
|
||||||
D 7 (#19c6a3)
|
|
||||||
L 4 (#1c5c22)
|
|
||||||
D 2 (#6e8a23)
|
|
||||||
L 10 (#5cd602)
|
|
||||||
U 9 (#1d8ff3)
|
|
||||||
L 7 (#359ce2)
|
|
||||||
U 6 (#333143)
|
|
||||||
R 11 (#0422f2)
|
|
||||||
D 10 (#235323)
|
|
||||||
R 6 (#64bc72)
|
|
||||||
U 10 (#6ea5f3)
|
|
||||||
R 11 (#68df60)
|
|
||||||
U 10 (#0952c3)
|
|
||||||
L 4 (#5206d2)
|
|
||||||
U 6 (#09c2a3)
|
|
||||||
L 5 (#45f7e0)
|
|
||||||
U 6 (#6d15e3)
|
|
||||||
L 6 (#271740)
|
|
||||||
D 6 (#6d15e1)
|
|
||||||
L 7 (#2e6a20)
|
|
||||||
U 9 (#178883)
|
|
||||||
L 9 (#430370)
|
|
||||||
U 4 (#2ee7e3)
|
|
||||||
L 7 (#8bdcf0)
|
|
||||||
D 9 (#5cebd3)
|
|
||||||
L 3 (#3d5a50)
|
|
||||||
D 4 (#5ecc23)
|
|
||||||
L 8 (#095b52)
|
|
||||||
U 9 (#3b7121)
|
|
||||||
L 10 (#8061b2)
|
|
||||||
U 4 (#3b7123)
|
|
||||||
L 7 (#209272)
|
|
||||||
U 4 (#493833)
|
|
||||||
L 9 (#7d9b02)
|
|
||||||
U 5 (#283633)
|
|
||||||
L 3 (#0db702)
|
|
||||||
U 3 (#437d73)
|
|
||||||
L 14 (#721282)
|
|
||||||
U 4 (#059a63)
|
|
||||||
L 2 (#4630d2)
|
|
||||||
U 5 (#6c5f43)
|
|
||||||
L 13 (#2949c2)
|
|
||||||
U 3 (#590a93)
|
|
||||||
R 5 (#4f5650)
|
|
||||||
U 5 (#71c3e3)
|
|
||||||
L 8 (#308540)
|
|
||||||
D 15 (#4fbc53)
|
|
||||||
L 2 (#4fa760)
|
|
||||||
U 15 (#41d523)
|
|
||||||
L 8 (#6bd380)
|
|
||||||
U 6 (#5cb553)
|
|
||||||
R 6 (#76acc0)
|
|
||||||
U 10 (#6be3a3)
|
|
||||||
R 6 (#5d61b0)
|
|
||||||
D 10 (#6dd101)
|
|
||||||
R 4 (#04f600)
|
|
||||||
U 4 (#4ea101)
|
|
||||||
R 2 (#6c2630)
|
|
||||||
U 5 (#498ac1)
|
|
||||||
R 5 (#0667a0)
|
|
||||||
U 5 (#120ef3)
|
|
||||||
R 3 (#31c080)
|
|
||||||
U 5 (#861cd3)
|
|
||||||
R 11 (#364e90)
|
|
||||||
D 5 (#6dd103)
|
|
||||||
R 9 (#6fe5b0)
|
|
||||||
D 11 (#119d43)
|
|
||||||
R 6 (#111310)
|
|
||||||
D 14 (#2ff323)
|
|
||||||
R 7 (#177432)
|
|
||||||
U 12 (#0ccbd3)
|
|
||||||
R 2 (#77c592)
|
|
||||||
U 9 (#6eee43)
|
|
||||||
R 10 (#21e622)
|
|
||||||
U 8 (#0bc513)
|
|
||||||
L 8 (#5398a0)
|
|
||||||
U 2 (#53cca3)
|
|
||||||
L 10 (#463c20)
|
|
||||||
U 5 (#53cca1)
|
|
||||||
R 8 (#174b20)
|
|
||||||
U 11 (#09ddc3)
|
|
||||||
R 6 (#20c940)
|
|
||||||
U 11 (#2fc6c3)
|
|
||||||
R 8 (#7ab1b0)
|
|
||||||
U 6 (#7ab291)
|
|
||||||
R 3 (#057160)
|
|
||||||
U 6 (#008331)
|
|
||||||
R 11 (#62c440)
|
|
||||||
U 12 (#3233a1)
|
|
||||||
R 2 (#1ceaa0)
|
|
||||||
U 4 (#4ef663)
|
|
||||||
R 3 (#7e5670)
|
|
||||||
U 2 (#4ef661)
|
|
||||||
R 5 (#3ccc40)
|
|
||||||
U 8 (#6e3531)
|
|
||||||
L 13 (#3964a0)
|
|
||||||
U 5 (#68b801)
|
|
||||||
R 13 (#83d220)
|
|
||||||
U 5 (#459901)
|
|
||||||
R 2 (#053a70)
|
|
||||||
U 6 (#4d18d3)
|
|
||||||
R 11 (#8a23d0)
|
|
||||||
U 8 (#4d18d1)
|
|
||||||
R 9 (#2cce90)
|
|
||||||
D 14 (#48af61)
|
|
||||||
L 6 (#045500)
|
|
||||||
D 6 (#0b4971)
|
|
||||||
L 8 (#18fa70)
|
|
||||||
D 7 (#7d8d03)
|
|
||||||
L 3 (#6ba530)
|
|
||||||
D 9 (#061783)
|
|
||||||
R 9 (#2c9c30)
|
|
||||||
D 13 (#402993)
|
|
||||||
R 8 (#18e9c0)
|
|
||||||
D 7 (#51e7a3)
|
|
||||||
R 15 (#18e9c2)
|
|
||||||
D 3 (#0ae133)
|
|
||||||
R 5 (#4929f0)
|
|
||||||
D 3 (#8d4623)
|
|
||||||
R 4 (#277680)
|
|
||||||
U 11 (#034583)
|
|
||||||
R 7 (#1ea1a0)
|
|
||||||
D 11 (#6cc5e3)
|
|
||||||
R 8 (#8894e0)
|
|
||||||
U 5 (#2fc6c1)
|
|
||||||
R 6 (#4dd6d0)
|
|
||||||
U 3 (#7f5b21)
|
|
||||||
R 11 (#219440)
|
|
||||||
U 4 (#2db8a1)
|
|
||||||
R 6 (#4053a0)
|
|
||||||
U 6 (#2df7e1)
|
|
||||||
R 12 (#086710)
|
|
||||||
U 8 (#47c7c1)
|
|
||||||
R 4 (#41ee90)
|
|
||||||
U 3 (#1dfa61)
|
|
||||||
R 3 (#5c3610)
|
|
||||||
U 7 (#483023)
|
|
||||||
R 10 (#2b6060)
|
|
||||||
D 3 (#327133)
|
|
||||||
R 8 (#2e4b30)
|
|
||||||
D 14 (#212321)
|
|
||||||
R 8 (#4bfd00)
|
|
||||||
D 5 (#5f0b81)
|
|
||||||
R 4 (#718450)
|
|
||||||
D 14 (#320dd1)
|
|
||||||
R 5 (#103630)
|
|
||||||
D 6 (#911953)
|
|
||||||
R 4 (#3f6190)
|
|
||||||
D 7 (#212323)
|
|
||||||
L 4 (#7f84b0)
|
|
||||||
D 10 (#2816a1)
|
|
||||||
R 5 (#026f80)
|
|
||||||
D 2 (#528ab1)
|
|
||||||
R 8 (#04e160)
|
|
||||||
D 11 (#655ca3)
|
|
||||||
R 2 (#0a1bf0)
|
|
||||||
D 3 (#6872c3)
|
|
||||||
R 12 (#7ad510)
|
|
||||||
D 8 (#72fe63)
|
|
||||||
R 7 (#109a50)
|
|
||||||
D 9 (#66ae31)
|
|
||||||
R 3 (#0828a2)
|
|
||||||
D 12 (#039eb1)
|
|
||||||
R 8 (#6f2c60)
|
|
||||||
D 6 (#46dae1)
|
|
||||||
R 12 (#76c900)
|
|
||||||
D 8 (#724711)
|
|
||||||
L 10 (#0a41a0)
|
|
||||||
D 8 (#73f301)
|
|
||||||
L 2 (#029092)
|
|
||||||
D 5 (#2ee5b3)
|
|
||||||
R 9 (#794702)
|
|
||||||
U 9 (#2ee5b1)
|
|
||||||
R 9 (#745f72)
|
|
||||||
U 2 (#108e61)
|
|
||||||
R 4 (#30e792)
|
|
||||||
U 10 (#099281)
|
|
||||||
R 11 (#347f32)
|
|
||||||
U 4 (#319ab1)
|
|
||||||
L 5 (#44a712)
|
|
||||||
U 9 (#623681)
|
|
||||||
L 6 (#3b5002)
|
|
||||||
U 10 (#25e431)
|
|
||||||
R 6 (#4f3f22)
|
|
||||||
U 4 (#226f51)
|
|
||||||
R 5 (#26f7b2)
|
|
||||||
U 8 (#588341)
|
|
||||||
R 4 (#09de02)
|
|
||||||
D 11 (#423f21)
|
|
||||||
L 6 (#6c9ee2)
|
|
||||||
D 10 (#423f23)
|
|
||||||
R 6 (#3badf2)
|
|
||||||
D 4 (#2c0a93)
|
|
||||||
R 4 (#521a32)
|
|
||||||
U 7 (#4ee803)
|
|
||||||
R 15 (#47f6d2)
|
|
||||||
U 2 (#673651)
|
|
||||||
R 4 (#5c10b2)
|
|
||||||
U 9 (#4dc641)
|
|
||||||
L 11 (#4d7032)
|
|
||||||
U 6 (#299111)
|
|
||||||
L 8 (#8d06b2)
|
|
||||||
U 8 (#22e4d1)
|
|
||||||
L 7 (#7dac02)
|
|
||||||
U 4 (#58e171)
|
|
||||||
L 7 (#17e332)
|
|
||||||
D 12 (#211931)
|
|
||||||
L 4 (#7e1732)
|
|
||||||
D 5 (#502911)
|
|
||||||
L 4 (#88c6c2)
|
|
||||||
D 5 (#430ba1)
|
|
||||||
L 3 (#3e4de0)
|
|
||||||
D 13 (#481b11)
|
|
||||||
L 5 (#5925e0)
|
|
||||||
U 4 (#1cecb1)
|
|
||||||
L 7 (#11ecf0)
|
|
||||||
U 7 (#634bc1)
|
|
||||||
R 7 (#6218d2)
|
|
||||||
U 7 (#7990f3)
|
|
||||||
L 5 (#576b42)
|
|
||||||
U 4 (#7990f1)
|
|
||||||
L 10 (#145832)
|
|
||||||
U 9 (#609ef1)
|
|
||||||
L 3 (#0d8822)
|
|
||||||
U 4 (#2b1f83)
|
|
||||||
L 3 (#77a562)
|
|
||||||
U 5 (#2b1f81)
|
|
||||||
L 6 (#3d05c2)
|
|
||||||
U 7 (#4b56d1)
|
|
||||||
L 5 (#1f6272)
|
|
||||||
U 8 (#916891)
|
|
||||||
R 6 (#087ce0)
|
|
||||||
U 6 (#2cf203)
|
|
||||||
R 12 (#285e60)
|
|
||||||
U 9 (#6ae623)
|
|
||||||
R 9 (#8a34a0)
|
|
||||||
U 9 (#6ae621)
|
|
||||||
L 9 (#15b200)
|
|
||||||
U 11 (#40c541)
|
|
||||||
R 5 (#0c7fc0)
|
|
||||||
D 7 (#2d5ad3)
|
|
||||||
R 9 (#42f280)
|
|
||||||
D 7 (#8140a3)
|
|
||||||
R 3 (#255770)
|
|
||||||
D 10 (#8140a1)
|
|
||||||
R 12 (#4ac260)
|
|
||||||
D 5 (#2d5ad1)
|
|
||||||
R 8 (#083780)
|
|
||||||
U 15 (#40c543)
|
|
||||||
R 7 (#028ab0)
|
|
||||||
U 13 (#2cf201)
|
|
||||||
R 5 (#1461d0)
|
|
||||||
U 2 (#23bff1)
|
|
||||||
R 4 (#1a4992)
|
|
||||||
U 3 (#355fc1)
|
|
||||||
R 7 (#6cafd2)
|
|
||||||
U 5 (#355fc3)
|
|
||||||
R 6 (#226752)
|
|
||||||
D 6 (#5af021)
|
|
||||||
R 11 (#526e82)
|
|
||||||
D 6 (#055ac1)
|
|
||||||
R 4 (#460a42)
|
|
||||||
D 3 (#055ac3)
|
|
||||||
R 6 (#565542)
|
|
||||||
D 3 (#3cd6a1)
|
|
||||||
L 7 (#2da922)
|
|
||||||
D 10 (#708ea3)
|
|
||||||
R 7 (#687472)
|
|
||||||
D 4 (#4ec333)
|
|
||||||
R 4 (#58d602)
|
|
||||||
U 7 (#4dd3e3)
|
|
||||||
R 3 (#23a7c0)
|
|
||||||
U 10 (#51fa83)
|
|
||||||
R 5 (#23a7c2)
|
|
||||||
D 5 (#188363)
|
|
||||||
R 14 (#5bc432)
|
|
||||||
U 4 (#3f0d23)
|
|
||||||
R 8 (#27a940)
|
|
||||||
U 3 (#62a3a3)
|
|
||||||
R 10 (#27a942)
|
|
||||||
U 6 (#0ceab3)
|
|
||||||
R 2 (#4479c2)
|
|
||||||
U 12 (#8beb63)
|
|
||||||
L 2 (#0b84a2)
|
|
||||||
U 3 (#3aa313)
|
|
||||||
L 7 (#270672)
|
|
||||||
U 15 (#4bd563)
|
|
||||||
L 5 (#4d8072)
|
|
||||||
U 6 (#045183)
|
|
||||||
R 12 (#08fed2)
|
|
||||||
U 11 (#52d323)
|
|
||||||
R 2 (#050992)
|
|
||||||
U 9 (#618533)
|
|
||||||
R 4 (#17a282)
|
|
||||||
D 7 (#08e921)
|
|
||||||
R 3 (#1a0d22)
|
|
||||||
D 6 (#0e8541)
|
|
||||||
R 11 (#61b232)
|
|
||||||
D 7 (#6635f1)
|
|
||||||
R 5 (#617832)
|
|
||||||
D 5 (#08f4f3)
|
|
||||||
R 2 (#490c22)
|
|
||||||
D 3 (#234821)
|
|
||||||
R 3 (#476942)
|
|
||||||
D 12 (#234823)
|
|
||||||
R 11 (#31b6d2)
|
|
||||||
D 4 (#08f4f1)
|
|
||||||
L 6 (#129582)
|
|
||||||
D 6 (#507ed1)
|
|
||||||
R 6 (#1e7010)
|
|
||||||
D 8 (#5490e1)
|
|
||||||
R 10 (#093bb0)
|
|
||||||
D 4 (#7cefc1)
|
|
||||||
R 9 (#6fe430)
|
|
||||||
D 3 (#0160b1)
|
|
||||||
L 8 (#1a8570)
|
|
||||||
D 2 (#2722f3)
|
|
||||||
L 4 (#2eb860)
|
|
||||||
D 12 (#572d83)
|
|
||||||
L 7 (#556c20)
|
|
||||||
U 12 (#50d5c1)
|
|
||||||
L 6 (#3a0932)
|
|
||||||
D 3 (#0a1701)
|
|
||||||
L 6 (#2294f0)
|
|
||||||
D 4 (#5f04e1)
|
|
||||||
L 13 (#62c590)
|
|
||||||
D 7 (#5f04e3)
|
|
||||||
R 6 (#1660e0)
|
|
||||||
D 2 (#34e001)
|
|
||||||
R 6 (#23b340)
|
|
||||||
D 12 (#1e92e1)
|
|
||||||
R 6 (#786d10)
|
|
||||||
U 12 (#44f8d1)
|
|
||||||
R 4 (#786d12)
|
|
||||||
D 3 (#3f6cf1)
|
|
||||||
R 3 (#2e2812)
|
|
||||||
D 3 (#185ac3)
|
|
||||||
R 3 (#7976e2)
|
|
||||||
D 14 (#0a5201)
|
|
||||||
R 4 (#15e3e2)
|
|
||||||
D 3 (#825221)
|
|
||||||
R 3 (#699e12)
|
|
||||||
U 3 (#8ca423)
|
|
||||||
R 14 (#04ffb2)
|
|
||||||
U 3 (#185ac1)
|
|
||||||
R 2 (#0a3482)
|
|
||||||
U 4 (#59d541)
|
|
||||||
L 10 (#5b8ab2)
|
|
||||||
U 4 (#59d543)
|
|
||||||
L 6 (#395af2)
|
|
||||||
U 3 (#2fdcb1)
|
|
||||||
R 7 (#1d5670)
|
|
||||||
U 3 (#3801c1)
|
|
||||||
R 6 (#65de30)
|
|
||||||
U 7 (#522db1)
|
|
||||||
R 11 (#9a9020)
|
|
||||||
U 12 (#382413)
|
|
||||||
R 11 (#55b6c0)
|
|
||||||
U 8 (#382411)
|
|
||||||
L 4 (#4549e0)
|
|
||||||
U 7 (#2f1091)
|
|
||||||
L 7 (#127550)
|
|
||||||
U 7 (#3e2ee1)
|
|
||||||
R 7 (#1b7ba0)
|
|
||||||
U 5 (#0177e1)
|
|
||||||
L 10 (#581e30)
|
|
||||||
U 4 (#0177e3)
|
|
||||||
L 8 (#287b30)
|
|
||||||
U 5 (#4667a1)
|
|
||||||
R 6 (#3a6730)
|
|
||||||
U 6 (#7575e1)
|
|
||||||
R 6 (#4d8f90)
|
|
||||||
U 8 (#06a251)
|
|
||||||
R 2 (#32a980)
|
|
||||||
U 5 (#92bbf3)
|
|
||||||
R 3 (#465200)
|
|
||||||
D 4 (#1e82a3)
|
|
||||||
R 7 (#5e49b0)
|
|
||||||
U 4 (#282471)
|
|
||||||
R 6 (#95ba62)
|
|
||||||
U 3 (#3fc1e1)
|
|
||||||
R 3 (#95ba60)
|
|
||||||
U 9 (#495841)
|
|
||||||
R 3 (#3bece0)
|
|
||||||
D 13 (#06a253)
|
|
||||||
R 3 (#58ed10)
|
|
||||||
D 4 (#3c4df3)
|
|
||||||
R 7 (#830800)
|
|
||||||
D 10 (#3c4df1)
|
|
||||||
R 4 (#39bca0)
|
|
||||||
D 4 (#0e26a1)
|
|
||||||
R 6 (#09cd40)
|
|
||||||
D 6 (#725971)
|
|
||||||
R 10 (#624800)
|
|
||||||
D 11 (#49ae11)
|
|
||||||
R 11 (#3ed060)
|
|
||||||
D 7 (#49ae13)
|
|
||||||
L 12 (#3e0b20)
|
|
||||||
D 4 (#569191)
|
|
||||||
L 3 (#1bb070)
|
|
||||||
D 7 (#0b1803)
|
|
||||||
L 10 (#045fa0)
|
|
||||||
U 6 (#8cb0a3)
|
|
||||||
L 7 (#57ca40)
|
|
||||||
D 6 (#146f43)
|
|
||||||
L 9 (#5ad0b0)
|
|
||||||
D 3 (#22f873)
|
|
||||||
R 10 (#249e42)
|
|
||||||
D 5 (#429003)
|
|
||||||
R 11 (#35bf52)
|
|
||||||
D 7 (#162bc1)
|
|
||||||
R 7 (#5689a2)
|
|
||||||
D 10 (#162bc3)
|
|
||||||
R 12 (#286a32)
|
|
||||||
D 9 (#54b443)
|
|
||||||
R 10 (#505c32)
|
|
||||||
D 3 (#831903)
|
|
||||||
R 7 (#003ab0)
|
|
||||||
D 11 (#6a9af3)
|
|
||||||
R 10 (#39f710)
|
|
||||||
U 11 (#1f31b3)
|
|
||||||
R 5 (#6fc5c0)
|
|
||||||
D 4 (#071b73)
|
|
||||||
R 7 (#3fe110)
|
|
||||||
D 9 (#5fd6e3)
|
|
||||||
R 9 (#3fd500)
|
|
||||||
D 3 (#2fc9b3)
|
|
||||||
R 6 (#727a40)
|
|
||||||
D 7 (#531d23)
|
|
||||||
R 14 (#02afc0)
|
|
||||||
D 6 (#1e5cb1)
|
|
||||||
R 4 (#717490)
|
|
||||||
D 12 (#6efba1)
|
|
||||||
R 11 (#5996f0)
|
|
||||||
U 5 (#763861)
|
|
||||||
L 5 (#444cf0)
|
|
||||||
U 8 (#763863)
|
|
||||||
R 7 (#2e2c60)
|
|
||||||
U 7 (#543fa1)
|
|
||||||
L 7 (#95e230)
|
|
||||||
U 3 (#543fa3)
|
|
||||||
R 5 (#41fd20)
|
|
||||||
U 3 (#19bf61)
|
|
||||||
R 5 (#656540)
|
|
||||||
D 7 (#391283)
|
|
||||||
R 4 (#33ebc0)
|
|
||||||
D 13 (#391281)
|
|
||||||
R 9 (#709320)
|
|
||||||
D 6 (#498291)
|
|
||||||
R 3 (#03c942)
|
|
||||||
D 6 (#3391a1)
|
|
||||||
R 6 (#5a83e2)
|
|
||||||
D 5 (#4eaff1)
|
|
||||||
R 7 (#2ca112)
|
|
||||||
D 4 (#2de1c1)
|
|
||||||
L 6 (#8724f0)
|
|
||||||
D 9 (#4b7fc1)
|
|
||||||
L 5 (#005232)
|
|
||||||
U 9 (#322291)
|
|
||||||
L 7 (#6a7682)
|
|
||||||
D 4 (#5d2381)
|
|
||||||
L 5 (#6e5312)
|
|
||||||
U 13 (#5d2383)
|
|
||||||
L 8 (#4a5e52)
|
|
||||||
D 13 (#61a5a1)
|
|
||||||
L 3 (#2adb12)
|
|
||||||
D 6 (#1056e3)
|
|
||||||
L 3 (#74eb12)
|
|
||||||
U 10 (#1056e1)
|
|
||||||
L 12 (#4c3122)
|
|
||||||
D 9 (#02d251)
|
|
||||||
R 9 (#30a702)
|
|
||||||
D 7 (#7cd9f1)
|
|
||||||
R 10 (#56a522)
|
|
||||||
D 6 (#25e4f1)
|
|
||||||
R 7 (#720682)
|
|
||||||
D 3 (#11a711)
|
|
||||||
R 10 (#4810c0)
|
|
||||||
U 9 (#7233d1)
|
|
||||||
R 13 (#47d8b0)
|
|
||||||
D 5 (#222c51)
|
|
||||||
R 6 (#270630)
|
|
||||||
U 9 (#6c2991)
|
|
||||||
R 5 (#251ce0)
|
|
||||||
D 9 (#0ce373)
|
|
||||||
R 5 (#0f3af0)
|
|
||||||
D 4 (#234033)
|
|
||||||
L 13 (#399410)
|
|
||||||
D 3 (#1091f3)
|
|
||||||
L 11 (#12ab92)
|
|
||||||
D 3 (#2c05c3)
|
|
||||||
L 9 (#53cc00)
|
|
||||||
D 5 (#662eb3)
|
|
||||||
R 3 (#53cc02)
|
|
||||||
D 3 (#19fbf3)
|
|
||||||
R 8 (#12ab90)
|
|
||||||
D 11 (#13a3c3)
|
|
||||||
R 10 (#6b7ed0)
|
|
||||||
D 7 (#480071)
|
|
||||||
L 10 (#39ba10)
|
|
||||||
D 12 (#414181)
|
|
||||||
L 11 (#6be3c0)
|
|
||||||
D 4 (#308403)
|
|
||||||
L 4 (#5081d2)
|
|
||||||
U 3 (#4a1c33)
|
|
||||||
L 6 (#412360)
|
|
||||||
U 11 (#5cad03)
|
|
||||||
L 4 (#412362)
|
|
||||||
U 11 (#1670a3)
|
|
||||||
L 8 (#5081d0)
|
|
||||||
U 7 (#36b3f3)
|
|
||||||
L 8 (#4a86c0)
|
|
||||||
D 7 (#1903f1)
|
|
||||||
L 11 (#5aa690)
|
|
||||||
U 9 (#88cd01)
|
|
||||||
L 3 (#3843d0)
|
|
||||||
U 14 (#4c44d1)
|
|
||||||
L 8 (#92ea62)
|
|
||||||
D 5 (#205b31)
|
|
||||||
L 14 (#2d2130)
|
|
||||||
D 4 (#1600d1)
|
|
||||||
L 2 (#5eed20)
|
|
||||||
D 8 (#504601)
|
|
||||||
L 9 (#4238f2)
|
|
||||||
D 10 (#8a3821)
|
|
||||||
L 3 (#524dd2)
|
|
||||||
D 6 (#8a3823)
|
|
||||||
L 3 (#106f82)
|
|
||||||
U 8 (#3d0d81)
|
|
||||||
L 6 (#1ec032)
|
|
||||||
U 6 (#040993)
|
|
||||||
L 4 (#1ff1d2)
|
|
||||||
D 14 (#17b973)
|
|
||||||
L 3 (#3c2ae2)
|
|
||||||
D 7 (#7c2501)
|
|
||||||
L 7 (#633cd2)
|
|
||||||
D 4 (#6530d3)
|
|
||||||
L 3 (#082de2)
|
|
||||||
D 7 (#16f433)
|
|
||||||
L 13 (#89eb52)
|
|
||||||
D 5 (#17b971)
|
|
||||||
L 3 (#252512)
|
|
||||||
U 15 (#040991)
|
|
||||||
L 2 (#90d092)
|
|
||||||
U 10 (#0a1021)
|
|
||||||
L 8 (#1cd900)
|
|
||||||
U 6 (#4a13d1)
|
|
||||||
R 10 (#7a6bf2)
|
|
||||||
U 4 (#4683c1)
|
|
||||||
R 7 (#7a6bf0)
|
|
||||||
D 11 (#3a66f1)
|
|
||||||
R 8 (#488f20)
|
|
||||||
U 11 (#7135a1)
|
|
||||||
R 5 (#4cc380)
|
|
||||||
U 5 (#0bf121)
|
|
||||||
R 3 (#4c2e80)
|
|
||||||
U 2 (#7908a1)
|
|
||||||
R 3 (#259e00)
|
|
||||||
U 10 (#6bafe3)
|
|
||||||
L 5 (#52e6d0)
|
|
||||||
U 4 (#506603)
|
|
||||||
L 6 (#1fec10)
|
|
||||||
D 7 (#3a1983)
|
|
||||||
R 6 (#389e30)
|
|
||||||
D 2 (#2f7281)
|
|
||||||
L 6 (#55f170)
|
|
||||||
D 7 (#4cb8e1)
|
|
||||||
L 5 (#389e30)
|
|
||||||
U 6 (#2642e1)
|
|
||||||
L 10 (#7394e0)
|
|
||||||
U 3 (#642bf1)
|
|
||||||
R 10 (#7394e2)
|
|
||||||
U 7 (#132c01)
|
|
||||||
L 6 (#3c4a80)
|
|
||||||
D 4 (#3e4d21)
|
|
||||||
L 4 (#989ad0)
|
|
||||||
U 7 (#473211)
|
|
||||||
L 8 (#0aa900)
|
|
||||||
D 6 (#3a8a11)
|
|
||||||
L 12 (#4307a2)
|
|
||||||
D 9 (#13b0c1)
|
|
||||||
L 6 (#7e59a2)
|
|
||||||
D 11 (#00a041)
|
|
||||||
L 3 (#44b0d2)
|
|
||||||
D 6 (#0efc51)
|
|
||||||
L 6 (#8a1302)
|
|
||||||
D 9 (#160fa1)
|
|
||||||
L 4 (#4afa62)
|
|
||||||
D 2 (#68e871)
|
|
||||||
L 14 (#5ecd60)
|
|
||||||
D 5 (#6a51d1)
|
|
||||||
L 5 (#764000)
|
|
||||||
D 8 (#1a6d61)
|
|
||||||
L 4 (#713042)
|
|
||||||
D 14 (#0b92e1)
|
|
||||||
L 5 (#5b77e2)
|
|
||||||
D 3 (#0a0581)
|
|
||||||
R 10 (#212752)
|
|
||||||
D 3 (#0a0583)
|
|
||||||
R 14 (#3f0ca2)
|
|
||||||
D 8 (#13d911)
|
|
||||||
R 3 (#307832)
|
|
||||||
D 4 (#72d201)
|
|
||||||
R 6 (#133522)
|
|
||||||
U 13 (#6e4581)
|
|
||||||
R 4 (#70fe22)
|
|
||||||
D 13 (#082221)
|
|
||||||
R 7 (#44fff2)
|
|
||||||
D 4 (#731171)
|
|
||||||
R 3 (#10eda2)
|
|
||||||
D 9 (#0e5d31)
|
|
||||||
L 14 (#37bc32)
|
|
||||||
D 6 (#3852c3)
|
|
||||||
L 7 (#5f43c2)
|
|
||||||
U 13 (#8c7593)
|
|
||||||
L 9 (#2ff4f2)
|
|
||||||
U 10 (#1787b3)
|
|
||||||
L 13 (#68b4a2)
|
|
||||||
U 3 (#15fd23)
|
|
||||||
L 3 (#515622)
|
|
||||||
U 3 (#618313)
|
|
||||||
L 11 (#2d09d2)
|
|
||||||
U 10 (#6bb2f3)
|
|
||||||
L 5 (#1f22a2)
|
|
||||||
U 10 (#4d8e33)
|
|
||||||
L 6 (#1cb690)
|
|
||||||
U 3 (#09c3b3)
|
|
||||||
L 9 (#214c20)
|
|
||||||
U 9 (#5bfe23)
|
|
||||||
L 9 (#848910)
|
|
||||||
U 10 (#1a73e3)
|
|
||||||
L 10 (#3d9252)
|
|
||||||
U 3 (#089003)
|
|
||||||
R 11 (#7ddbb2)
|
|
||||||
U 8 (#20c473)
|
|
||||||
R 15 (#071dc2)
|
|
||||||
U 7 (#554823)
|
|
||||||
R 13 (#0cfb42)
|
|
||||||
U 7 (#1ccaa1)
|
|
||||||
L 15 (#847822)
|
|
||||||
U 8 (#5f0271)
|
|
||||||
L 4 (#03cdd2)
|
|
||||||
U 10 (#4f69b1)
|
|
||||||
L 3 (#4b1902)
|
|
||||||
U 8 (#8129b1)
|
|
||||||
L 4 (#5e69f2)
|
|
||||||
D 5 (#1f33b3)
|
|
||||||
L 5 (#2e2582)
|
|
||||||
D 13 (#67aea3)
|
|
||||||
L 4 (#54aba2)
|
|
||||||
U 3 (#08d7a3)
|
|
||||||
L 4 (#4eebe0)
|
|
||||||
D 8 (#030763)
|
|
||||||
L 9 (#2d4760)
|
|
||||||
D 14 (#79e223)
|
|
||||||
L 9 (#7c3342)
|
|
||||||
D 3 (#334c93)
|
|
||||||
L 4 (#2b0202)
|
|
||||||
D 9 (#04d053)
|
|
||||||
L 2 (#1475a2)
|
|
||||||
D 7 (#8aed93)
|
|
||||||
L 8 (#62b4f2)
|
|
||||||
D 5 (#14c931)
|
|
||||||
R 11 (#29bc82)
|
|
||||||
D 3 (#65a951)
|
|
||||||
R 12 (#656f62)
|
|
||||||
D 3 (#7a7283)
|
|
||||||
L 8 (#2bec52)
|
|
||||||
D 7 (#1a75a3)
|
|
||||||
L 8 (#988402)
|
|
||||||
D 4 (#1a75a1)
|
|
||||||
L 3 (#1aad22)
|
|
||||||
D 9 (#373923)
|
|
||||||
L 10 (#7e3ef0)
|
|
||||||
U 7 (#3e1c93)
|
|
||||||
L 11 (#3f89d0)
|
|
||||||
U 6 (#3e1c91)
|
|
||||||
L 3 (#652e40)
|
|
||||||
D 9 (#35acc3)
|
|
||||||
L 7 (#5b0fa0)
|
|
||||||
U 4 (#46ca63)
|
|
||||||
L 10 (#079fa0)
|
|
||||||
U 7 (#391523)
|
|
||||||
L 3 (#079fa2)
|
|
||||||
U 3 (#585573)
|
|
||||||
L 8 (#1f43e0)
|
|
||||||
D 2 (#403c21)
|
|
||||||
L 9 (#144b10)
|
|
||||||
D 5 (#8fa921)
|
|
||||||
L 5 (#144b12)
|
|
||||||
U 7 (#084fb1)
|
|
||||||
L 4 (#661600)
|
|
||||||
D 6 (#5e06f3)
|
|
||||||
L 13 (#3f87a0)
|
|
||||||
D 8 (#3ca8a1)
|
|
||||||
L 13 (#4214e0)
|
|
||||||
D 10 (#567b51)
|
|
||||||
R 4 (#7a3080)
|
|
||||||
D 8 (#17de11)
|
|
||||||
R 8 (#644090)
|
|
||||||
D 12 (#55ba83)
|
|
||||||
R 3 (#025e60)
|
|
||||||
D 8 (#554783)
|
|
||||||
R 6 (#0d2eb0)
|
|
||||||
D 10 (#552813)
|
|
||||||
L 6 (#61a7d0)
|
|
||||||
D 10 (#272cb3)
|
|
||||||
L 7 (#34d6a0)
|
|
||||||
D 3 (#36cf03)
|
|
||||||
R 11 (#14be00)
|
|
||||||
D 3 (#52b543)
|
|
||||||
R 4 (#1fa362)
|
|
||||||
D 11 (#713693)
|
|
||||||
L 3 (#652112)
|
|
||||||
D 8 (#5c8463)
|
|
||||||
L 12 (#4c1362)
|
|
||||||
D 4 (#66e201)
|
|
||||||
L 8 (#07caa2)
|
|
||||||
D 9 (#6ccbd1)
|
|
||||||
L 3 (#3b9ee2)
|
|
||||||
D 5 (#5798b1)
|
|
||||||
L 13 (#4fb342)
|
|
||||||
U 6 (#231223)
|
|
||||||
L 2 (#33e3b2)
|
|
||||||
U 5 (#022ea3)
|
|
||||||
L 6 (#3f1112)
|
|
||||||
U 6 (#3dde83)
|
|
||||||
L 6 (#2732a0)
|
|
||||||
U 8 (#1e6bc3)
|
|
||||||
L 8 (#10f4e0)
|
|
||||||
U 15 (#45e363)
|
|
||||||
L 3 (#10f4e2)
|
|
||||||
U 4 (#4c9523)
|
|
||||||
R 11 (#2732a2)
|
|
||||||
U 12 (#174303)
|
|
||||||
L 10 (#5b4532)
|
|
||||||
U 13 (#6195e1)
|
|
||||||
L 8 (#7fab60)
|
|
||||||
U 2 (#1e7dd1)
|
|
||||||
L 2 (#7fab62)
|
|
||||||
U 12 (#4da741)
|
|
||||||
L 4 (#09efc2)
|
|
||||||
D 5 (#3d0d83)
|
|
||||||
L 5 (#47d532)
|
|
||||||
U 6 (#1f7441)
|
|
||||||
L 12 (#558832)
|
|
||||||
D 6 (#24e093)
|
|
||||||
L 4 (#20bfc2)
|
|
||||||
U 6 (#606283)
|
|
||||||
L 11 (#639142)
|
|
||||||
U 2 (#854311)
|
|
||||||
L 5 (#318ff2)
|
|
||||||
D 8 (#7037c1)
|
|
||||||
L 12 (#1ee752)
|
|
||||||
U 5 (#6bad43)
|
|
||||||
L 5 (#662cd2)
|
|
||||||
U 6 (#23fec3)
|
|
||||||
L 6 (#11cec2)
|
|
||||||
U 9 (#0c5b23)
|
|
||||||
L 8 (#91c052)
|
|
||||||
U 3 (#62e783)
|
|
||||||
L 6 (#08ee02)
|
|
||||||
U 11 (#11a283)
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
R 6 (#70c710)
|
|
||||||
D 5 (#0dc571)
|
|
||||||
L 2 (#5713f0)
|
|
||||||
D 2 (#d2c081)
|
|
||||||
R 2 (#59c680)
|
|
||||||
D 2 (#411b91)
|
|
||||||
L 5 (#8ceee2)
|
|
||||||
U 2 (#caa173)
|
|
||||||
L 1 (#1b58a2)
|
|
||||||
U 2 (#caa171)
|
|
||||||
R 2 (#7807d2)
|
|
||||||
U 3 (#a77fa3)
|
|
||||||
L 2 (#015232)
|
|
||||||
U 2 (#7a21e3)
|
|
||||||
@@ -1,744 +0,0 @@
|
|||||||
btl{m>2179:hzd,a>965:js,x<3167:bc,crx}
|
|
||||||
ktc{x<2922:A,s<469:R,R}
|
|
||||||
ctl{m<420:A,s>2487:R,A}
|
|
||||||
mcm{x>3761:A,x>3654:A,a<829:A,R}
|
|
||||||
bj{x<1257:xc,sr}
|
|
||||||
mfq{x<3188:rr,x<3650:R,A}
|
|
||||||
tlh{a>738:R,A}
|
|
||||||
zn{x>3618:ph,hvb}
|
|
||||||
rb{s<892:R,a<2337:A,A}
|
|
||||||
ms{x<3783:A,x>3900:R,A}
|
|
||||||
prn{m>2248:R,A}
|
|
||||||
qtq{a>3468:A,m>2263:A,jt}
|
|
||||||
dx{a<3314:R,m<3567:R,a<3330:R,R}
|
|
||||||
vt{x>3136:tcz,x>2504:csv,x>2299:smz,kjt}
|
|
||||||
xt{x<2452:A,R}
|
|
||||||
xkc{x<2342:A,A}
|
|
||||||
st{s<3506:R,A}
|
|
||||||
zz{s<1239:lxb,s>1671:qgb,m>2346:ts,rbp}
|
|
||||||
lsh{m>2358:A,s>1491:R,R}
|
|
||||||
cq{m<2723:R,A}
|
|
||||||
xll{s<586:A,x<2806:A,x<2947:R,R}
|
|
||||||
csn{m<2108:R,s>714:A,a<760:R,A}
|
|
||||||
fr{a<1242:R,R}
|
|
||||||
dvh{m>1842:gt,s>3457:jhg,jgd}
|
|
||||||
gxq{a>2315:R,a<2256:A,m>3786:A,R}
|
|
||||||
vc{x<1484:zlf,x>1814:A,s<520:jsc,R}
|
|
||||||
hxh{a<3821:gpz,s>1853:mtg,mfq}
|
|
||||||
pbz{a>2928:xtm,x<2843:vz,m<1108:dv,zg}
|
|
||||||
xr{m>182:A,s>1810:A,x<3330:A,R}
|
|
||||||
ps{x>2127:hnp,dgb}
|
|
||||||
lqg{a<3277:zb,m<1525:mdd,qsz}
|
|
||||||
jn{x>683:A,m>1020:A,R}
|
|
||||||
fhk{a<543:R,R}
|
|
||||||
gvp{m>2630:A,m<1098:R,x>1224:A,A}
|
|
||||||
ptm{x>1764:A,tj}
|
|
||||||
sq{m>3289:A,a<312:xt,x>2449:A,fxr}
|
|
||||||
khp{m>3526:A,A}
|
|
||||||
dc{x<2210:A,m<1269:bqk,A}
|
|
||||||
qt{s>278:R,m>2866:R,s>172:R,R}
|
|
||||||
gm{x<363:A,m>3188:A,A}
|
|
||||||
shn{m<2469:R,s<3668:mbz,R}
|
|
||||||
vhg{x<608:A,m<1535:R,m<1981:R,R}
|
|
||||||
hds{s>2670:xv,blj}
|
|
||||||
ffr{a>2824:mk,s>3257:br,pl}
|
|
||||||
td{m<3587:R,s>3340:A,a<3441:zv,hdq}
|
|
||||||
sgx{s>2973:fm,cvm}
|
|
||||||
tbm{a<3447:R,x<2836:A,x>2953:A,R}
|
|
||||||
mk{m>2029:mls,s>3309:sx,tnr}
|
|
||||||
kfx{s>1999:R,s<1809:A,s<1887:A,A}
|
|
||||||
tl{s<3243:A,m>724:R,s>3595:A,A}
|
|
||||||
cdm{a<1934:R,x>1474:A,R}
|
|
||||||
ksc{x>2830:zj,R}
|
|
||||||
ngp{m<639:A,m<931:R,A}
|
|
||||||
jmb{a>414:A,R}
|
|
||||||
kb{a<3227:A,a<3254:R,s>1475:bvm,dd}
|
|
||||||
sm{x>1966:A,s>3208:A,fhk}
|
|
||||||
br{a>2604:zr,x<1844:nj,bn}
|
|
||||||
szc{x>2026:cmt,nl}
|
|
||||||
ptb{x>3345:A,A}
|
|
||||||
hfr{s>3267:R,s>3108:A,x>898:R,A}
|
|
||||||
qzt{a>452:A,A}
|
|
||||||
bvb{x>3335:A,m>726:R,R}
|
|
||||||
gh{s>2919:R,A}
|
|
||||||
frb{x<2808:A,s>2187:R,x>3086:A,R}
|
|
||||||
nj{s<3562:fj,zdd}
|
|
||||||
gfn{x>1559:lzh,a<3447:pj,s<2150:pcz,mm}
|
|
||||||
kpv{s>1913:A,A}
|
|
||||||
bd{x>3053:zn,s<719:pqb,a>2965:mkc,vr}
|
|
||||||
dv{s>1488:R,R}
|
|
||||||
vr{a<2767:rbh,a<2894:pb,m<2321:pbz,xd}
|
|
||||||
xff{a>3469:R,A}
|
|
||||||
rl{a<2707:R,x>1355:bpn,A}
|
|
||||||
nq{m<1201:mmc,m<1568:nmf,x<1120:dtq,sck}
|
|
||||||
xgx{m<574:R,x>1164:A,a>3805:R,A}
|
|
||||||
qcm{x>2564:A,x<2198:R,m>1241:R,A}
|
|
||||||
tb{m>551:R,m>206:R,m>71:A,A}
|
|
||||||
nrr{x<2955:A,m>2499:R,m<1664:R,A}
|
|
||||||
fv{s>3065:R,m>744:R,A}
|
|
||||||
mf{s>695:dls,a<3530:pp,cmk}
|
|
||||||
gp{m>1636:A,a>2986:A,A}
|
|
||||||
fdg{a<3799:A,R}
|
|
||||||
xjp{m<978:bjn,x>755:rx,dq}
|
|
||||||
dbc{s>340:R,a>3588:R,A}
|
|
||||||
qsz{s>1368:ch,m>2826:zd,dm}
|
|
||||||
bs{x>938:A,A}
|
|
||||||
pjs{s>3520:mh,s>3245:sg,m>2522:A,A}
|
|
||||||
mfm{m>687:A,m<414:A,a>815:R,R}
|
|
||||||
jkr{s>3843:R,mzq}
|
|
||||||
tlq{a>711:npd,qqk}
|
|
||||||
qq{a<3021:dmg,m<1998:R,a>3061:ln,frq}
|
|
||||||
mxm{s>2536:A,s<1125:tpx,fr}
|
|
||||||
dz{x>3321:A,a<3383:R,A}
|
|
||||||
sqn{m<1108:A,x<2454:R,A}
|
|
||||||
bbv{x>1695:R,A}
|
|
||||||
fzb{a>2748:R,m>727:A,A}
|
|
||||||
tj{x>994:A,x<569:R,A}
|
|
||||||
rd{m>3082:vx,a>2081:vn,xn}
|
|
||||||
tq{x>2808:tb,trq}
|
|
||||||
lp{s<651:A,m<1731:R,x>3723:R,R}
|
|
||||||
pb{a>2809:R,a<2785:R,x>2882:nrr,lxx}
|
|
||||||
ndx{x>3705:pkl,m<2521:R,m<3214:R,xjr}
|
|
||||||
khh{m>569:A,s>941:R,s<347:A,R}
|
|
||||||
xc{a>3210:A,m<987:R,s<1171:R,A}
|
|
||||||
vl{m<2436:R,m>2674:A,A}
|
|
||||||
mbr{a<376:A,R}
|
|
||||||
ffv{x>1742:R,a<3619:A,s<529:R,A}
|
|
||||||
lvr{x>331:R,m>3324:klk,s<3015:A,sgg}
|
|
||||||
sqp{s<3137:jqr,a>130:pgh,s<3505:A,frs}
|
|
||||||
lbd{a<2568:lsh,x<1405:A,ffs}
|
|
||||||
qh{a>3400:gfn,nh}
|
|
||||||
xj{x>2810:A,m<1464:R,qt}
|
|
||||||
jz{x>3349:R,x>2888:R,x>2581:R,R}
|
|
||||||
jgd{s>3243:zzg,R}
|
|
||||||
vbr{a<3686:R,R}
|
|
||||||
hk{m>1142:R,m>991:A,A}
|
|
||||||
vx{a<1949:R,s>1360:A,kc}
|
|
||||||
tnr{m<1182:A,x<2322:gp,a>3057:R,hr}
|
|
||||||
ffs{m<1701:A,a>2635:R,A}
|
|
||||||
klj{x<766:R,a<671:A,x>1199:R,A}
|
|
||||||
zb{s>2131:ffr,x<2574:kdf,bd}
|
|
||||||
jhg{m>629:gvv,A}
|
|
||||||
dj{m>789:A,a>3518:A,A}
|
|
||||||
krn{m>739:ntr,s>2564:bsz,hzs}
|
|
||||||
cmk{a<3817:jf,s<378:A,R}
|
|
||||||
xq{a>813:A,a<773:svl,mz}
|
|
||||||
mzq{s>3727:R,a>992:A,x<888:A,A}
|
|
||||||
vqn{x>2380:R,R}
|
|
||||||
mrf{x<3017:ksc,s<1043:rc,m<319:txc,kbk}
|
|
||||||
qd{x<859:R,a>3387:tx,A}
|
|
||||||
cnx{a<3613:A,R}
|
|
||||||
fgb{x>3100:R,R}
|
|
||||||
zjq{s<306:R,x>1811:A,R}
|
|
||||||
qjv{s>1035:qf,tn}
|
|
||||||
xg{s>2609:A,R}
|
|
||||||
xv{x<1079:tjh,s<2851:xl,sgx}
|
|
||||||
lzh{x<1978:ktb,m<937:A,A}
|
|
||||||
smz{a>534:zdt,x<2415:mv,m<2096:sqn,sq}
|
|
||||||
lxb{m<1590:mnn,s>488:R,x<3338:bpr,R}
|
|
||||||
szr{a>292:R,A}
|
|
||||||
nf{m>2081:R,a>3524:R,m>1915:R,A}
|
|
||||||
zxh{x<743:A,A}
|
|
||||||
bjn{s>1703:xgx,m>502:jjx,a>3863:bx,R}
|
|
||||||
ts{s<1467:A,A}
|
|
||||||
zfb{a>904:fsj,a>768:R,m<871:qpq,zxh}
|
|
||||||
tzl{m<2629:dlk,s>2581:R,m>3179:R,prb}
|
|
||||||
bzf{x>762:R,m<3473:R,R}
|
|
||||||
zm{x<3028:rzl,s>1458:dg,R}
|
|
||||||
gmq{m>981:xg,x>3655:A,A}
|
|
||||||
lbn{s<2515:A,A}
|
|
||||||
lh{a<504:A,a<885:A,A}
|
|
||||||
nl{x<1314:R,a>3420:hzr,a<3349:dx,R}
|
|
||||||
ksm{m<3204:R,A}
|
|
||||||
rpz{a>3225:ds,x<1030:gm,A}
|
|
||||||
xb{s<1673:R,s>2816:R,a>1439:A,A}
|
|
||||||
msc{x<3802:cc,hc}
|
|
||||||
vk{s>374:R,a>3515:A,A}
|
|
||||||
md{x<3062:tq,s>2920:ks,gmq}
|
|
||||||
ntr{s>2551:A,jn}
|
|
||||||
pl{a<2619:lt,m<1624:hgl,vmx}
|
|
||||||
cv{s>3403:R,x>3119:R,a<3335:A,A}
|
|
||||||
pc{a<3417:ptb,x<3314:vdk,s<2948:pv,R}
|
|
||||||
qhk{m>795:A,s>1386:R,x>1037:A,A}
|
|
||||||
sn{s<3526:R,a>1248:R,A}
|
|
||||||
mm{s>3019:st,x<576:A,mzt}
|
|
||||||
dd{x<2832:A,x<2929:R,A}
|
|
||||||
tqn{m<3439:A,s<964:R,A}
|
|
||||||
nkc{x<2397:R,A}
|
|
||||||
cb{x<1584:gfj,a>3337:nb,R}
|
|
||||||
bv{m<152:A,a<3361:R,m<260:R,A}
|
|
||||||
qmm{m>2633:ljk,s<1313:A,fpr}
|
|
||||||
sx{x<1719:chx,a>3124:qcm,m>770:R,A}
|
|
||||||
tx{m<2136:R,m>2482:R,a<3464:R,R}
|
|
||||||
pqb{s>462:jnh,xj}
|
|
||||||
nzc{a>654:A,s>780:R,R}
|
|
||||||
rx{s<2123:A,x>1457:A,R}
|
|
||||||
sls{a>3386:R,s<1305:A,x>3157:kh,A}
|
|
||||||
fvr{m<3311:A,A}
|
|
||||||
npd{x<2000:bfv,s>2894:qcz,a>981:tzl,xq}
|
|
||||||
kf{x<3407:R,x<3652:A,R}
|
|
||||||
ss{x>2893:R,x<2690:A,a>3086:R,kj}
|
|
||||||
qk{a>1375:jz,x>2829:lq,a<1229:R,pm}
|
|
||||||
fqr{s>3038:qtq,x<2313:qd,a<3435:rds,msz}
|
|
||||||
xd{x>2842:A,s>1412:R,m<3387:R,R}
|
|
||||||
dg{x>3300:A,x<3173:A,A}
|
|
||||||
mbz{x<1950:A,A}
|
|
||||||
zj{s<1270:R,x>2952:A,x>2894:A,A}
|
|
||||||
ztn{x<2399:vmm,a<666:zjj,btl}
|
|
||||||
dq{a>3833:R,m<1170:tp,x<323:R,cf}
|
|
||||||
kk{x>2848:plf,jmb}
|
|
||||||
cqc{m<1984:R,a<3746:R,m>2346:bbv,R}
|
|
||||||
cvm{x<1361:A,x>1476:A,R}
|
|
||||||
nmf{s<1827:sk,qqx}
|
|
||||||
vbc{a>517:ng,mnb}
|
|
||||||
kg{s<1832:A,a<3398:A,R}
|
|
||||||
trq{s<2938:A,R}
|
|
||||||
nbr{s<3428:A,R}
|
|
||||||
nb{s>1037:R,x>2105:A,s<410:A,R}
|
|
||||||
bzs{s>3439:klj,s>3231:A,hcn}
|
|
||||||
prb{m>2901:A,s<2356:A,m>2759:A,R}
|
|
||||||
gz{a<3504:qn,qmv}
|
|
||||||
sf{x>3584:R,a>673:drv,a>384:A,A}
|
|
||||||
sh{m>1711:A,A}
|
|
||||||
hr{x<3120:A,m>1725:R,s<2538:R,A}
|
|
||||||
mlz{x>1121:A,R}
|
|
||||||
zr{x>2228:ff,A}
|
|
||||||
bvx{m<3203:A,R}
|
|
||||||
dtq{x>669:lsk,A}
|
|
||||||
jf{s<434:R,x>2922:R,m<2086:R,R}
|
|
||||||
ff{a<2720:R,s>3716:A,s>3513:R,R}
|
|
||||||
mhh{s<731:prf,kgj}
|
|
||||||
ljt{a>3420:A,s<1675:A,A}
|
|
||||||
ktb{a>3433:R,a>3412:A,R}
|
|
||||||
mzl{m>2308:sz,x>505:vhg,m<1383:A,A}
|
|
||||||
pt{m<3534:jct,x>1132:R,a<3434:A,A}
|
|
||||||
pxs{a<888:jc,x<1590:R,s>630:A,R}
|
|
||||||
fxd{x>1746:R,s>2931:A,x<1473:A,R}
|
|
||||||
vz{m>1081:A,m<520:A,s<1514:R,R}
|
|
||||||
pqg{m<341:R,a>492:R,m<513:A,R}
|
|
||||||
jqr{s<2665:A,A}
|
|
||||||
mdq{m>1424:R,a<497:ngp,A}
|
|
||||||
fdn{s<506:rfj,s<789:qrg,A}
|
|
||||||
dmm{m<274:A,A}
|
|
||||||
fsx{m<1699:R,x<1215:lh,m>1802:R,lbn}
|
|
||||||
lc{x>842:bs,x<785:mmg,A}
|
|
||||||
jx{x>2421:R,a>3815:R,A}
|
|
||||||
lq{s>817:A,R}
|
|
||||||
qlj{a>904:A,R}
|
|
||||||
qrg{a>896:R,R}
|
|
||||||
tcz{s>648:sf,ndx}
|
|
||||||
jjp{s>1084:R,A}
|
|
||||||
hp{x<1315:nbq,s>596:cqc,m>2358:cnx,qns}
|
|
||||||
lm{a<1592:R,s<2691:A,x<2735:A,R}
|
|
||||||
rdr{x>1537:zmh,m>3053:dpb,qxp}
|
|
||||||
vbg{x<2936:nzq,m>2444:nmb,x>3372:dl,fgb}
|
|
||||||
xp{a<3416:A,tz}
|
|
||||||
pgh{x<1953:R,a<271:A,R}
|
|
||||||
rvv{s<3490:A,A}
|
|
||||||
zdt{a<879:csn,a>1039:R,A}
|
|
||||||
mx{s<602:kpq,nzc}
|
|
||||||
bq{m>3798:R,s>401:zpf,lsf}
|
|
||||||
tr{a>1619:A,x<1673:R,s>1749:A,R}
|
|
||||||
zzg{s>3380:A,R}
|
|
||||||
cgx{m<528:A,m>1173:R,x<1284:dj,A}
|
|
||||||
qxp{x>765:A,x>393:A,R}
|
|
||||||
nc{a>3563:A,s>1570:R,khh}
|
|
||||||
tbc{x>353:gqg,nbr}
|
|
||||||
njp{a>351:R,m>2453:ktc,x>2811:R,dht}
|
|
||||||
ds{x>883:A,A}
|
|
||||||
lfc{x>1832:R,s>3439:A,s>3169:R,R}
|
|
||||||
mt{m>1399:R,m>763:A,A}
|
|
||||||
vbt{s<3558:A,x<594:R,R}
|
|
||||||
fg{m>3746:R,a>2323:A,A}
|
|
||||||
ctp{m>2809:R,m<2504:R,a<1765:R,R}
|
|
||||||
vv{m>2151:R,A}
|
|
||||||
rh{s>3304:R,s<3095:A,m<140:R,A}
|
|
||||||
kdf{a<2917:mp,xsq}
|
|
||||||
qn{x<1183:R,a<3486:A,a>3496:R,A}
|
|
||||||
tz{x<3141:R,m>1397:R,s>937:A,R}
|
|
||||||
nls{m<2817:R,R}
|
|
||||||
xjl{s<1978:R,x>939:A,R}
|
|
||||||
lnz{s>3386:mlz,x<1526:vd,m>864:A,A}
|
|
||||||
mn{x>1476:td,x>743:pt,lvr}
|
|
||||||
hlm{x>3684:A,s>1106:R,m>1014:A,R}
|
|
||||||
mtg{m>565:zh,x<3078:R,rt}
|
|
||||||
hcn{m<3119:R,m>3624:A,A}
|
|
||||||
hzs{x<1009:R,s<2420:A,a>616:ctl,R}
|
|
||||||
rmc{m<3127:A,x>3366:R,A}
|
|
||||||
hzd{m>3173:R,m>2552:qlj,kf}
|
|
||||||
jbc{x<1179:A,m<647:A,a>3418:A,A}
|
|
||||||
nvr{m<1005:sls,a<3380:zm,m>1305:xp,jvd}
|
|
||||||
fpr{m<1187:A,a<472:A,a>860:A,A}
|
|
||||||
df{s>2631:A,A}
|
|
||||||
gqg{a>232:R,R}
|
|
||||||
qns{m>1809:nf,a>3526:zjq,m<1690:msm,R}
|
|
||||||
cp{m<755:A,a<1604:R,a<2017:R,A}
|
|
||||||
qmv{x<846:A,R}
|
|
||||||
bc{m>889:R,s<1465:R,hvg}
|
|
||||||
ht{a>685:pxs,vc}
|
|
||||||
hpt{x<2157:dbc,a<3716:vk,s>281:A,A}
|
|
||||||
xrh{x>3051:ld,x<2974:A,s<625:R,R}
|
|
||||||
tp{s<1858:A,A}
|
|
||||||
tcx{s<3127:R,x<705:A,m<1138:A,A}
|
|
||||||
vmx{x<2184:A,a>2696:zx,a<2659:A,R}
|
|
||||||
mg{m>2756:R,A}
|
|
||||||
zh{a<3910:R,A}
|
|
||||||
kbk{m>444:A,s<1576:R,m>387:dz,kfx}
|
|
||||||
nzq{a<2309:R,nkc}
|
|
||||||
pm{a<1302:A,A}
|
|
||||||
gfj{s>1127:A,m>840:R,m>406:A,A}
|
|
||||||
pq{s>2315:prd,x>3516:msc,m>638:nvr,mrf}
|
|
||||||
vg{a>92:A,A}
|
|
||||||
lsk{x>883:A,R}
|
|
||||||
xjr{m>3705:A,m<3445:A,A}
|
|
||||||
mdp{s>2716:R,m>2326:A,R}
|
|
||||||
ng{a<902:bzs,s>3611:jkr,m>3139:bzf,mxr}
|
|
||||||
mkc{a>3147:kb,ss}
|
|
||||||
vn{x>1404:A,m>2663:nls,s>2069:A,A}
|
|
||||||
mnb{x<657:tbc,x<1083:hzn,x<1315:rvv,bvx}
|
|
||||||
gr{a<2816:A,gvp}
|
|
||||||
kpt{x<2223:R,x>2355:R,m>826:A,R}
|
|
||||||
kq{m<686:A,x<1726:A,A}
|
|
||||||
krq{a>3559:R,A}
|
|
||||||
vrc{x>1988:kpt,x<1867:kq,A}
|
|
||||||
lr{a>877:R,a<672:R,s<1840:A,R}
|
|
||||||
kpq{x<2274:A,m<1226:A,R}
|
|
||||||
lz{m>410:A,s<3265:R,A}
|
|
||||||
gq{s<734:A,A}
|
|
||||||
kgj{s<940:R,R}
|
|
||||||
jzf{a<494:szr,dxx}
|
|
||||||
dxl{a<240:A,s<3664:R,a>393:A,R}
|
|
||||||
kj{m>1586:A,s<1432:A,A}
|
|
||||||
zv{s<2784:R,m<3845:A,R}
|
|
||||||
mmc{m<489:A,x>800:cp,x<492:A,lv}
|
|
||||||
rfj{x<2731:R,a<932:R,R}
|
|
||||||
gt{a>535:A,m>2660:R,dxl}
|
|
||||||
xz{s<919:A,a>3375:R,a<3323:R,R}
|
|
||||||
msm{x<1902:A,x>2051:R,R}
|
|
||||||
kv{x<3257:mdp,pz}
|
|
||||||
hc{m<981:R,m>1233:vcc,A}
|
|
||||||
svl{m>2596:R,m<1427:A,s<2457:R,R}
|
|
||||||
jbk{x>2665:R,fdg}
|
|
||||||
mnn{x>3181:R,a<2055:R,R}
|
|
||||||
pp{s>379:R,prn}
|
|
||||||
zd{s>838:qjv,vj}
|
|
||||||
bqk{a<659:A,R}
|
|
||||||
lxx{s>1514:R,s<1107:R,A}
|
|
||||||
rr{m>917:A,A}
|
|
||||||
qb{m<866:A,x<3264:A,A}
|
|
||||||
gpz{m<586:A,x<2959:vbr,psk}
|
|
||||||
nmb{m<3444:R,x<3463:gxq,fg}
|
|
||||||
dh{s>1463:R,m<1939:R,x<2802:A,R}
|
|
||||||
dl{x>3628:ms,a<2300:R,m>972:R,rb}
|
|
||||||
qqk{a>342:sm,m<1336:vrc,m>3048:sqp,xgf}
|
|
||||||
hl{a<1602:qk,hb}
|
|
||||||
bx{x>1180:R,x>778:A,a>3924:R,A}
|
|
||||||
zmh{a>426:A,a>282:A,s>1983:R,R}
|
|
||||||
zjp{s<2722:R,a<528:R,A}
|
|
||||||
tpx{m>3219:R,m<2950:A,a<1253:R,R}
|
|
||||||
klk{m>3694:A,x<183:R,A}
|
|
||||||
rz{a<3506:lnz,cgx}
|
|
||||||
bl{s<1061:A,R}
|
|
||||||
rzl{x>2887:A,s<1195:A,a>3315:A,R}
|
|
||||||
gjm{s>1424:A,R}
|
|
||||||
qvp{m<250:R,x<3365:cv,lz}
|
|
||||||
ll{m>1291:km,x>1101:R,tcx}
|
|
||||||
zdd{x>950:A,s<3747:R,s>3895:R,R}
|
|
||||||
pk{s>2497:R,A}
|
|
||||||
jbq{a>150:R,x<1869:A,s>3035:A,A}
|
|
||||||
jbg{m>1413:fpl,m>832:bgs,jxk}
|
|
||||||
xsq{a<3129:qq,m<1811:bj,rpz}
|
|
||||||
bk{m<801:R,s<1388:R,x>3521:A,A}
|
|
||||||
vh{m>1098:R,qb}
|
|
||||||
cf{x>588:R,m<1337:A,x>456:R,R}
|
|
||||||
cm{x<3470:R,a<767:R,a<841:R,R}
|
|
||||||
hgl{a<2694:A,x>2481:fzb,s<2721:nvl,R}
|
|
||||||
ln{s>1320:R,s>587:R,A}
|
|
||||||
fxr{x>2433:R,a<402:R,x>2425:R,R}
|
|
||||||
jxk{x>2962:A,A}
|
|
||||||
hjx{a<1824:A,a>2071:R,A}
|
|
||||||
ph{s>1228:R,x<3787:lp,m<1465:gq,tv}
|
|
||||||
gqt{m>3165:gjm,x>1383:xb,m>2542:R,pbs}
|
|
||||||
dht{a>227:A,A}
|
|
||||||
txc{x<3296:bv,x<3371:xr,kg}
|
|
||||||
prd{a>3385:pc,m<586:qvp,vh}
|
|
||||||
lv{s<2096:R,s>3093:R,a<1943:R,A}
|
|
||||||
in{a>2381:lqg,kt}
|
|
||||||
nnc{x<768:R,a<909:A,R}
|
|
||||||
jck{x>3539:R,A}
|
|
||||||
kmr{a<534:A,x>695:R,a>784:A,R}
|
|
||||||
km{x<1307:A,R}
|
|
||||||
lnb{x<1064:btd,ht}
|
|
||||||
fvf{x<1348:R,a>622:R,np}
|
|
||||||
nt{s<3461:R,s>3804:A,A}
|
|
||||||
rnf{m<3315:A,m>3648:R,R}
|
|
||||||
rbp{m>1386:dh,x<2829:A,a<2063:xbm,bk}
|
|
||||||
mh{a<3931:A,a<3977:A,R}
|
|
||||||
gxx{s>2790:A,m>3143:R,A}
|
|
||||||
mdd{a>3604:jhm,a>3476:lf,x<2639:qh,pq}
|
|
||||||
vnz{a>3562:gh,m<899:tc,ll}
|
|
||||||
hdq{s<2919:A,R}
|
|
||||||
czc{a<3340:R,A}
|
|
||||||
hsz{s>1716:R,m<3459:R,R}
|
|
||||||
sk{m<1435:A,m>1514:A,A}
|
|
||||||
rlm{s>2276:A,x<3215:R,A}
|
|
||||||
fm{s<3035:A,a<721:A,A}
|
|
||||||
qc{x>1032:R,s>3491:A,x<472:R,R}
|
|
||||||
ks{m>878:hxf,a>3523:xkl,m<331:rh,R}
|
|
||||||
pbs{a<1399:A,x>611:R,R}
|
|
||||||
pz{s>2498:zns,x>3535:R,m>2357:qzt,R}
|
|
||||||
kn{a<2476:R,a>2568:A,R}
|
|
||||||
jjx{s<1082:A,x>1394:R,a<3796:R,A}
|
|
||||||
bpr{x<2816:A,a<2100:R,a>2147:R,R}
|
|
||||||
nbq{s>827:R,x<811:A,R}
|
|
||||||
jvd{a<3414:A,x<3179:tbm,s<1179:rtb,A}
|
|
||||||
jfh{x>2953:jck,rf}
|
|
||||||
xbm{a<2003:R,m>805:R,A}
|
|
||||||
mxr{m<2849:A,s<3388:R,qc}
|
|
||||||
qf{s<1147:khp,m>3428:A,a<3755:A,cvb}
|
|
||||||
kc{x>1142:R,s>808:A,A}
|
|
||||||
mz{x>2329:A,A}
|
|
||||||
jtq{a>3533:nc,x<2279:gz,tmn}
|
|
||||||
xkl{s<3498:R,x<3655:R,m>579:A,R}
|
|
||||||
dk{m<2597:msd,s>3101:vbc,hds}
|
|
||||||
pmg{x<982:R,x<1279:A,x>1466:A,R}
|
|
||||||
sxq{x<522:R,R}
|
|
||||||
xtm{x<2736:A,m>1180:A,R}
|
|
||||||
jhm{x>2234:hxh,xjp}
|
|
||||||
dkd{a<3547:R,s>3418:R,m<205:A,A}
|
|
||||||
prf{x>104:R,s<361:R,a<175:R,R}
|
|
||||||
rtb{a>3441:A,x<3362:A,R}
|
|
||||||
xk{x<2496:tlq,dxt}
|
|
||||||
tmn{m<683:R,A}
|
|
||||||
ddg{s<3705:A,s>3809:R,A}
|
|
||||||
tn{a>3545:jx,x>1940:R,a<3426:xz,tqn}
|
|
||||||
jc{s>401:A,A}
|
|
||||||
zns{m>1441:A,R}
|
|
||||||
sd{x>1272:R,m>3566:R,A}
|
|
||||||
hvg{m<504:A,s>1752:A,A}
|
|
||||||
hzr{s<1668:A,R}
|
|
||||||
lk{a>356:vbt,s>3501:A,hfr}
|
|
||||||
dpb{m>3385:A,x>666:A,R}
|
|
||||||
hgt{a>433:jdh,sd}
|
|
||||||
rf{x>2598:lm,m<2430:xkc,hjx}
|
|
||||||
mls{a<3004:pr,a>3113:R,a>3043:A,A}
|
|
||||||
dmg{a>2964:R,s<1321:A,x>964:A,R}
|
|
||||||
dn{s>1740:A,m>3131:R,A}
|
|
||||||
js{m>950:cg,m<324:A,bvb}
|
|
||||||
np{m<3013:R,m>3155:R,R}
|
|
||||||
kp{s<3049:jbk,a<3841:shn,x>1423:cq,pjs}
|
|
||||||
vmm{s<1649:qmm,m<2417:gsr,rdr}
|
|
||||||
kh{s<1884:A,m>825:A,a>3341:A,A}
|
|
||||||
jnh{a>2750:R,a>2615:R,xll}
|
|
||||||
pj{x>623:jbc,x>325:R,x>190:zhz,ljt}
|
|
||||||
sr{m>754:R,R}
|
|
||||||
xgf{x<2091:jbq,m<2015:R,s>3106:A,R}
|
|
||||||
bfv{s<2825:R,m<2639:A,a<866:lfc,A}
|
|
||||||
cmt{x<3271:A,a>3416:hsz,s<1910:czc,A}
|
|
||||||
sz{m>2962:A,x<403:R,s<608:R,A}
|
|
||||||
mzt{x>1079:R,m>748:R,x<883:A,A}
|
|
||||||
mfx{s>2396:A,x<2183:R,R}
|
|
||||||
bpn{m<1985:A,A}
|
|
||||||
sgg{s>3658:A,A}
|
|
||||||
rt{s<3055:R,x<3432:A,x>3756:R,R}
|
|
||||||
mmg{a>437:R,x<716:R,a>227:R,A}
|
|
||||||
fsj{a<1063:R,m<1035:R,a>1107:A,A}
|
|
||||||
pv{m>746:A,x>3612:R,a>3447:A,R}
|
|
||||||
pkl{x>3867:A,x<3785:A,x>3823:A,A}
|
|
||||||
rds{m>2024:rlm,x<3330:frb,A}
|
|
||||||
frq{m<3236:A,R}
|
|
||||||
qgb{m<2650:A,s<1803:dn,s<1901:A,rmc}
|
|
||||||
tv{a<2788:R,s>752:A,x<3927:R,A}
|
|
||||||
dxt{s>3004:dvh,kv}
|
|
||||||
fj{x>1215:A,x>565:R,R}
|
|
||||||
vcc{m<1348:A,x<3921:R,A}
|
|
||||||
drv{s<819:R,A}
|
|
||||||
lf{s<2369:jtq,x>2551:md,a<3528:rz,vnz}
|
|
||||||
gsr{a<494:A,x>1443:lr,m>1606:nnc,xjl}
|
|
||||||
vdk{x<3083:A,A}
|
|
||||||
lsf{m<3737:A,s<141:A,A}
|
|
||||||
hb{m<2003:kbz,ctp}
|
|
||||||
cc{m>736:hlm,R}
|
|
||||||
xrk{m>425:R,s>2668:A,A}
|
|
||||||
sck{m>1720:R,s>2392:fxd,sb}
|
|
||||||
sb{x<1612:R,m<1648:R,R}
|
|
||||||
bsz{s<2798:xrk,x<559:pqg,dmm}
|
|
||||||
msd{s>2998:ljz,m<1357:krn,m<1917:kbn,jzf}
|
|
||||||
ljk{x>1194:R,x<662:R,R}
|
|
||||||
jsc{a<349:R,s>319:A,m>1497:A,A}
|
|
||||||
hnp{s>1977:jfh,a<1962:hl,a<2222:zz,vbg}
|
|
||||||
zx{m<2818:R,R}
|
|
||||||
zlf{a<446:R,x>1241:R,R}
|
|
||||||
vj{m<3222:hpt,m<3705:ffv,m<3883:bq,ptm}
|
|
||||||
cvb{m<3215:R,A}
|
|
||||||
hzn{m>3285:R,m<2851:mg,a>245:mbr,nt}
|
|
||||||
pr{m>2749:A,s<3353:R,R}
|
|
||||||
zjj{s<1735:jbg,a<236:kxv,s>1917:mdq,mt}
|
|
||||||
kbz{m>1072:R,R}
|
|
||||||
frs{m<3639:A,A}
|
|
||||||
qpq{s>3340:A,A}
|
|
||||||
zhz{s>2384:A,a<3425:A,R}
|
|
||||||
vp{a<1494:gqt,x<1390:xfs,bh}
|
|
||||||
xn{x>1056:cdm,A}
|
|
||||||
kxv{m>2357:A,s<1937:A,A}
|
|
||||||
jct{m<3233:A,a>3464:R,A}
|
|
||||||
pcz{a<3458:A,x>684:qhk,xff}
|
|
||||||
tfm{s<3188:R,s>3536:ddg,m<769:A,hk}
|
|
||||||
plf{s>603:A,a>529:A,m<873:R,R}
|
|
||||||
cl{a<672:A,m>3434:R,R}
|
|
||||||
dm{x>2258:mf,hp}
|
|
||||||
tc{m<571:dkd,x>1248:tl,a<3550:fv,R}
|
|
||||||
cg{s<1749:R,m>1649:A,R}
|
|
||||||
nh{s>2067:tfm,cb}
|
|
||||||
gd{m>2813:mxm,s<1973:clg,zlv}
|
|
||||||
zpf{s>611:A,x>2005:A,a>3586:R,R}
|
|
||||||
crx{m>1372:cm,x>3544:mcm,s<1761:mfm,R}
|
|
||||||
pvx{x>412:sxq,tlh}
|
|
||||||
hxf{m<1165:R,s<3478:R,x<3387:R,A}
|
|
||||||
ld{s<541:R,R}
|
|
||||||
hvb{m>2487:xf,R}
|
|
||||||
bgs{m>1139:A,s<1410:R,a<247:R,A}
|
|
||||||
csv{m<1406:kk,a<727:njp,x>2888:xrh,fdn}
|
|
||||||
vd{x<712:R,s>3036:R,R}
|
|
||||||
bvm{m<1633:A,a>3264:R,R}
|
|
||||||
xfs{s<1729:jjp,s>3009:R,a<1591:rnf,R}
|
|
||||||
lt{a<2497:df,s>2781:vv,m<1694:mfx,ct}
|
|
||||||
rbh{x<2891:A,s>1660:A,a<2615:kn,A}
|
|
||||||
mp{s<885:rl,a>2713:gr,lbd}
|
|
||||||
knn{s>1107:ztn,x<2166:lnb,vt}
|
|
||||||
dlk{x>2261:A,x>2129:R,x>2072:R,A}
|
|
||||||
dgb{m<1995:nq,a>1664:rd,a<1348:gd,vp}
|
|
||||||
mv{a<268:vg,x<2362:A,s>559:R,vqn}
|
|
||||||
kt{a>1146:ps,s<2172:knn,x>1653:xk,dk}
|
|
||||||
kjt{m>2495:cl,x<2239:dc,mx}
|
|
||||||
nvl{x>1280:R,s>2377:R,R}
|
|
||||||
bn{a>2486:R,x<2690:sh,A}
|
|
||||||
jdh{a>842:A,x>1214:A,m>3586:R,A}
|
|
||||||
qcz{s>3420:R,A}
|
|
||||||
clg{s<688:R,vl}
|
|
||||||
chx{m>848:A,A}
|
|
||||||
sg{x>651:A,A}
|
|
||||||
zlv{s<2655:A,s>3252:sn,s<2901:A,R}
|
|
||||||
bh{a>1576:tr,a<1546:R,x<1711:fvr,kpv}
|
|
||||||
fkf{x>546:A,ksm}
|
|
||||||
dxx{a>905:A,A}
|
|
||||||
jt{x>1660:R,R}
|
|
||||||
gvv{x<3220:A,A}
|
|
||||||
blj{s>2421:pmg,x<842:fkf,m<3248:fvf,hgt}
|
|
||||||
xf{x<3424:R,x<3546:A,s>839:R,A}
|
|
||||||
kbn{x<963:pk,fsx}
|
|
||||||
ljz{a>575:zfb,lk}
|
|
||||||
qqx{a<1756:R,s<2864:A,a<2156:A,R}
|
|
||||||
dls{a<3555:A,x<3232:A,m<1998:bl,R}
|
|
||||||
msz{a<3499:qnq,s>2353:krq,a>3546:A,A}
|
|
||||||
btd{x>678:lc,a>482:pvx,x<257:mhh,mzl}
|
|
||||||
tjh{s<2953:gxx,kmr}
|
|
||||||
psk{x<3637:R,R}
|
|
||||||
xl{s>2768:R,m>3161:R,zjp}
|
|
||||||
zg{a<2914:R,a<2920:A,R}
|
|
||||||
ch{a>3595:kp,m<2854:fqr,s<2250:szc,mn}
|
|
||||||
qnq{x<3299:A,m<1979:R,a>3470:R,R}
|
|
||||||
fpl{m<2606:R,a<272:A,x>3396:R,A}
|
|
||||||
ct{s>2351:A,R}
|
|
||||||
rc{s<587:A,R}
|
|
||||||
|
|
||||||
{x=30,m=1468,a=2095,s=832}
|
|
||||||
{x=291,m=42,a=1683,s=2618}
|
|
||||||
{x=304,m=174,a=1204,s=1552}
|
|
||||||
{x=519,m=19,a=8,s=2512}
|
|
||||||
{x=351,m=650,a=1814,s=479}
|
|
||||||
{x=1888,m=2669,a=304,s=1144}
|
|
||||||
{x=1577,m=787,a=449,s=2384}
|
|
||||||
{x=439,m=189,a=468,s=1163}
|
|
||||||
{x=1735,m=1839,a=514,s=978}
|
|
||||||
{x=677,m=2379,a=279,s=3588}
|
|
||||||
{x=2535,m=864,a=1,s=144}
|
|
||||||
{x=2201,m=13,a=384,s=184}
|
|
||||||
{x=661,m=609,a=223,s=1274}
|
|
||||||
{x=1253,m=2548,a=106,s=2549}
|
|
||||||
{x=357,m=184,a=491,s=828}
|
|
||||||
{x=288,m=1049,a=256,s=2296}
|
|
||||||
{x=1995,m=2523,a=1487,s=659}
|
|
||||||
{x=2028,m=445,a=1788,s=1788}
|
|
||||||
{x=1387,m=2372,a=273,s=22}
|
|
||||||
{x=48,m=2361,a=2070,s=2}
|
|
||||||
{x=2091,m=45,a=222,s=3005}
|
|
||||||
{x=1460,m=105,a=1024,s=1152}
|
|
||||||
{x=176,m=2650,a=462,s=320}
|
|
||||||
{x=2020,m=185,a=47,s=987}
|
|
||||||
{x=1624,m=564,a=252,s=42}
|
|
||||||
{x=2440,m=177,a=1593,s=445}
|
|
||||||
{x=78,m=504,a=3709,s=2}
|
|
||||||
{x=405,m=457,a=1543,s=732}
|
|
||||||
{x=1098,m=450,a=176,s=331}
|
|
||||||
{x=270,m=2383,a=1434,s=561}
|
|
||||||
{x=732,m=245,a=2194,s=157}
|
|
||||||
{x=437,m=1041,a=345,s=969}
|
|
||||||
{x=889,m=1480,a=2534,s=1197}
|
|
||||||
{x=1096,m=310,a=1996,s=18}
|
|
||||||
{x=1627,m=61,a=472,s=260}
|
|
||||||
{x=20,m=51,a=135,s=565}
|
|
||||||
{x=1800,m=894,a=194,s=708}
|
|
||||||
{x=12,m=2267,a=2116,s=299}
|
|
||||||
{x=3053,m=311,a=9,s=90}
|
|
||||||
{x=1139,m=1033,a=373,s=1042}
|
|
||||||
{x=873,m=997,a=1511,s=581}
|
|
||||||
{x=1888,m=435,a=325,s=1121}
|
|
||||||
{x=2255,m=634,a=1674,s=521}
|
|
||||||
{x=109,m=344,a=370,s=1376}
|
|
||||||
{x=37,m=1166,a=876,s=342}
|
|
||||||
{x=491,m=55,a=1324,s=313}
|
|
||||||
{x=435,m=125,a=1458,s=2500}
|
|
||||||
{x=270,m=1685,a=2144,s=133}
|
|
||||||
{x=2206,m=601,a=1892,s=2193}
|
|
||||||
{x=2000,m=33,a=1963,s=146}
|
|
||||||
{x=582,m=556,a=67,s=203}
|
|
||||||
{x=473,m=2514,a=1622,s=645}
|
|
||||||
{x=3233,m=100,a=301,s=1136}
|
|
||||||
{x=3125,m=1441,a=116,s=2545}
|
|
||||||
{x=60,m=1107,a=1346,s=120}
|
|
||||||
{x=1799,m=310,a=486,s=2576}
|
|
||||||
{x=614,m=3421,a=233,s=742}
|
|
||||||
{x=374,m=171,a=636,s=1310}
|
|
||||||
{x=1578,m=106,a=2625,s=2158}
|
|
||||||
{x=1584,m=3382,a=35,s=24}
|
|
||||||
{x=342,m=2716,a=639,s=107}
|
|
||||||
{x=1060,m=430,a=1286,s=857}
|
|
||||||
{x=21,m=1364,a=3339,s=505}
|
|
||||||
{x=94,m=733,a=1353,s=103}
|
|
||||||
{x=867,m=103,a=705,s=1848}
|
|
||||||
{x=1903,m=12,a=1022,s=690}
|
|
||||||
{x=656,m=1527,a=1847,s=400}
|
|
||||||
{x=1992,m=2053,a=188,s=1163}
|
|
||||||
{x=1499,m=122,a=575,s=799}
|
|
||||||
{x=132,m=556,a=1274,s=623}
|
|
||||||
{x=215,m=1,a=985,s=905}
|
|
||||||
{x=863,m=3,a=2174,s=588}
|
|
||||||
{x=483,m=40,a=1438,s=604}
|
|
||||||
{x=282,m=479,a=331,s=441}
|
|
||||||
{x=335,m=55,a=552,s=832}
|
|
||||||
{x=972,m=1415,a=2113,s=72}
|
|
||||||
{x=1218,m=1772,a=1019,s=3715}
|
|
||||||
{x=2111,m=1344,a=175,s=1745}
|
|
||||||
{x=1938,m=1538,a=846,s=2248}
|
|
||||||
{x=12,m=49,a=1178,s=256}
|
|
||||||
{x=3341,m=558,a=257,s=2343}
|
|
||||||
{x=1134,m=579,a=530,s=929}
|
|
||||||
{x=2490,m=3368,a=1767,s=2483}
|
|
||||||
{x=2770,m=2724,a=48,s=1316}
|
|
||||||
{x=404,m=81,a=2311,s=1219}
|
|
||||||
{x=3758,m=1010,a=247,s=2868}
|
|
||||||
{x=1036,m=818,a=34,s=1522}
|
|
||||||
{x=1567,m=916,a=3743,s=1340}
|
|
||||||
{x=56,m=197,a=2229,s=449}
|
|
||||||
{x=1362,m=933,a=399,s=168}
|
|
||||||
{x=64,m=1299,a=133,s=276}
|
|
||||||
{x=400,m=2046,a=2616,s=604}
|
|
||||||
{x=76,m=1689,a=1694,s=1157}
|
|
||||||
{x=3495,m=421,a=318,s=141}
|
|
||||||
{x=1946,m=1287,a=1537,s=781}
|
|
||||||
{x=3455,m=116,a=1096,s=2497}
|
|
||||||
{x=340,m=28,a=1653,s=756}
|
|
||||||
{x=835,m=1199,a=2735,s=3386}
|
|
||||||
{x=1360,m=331,a=1525,s=447}
|
|
||||||
{x=1897,m=54,a=1499,s=785}
|
|
||||||
{x=1397,m=137,a=3133,s=73}
|
|
||||||
{x=404,m=618,a=110,s=2929}
|
|
||||||
{x=2181,m=1486,a=200,s=267}
|
|
||||||
{x=1393,m=459,a=978,s=3242}
|
|
||||||
{x=20,m=732,a=717,s=901}
|
|
||||||
{x=122,m=1659,a=1380,s=1062}
|
|
||||||
{x=88,m=280,a=830,s=3223}
|
|
||||||
{x=1849,m=299,a=914,s=469}
|
|
||||||
{x=332,m=1083,a=69,s=101}
|
|
||||||
{x=29,m=73,a=294,s=122}
|
|
||||||
{x=643,m=50,a=1870,s=542}
|
|
||||||
{x=432,m=3087,a=1676,s=540}
|
|
||||||
{x=1076,m=133,a=488,s=75}
|
|
||||||
{x=928,m=590,a=41,s=1120}
|
|
||||||
{x=2118,m=433,a=15,s=108}
|
|
||||||
{x=503,m=850,a=936,s=454}
|
|
||||||
{x=1413,m=2695,a=2012,s=302}
|
|
||||||
{x=605,m=1234,a=3678,s=1865}
|
|
||||||
{x=486,m=265,a=1297,s=567}
|
|
||||||
{x=339,m=1762,a=2151,s=301}
|
|
||||||
{x=1791,m=1541,a=649,s=433}
|
|
||||||
{x=1544,m=232,a=168,s=1350}
|
|
||||||
{x=1341,m=727,a=333,s=2885}
|
|
||||||
{x=1886,m=193,a=1203,s=1036}
|
|
||||||
{x=68,m=82,a=429,s=2446}
|
|
||||||
{x=495,m=1587,a=677,s=859}
|
|
||||||
{x=1343,m=197,a=24,s=3101}
|
|
||||||
{x=349,m=292,a=711,s=1088}
|
|
||||||
{x=104,m=320,a=143,s=2128}
|
|
||||||
{x=963,m=771,a=69,s=668}
|
|
||||||
{x=1064,m=661,a=1968,s=1494}
|
|
||||||
{x=1014,m=678,a=2934,s=801}
|
|
||||||
{x=2602,m=347,a=1408,s=205}
|
|
||||||
{x=864,m=1564,a=1397,s=102}
|
|
||||||
{x=1619,m=1208,a=948,s=83}
|
|
||||||
{x=809,m=7,a=60,s=1191}
|
|
||||||
{x=2038,m=114,a=3360,s=1076}
|
|
||||||
{x=95,m=2987,a=426,s=6}
|
|
||||||
{x=381,m=1444,a=761,s=2737}
|
|
||||||
{x=1015,m=1787,a=234,s=1468}
|
|
||||||
{x=278,m=553,a=1181,s=560}
|
|
||||||
{x=320,m=1392,a=1290,s=477}
|
|
||||||
{x=319,m=2859,a=222,s=1168}
|
|
||||||
{x=1,m=877,a=1309,s=707}
|
|
||||||
{x=1955,m=1966,a=708,s=1380}
|
|
||||||
{x=73,m=57,a=395,s=130}
|
|
||||||
{x=1976,m=3300,a=1230,s=3208}
|
|
||||||
{x=1936,m=1835,a=189,s=1643}
|
|
||||||
{x=1870,m=23,a=105,s=3217}
|
|
||||||
{x=934,m=1711,a=356,s=1080}
|
|
||||||
{x=89,m=509,a=177,s=2545}
|
|
||||||
{x=1482,m=294,a=354,s=53}
|
|
||||||
{x=584,m=1489,a=473,s=2022}
|
|
||||||
{x=1763,m=41,a=868,s=540}
|
|
||||||
{x=41,m=1101,a=1061,s=1343}
|
|
||||||
{x=1482,m=497,a=1497,s=1471}
|
|
||||||
{x=2955,m=25,a=1569,s=1167}
|
|
||||||
{x=238,m=875,a=1452,s=169}
|
|
||||||
{x=228,m=1486,a=7,s=1355}
|
|
||||||
{x=803,m=3175,a=1845,s=882}
|
|
||||||
{x=2991,m=1441,a=1185,s=939}
|
|
||||||
{x=1005,m=2013,a=711,s=1203}
|
|
||||||
{x=759,m=548,a=1201,s=1640}
|
|
||||||
{x=1868,m=935,a=1333,s=1135}
|
|
||||||
{x=503,m=710,a=34,s=611}
|
|
||||||
{x=595,m=865,a=2702,s=2969}
|
|
||||||
{x=10,m=1488,a=616,s=341}
|
|
||||||
{x=2304,m=1845,a=72,s=1269}
|
|
||||||
{x=2233,m=804,a=2966,s=1606}
|
|
||||||
{x=30,m=803,a=353,s=937}
|
|
||||||
{x=313,m=1348,a=2274,s=648}
|
|
||||||
{x=1250,m=632,a=222,s=595}
|
|
||||||
{x=696,m=1498,a=314,s=497}
|
|
||||||
{x=910,m=602,a=3207,s=2059}
|
|
||||||
{x=1026,m=1378,a=355,s=910}
|
|
||||||
{x=2862,m=3299,a=1324,s=1437}
|
|
||||||
{x=136,m=10,a=7,s=1813}
|
|
||||||
{x=388,m=1008,a=583,s=1480}
|
|
||||||
{x=439,m=44,a=2516,s=427}
|
|
||||||
{x=242,m=1041,a=2178,s=408}
|
|
||||||
{x=2245,m=291,a=1358,s=694}
|
|
||||||
{x=198,m=2155,a=365,s=327}
|
|
||||||
{x=271,m=24,a=332,s=3150}
|
|
||||||
{x=3419,m=1641,a=48,s=2530}
|
|
||||||
{x=1248,m=166,a=2678,s=99}
|
|
||||||
{x=286,m=139,a=2293,s=356}
|
|
||||||
{x=1201,m=35,a=612,s=1236}
|
|
||||||
{x=549,m=115,a=175,s=241}
|
|
||||||
{x=991,m=1606,a=718,s=2651}
|
|
||||||
{x=93,m=2205,a=835,s=206}
|
|
||||||
{x=719,m=64,a=2252,s=2722}
|
|
||||||
{x=2468,m=1167,a=92,s=674}
|
|
||||||
{x=202,m=92,a=1905,s=1400}
|
|
||||||
{x=128,m=526,a=385,s=666}
|
|
||||||
{x=102,m=1285,a=166,s=687}
|
|
||||||
{x=650,m=2611,a=2686,s=10}
|
|
||||||
{x=1307,m=2221,a=489,s=884}
|
|
||||||
{x=902,m=961,a=9,s=309}
|
|
||||||
{x=629,m=1339,a=174,s=3762}
|
|
||||||
{x=282,m=69,a=3507,s=119}
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
px{a<2006:qkq,m>2090:A,rfg}
|
|
||||||
pv{a>1716:R,A}
|
|
||||||
lnx{m>1548:A,A}
|
|
||||||
rfg{s<537:gd,x>2440:R,A}
|
|
||||||
qs{s>3448:A,lnx}
|
|
||||||
qkq{x<1416:A,crn}
|
|
||||||
crn{x>2662:A,R}
|
|
||||||
in{s<1351:px,qqz}
|
|
||||||
qqz{s>2770:qs,m<1801:hdj,R}
|
|
||||||
gd{a>3333:R,R}
|
|
||||||
hdj{m>838:A,pv}
|
|
||||||
|
|
||||||
{x=787,m=2655,a=1222,s=2876}
|
|
||||||
{x=1679,m=44,a=2067,s=496}
|
|
||||||
{x=2036,m=264,a=79,s=2244}
|
|
||||||
{x=2461,m=1339,a=466,s=291}
|
|
||||||
{x=2127,m=1623,a=2188,s=1013}
|
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
%rq -> ch, sj
|
|
||||||
%nf -> sm, rg
|
|
||||||
%pc -> rz, zp
|
|
||||||
%xt -> bc
|
|
||||||
%nt -> kq, sj
|
|
||||||
%hc -> kb, zp
|
|
||||||
%rd -> lk
|
|
||||||
%ml -> pp, xt
|
|
||||||
%sq -> kl, sj
|
|
||||||
%jg -> fl, rg
|
|
||||||
&xl -> df
|
|
||||||
%kl -> mb, sj
|
|
||||||
%nd -> rg, jg
|
|
||||||
&rg -> cs, zb, cp, vz, gp
|
|
||||||
%mf -> zp
|
|
||||||
%rz -> zp, fr
|
|
||||||
%kk -> rg, bj
|
|
||||||
%nb -> qj
|
|
||||||
%pr -> pp
|
|
||||||
&zp -> vl, lk, rd, kb, xl
|
|
||||||
%fl -> nf, rg
|
|
||||||
%tb -> pk, pp
|
|
||||||
%bh -> pp, pr
|
|
||||||
%nh -> sj, rq
|
|
||||||
%lk -> hc
|
|
||||||
%cp -> kk
|
|
||||||
&ln -> df
|
|
||||||
&xp -> df
|
|
||||||
%bc -> nb, pp
|
|
||||||
%lj -> rg
|
|
||||||
%vz -> nd
|
|
||||||
%vl -> lv, zp
|
|
||||||
&gp -> df
|
|
||||||
%hd -> pp, bq
|
|
||||||
%fq -> pp, bh
|
|
||||||
%pk -> fq, pp
|
|
||||||
%cs -> zb, rg
|
|
||||||
%sn -> fd
|
|
||||||
%kq -> sj, qq
|
|
||||||
%zb -> vz
|
|
||||||
%lv -> zp, rd
|
|
||||||
%qj -> pp, hd
|
|
||||||
%fd -> nt
|
|
||||||
&df -> rx
|
|
||||||
broadcaster -> vl, cs, cn, ml
|
|
||||||
%bq -> tb
|
|
||||||
%kb -> pc
|
|
||||||
%cn -> sn, sj
|
|
||||||
%qq -> sq
|
|
||||||
%mb -> sj, nh
|
|
||||||
%jd -> zp, mf
|
|
||||||
&sj -> xp, qq, cn, fd, sn
|
|
||||||
&pp -> ln, ml, xt, bq, nb
|
|
||||||
%sm -> rg, cp
|
|
||||||
%ch -> sj
|
|
||||||
%bj -> lj, rg
|
|
||||||
%fr -> zp, mr
|
|
||||||
%mr -> zp, jd
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
broadcaster -> a, b, c
|
|
||||||
%a -> b
|
|
||||||
%b -> c
|
|
||||||
%c -> inv
|
|
||||||
&inv -> a
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
broadcaster -> a
|
|
||||||
%a -> inv, con
|
|
||||||
&inv -> b
|
|
||||||
%b -> con
|
|
||||||
&con -> output
|
|
||||||
@@ -1,131 +0,0 @@
|
|||||||
...................................................................................................................................
|
|
||||||
.#....#......#.#......#...#...##.....#.#.#....#.##....#...#.............#.#......##..#.......#.............#......#...#..#...##....
|
|
||||||
..#...#.#.#....####.....##.........................##.#..#...............##.......#....#.....#........#...#.....#.......#..........
|
|
||||||
.#.......#......#.#.#....#..............###...#................................................#....#.#..............#.............
|
|
||||||
................#....#....#..........#........#....................................##....##........#.....#.#....................#..
|
|
||||||
.................#..........#...........##...#......#.#.#..................#......#.........##....#...#.....#.#........#..#........
|
|
||||||
..##...#..........#...#..##..#.............#................................##......#.....#.........#..........#.#.....##.#.#......
|
|
||||||
.#.......##.....#....#...............#....##.......................#..................................#..#.........................
|
|
||||||
..#.#.....#........#.........................#................#..............#.................#.......#...#....#.#..#....#..#.....
|
|
||||||
.......##.........#..............#.........##..#..............#.....#....................#.#..........#..#.#.#....#.......#......#.
|
|
||||||
.#......##..............#..........#..........#.....................#.##..........##.....#...#...#......#...#......#..#..........#.
|
|
||||||
....#.........##......#.#.#...#................#.............#..........................#..............#...............#........#..
|
|
||||||
........##......#..##.....#..#..#.............##.........................#.......#.###....#..#................#....................
|
|
||||||
...#..#.#..........##...#..#....#...........#........................#...#...............#....#.....#......#....#....#....#........
|
|
||||||
.........#.......................#.....#..##............##.#.#.#...#.....#.#...........#.#............#..##...##..............#....
|
|
||||||
.#.#..#.#......#.........#...#..#.......#.#..............##.......##...................#....#........##....##..........#.........#.
|
|
||||||
...................#.....#..#.....#....###...............#........#......#..#.........#.##.#.#......##..#.....#.#...............##.
|
|
||||||
.#..#.........##....#...#..........##...#..............#...#........##...#...............#...............##.....#..................
|
|
||||||
....#.......#...................#...................................#..#...#..#..................#.##..###.......#..#........##....
|
|
||||||
.#.......................###.....#......................#.#.....#...#..##...#.#...........#.....###............####...........#.#..
|
|
||||||
...#.........#........................#..............#..#.#..............#................#......#..#.##...............##..........
|
|
||||||
.....#..........#......#....#....................#.#..........#.#...........#.#.##.............#..#......#..#......#...##...#......
|
|
||||||
...#..........#.............#.....................#......................#.......................#.............#.....#.............
|
|
||||||
..............................#..##...................#...#...............#.#....#....................#.......#..............##....
|
|
||||||
.#...##.....#.....#..#...#........#..............#.#...#.....#.......#..##..#.................#......................#..##.........
|
|
||||||
....#....................#......#...#...........#.........#.......#..#.#...........#......................................#...#....
|
|
||||||
..#.#.........##.....#........#...............#.##......##...........#........#.......................#..#.....#...............#...
|
|
||||||
..##............#........#.....#..#.......#......##...#.#......#......##.............#..........#..#........#..#...............#...
|
|
||||||
........#...##.......#....#...............##....#.....#.#...#....................#...#...........#...#.....##..........#...........
|
|
||||||
.#.#.....................##...#.........#............#..#.......#.#....#....#...#..#....#.............#.#.........#................
|
|
||||||
...........#..........#..#.#...#....................#.................#.##...#.......#.#......................#..#..#.....##.......
|
|
||||||
...#...#.......##.....#...##...........#............#..................#..#...#.#...#......................#....#...#..........#...
|
|
||||||
....#..#.....................#.......##.###......#............##....#..#.......##..........##...............##....#...#.........#..
|
|
||||||
.................#...#.....#..........#...........#..#............#..#...#..#..#....#.#.......#..............#.#......##...........
|
|
||||||
...#.....................#.........#.#..............#....#....###....##......#......##..................#...........#......#.......
|
|
||||||
..#..#............#.#..#..........#...#....#.............#......#......#...#........#.#.###..##..........#.#.........#...#..#....#.
|
|
||||||
.........#............................#.....#.....#...#...#...##......#.......#.#.#....##.#....#.#.......#...#..#.#.......###.#....
|
|
||||||
.#....#.#......#.......#........##....#....#..#..#.##........#....#.........##............#......#..............##...#..........#..
|
|
||||||
..#..#..#....#.......#.#.......#...........#..........#.......##..#..........#............#.......................#...#............
|
|
||||||
........#.#........#...............##..#....##...##....#..#....#........#.................#..................#.##.#.......##.......
|
|
||||||
..........#....###.##.............#.#.#......#........#........#....#.............#.##........#......................#.#.......##..
|
|
||||||
........#........#.#..........##..#.#....#.........##..........#..........#..........#....#.#.........#.......#.....#...##......#..
|
|
||||||
...............#..................#.#.##......#..#..##....#..........#...#......#..#..#.....#...##...............##............#...
|
|
||||||
............#.................#.........#....#......#.............#........#.......#.#...#........#..............##.........#....#.
|
|
||||||
...#....#..#...............#...........#.#.....#.......#.................#.#........#..#.#....#.......................###..........
|
|
||||||
............#.............#......#...#..#..#.......#.###..###...............#...........#...........##....................##.##..#.
|
|
||||||
........................#.#..#..#..##.#.#....#......#..#..#.....#.#..............#......#..........................................
|
|
||||||
.#.#.....................#..#...##..........##.#..#..#.##..#................#..##....#........#....#.#.#.........................#.
|
|
||||||
...#.....................#.....#...#...#....##....#...............................#...#.#................#..#...........#..........
|
|
||||||
...#....#............#.#.........#.......##.......#....................#.........#......#...........#....#...#.............#..##...
|
|
||||||
..#......................#.......#....#.#....##....#......#..........#....#.#.##..#.#.....#...##...#.##..###...........#...#....#..
|
|
||||||
..................#..........#.........#........................#.##...............#...#...#.#............#........................
|
|
||||||
........#.................#.....#..#.............#...#.#.##.......#.............#.#........#...#..#...........#..................#.
|
|
||||||
...#................#.#.#.........#.......#....#.........##........##...###.............#..#.#...#.................................
|
|
||||||
.....#.............##.##...##.............#.......#.#........##......#...#.......##.#.....................#......#.#.......#..##...
|
|
||||||
.........................#.............#...................##...#.......#.....#.........#..#......#.#.#........#.#..............##.
|
|
||||||
.............#......#..................#...............#...........#...#..........#.....#.....##....#.#...#...#.#.............#....
|
|
||||||
..............#....#............##...##....................#............#....#.##....#.##..#.#....#............#..#...........##...
|
|
||||||
........................#..................##..#.......#......#....#..............###........##.........#...#.....#.#............#.
|
|
||||||
..........#.............#..#.............#...........#..##........#........#..#................#......................#.........##.
|
|
||||||
.............#..#.....#..#....#...#.....#....#.#.....##...............#......................#.............#......#...#............
|
|
||||||
..........#...................#.......#............#....#.........#.............#..............#.#..........##.#........#..........
|
|
||||||
.............................#...........#...........##..#.#......#....#.....#....#..#...............##.#.....#...........#........
|
|
||||||
........................#.#.#.......#.##.....##......#....#..........##.........#...............#.#..#.##.....#....#..#............
|
|
||||||
......#....##...............#..#....#...#.....#......#....#.............#.#........#.#.....#.#.....###.#.........#...#...#...#.....
|
|
||||||
.................................................................S.................................................................
|
|
||||||
.....#.#...#...............#.....##......#..........#....#...............#.......#..............#.#.................#..............
|
|
||||||
................##.#..#..........#.#...#......................#..............#...........#...#..#.....##.........#.................
|
|
||||||
.......#.#........#.#...........#........#...........#..#.#.............#............#..........#.....#...................#........
|
|
||||||
..............#..#.................#..#........###..#.......................##.##..........#....#..#...#.##..#.#.###....#..........
|
|
||||||
.............#.....#.....#.........#..#.......#.......#......#..........#.........#............................#.....#.............
|
|
||||||
..#.......#....##.......#................#.#...........#...#..###.#........#........#.#...#............#.......#.#...#.............
|
|
||||||
............#.........#..#....#........#...#.........#...#............#............#....#..#.................#.#......#........#...
|
|
||||||
...#.............#....................#.............#..............#..#..................#...#...#.#....#...#.##....##..........#..
|
|
||||||
....#........#..##..........##.....#.....#....................#..........#...........#.#......##................##...........#.....
|
|
||||||
......#.......#..#..#...##...#................#.#.......#......##.#......#..#..............#....#.....#..#....#.#...#...........#..
|
|
||||||
.....#.......................#..#..........#..........#........#......#...#..#..#...........................#......#..........#..#.
|
|
||||||
.....##...........#....#.........#.........##...................#.#..##.#..#..##.#..##...........#......#....#...##.............#..
|
|
||||||
.#......................#.#..##..#...#.........#.........##.......##.....##.............#.........#.......#...................##.#.
|
|
||||||
...................#....#..###..#...#.....#......#..............#.........#..................##.##.................................
|
|
||||||
......#....#.............#..#...#..##.#...#...#......#....#...........#....#...........##....#..#...#.....#......................#.
|
|
||||||
...#...#............#....#..#.#....................................#..#.....................#....#.........................#.......
|
|
||||||
.......#.............................#............#......................#...#......#.......###.........#...................#.#....
|
|
||||||
.......#................##...#...........##........#..#..#..............#.....#..............#.....#......#..........#...#.........
|
|
||||||
......#.....#.................#....#...........#..........................#..#.##.#.##.............##.#............#....##..#......
|
|
||||||
....#.....#.......................#..............#......#..........#.....##..#.....#.........#..........................#.#..#...#.
|
|
||||||
...#...........#.........#......##...#......#......#....#....#..#......#..#........#..#......................................#.#...
|
|
||||||
.....#...##.....................#.............##..#....#.#..#...#...#....#.........#.......#.....#.............................#...
|
|
||||||
..............###.##...........#..#.##.....#.#..#....#..............#..#..........................#.##.#...........#...............
|
|
||||||
.......#.........................#................##.#.....##........#.....#.#......#..........................#...........#...#...
|
|
||||||
........##...#..#....#...........#....#.........#......#..##..#...........................#...#..............#........#......#.....
|
|
||||||
...#.....#...#.......#..................#.....#...........#................#......#........#.#.#.......................#...........
|
|
||||||
.#..#..#.............###........................#.......#....#.........#.....#........#..#.#....#..........#...#...................
|
|
||||||
......................#...........###........#........#...#.........#..................#...#.....##.........#.............#..#.#...
|
|
||||||
...#.##.............####.........##..#...#........................................#..........#...................#.##..............
|
|
||||||
......#...#.....#..................##........#...........#.#...#....##.......#......#.....#..#.............#..#.#.##....##.........
|
|
||||||
.......#..................#........#........#.........##.#............#.....#....#....#..##..............#.......#.#....#..#.......
|
|
||||||
..........#...........#..................#...........#.....#......##........##.......#.........................................##..
|
|
||||||
...#......#................#...........###..#.........#.....##..#.#...............#....#.##.#........#...................#.........
|
|
||||||
........#...#..##...#.................#......##.......##.....#..#.........#.#....#.......#...........#..#...................#...##.
|
|
||||||
........#...........#.##..............................................##...#..............##...........#..#...###........#.....#...
|
|
||||||
....#.......#....#......................#.#.#......................#....#.........#.......................#....#.#.##...........#..
|
|
||||||
.#................#.#.#.#.................#.......................##.#......#.....#..#..............#....#...#.#...#..#........#...
|
|
||||||
..#.........#.......#.....#.....##.............#.....................#...........#...#.................##.........#....#.........#.
|
|
||||||
....#..#..............#.#...................#...#......#.##..........#.........#..#.......................#..##....................
|
|
||||||
........#..#.#.........#...##.................#......#...#..............#.....................#...#.....#..........#....#...#.#....
|
|
||||||
.#.....#...#..##.......#...#.......#...............................#..#.....#................##..##.......#.......#..#..#........#.
|
|
||||||
..............................###..............................#....#..#....#.#..#.............#...#..........#.#.#.........##.....
|
|
||||||
.......#........#.#................#...#.........#.##.#....................#...................#..#....#...#.....###.....#.#.......
|
|
||||||
.........#.#............#......#......#.#.........###.#.#..#..#.#....#...###....#............#.....................#......#....#...
|
|
||||||
..##...#...#.#...........#.....#...#.......................................#..........................#.........#..##.........#.#..
|
|
||||||
.....#.....#..............#.......................#.........#...#..#.....##................#.#.......#..#...#.#.#..............#.#.
|
|
||||||
.........#....#.#...#.....#......#.#.................#...#...#.........................#..#....#...#.........#...#...#......###....
|
|
||||||
.....#.#..#........#.....##..#.##.....##............................#..#.....#.........#.....##.#..##...#.#.....#.............#....
|
|
||||||
.....#..................#....###.#.#.....#........................#...##....#.........#..........................#....##.#....#..#.
|
|
||||||
...###........##....#....#...#.......#....#..#.........##................#..........#........##.##.................#......#........
|
|
||||||
....#.......##..#.......##...#.........###....#........................#.#.#..................#...#.#.........................#....
|
|
||||||
..##..................#..#........##...#...#..#..............#.......#..............##.......#.........#..#.....................#..
|
|
||||||
.......#.................#....#.#........###..##..................#...............#......#.#............#...#.............#........
|
|
||||||
.#.#..........###.......##..#.#......#..#..#.#...#.............##.#.#...............##..#....#..#..............#.............#.....
|
|
||||||
.....#.#.....#..#..................###...............................................##............##..............................
|
|
||||||
...........#......#..##.#..#...#...#.#.....##.#.....#........##.................#..#..#....#.....#.....#......#.#..................
|
|
||||||
....#....................#...........#.......#..#.............#...#...................##............#..............##..............
|
|
||||||
.........#.#........#..#....#..........#.....#........................................#........#...#..#....#.......#.........#.....
|
|
||||||
...#............#.....#....#....#.....#....#....#..#................................#..#....#.........#.........#.#...........#....
|
|
||||||
.............#.......#...........#..#.....#.....................................#.#...#...#........#..##..#.....#.........#........
|
|
||||||
......#.......#.................#.................#.#.#.................................#........#...........#....#.#..............
|
|
||||||
.##.##....................#...#.#.............###........#.................#..#.....#..#.......#..............#..#.....#.##........
|
|
||||||
........#........#.............#..#...#.#........#..#.....#.............#.....#...#....#...###....##..#.....#..#.....#.............
|
|
||||||
..#.#...........##.....#.................#....#.....##....................#......#..........##....#..#..#...#..#.............#.....
|
|
||||||
...................................................................................................................................
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
...........
|
|
||||||
.....###.#.
|
|
||||||
.###.##..#.
|
|
||||||
..#.#...#..
|
|
||||||
....#.#....
|
|
||||||
.##..S####.
|
|
||||||
.##..#...#.
|
|
||||||
.......##..
|
|
||||||
.##.#.####.
|
|
||||||
.##..##.##.
|
|
||||||
...........
|
|
||||||
1446
2023/input/22/input
1446
2023/input/22/input
File diff suppressed because it is too large
Load Diff
@@ -1,7 +0,0 @@
|
|||||||
1,0,1~1,2,1
|
|
||||||
0,0,2~2,0,2
|
|
||||||
0,2,3~2,2,3
|
|
||||||
0,0,4~0,2,4
|
|
||||||
2,0,5~2,2,5
|
|
||||||
0,1,6~2,1,6
|
|
||||||
1,1,8~1,1,9
|
|
||||||
@@ -1,141 +0,0 @@
|
|||||||
#.###########################################################################################################################################
|
|
||||||
#.#####...###...#####...#...###.......#.....#...#####...#...###...#.........###...#...#.......#...#...#...###.............###...###...###...#
|
|
||||||
#.#####.#.###.#.#####.#.#.#.###.#####.#.###.#.#.#####.#.#.#.###.#.#.#######.###.#.#.#.#.#####.#.#.#.#.#.#.###.###########.###.#.###.#.###.#.#
|
|
||||||
#...#...#...#.#.###...#...#...#.....#.#.#...#.#...#...#.#.#...#.#.#.......#...#.#.#.#.#.....#.#.#.#.#.#.#...#...........#.#...#.....#.#...#.#
|
|
||||||
###.#.#####.#.#v###.#########.#####.#.#.#.###.###.#.###.#.###.#.#.#######.###.#.#.#.#.#####.#.#.#.#.#.#.###.###########.#.#.#########.#.###.#
|
|
||||||
###.#...###.#.#.>.#.#.......#.....#.#.#.#.#...#...#...#...#...#.#.#.....#.#...#.#.#.#...###.#.#.#.#.#.#.#...#...#.....#.#...#.........#.#...#
|
|
||||||
###.###.###.#.#v#.#.#.#####.#####.#.#.#.#.#.###.#####.#####.###.#.#.###.#.#.###.#.#.###.###.#.#.#.#.#.#.#.###.#.#.###.#.#####.#########.#.###
|
|
||||||
###.#...#...#.#.#...#.#...#.#.....#.#.#.#.#.#...#...#.....#...#.#.#...#.#.#.#...#.#.#...#...#...#.#.#.#.#...#.#.#...#.#.#...#...........#...#
|
|
||||||
###.#.###.###.#.#####.#.#.#.#.#####.#.#.#.#.#.###.#.#####.###.#.#.###.#.#.#.#.###.#.#.###.#######.#.#.#.###.#.#.###.#.#.#.#.###############.#
|
|
||||||
###...###.....#...###.#.#.#...#...#.#.#.#...#...#.#.....#...#.#.#.###.#.#.#.#...#...#...#.......#.#.#.#.#...#.#...#.#.#...#.#.........#...#.#
|
|
||||||
#################.###.#.#.#####.#.#.#.#.#######.#.#####.###.#.#.#.###.#.#.#.###.#######.#######.#.#.#.#.#.###.###.#.#.#####.#.#######.#.#.#.#
|
|
||||||
#...#...#...#...#...#.#.#.#.>.>.#...#.#.#.......#.#.....###.#.#.#.###.#.#.#.###.....#...#...#...#.#.#.#.#...#.#...#.#.#...#.#.......#.#.#.#.#
|
|
||||||
#.#.#.#.#.#.#.#.###.#.#.#.#.#v#######.#.#.#######.#.#######.#.#.#.###.#.#.#.#######.#.###.#.#.###.#.#.#.###.#.#.###.#.#.#.#.#######.#.#.#.#.#
|
|
||||||
#.#...#...#...#.....#...#...#.......#.#.#.#.....#.#...>.>...#.#.#.#...#.#.#.#.>.>...#...#.#.#...#.#.#.#.#...#.#.....#...#...#.......#...#...#
|
|
||||||
#.#################################.#.#.#.#.###.#.#####v#####.#.#.#.###.#.#.#.#v#######.#.#.###.#.#.#.#.#.###.###############.###############
|
|
||||||
#.#.........#...#.........###.......#...#...#...#.#.....#...#...#.#...#.#.#.#.#.....#...#.#.###.#.#.#.#.#.###.........#...#...###...###...###
|
|
||||||
#.#.#######.#.#.#.#######.###.###############.###.#.#####.#.#####.###.#.#.#.#.#####.#.###.#.###.#.#.#.#.#.###########.#.#.#.#####.#.###.#.###
|
|
||||||
#...###...#...#...#.......#...#.......#.....#.#...#.......#.....#...#.#.#.#.#.#.....#...#.#.#...#.#.#.#.#...#...>.>.#.#.#...#.....#.....#...#
|
|
||||||
#######.#.#########.#######.###.#####.#.###.#.#.###############.###.#.#.#.#.#.#.#######.#.#.#.###.#.#.#.###.#.###v#.#.#.#####.#############.#
|
|
||||||
#.......#...#.......#...###...#.#.....#.#...#...###.............#...#.#.#.#.#.#.......#.#.#.#...#.#.#.#...#.#...#.#...#.......#...#...#...#.#
|
|
||||||
#.#########.#.#######.#.#####.#.#.#####.#.#########.#############.###.#.#.#.#.#######.#.#.#.###.#.#.#.###.#.###.#.#############.#.#.#.#.#.#.#
|
|
||||||
#.#...#...#...#.......#.#...#...#...#...#...#.....#.....#.....###.....#.#.#.#.#.......#.#.#.#...#.#.#.#...#.....#...#...........#...#.#.#...#
|
|
||||||
#.#.#.#.#.#####.#######.#.#.#######.#.#####.#.###.#####.#.###.#########.#.#.#.#.#######.#.#.#.###.#.#.#.###########.#.###############.#.#####
|
|
||||||
#...#...#...#...#.......#.#.###...#...#.....#.#...#.....#.#...#...#...#.#.#.#.#.......#.#.#.#.#...#.#.#.#...........#...............#.#.....#
|
|
||||||
###########.#.###.#######.#.###.#.#####.#####.#.###.#####.#.###.#.#.#.#.#.#.#.#######.#.#.#.#.#.###.#.#.#.#########################.#.#####.#
|
|
||||||
###...#...#...###.......#.#.#...#.#...#.....#.#...#.......#...#.#.#.#.#.#.#...#...#...#...#...#...#.#...#.........#.................#.......#
|
|
||||||
###.#.#.#.#############.#.#.#.###.#.#.#####.#.###.###########.#.#.#.#.#.#.#####.#.#.#############.#.#############.#.#########################
|
|
||||||
#...#...#.............#.#.#.#...#.#.#.#.....#.#...#...#.......#.#.#.#.#...#.....#...#...#...#...#...#...#.........#...#.....#...#...###...###
|
|
||||||
#.###################.#.#.#.###.#.#.#.#v#####.#.###.#.#.#######.#.#.#.#####.#########.#.#.#.#.#.#####.#.#.###########.#.###.#.#.#.#.###.#.###
|
|
||||||
#...................#...#.#...#.#.#.#.>.>.#...#...#.#.#.###...#.#.#.#.#...#.....###...#.#.#.#.#.#...#.#.#...........#...###...#...#.#...#...#
|
|
||||||
###################.#####.###.#.#.#.###v#.#.#####.#.#.#.###.#.#.#.#.#.#.#.#####v###.###.#.#.#.#.#.#.#.#.###########.###############.#.#####.#
|
|
||||||
#.................#.....#...#...#.#.#...#...#...#...#.#...#.#.#.#.#.#.#.#.#...>.>.#.#...#.#.#.#.#.#.#.#.#...#.......#.....#...#.....#...#...#
|
|
||||||
#.###############.#####.###.#####.#.#.#######.#.#####.###.#.#.#.#.#.#.#.#.#.###v#.#.#.###.#.#.#.#.#.#.#.#.#.#v#######.###.#.#.#.#######.#.###
|
|
||||||
#.#.....#...#...#.......#...#.....#.#.......#.#.......#...#.#...#.#.#...#.#.#...#.#.#...#.#.#.#.#.#.#.#.#.#.>.>.#...#.#...#.#...#.......#...#
|
|
||||||
#.#.###.#.#.#.#.#########.###.#####.#######.#.#########.###.#####.#.#####.#.#.###.#.###.#.#.#.#.#.#.#.#.#.###v#.#.#.#.#.###v#####.#########.#
|
|
||||||
#.#.###...#...#.....#.....###.....#.#.......#.#...#...#.###.....#.#.....#...#...#...###.#.#...#.#.#.#.#.#.#...#...#.#.#.#.>.#.....#.........#
|
|
||||||
#.#.###############.#.###########.#.#.#######.#.#.#.#.#v#######.#.#####.#######.#######.#.#####.#.#.#.#.#.#.#######.#.#.#.#v#.#####.#########
|
|
||||||
#.#.#...............#.........#...#.#...#...#...#...#.>.>.....#.#.#.....###...#.......#.#...#...#.#.#.#...#.......#.#.#.#.#.#.#.....#.......#
|
|
||||||
#.#.#.#######################.#.###.###.#.#.###########v#####.#.#.#.#######.#.#######.#.###.#.###.#.#.###########.#.#.#.#.#.#.#.#####.#####.#
|
|
||||||
#...#...........#...#.........#.....###...#...#...#...#.....#.#.#.#.....#...#.........#.....#...#.#...#...###...#.#.#.#...#.#.#.......#.....#
|
|
||||||
###############.#.#.#.#######################.#.#.#.#.#####.#.#.#.#####.#.#####################.#.#####.#.###.#.#.#.#.#####.#.#########.#####
|
|
||||||
###...#.........#.#.#.......#.................#.#...#.......#...#...#...#...#.........#...#...#.#...###.#.....#...#...#.....#.#.......#.....#
|
|
||||||
###.#.#.#########.#v#######.#.#################.###################.#.#####.#.#######.#.#.#.#.#.###.###.###############.#####.#.#####.#####.#
|
|
||||||
###.#.#...........#.>.#.....#.................#...#.......#.......#...#.....#.#.......#.#.#.#.#.#...#...#...........###.....#.#.....#.#...#.#
|
|
||||||
###.#.#############v#.#.#####################.###.#.#####.#.#####.#####.#####.#.#######.#.#.#.#.#.###.###.#########.#######.#.#####.#.#.#.#.#
|
|
||||||
###.#.###...#...#...#.#.......###.............###...#.....#.#.....#...#.......#...#...#.#...#.#.#...#...#...#.....#.....###...#...#.#.#.#.#.#
|
|
||||||
###.#.###.#.#.#.#.###.#######.###.###################.#####.#.#####.#.###########.#.#.#.#####.#.###.###.###.#.###.#####.#######.#.#.#.#.#.#.#
|
|
||||||
#...#.....#...#...#...#...#...#...#.............#...#...#...#...#...#...#####...#...#.#.#.....#...#.###...#.#...#.......#.......#...#...#...#
|
|
||||||
#.#################.###.#.#.###.###.###########.#.#.###.#.#####.#.#####.#####.#.#####.#.#.#######.#.#####.#.###.#########.###################
|
|
||||||
#.#...............#...#.#.#...#.....#.......#...#.#.#...#.#.....#.#.....#.....#.......#.#...#...#...#...#...###.........#...#...#...#...#...#
|
|
||||||
#.#.#############.###.#.#.###.#######.#####.#.###.#.#.###.#.#####.#.#####.#############.###.#.#.#####.#.###############.###.#.#.#.#.#.#.#.#.#
|
|
||||||
#...###.........#...#...#.....###...#.....#...#...#.#...#.#.#.....#.....#.............#.#...#.#.#...#.#.....###.........###...#...#...#...#.#
|
|
||||||
#######.#######.###.#############.#.#####.#####.###.###.#.#.#.#########.#############v#.#.###.#.#.#.#.#####.###.###########################.#
|
|
||||||
###...#.#.....#.....###...#...#...#.....#...###...#...#...#...#.......#.#...#.......>.>.#.###.#.#.#.#...#...#...#...#...###...#...#.......#.#
|
|
||||||
###.#.#.#.###.#########.#.#.#.#.#######.###.#####.###.#########.#####.#.#.#.#.#######v###.###.#.#.#.###.#.###.###.#.#.#.###.#.#v#.#.#####.#.#
|
|
||||||
#...#...#.###.......#...#.#.#.#.......#.....#...#.#...###...#...#...#...#.#.#...#.....#...#...#...#.#...#.###...#.#.#.#.#...#.>.#.#...###...#
|
|
||||||
#.#######.#########.#.###.#.#.#######.#######.#.#.#.#####.#.#.###.#.#####.#.###.#.#####.###.#######.#.###.#####.#.#.#.#.#.#####v#.###.#######
|
|
||||||
#...#.....###.......#...#.#.#.........#...###.#.#.#.#...#.#.#...#.#...#...#...#.#.....#...#...#.....#...#.#...#.#.#.#.#...###...#.....#...###
|
|
||||||
###.#.#######.#########.#.#.###########.#.###.#.#.#.#.#.#.#.###v#.###.#.#####.#.#####.###.###.#.#######.#.#.#.#v#.#.#.#######.#########.#.###
|
|
||||||
###.#.#.......#...#...#.#.#.............#...#.#...#.#.#...#.#.>.>.###...#...#...#.....###...#.#.#...#...#...#.>.>.#.#.#.......#...#...#.#.###
|
|
||||||
###.#.#.#######.#.#.#.#.#.#################.#.#####.#.#####.#.#v#########.#.#####.#########.#.#.#.#.#.#########v###.#.#.#######.#.#.#.#.#.###
|
|
||||||
#...#.#.#.....#.#.#.#.#.#.#...#...###...#...#.....#.#.....#...#...#...###.#.#...#.....#.....#.#.#.#.#.....#.....###.#.#.....#...#...#...#...#
|
|
||||||
#.###.#.#.###v#.#.#.#.#.#.#.#.#.#.###.#.#v#######.#.#####.#######.#.#.###.#.#.#.#####.#.#####.#.#.#.#####.#.#######.#.#####.#.#############.#
|
|
||||||
#.....#...###.>.#.#.#.#.#...#.#.#.#...#.>.>...#...#.......#...###...#...#.#...#.......#...#...#.#.#.#...#.#.#.....#...###...#.#.......#...#.#
|
|
||||||
#############v###.#.#.#.#####.#.#.#.#####v###.#.###########.#.#########.#.###############.#.###.#.#.#.#.#.#.#.###.#######.###.#.#####.#.#.#.#
|
|
||||||
#.........#...#...#.#.#...#...#.#.#.#.....###.#...........#.#...........#...............#...###.#.#.#.#.#.#...###.......#...#.#.....#.#.#.#.#
|
|
||||||
#.#######.#.###.###.#.###.#.###.#.#.#.#######.###########.#.###########################.#######.#.#.#.#.#.#############.###.#.#####.#.#.#.#.#
|
|
||||||
#...#...#...###.#...#.#...#...#.#.#.#.....###.....#...#...#.................###.........#.....#...#...#...#.............#...#.#.....#.#.#.#.#
|
|
||||||
###.#.#.#######.#.###.#.#####.#.#.#.#####.#######.#.#.#.###################.###.#########.###.#############.#############.###.#.#####.#.#.#.#
|
|
||||||
###...#.......#...###...#...#...#...#####.......#...#.#.#...................#...#...#...#...#.....###...###.............#.#...#...###...#.#.#
|
|
||||||
#############.###########.#.###################.#####.#.#.###################.###.#.#.#.###.#####.###.#.###############.#.#.#####.#######.#.#
|
|
||||||
#####...#.....#...#...#...#...#...#...#.......#...###...#.................###...#.#...#.....#.....#...#...#.............#...#####...#...#.#.#
|
|
||||||
#####.#.#.#####.#.#.#.#.#####.#.#.#.#.#.#####.###.#######################.#####.#.###########.#####.#####.#.#######################.#.#.#.#.#
|
|
||||||
#.....#...#.....#.#.#.#.#.....#.#.#.#.#.....#.....#...#...#.............#...###...#...#.....#...###...#...#.................#.......#.#.#...#
|
|
||||||
#.#########.#####.#.#.#.#.#####.#.#.#.#####v#######.#.#.#.#.###########.###.#######.#.#.###.###.#####.#.###################.#.#######.#.#####
|
|
||||||
#...#.....#.....#.#.#.#.#.....#.#.#.#.....>.>.###...#.#.#.#...#.......#.#...#...#...#...###.....#...#.#.###.................#.........#...###
|
|
||||||
###.#.###.#####.#.#.#.#.#####.#.#.#.#######v#.###.###.#.#.###.#.#####.#.#.###.#.#.###############.#.#.#.###.#############################.###
|
|
||||||
###...#...###...#.#.#.#.#.....#.#...#...#...#...#...#...#...#.#.#.....#...#...#.#.........###...#.#.#.#...#.......#.....#...#...#...#...#...#
|
|
||||||
#######.#####.###.#.#.#.#.#####.#####.#.#.#####.###.#######.#.#.#.#########.###.#########.###.#.#.#.#.###.#######.#.###.#.#.#.#.#v#.#.#.###.#
|
|
||||||
#.....#...#...###.#.#.#.#.#...#.#.....#.#.....#...#.#...#...#...#.........#...#...........#...#.#.#.#...#.#...###.#...#.#.#.#.#.>.#...#...#.#
|
|
||||||
#.###.###v#.#####.#.#.#.#.#.#.#.#.#####.#####.###.#.#.#.#.###############.###.#############.###.#.#.###.#.#.#.###v###.#.#.#.#.###v#######.#.#
|
|
||||||
#...#.###.>.#...#...#.#.#...#...#.....#.......#...#.#.#...#####...#.......###.........#...#...#.#.#...#.#.#.#...>.>.#.#.#.#.#...#.......#.#.#
|
|
||||||
###.#.###v###.#.#####.#.#############.#########.###.#.#########.#.#.#################.#.#.###.#.#.###.#.#.#.#####v#.#.#.#.#.###.#######.#.#.#
|
|
||||||
#...#.....###.#.....#...#...#.......#.........#.#...#.###...###.#.#.#.....#.....#.....#.#.#...#.#.###.#.#.#.#.....#...#...#.#...#.......#...#
|
|
||||||
#.###########.#####.#####.#.#.#####.#########.#.#.###.###.#.###.#.#v#.###.#.###.#.#####.#.#.###.#.###.#.#.#.#.#############.#.###.###########
|
|
||||||
#...#.........#...#.#.....#.#.....#.#...#...#.#...#...#...#...#.#.>.>.#...#.#...#...###.#.#...#.#...#.#.#.#.#.........#.....#.#...###...#...#
|
|
||||||
###.#.#########.#.#.#.#####.#####.#.#.#.#.#.#.#####.###.#####.#.###v###.###.#.#####v###.#.###.#.###.#.#.#.#.#########.#.#####.#.#####.#.#.#.#
|
|
||||||
###...#...#...#.#...#.....#...###.#.#.#...#.#...#...#...#####...###...#...#.#...#.>.>...#...#.#.....#.#.#...#.........#.#...#.#.......#...#.#
|
|
||||||
#######.#.#.#.#.#########.###.###.#.#.#####.###.#.###.###############.###.#.###.#.#v#######.#.#######.#.#####.#########.#.#.#.#############.#
|
|
||||||
#.......#...#...###.......#...#...#...#...#.....#.....#...#####...#...#...#.###...#...#.....#...#...#.#.#...#.........#.#.#...#...........#.#
|
|
||||||
#.#################.#######.###.#######.#.#############.#.#####.#.#.###.###.#########.#.#######.#.#.#.#.#.#.#########.#.#.#####.#########.#.#
|
|
||||||
#.............#...#.......#...#.........#...#.....#...#.#.###...#.#...#...#.#...###...#...#.....#.#.#...#.#.#.........#...#...#.........#.#.#
|
|
||||||
#############.#.#.#######.###.#############.#.###.#.#.#.#.###.###.###.###.#.#.#.###.#####.#.#####.#.#####.#.#.#############.#.#########.#.#.#
|
|
||||||
#####...#.....#.#.#...###...#...............#...#.#.#...#...#...#.....###...#.#...#.....#...#.....#.###...#...###...#...#...#.#.........#.#.#
|
|
||||||
#####.#.#.#####.#.#.#.#####.###################.#.#.#######.###.#############.###.#####.#####.#####.###.#########.#.#.#.#.###.#.#########.#.#
|
|
||||||
#.....#.#.....#.#...#.#...#...........###...#...#.#...#...#.....#...#.........###.#.....#...#.....#...#.......#...#...#.#...#.#.....#####...#
|
|
||||||
#.#####.#####.#.#####.#.#.###########.###.#.#.###.###.#.#.#######.#.#.###########.#.#####.#.#####.###.#######.#.#######.###.#.#####.#########
|
|
||||||
#.....#.......#.#.....#.#.............#...#.#...#.###.#.#.###.....#.#...........#...#...#.#.#...#.#...###...#.#...#.....#...#.....#.........#
|
|
||||||
#####.#########.#.#####.###############.###.###.#.###v#.#.###.#####.###########.#####.#.#.#.#.#.#.#.#####.#.#v###.#.#####.#######.#########.#
|
|
||||||
#.....#.........#.....#...............#...#.#...#...>.>.#...#.#.....#...........#...#.#.#.#.#.#.#.#.#...#.#.>.>.#.#.#...#.....#...#.........#
|
|
||||||
#.#####.#############.###############.###.#.#.#######v#####.#.#.#####.###########.#.#.#.#.#.#.#.#.#.#.#.#.###v#.#.#.#.#.#####.#.###v#########
|
|
||||||
#.......###...........###.............#...#.#.#.......#.....#.#.#...#...........#.#...#...#...#.#.#.#.#...###.#.#.#.#.#...#...#.#.>.#...#...#
|
|
||||||
###########.#############.#############.###.#.#.#######.#####.#.#.#.###########.#.#############.#.#.#.#######.#.#.#.#.###.#.###.#.#v#.#.#.#.#
|
|
||||||
###...#.....#.......#...#.........###...###.#.#...#...#.....#.#.#.#...#...#.....#...#.........#.#.#.#.#.......#...#.#.###.#.###...#.#.#.#.#.#
|
|
||||||
###.#.#.#####.#####.#.#.#########.###.#####.#.###.#.#.#####.#.#.#.###.#.#.#.#######.#.#######.#.#.#.#.#.###########.#.###.#.#######.#.#.#.#.#
|
|
||||||
###.#.#.......#.....#.#.#.........#...#.....#...#...#.....#.#.#.#.#...#.#.#...#...#...#.....#.#.#.#.#.#.....#...###...#...#...#.....#.#.#.#.#
|
|
||||||
###.#.#########.#####.#.#.#########.###.#######.#########.#.#.#.#.#.###.#.###.#.#.#####.###.#.#.#.#.#.#####.#.#.#######.#####.#.#####.#.#.#.#
|
|
||||||
#...#.........#.....#.#.#.......###...#.#...#...#.........#...#.#.#.###.#.#...#.#.#.....###...#.#.#...#...#...#.......#.#...#.#...#...#...#.#
|
|
||||||
#.###########.#####.#.#.#######.#####.#.#.#.#.###.#############.#.#.###.#.#.###.#.#.###########.#.#####.#.###########.#.#.#.#.###.#.#######.#
|
|
||||||
#...........#.......#.#.....#...#...#.#...#...###.............#.#.#...#.#.#...#.#.#.......#.....#...#...#...#.........#...#.#.#...#.#.....#.#
|
|
||||||
###########v#########.#####.#.###.#.#.#######################.#.#.###.#.#.###v#.#.#######.#.#######.#.#####.#.#############.#.#.###.#.###.#.#
|
|
||||||
#.......###.>...#...#.#.....#...#.#.#.........###.......#.....#.#.###...#.#.>.>.#.........#...#.....#.....#.#.#...........#.#.#...#.#...#.#.#
|
|
||||||
#.#####.###v###.#.#.#.#.#######v#.#.#########.###.#####.#.#####.#.#######.#.#v###############.#.#########.#.#.#.#########.#.#.###.#.###.#.#.#
|
|
||||||
#.....#.....###.#.#.#.#.#...#.>.>.#...#.......#...#...#...#...#...#.....#...#.#...#...#...###...###...#...#.#...#.....#...#...#...#.#...#...#
|
|
||||||
#####.#########.#.#.#.#.#.#.#.#v#####.#.#######.###.#.#####.#.#####.###.#####.#.#.#.#.#.#.#########.#.#.###.#####.###.#.#######.###.#.#######
|
|
||||||
#.....#.......#...#.#.#.#.#.#.#.#...#.#.......#...#.#...#...#.#...#.#...#.....#.#...#...#.....#...#.#.#...#.#.....###...#.....#.....#.......#
|
|
||||||
#.#####.#####.#####.#.#.#.#.#.#.#.#.#.#######.###.#.###.#.###.#.#.#.#.###.#####.#############.#.#.#.#.###.#.#.###########.###.#############.#
|
|
||||||
#.....#.#.....#...#.#.#...#...#...#.#.........###.#.#...#.#...#.#...#...#.......#.............#.#.#.#.....#.#...........#...#.#...........#.#
|
|
||||||
#####.#.#.#####.#.#.#.#############.#############.#.#.###.#.###.#######.#########.#############.#.#.#######.###########.###.#.#.#########.#.#
|
|
||||||
#.....#.#.......#.#...###...........###...###...#...#.#...#...#.#.......#.........#.........#...#.#.#.....#.....#.....#.#...#.#.........#...#
|
|
||||||
#.#####.#########.#######.#############.#.###.#.#####.#.#####.#.#.#######.#########.#######.#.###.#.#.###.#####.#.###.#.#.###.#########.#####
|
|
||||||
#.....#.#.........#.......#.......#.....#...#.#.#...#.#.#.....#.#.#...###...#.......#.......#...#.#...#...#...#...###...#.#...#.......#.....#
|
|
||||||
#####.#.#.#########.#######.#####.#.#######.#.#.#.#.#.#.#.#####.#.#.#.#####.#.#######.#########.#.#####.###.#.###########.#.###.#####.#####.#
|
|
||||||
#...#...#.....#...#.........#.....#...#.....#.#.#.#.#...#.......#...#.....#...#.......#...#...#.#.....#.#...#...........#.#.....#...#.......#
|
|
||||||
#.#.#########.#.#.###########.#######.#.#####.#.#.#.#####################.#####.#######.#.#.#.#.#####.#.#.#############.#.#######.#.#########
|
|
||||||
#.#...#.......#.#.....#...###.......#.#.###...#.#.#...###...#.............#...#.....#...#...#...#.....#...#.....#.......#.........#.........#
|
|
||||||
#.###.#.#######.#####.#.#.#########.#.#.###.###.#.###.###.#.#.#############.#.#####.#.###########.#########.###.#.#########################.#
|
|
||||||
#...#.#.......#.....#.#.#.#...#...#...#...#.#...#...#.#...#.#...........#...#.#...#...#.........#.....#...#...#.#.....#...###...#...###.....#
|
|
||||||
###.#.#######.#####.#.#.#.#.#.#.#.#######v#.#.#####.#.#.###.###########.#.###.#.#.#####.#######.#####.#.#.###.#.#####.#.#.###.#.#.#.###v#####
|
|
||||||
#...#.....#...#...#.#.#.#.#.#.#.#.#...#.>.>.#.....#.#.#...#...#...#...#.#...#.#.#.....#.......#.......#.#.....#.......#.#.#...#.#.#.#.>.#...#
|
|
||||||
#.#######.#.###.#.#.#.#.#.#.#.#.#.#.#.#.#########.#.#.###.###.#.#.#.#.#.###.#.#.#####.#######.#########.###############.#.#.###.#.#.#.#v#.#.#
|
|
||||||
#.......#.#...#.#.#.#.#.#.#.#.#.#...#.#.....#.....#.#.#...#...#.#.#.#...#...#...#.....#.......#...#...#...........#.....#.#...#.#.#.#.#.#.#.#
|
|
||||||
#######.#.###.#.#.#.#.#.#.#.#.#.#####.#####.#.#####.#.#.###.###.#.#v#####.#######.#####.#######.#.#.#.###########.#.#####.###.#.#.#.#.#.#.#.#
|
|
||||||
#.......#.....#.#...#...#...#.#...###.#.....#.#...#.#.#.#...#...#.>.>.###.......#.#...#...#...#.#.#.#.#...#...#...#.#.....#...#.#.#.#.#.#.#.#
|
|
||||||
#.#############.#############.###.###.#.#####.#.#.#.#.#.#.###.#######.#########.#.#.#.###v#.#.#.#.#.#.#.#.#.#.#.###.#.#####.###.#.#.#.#.#.#.#
|
|
||||||
#.#.......#...#...........#...#...#...#...###.#.#.#.#.#.#...#...#####...#.....#.#.#.#.#.>.>.#.#.#.#.#.#.#.#.#.#...#.#.#...#.#...#.#...#...#.#
|
|
||||||
#.#.#####.#.#.###########.#.###.###.#####.###.#.#.#.#.#.###.###.#######.#.###.#.#.#.#.#.#####.#.#.#.#.#.#.#.#.###v#.#.#.#.#.#.###.#########.#
|
|
||||||
#.#...#...#.#...#.....#...#...#...#...#...#...#.#.#.#.#...#...#...#.....#...#.#.#.#.#.#.#.....#.#.#.#.#.#.#.#.#.>.>.#.#.#.#.#...#.....#.....#
|
|
||||||
#.###.#.###.###.#.###.#.#####.###.###.#.###.###.#.#.#.###.###.###.#.#######.#.#.#.#.#.#.#.#####.#.#.#.#.#.#.#.#.#####.#.#.#.###.#####.#.#####
|
|
||||||
#.....#.....###...###...#####.....###...###.....#...#.....###.....#.........#...#...#...#.......#...#...#...#...#####...#...###.......#.....#
|
|
||||||
###########################################################################################################################################.#
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
#.#####################
|
|
||||||
#.......#########...###
|
|
||||||
#######.#########.#.###
|
|
||||||
###.....#.>.>.###.#.###
|
|
||||||
###v#####.#v#.###.#.###
|
|
||||||
###.>...#.#.#.....#...#
|
|
||||||
###v###.#.#.#########.#
|
|
||||||
###...#.#.#.......#...#
|
|
||||||
#####.#.#.#######.#.###
|
|
||||||
#.....#.#.#.......#...#
|
|
||||||
#.#####.#.#.#########v#
|
|
||||||
#.#...#...#...###...>.#
|
|
||||||
#.#.#v#######v###.###v#
|
|
||||||
#...#.>.#...>.>.#.###.#
|
|
||||||
#####v#.#.###v#.#.###.#
|
|
||||||
#.....#...#...#.#.#...#
|
|
||||||
#.#########.###.#.#.###
|
|
||||||
#...###...#...#...#.###
|
|
||||||
###.###.#.###v#####v###
|
|
||||||
#...#...#.#.>.>.#.>.###
|
|
||||||
#.###.###.#.###.#.#v###
|
|
||||||
#.....###...###...#...#
|
|
||||||
#####################.#
|
|
||||||
@@ -1,300 +0,0 @@
|
|||||||
225004689740965, 150875733412640, 116049940893518 @ 275, 389, 375
|
|
||||||
338282582546422, 191340608518886, 340003210160681 @ -162, 84, -46
|
|
||||||
276063330011297, 506267063607948, 451688278442130 @ -9, -360, -275
|
|
||||||
184895220833040, 346432574551322, 295370687370609 @ 190, -100, -32
|
|
||||||
191652244794317, 228752744289266, 232281189081226 @ -31, 21, 81
|
|
||||||
243836903069805, 200950090690864, 278486291904150 @ -28, 88, 22
|
|
||||||
99537538414359, 156839976263080, 330139497485318 @ 130, 130, -37
|
|
||||||
326389764039501, 504331313318919, 418345965619340 @ -131, -307, -163
|
|
||||||
148876210640065, 290152398181516, 301374612836089 @ 33, -38, 6
|
|
||||||
142515087922560, 255308120704690, 257170878718743 @ 68, 8, 52
|
|
||||||
295642841582982, 242101259588587, 104022418418097 @ -64, 55, 272
|
|
||||||
212300793229561, 261391853816696, 365490993544222 @ 18, 12, -93
|
|
||||||
165229346379582, 248276965460071, 161312784455361 @ 228, 79, 212
|
|
||||||
146531979069180, 97089275376773, 332003690930340 @ 22, 161, -23
|
|
||||||
120800899092132, 184913721524842, 473900231780358 @ 46, 68, -169
|
|
||||||
245193974976343, 210971062189687, 268026939360343 @ -33, 73, 36
|
|
||||||
442753793796843, 328612846899973, 283609914942486 @ -197, 51, -361
|
|
||||||
386255632768587, 458845472549101, 186183322563756 @ -53, -509, 253
|
|
||||||
31284818403777, 378560063574625, 130525938014247 @ 121, -131, 182
|
|
||||||
215792555249349, 255251601506749, 291132823173402 @ 53, 35, -5
|
|
||||||
440576428992381, 341794624061173, 283489603116870 @ -195, -71, -297
|
|
||||||
406821058032927, 358552748013016, 243495622599474 @ -84, -158, 37
|
|
||||||
333985935471117, 348387381803596, 196037336476056 @ 173, -110, 229
|
|
||||||
194315236713487, 480470439040782, 378290083309208 @ 51, -280, -115
|
|
||||||
423624567819357, 338961555301801, 243582531901236 @ 61, -23, -31
|
|
||||||
94275761968037, 416415875088596, 405203801734006 @ 101, -177, -111
|
|
||||||
182423650573104, 175953021338356, 485228050020492 @ 54, 122, -247
|
|
||||||
132946860128942, 343413209165262, 326300668034478 @ 36, -96, -17
|
|
||||||
372535536228591, 339775824243596, 291460134306860 @ -5, -78, -127
|
|
||||||
234895872588063, 62247228662200, 328601789968998 @ -48, 226, -29
|
|
||||||
219739080638176, 286527796435798, 280981600608968 @ 12, -20, 17
|
|
||||||
189527420319587, 44893660278076, 188459541975566 @ 71, 322, 143
|
|
||||||
380267121502632, 171933783462296, 62327709907551 @ -50, 486, 658
|
|
||||||
147002248372043, 129217307469322, 20610734515794 @ 72, 163, 337
|
|
||||||
378116309343993, 323069130988612, 248918730482046 @ 12, -7, 19
|
|
||||||
319333653031698, 278859269969079, 223866268814703 @ 52, 75, 106
|
|
||||||
236992756588085, 304463145397792, 340194522655246 @ -12, -44, -61
|
|
||||||
361033750565555, 283496102799226, 443655113595562 @ -186, -23, -175
|
|
||||||
235897203512717, 294114281232674, 253551760349992 @ -39, -37, 56
|
|
||||||
408102536955573, 333380318039952, 224743862672053 @ 133, 14, 168
|
|
||||||
293102890051939, 344678920502642, 319027665541226 @ -52, -97, -51
|
|
||||||
314560583563263, 247853680623604, 53638099642518 @ 168, 228, 683
|
|
||||||
358957968197762, 345732142415154, 247473914297280 @ 176, -100, 13
|
|
||||||
97749293379345, 58712595993126, 391620120825632 @ 43, 177, -72
|
|
||||||
322867629724035, 340590948643122, 203289896708124 @ 172, -81, 190
|
|
||||||
80125950337563, 291162150272609, 183137679036856 @ 67, -45, 129
|
|
||||||
258374458616771, 177916772961046, 144952832827550 @ -106, 67, 167
|
|
||||||
278357116203837, 305712540709126, 313477667351106 @ 25, -25, -67
|
|
||||||
264809045616867, 264739862065576, 262895162556366 @ 124, 82, 15
|
|
||||||
336748098976080, 273218710413310, 322060564461324 @ 30, 104, -167
|
|
||||||
429928385950838, 314414397421203, 244915322264740 @ -58, 209, -27
|
|
||||||
372274398572112, 231105491529412, 287140067936409 @ -124, 146, -34
|
|
||||||
300041946642210, 361805878294414, 348779219055194 @ 94, -140, -213
|
|
||||||
82333630198830, 239193100253797, 257911560955197 @ 188, 41, 48
|
|
||||||
226279166994495, 154940662484512, 108839076271560 @ -50, 110, 216
|
|
||||||
236988945746136, 219126354714877, 501245149354293 @ -46, 49, -232
|
|
||||||
290809399876260, 49865784333280, 261940365787665 @ 108, 638, 10
|
|
||||||
192479192269869, 89960784106480, 410601225475806 @ 72, 264, -171
|
|
||||||
154572048488187, 298722566659266, 216167781614996 @ 16, -49, 98
|
|
||||||
61402524224229, 314643942049666, 423478145912151 @ 85, -68, -106
|
|
||||||
358766524042277, 346694443835744, 276844061172806 @ -19, -102, -46
|
|
||||||
256397938412229, 266514037892864, 308510441425550 @ -38, 6, -19
|
|
||||||
111247170663991, 233159373163332, 468697849329816 @ 74, 24, -176
|
|
||||||
344810608922213, 303615399145216, 281518317463374 @ -63, -8, -23
|
|
||||||
362788311911379, 251466951828550, 193750060069434 @ -150, 55, 145
|
|
||||||
399463771643109, 390830800397568, 348214912693582 @ -56, -300, -427
|
|
||||||
410955878203009, 271492271760398, 451677568130560 @ -193, 83, -454
|
|
||||||
295197906839637, 437418987102341, 193165330189036 @ -59, -237, 141
|
|
||||||
154537540976799, 195927505433626, 181308919987650 @ 52, 77, 141
|
|
||||||
325985149258473, 250194915217672, 334102012662690 @ 108, 204, -238
|
|
||||||
124543315501773, 231620946800590, 338561758249206 @ 17, 11, -21
|
|
||||||
335269288780847, 561799450130906, 273598366143466 @ -160, -351, 33
|
|
||||||
406349536830357, 371696898098416, 244982099083326 @ -5, -260, 13
|
|
||||||
429820668866290, 271277644477337, 428343413274584 @ -246, 63, -343
|
|
||||||
285494082255787, 310483982523226, 238112394898756 @ 6, -35, 72
|
|
||||||
427654917316453, 283119550914376, 289816166586310 @ -171, 202, -189
|
|
||||||
183305780754531, 169697372808382, 507117795342356 @ -26, 79, -196
|
|
||||||
297993284172727, 148019247408016, 478413943821759 @ -109, 142, -218
|
|
||||||
448790421243093, 337156090194256, 245685544768734 @ -213, 32, -103
|
|
||||||
148786447967448, 318009921450292, 479155605119109 @ 14, -70, -172
|
|
||||||
179096144122083, 244536042632162, 235756205266522 @ 64, 35, 77
|
|
||||||
244534188760433, 150524896619640, 152520925860732 @ -45, 138, 178
|
|
||||||
292496348928869, 340309322862336, 330659178034254 @ -138, -93, -17
|
|
||||||
238428943280004, 398422698354598, 128738013198711 @ 18, -176, 234
|
|
||||||
313779278881410, 287246060199107, 290633760886106 @ -50, 5, -21
|
|
||||||
343288891378891, 429120523686379, 473870061316574 @ -25, -305, -513
|
|
||||||
446216226005587, 312289649316651, 248176797177231 @ -177, 407, -134
|
|
||||||
163307384848257, 225448720602800, 322389319780406 @ 31, 38, -21
|
|
||||||
311268063816389, 463933000929952, 394657123402262 @ -111, -254, -132
|
|
||||||
399765834273075, 254798002778062, 319132923186840 @ -106, 223, -222
|
|
||||||
349356303383841, 65751874037920, 238304141643426 @ 88, 934, 64
|
|
||||||
426197942876982, 275075125500838, 175524119141824 @ -134, 316, 425
|
|
||||||
244846911821769, 323674066198300, 382631479290586 @ -38, -71, -106
|
|
||||||
385903898932938, 293744669483637, 303997079396164 @ 28, 149, -255
|
|
||||||
122406691475152, 265274118970726, 228903355635336 @ 74, -8, 85
|
|
||||||
428147883934287, 336265506735295, 236428743456129 @ -49, -11, 58
|
|
||||||
155366097136407, 212516717519496, 138064536136086 @ 223, 134, 247
|
|
||||||
290272064856077, 53447685751876, 200629668873066 @ -21, 397, 136
|
|
||||||
289398699960341, 335225479948172, 258338577180554 @ -87, -85, 48
|
|
||||||
246644560074906, 346069755754627, 184752533814789 @ -18, -99, 146
|
|
||||||
325161489522083, 312478142191119, 272239125652590 @ 27, -15, -17
|
|
||||||
302526838060353, 250137788997644, 293451658437046 @ 34, 111, -51
|
|
||||||
381454405428627, 309591627716605, 247524198319020 @ -69, 15, 37
|
|
||||||
126242659748529, 415333404708478, 502742367002526 @ 43, -171, -201
|
|
||||||
391122049921137, 340901601859651, 268790805641181 @ 57, -73, -116
|
|
||||||
408757147462249, 380607987804743, 399264436774194 @ -223, -157, -197
|
|
||||||
447450951270780, 284852883292954, 255232938787050 @ -218, 628, -173
|
|
||||||
406627106978321, 345331129547776, 278775433455838 @ -252, -98, 35
|
|
||||||
102526860990768, 109719841541566, 426220057678866 @ 104, 172, -141
|
|
||||||
271417363832745, 226632607078180, 157778251273146 @ -48, 65, 184
|
|
||||||
380523128506570, 154723202351541, 260313283860234 @ 74, 867, -53
|
|
||||||
238921206316929, 132829025707360, 47904689664486 @ 244, 438, 549
|
|
||||||
307266763229071, 270719901259624, 186135881961708 @ 150, 130, 226
|
|
||||||
230319046492045, 395641124538336, 193363618743976 @ 57, -178, 144
|
|
||||||
392920766921985, 250496505188886, 306460703608653 @ -215, 32, -20
|
|
||||||
175231757780249, 44786823183916, 276624943135376 @ 63, 292, 24
|
|
||||||
313832948811675, 318445186003239, 306518285955873 @ 103, -21, -128
|
|
||||||
306551125497277, 524521381609762, 241622859608944 @ -79, -365, 68
|
|
||||||
400554436289624, 347460919638512, 297202409231189 @ 104, -114, -394
|
|
||||||
389736340819305, 335315093086228, 265059063401646 @ -48, -59, -41
|
|
||||||
59503995507231, 201984360420538, 424714963719588 @ 103, 48, -115
|
|
||||||
297143002633785, 96825557449276, 268699929004798 @ -62, 277, 27
|
|
||||||
390931858919397, 287914464138976, 302923821502446 @ -7, 167, -238
|
|
||||||
214729565570253, 278072872648670, 319237187952896 @ 25, -7, -36
|
|
||||||
96351544542113, 114755362054564, 394569159543638 @ 134, 181, -115
|
|
||||||
253200235356037, 258399369622746, 348809514314886 @ 101, 75, -149
|
|
||||||
382994713688163, 275642293727644, 356448448140994 @ -158, 40, -163
|
|
||||||
148649354883135, 340481142733222, 248790450117468 @ 142, -91, 58
|
|
||||||
134854692785701, 187209426614464, 175332404267278 @ 113, 106, 155
|
|
||||||
382031589203352, 338688148083646, 244506915572916 @ -60, -76, 45
|
|
||||||
369770189029605, 317508155457520, 250790362193010 @ 53, 18, 10
|
|
||||||
372683763999567, 414017337323254, 290899929550854 @ 6, -355, -133
|
|
||||||
147854567396103, 296200494966013, 360438786344609 @ 19, -47, -52
|
|
||||||
176792353279606, 312467680727934, 476850067726169 @ -12, -64, -172
|
|
||||||
302158177857665, 261529363847256, 256986683221090 @ -45, 42, 41
|
|
||||||
249078363310055, 282217233889320, 271610559471576 @ -52, -22, 34
|
|
||||||
221596566426841, 219861193819496, 360675578753842 @ -58, 32, -52
|
|
||||||
179819260650432, 199340653470439, 329496686830650 @ -34, 43, -13
|
|
||||||
276958462187159, 486380812406192, 159075856045308 @ -108, -250, 160
|
|
||||||
144557079593697, 131195974673911, 166883422178271 @ 9, 115, 146
|
|
||||||
490712615276709, 481688438412223, 460171428210714 @ -363, -337, -317
|
|
||||||
284673415638495, 320722646046907, 349991504659375 @ -113, -71, -48
|
|
||||||
184676509506952, 270068378274990, 290179021025201 @ -34, -24, 24
|
|
||||||
345990299479461, 297990031232524, 222968799598746 @ -107, -14, 99
|
|
||||||
233819171964981, 152061935722588, 108309431253774 @ -47, 123, 223
|
|
||||||
285477411975405, 291008044172421, 261721579922515 @ -35, -13, 36
|
|
||||||
407602868256117, 224700153604072, 183502997645982 @ -119, 368, 275
|
|
||||||
291327574782249, 286013931920310, 431294230944710 @ -137, -39, -117
|
|
||||||
443300983193571, 324683157114472, 251351540903257 @ -185, 118, -100
|
|
||||||
189572883657070, 462200497610916, 280153455698611 @ 18, -238, 24
|
|
||||||
308690692200416, 333877160265007, 236361595096541 @ 44, -71, 74
|
|
||||||
418654017001235, 348182837861720, 229046306673408 @ 50, -126, 130
|
|
||||||
378681238387569, 296901565820215, 156807910380587 @ -23, 79, 362
|
|
||||||
409371660135117, 326653269520726, 231465493326930 @ 121, 77, 105
|
|
||||||
426752119836365, 343370672093228, 244558686803006 @ -33, -79, -21
|
|
||||||
375852403443021, 293233964850016, 265899535913214 @ 92, 162, -79
|
|
||||||
326707607783589, 316318773568392, 309836065113046 @ 13, -27, -106
|
|
||||||
142911217221157, 261672665797202, 40658695646315 @ 21, -12, 278
|
|
||||||
244255603614037, 327276038377380, 279588160520382 @ 201, -55, -29
|
|
||||||
365680112763191, 94848689754348, 298094328264472 @ 24, 816, -154
|
|
||||||
330900038715639, 333095401980622, 263888598778833 @ -37, -72, 16
|
|
||||||
233128904088757, 257737506484816, 140807291739982 @ -34, 7, 191
|
|
||||||
296148164930181, 562101587574141, 250704068764416 @ -11, -493, 49
|
|
||||||
194944987544711, 293883929666758, 290731532680414 @ -42, -47, 23
|
|
||||||
322305098222037, 370061146918651, 477144215849956 @ -59, -143, -363
|
|
||||||
182728803240756, 281103277585801, 285622771243386 @ 18, -23, 19
|
|
||||||
383519700815905, 345082260451353, 403471475241446 @ -15, -97, -601
|
|
||||||
321303031096657, 382801663317526, 207761312476516 @ -33, -173, 132
|
|
||||||
82652246408061, 397368423356176, 12561618050022 @ 58, -148, 292
|
|
||||||
386132571381159, 290050051464719, 201828131188626 @ 79, 209, 259
|
|
||||||
179334089326071, 197614868629114, 332406359271651 @ -5, 60, -26
|
|
||||||
262093968892863, 107075329722362, 414807233851420 @ 34, 315, -234
|
|
||||||
229016437887321, 253800281514190, 442412418387360 @ -21, 15, -178
|
|
||||||
435464268415533, 304740242014684, 308396918820801 @ -83, 370, -776
|
|
||||||
434507208806365, 509232372383340, 444474239318010 @ -265, -381, -284
|
|
||||||
268752689610051, 291591481519324, 295468449312780 @ 122, 24, -60
|
|
||||||
388988596465428, 462487948867582, 429870272877633 @ -122, -416, -452
|
|
||||||
66784011152624, 361184408854064, 406644902129688 @ 92, -114, -95
|
|
||||||
417437370920109, 239344427883568, 200940613813092 @ 9, 790, 358
|
|
||||||
258122981051685, 455818141956768, 500343012517998 @ -47, -240, -263
|
|
||||||
428885056879621, 395958064188608, 336285404809233 @ -267, -162, -50
|
|
||||||
371904496065333, 505347295365256, 482265546690900 @ -83, -518, -572
|
|
||||||
268921212718412, 421249637667076, 105902059281656 @ -94, -182, 221
|
|
||||||
245666370615068, 296820628562753, 359611784427307 @ 32, -21, -120
|
|
||||||
266636285971089, 251550010433302, 261367259665596 @ -57, 23, 44
|
|
||||||
381991540551663, 283471564116926, 250211504748680 @ 22, 177, 8
|
|
||||||
107026635297788, 445380665254476, 456350458942680 @ 48, -198, -143
|
|
||||||
436947285540239, 350951442595312, 282325390191614 @ -78, -170, -537
|
|
||||||
145398660803727, 195609983658656, 242158434889096 @ 130, 110, 68
|
|
||||||
297475449394982, 131750381092515, 165719703479968 @ -84, 195, 173
|
|
||||||
382981082215082, 318082716962228, 217519872859947 @ -184, -54, 106
|
|
||||||
274508569926281, 337480597564942, 249069272308048 @ 113, -80, 45
|
|
||||||
409006873082037, 404306234256766, 306773089718196 @ 101, -620, -563
|
|
||||||
304326995325327, 252632813540085, 317502450159756 @ -29, 69, -71
|
|
||||||
335336102392062, 349032727458751, 147869871751056 @ -10, -107, 289
|
|
||||||
224490789327707, 138112263823786, 214964316118086 @ -13, 160, 103
|
|
||||||
257483144012212, 310616650691101, 220817557849225 @ 126, -23, 108
|
|
||||||
378616249658565, 487631090875856, 211845741661518 @ -137, -403, 127
|
|
||||||
256962996060820, 363038059754788, 382290100571323 @ 102, -134, -222
|
|
||||||
376113767407764, 419697564588036, 503311772819474 @ -68, -318, -717
|
|
||||||
411690063697784, 334901544443134, 250358939380980 @ -30, -32, -23
|
|
||||||
378730592174173, 292937924939892, 216595109883586 @ -21, 95, 144
|
|
||||||
386233907852537, 102017803023726, 148605073075956 @ -49, 797, 394
|
|
||||||
401023678402335, 326392143373252, 250508593182692 @ -80, -20, 12
|
|
||||||
187386788876757, 222440010076216, 5544716539566 @ 107, 89, 427
|
|
||||||
211506671096437, 295843684641176, 394227297865006 @ 59, -25, -157
|
|
||||||
170237159382989, 228511580730636, 335783635953320 @ 17, 32, -34
|
|
||||||
293589456751485, 294178241627518, 249641359155174 @ -7, -5, 51
|
|
||||||
439854842455119, 383935112515580, 293031876578902 @ -218, -316, -253
|
|
||||||
295518506383932, 200374788948199, 229951840543641 @ -114, 71, 84
|
|
||||||
394189872421409, 331448531001974, 256407864771135 @ -31, -36, -20
|
|
||||||
311925984995885, 332357949681136, 293917117060350 @ 30, -68, -59
|
|
||||||
389447608973881, 380513707763144, 244720406589022 @ -126, -192, 51
|
|
||||||
366016540138437, 277293281705376, 413687743953006 @ 130, 233, -794
|
|
||||||
298178291530224, 268217681216719, 304180593974067 @ -38, 31, -38
|
|
||||||
308018243676123, 296892693397840, 274894177156788 @ -130, -42, 32
|
|
||||||
60232254901961, 170686288518732, 262671045190162 @ 89, 74, 51
|
|
||||||
124745624448567, 151652758178730, 163358199121217 @ 31, 96, 150
|
|
||||||
321860786503481, 302448169248892, 261445808573098 @ -12, -5, 20
|
|
||||||
205692521446297, 89407037159596, 410049214010034 @ 36, 247, -158
|
|
||||||
239982788772333, 137286217774368, 174295345603502 @ -56, 138, 147
|
|
||||||
86731844681439, 259688488792764, 210340217835198 @ 70, -12, 103
|
|
||||||
170808423768189, 228588666791260, 293948466808818 @ 19, 33, 12
|
|
||||||
441057939686395, 343398690648711, 549228030221401 @ -265, -93, -736
|
|
||||||
302443946246812, 240143840858176, 379420862083931 @ -22, 94, -186
|
|
||||||
345088720716403, 315552253051151, 268545755397918 @ 159, 27, -65
|
|
||||||
423724795313077, 308659354107536, 180782338151766 @ -63, 186, 493
|
|
||||||
406798864217260, 293663253737166, 320278735045387 @ -88, 132, -304
|
|
||||||
195154781190237, 364862205409626, 254799516896806 @ -47, -117, 59
|
|
||||||
178932977335797, 251708835992206, 247843728908376 @ 45, 19, 62
|
|
||||||
253349271834117, 283691186580304, 303498852558606 @ -9, -9, -21
|
|
||||||
376761673051257, 285602705599686, 270257629743006 @ -41, 101, -41
|
|
||||||
300882491178039, 290243550583162, 189772203039720 @ -68, -15, 146
|
|
||||||
235369194657157, 421562658281976, 408227743490686 @ -55, -183, -115
|
|
||||||
188646633711105, 318918710332479, 369157982422215 @ 73, -61, -110
|
|
||||||
395512774201357, 315616825750976, 285497663723286 @ 96, 102, -266
|
|
||||||
421677117457729, 302462002478370, 260176983480688 @ -57, 221, -114
|
|
||||||
177175197731565, 341281080915196, 331441656855726 @ 43, -93, -41
|
|
||||||
325478665927397, 441871023252256, 224988749860460 @ 21, -338, 102
|
|
||||||
402136003642932, 333799366036756, 296817265196841 @ 8, -30, -290
|
|
||||||
182104997730129, 336028786762480, 74550271859558 @ 52, -86, 285
|
|
||||||
292043981673693, 259010054670568, 310880696340486 @ -98, 9, -16
|
|
||||||
327463887597202, 275386444030262, 281725872502210 @ 96, 120, -69
|
|
||||||
180350572694521, 204046517624548, 270869833505754 @ 15, 64, 37
|
|
||||||
261796476524925, 143723242270984, 124690998413814 @ -90, 121, 198
|
|
||||||
382022380467301, 363084132643328, 342504705272910 @ -51, -159, -293
|
|
||||||
359686755049611, 309851948068594, 254216163279732 @ 18, 21, 12
|
|
||||||
432383902550757, 325288945907500, 237103658765274 @ -139, 49, 58
|
|
||||||
199141995287962, 12205123960005, 135322914113123 @ 276, 653, 302
|
|
||||||
388209037680334, 326840502219633, 280212599819923 @ 90, 11, -192
|
|
||||||
398309490013959, 467459019065502, 435027019897864 @ -245, -216, -115
|
|
||||||
438077885264229, 338437435266016, 251421696960654 @ -147, -33, -83
|
|
||||||
142623030672997, 313922309635776, 172051026248046 @ 197, -48, 178
|
|
||||||
211793103082053, 258637524078497, 413519499042315 @ -11, 5, -134
|
|
||||||
316227539793914, 330807868031342, 320059762270916 @ -90, -76, -51
|
|
||||||
363745515105897, 308033947226491, 241876133298636 @ 9, 29, 53
|
|
||||||
229073101043463, 182441744874760, 375616182031518 @ -6, 114, -105
|
|
||||||
311663766702322, 293169473612442, 266993157354132 @ -64, -12, 25
|
|
||||||
165743821901955, 245775966807730, 293803407552466 @ 40, 19, 9
|
|
||||||
349142785799508, 280261145006550, 287389255673128 @ 124, 164, -135
|
|
||||||
299220074031339, 172470550513459, 207086145840829 @ -65, 163, 120
|
|
||||||
51599932704531, 110067755093612, 120750763264579 @ 187, 186, 216
|
|
||||||
362339688007455, 128526862135900, 213561367782111 @ 123, 898, 174
|
|
||||||
318235966547318, 236743583502987, 172190463362498 @ -150, 21, 147
|
|
||||||
243218064862137, 146112647037076, 312898709705706 @ -12, 173, -28
|
|
||||||
248532762868587, 127913038997386, 306713186523936 @ -89, 124, 5
|
|
||||||
356833591049452, 288318963368346, 175747488009196 @ -36, 56, 237
|
|
||||||
429258217460035, 281264286545936, 199918966637106 @ -81, 462, 379
|
|
||||||
288595615758281, 286112367984743, 301320148789454 @ 17, 15, -49
|
|
||||||
434137829300957, 385164566787576, 251517643175406 @ -90, -513, -101
|
|
||||||
226684015769909, 393228920796224, 237234101626834 @ 5, -162, 75
|
|
||||||
277608974085399, 484613028229744, 346163443971816 @ -86, -266, -56
|
|
||||||
439564663355742, 339477585210058, 360927913554417 @ -264, -84, -224
|
|
||||||
243540738730971, 359735080690960, 250444934709888 @ -65, -114, 61
|
|
||||||
414936626664123, 309300663907822, 216629185840824 @ -56, 125, 188
|
|
||||||
397872703252389, 212898395772056, 240610671804790 @ -131, 297, 60
|
|
||||||
123154693229737, 203455201989076, 290045021180228 @ 51, 52, 20
|
|
||||||
268437039198703, 312957758717668, 372983507517126 @ -58, -56, -101
|
|
||||||
290041101495914, 452525408726809, 261168521158394 @ 18, -305, 27
|
|
||||||
94022340218020, 214444823962799, 233285115180485 @ 78, 39, 80
|
|
||||||
187758784146701, 308231925236552, 42842321977264 @ 17, -54, 306
|
|
||||||
298993330355122, 276052686620461, 298685552862006 @ -10, 31, -41
|
|
||||||
332169842700025, 298970888104540, 302981537331018 @ -70, -11, -50
|
|
||||||
194328822595255, 76283873425353, 136668594275728 @ 239, 459, 281
|
|
||||||
120250832193905, 241032280181964, 229456138785466 @ 50, 11, 84
|
|
||||||
151422919814977, 301022504515816, 378981998111542 @ 111, -38, -117
|
|
||||||
96990387183037, 372867516983776, 14714289836806 @ 168, -134, 366
|
|
||||||
274942199061477, 481640626788556, 14527007819946 @ -11, -317, 432
|
|
||||||
224838145952262, 313821556817251, 263551720120806 @ 14, -55, 39
|
|
||||||
403167845873627, 244787413886076, 196299464895806 @ -30, 432, 279
|
|
||||||
423651938100112, 435225368641841, 336353363207841 @ -264, -201, -38
|
|
||||||
289166585859768, 74894176976193, 138452721266517 @ 130, 605, 328
|
|
||||||
431669875459573, 325370084156409, 252462190860946 @ -27, 143, -141
|
|
||||||
390448274978984, 338265610742420, 231189470189675 @ 98, -54, 98
|
|
||||||
237855310336712, 79275006966921, 512264534723696 @ -64, 191, -223
|
|
||||||
430777549022346, 301130642558299, 294289756858713 @ -166, 153, -262
|
|
||||||
222272412127973, 253877615323776, 267895382908238 @ 18, 27, 33
|
|
||||||
165432519670262, 95007658128776, 226194378092481 @ 24, 182, 88
|
|
||||||
281007118242885, 330242484331812, 296563154696266 @ -35, -75, -16
|
|
||||||
359290360054469, 394969290711776, 300557072988910 @ -60, -223, -88
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
19, 13, 30 @ -2, 1, -2
|
|
||||||
18, 19, 22 @ -1, -1, -2
|
|
||||||
20, 25, 34 @ -2, -2, -4
|
|
||||||
12, 31, 28 @ -1, -2, -1
|
|
||||||
20, 19, 15 @ 1, -5, -3
|
|
||||||
1211
2023/input/25/input
1211
2023/input/25/input
File diff suppressed because it is too large
Load Diff
@@ -1,13 +0,0 @@
|
|||||||
jqt: rhn xhk nvd
|
|
||||||
rsh: frs pzl lsr
|
|
||||||
xhk: hfx
|
|
||||||
cmg: qnr nvd lhk bvb
|
|
||||||
rhn: xhk bvb hfx
|
|
||||||
bvb: xhk hfx
|
|
||||||
pzl: lsr hfx nvd
|
|
||||||
qnr: nvd
|
|
||||||
ntq: jqt hfx bvb xhk
|
|
||||||
nvd: lhk
|
|
||||||
lsr: lhk
|
|
||||||
rzs: qnr cmg lsr rsh
|
|
||||||
frs: qnr lhk lsr
|
|
||||||
@@ -1,6 +1,9 @@
|
|||||||
#![feature(iter_map_windows)]
|
#![feature(iter_map_windows)]
|
||||||
#![feature(test)]
|
#![feature(test)]
|
||||||
use std::{cmp::max, collections::VecDeque};
|
use std::{
|
||||||
|
cmp::max,
|
||||||
|
collections::VecDeque,
|
||||||
|
};
|
||||||
|
|
||||||
use anyhow::Result;
|
use anyhow::Result;
|
||||||
use aoc::Solver;
|
use aoc::Solver;
|
||||||
|
|||||||
@@ -1,10 +1,6 @@
|
|||||||
#![feature(test)]
|
#![feature(test)]
|
||||||
|
|
||||||
use std::{
|
use std::{fmt::Display, collections::{hash_map::DefaultHasher, HashMap}, hash::{Hash, Hasher}};
|
||||||
collections::{hash_map::DefaultHasher, HashMap},
|
|
||||||
fmt::Display,
|
|
||||||
hash::{Hash, Hasher},
|
|
||||||
};
|
|
||||||
|
|
||||||
use anyhow::Result;
|
use anyhow::Result;
|
||||||
use aoc::Solver;
|
use aoc::Solver;
|
||||||
|
|||||||
@@ -35,11 +35,6 @@ mod tests {
|
|||||||
Day::test(Day::part2, "test-2", 71)
|
Day::test(Day::part2, "test-2", 71)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn part2_solution() -> Result<()> {
|
|
||||||
Day::test(Day::part2, "input", 1382)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Benchmarks
|
// Benchmarks
|
||||||
extern crate test;
|
extern crate test;
|
||||||
#[bench]
|
#[bench]
|
||||||
|
|||||||
@@ -1,151 +0,0 @@
|
|||||||
#![feature(test)]
|
|
||||||
use std::{
|
|
||||||
collections::{HashSet, VecDeque},
|
|
||||||
fmt::Pointer,
|
|
||||||
};
|
|
||||||
|
|
||||||
use anyhow::Result;
|
|
||||||
use aoc::Solver;
|
|
||||||
|
|
||||||
// -- Runners --
|
|
||||||
fn main() -> Result<()> {
|
|
||||||
Day::solve()
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(test)]
|
|
||||||
mod tests {
|
|
||||||
use super::*;
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn part1_test1() -> Result<()> {
|
|
||||||
Day::test(Day::part1, "test-1", 62)
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn part1_solution() -> Result<()> {
|
|
||||||
Day::test(Day::part1, "input", 95356)
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn part2_test1() -> Result<()> {
|
|
||||||
Day::test(Day::part2, "test-1", 952408144115)
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn part2_solution() -> Result<()> {
|
|
||||||
Day::test(Day::part2, "input", 92291468914147)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Benchmarks
|
|
||||||
extern crate test;
|
|
||||||
#[bench]
|
|
||||||
#[ignore]
|
|
||||||
fn part1_bench(b: &mut test::Bencher) {
|
|
||||||
Day::benchmark(Day::part1, b)
|
|
||||||
}
|
|
||||||
#[bench]
|
|
||||||
#[ignore]
|
|
||||||
fn part2_bench(b: &mut test::Bencher) {
|
|
||||||
Day::benchmark(Day::part2, b)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// -- Solution --
|
|
||||||
pub struct Day;
|
|
||||||
impl aoc::Solver for Day {
|
|
||||||
type Output1 = usize;
|
|
||||||
type Output2 = usize;
|
|
||||||
|
|
||||||
fn day() -> u8 {
|
|
||||||
18
|
|
||||||
}
|
|
||||||
|
|
||||||
fn part1(input: &str) -> Self::Output1 {
|
|
||||||
let instructions: Vec<_> = input
|
|
||||||
.lines()
|
|
||||||
.map(|line| {
|
|
||||||
let (direction, rest) = line.split_once(' ').unwrap();
|
|
||||||
let direction = direction.chars().next().unwrap();
|
|
||||||
let (distance, _) = rest.split_once(" (#").unwrap();
|
|
||||||
let distance: usize = distance.parse().unwrap();
|
|
||||||
|
|
||||||
(direction, distance)
|
|
||||||
})
|
|
||||||
.collect();
|
|
||||||
|
|
||||||
let mut location = (0_isize, 0_isize);
|
|
||||||
let mut points = Vec::new();
|
|
||||||
let mut boundary = 0;
|
|
||||||
|
|
||||||
for (direction, distance) in &instructions {
|
|
||||||
for _ in 0..*distance {
|
|
||||||
match direction {
|
|
||||||
'U' => location.1 -= 1,
|
|
||||||
'D' => location.1 += 1,
|
|
||||||
'L' => location.0 -= 1,
|
|
||||||
'R' => location.0 += 1,
|
|
||||||
_ => unreachable!("Invalid input"),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
boundary += distance;
|
|
||||||
points.push(location);
|
|
||||||
}
|
|
||||||
|
|
||||||
let mut area = 0;
|
|
||||||
for i in 0..points.len() as isize {
|
|
||||||
let n_min = (i - 1).rem_euclid(points.len() as isize);
|
|
||||||
let n_plus = (i + 1).rem_euclid(points.len() as isize);
|
|
||||||
|
|
||||||
area += points[i as usize].1 * (points[n_min as usize].0 - points[n_plus as usize].0);
|
|
||||||
}
|
|
||||||
let area = area as usize / 2;
|
|
||||||
let interior = area - boundary / 2 + 1;
|
|
||||||
|
|
||||||
interior + boundary
|
|
||||||
}
|
|
||||||
|
|
||||||
fn part2(input: &str) -> Self::Output2 {
|
|
||||||
let instructions: Vec<_> = input
|
|
||||||
.lines()
|
|
||||||
.map(|line| {
|
|
||||||
let (_, rest) = line.split_once(' ').unwrap();
|
|
||||||
let (_, rest) = rest.split_once(" (#").unwrap();
|
|
||||||
|
|
||||||
let (distance, direction) = rest.split_at(5);
|
|
||||||
let distance = usize::from_str_radix(distance, 16).unwrap();
|
|
||||||
let direction = direction.chars().next().unwrap();
|
|
||||||
|
|
||||||
(direction, distance)
|
|
||||||
})
|
|
||||||
.collect();
|
|
||||||
|
|
||||||
let mut location = (0_isize, 0_isize);
|
|
||||||
let mut points = Vec::new();
|
|
||||||
let mut boundary = 0;
|
|
||||||
|
|
||||||
for (direction, distance) in &instructions {
|
|
||||||
for _ in 0..*distance {
|
|
||||||
match direction {
|
|
||||||
'3' => location.1 -= 1,
|
|
||||||
'1' => location.1 += 1,
|
|
||||||
'2' => location.0 -= 1,
|
|
||||||
'0' => location.0 += 1,
|
|
||||||
_ => unreachable!("Invalid input"),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
boundary += distance;
|
|
||||||
points.push(location);
|
|
||||||
}
|
|
||||||
|
|
||||||
let mut area = 0;
|
|
||||||
for i in 0..points.len() as isize {
|
|
||||||
let n_min = (i - 1).rem_euclid(points.len() as isize);
|
|
||||||
let n_plus = (i + 1).rem_euclid(points.len() as isize);
|
|
||||||
|
|
||||||
area += points[i as usize].1 * (points[n_min as usize].0 - points[n_plus as usize].0);
|
|
||||||
}
|
|
||||||
let area = area as usize / 2;
|
|
||||||
|
|
||||||
area + boundary / 2 + 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,368 +0,0 @@
|
|||||||
#![feature(test)]
|
|
||||||
use std::collections::{HashMap, VecDeque};
|
|
||||||
|
|
||||||
use anyhow::Result;
|
|
||||||
use aoc::Solver;
|
|
||||||
|
|
||||||
// -- Runners --
|
|
||||||
fn main() -> Result<()> {
|
|
||||||
Day::solve()
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(test)]
|
|
||||||
mod tests {
|
|
||||||
use super::*;
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn part1_test1() -> Result<()> {
|
|
||||||
Day::test(Day::part1, "test-1", 19114)
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn part1_solution() -> Result<()> {
|
|
||||||
Day::test(Day::part1, "input", 480738)
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn part2_test1() -> Result<()> {
|
|
||||||
Day::test(Day::part2, "test-1", 167409079868000)
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn part2_solution() -> Result<()> {
|
|
||||||
Day::test(Day::part2, "input", 131550418841958)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Benchmarks
|
|
||||||
extern crate test;
|
|
||||||
#[bench]
|
|
||||||
#[ignore]
|
|
||||||
fn part1_bench(b: &mut test::Bencher) {
|
|
||||||
Day::benchmark(Day::part1, b)
|
|
||||||
}
|
|
||||||
#[bench]
|
|
||||||
#[ignore]
|
|
||||||
fn part2_bench(b: &mut test::Bencher) {
|
|
||||||
Day::benchmark(Day::part2, b)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Clone, Copy)]
|
|
||||||
enum Next<'a> {
|
|
||||||
Step(&'a str),
|
|
||||||
Accept,
|
|
||||||
Reject,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Clone, Copy)]
|
|
||||||
struct Part {
|
|
||||||
x: usize,
|
|
||||||
m: usize,
|
|
||||||
a: usize,
|
|
||||||
s: usize,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Part {
|
|
||||||
fn sum(&self) -> usize {
|
|
||||||
self.x + self.m + self.a + self.s
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Clone, Copy)]
|
|
||||||
struct Part2 {
|
|
||||||
x: (usize, usize),
|
|
||||||
m: (usize, usize),
|
|
||||||
a: (usize, usize),
|
|
||||||
s: (usize, usize),
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Part2 {
|
|
||||||
fn split(&self, category: Category, value: usize) -> (Option<Part2>, Option<Part2>) {
|
|
||||||
let range = match category {
|
|
||||||
Category::Cool => self.x,
|
|
||||||
Category::Musical => self.m,
|
|
||||||
Category::Aerodynamic => self.a,
|
|
||||||
Category::Shiny => self.s,
|
|
||||||
};
|
|
||||||
|
|
||||||
let ranges = if range.0 > value {
|
|
||||||
(None, Some(range))
|
|
||||||
} else if range.1 < value {
|
|
||||||
(Some(range), None)
|
|
||||||
} else {
|
|
||||||
(Some((range.0, value - 1)), Some((value, range.1)))
|
|
||||||
};
|
|
||||||
|
|
||||||
(
|
|
||||||
self.replace(category, ranges.0),
|
|
||||||
self.replace(category, ranges.1),
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fn replace(&self, category: Category, range: Option<(usize, usize)>) -> Option<Part2> {
|
|
||||||
range.map(|range| match category {
|
|
||||||
Category::Cool => Part2 {
|
|
||||||
x: range,
|
|
||||||
m: self.m,
|
|
||||||
a: self.a,
|
|
||||||
s: self.s,
|
|
||||||
},
|
|
||||||
Category::Musical => Part2 {
|
|
||||||
x: self.x,
|
|
||||||
m: range,
|
|
||||||
a: self.a,
|
|
||||||
s: self.s,
|
|
||||||
},
|
|
||||||
Category::Aerodynamic => Part2 {
|
|
||||||
x: self.x,
|
|
||||||
m: self.m,
|
|
||||||
a: range,
|
|
||||||
s: self.s,
|
|
||||||
},
|
|
||||||
Category::Shiny => Part2 {
|
|
||||||
x: self.x,
|
|
||||||
m: self.m,
|
|
||||||
a: self.a,
|
|
||||||
s: range,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
fn combinations(&self) -> usize {
|
|
||||||
(self.x.1 - self.x.0 + 1)
|
|
||||||
* (self.m.1 - self.m.0 + 1)
|
|
||||||
* (self.a.1 - self.a.0 + 1)
|
|
||||||
* (self.s.1 - self.s.0 + 1)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Clone, Copy)]
|
|
||||||
enum Operator {
|
|
||||||
GreaterThan(Category, usize),
|
|
||||||
LessThan(Category, usize),
|
|
||||||
Otherwise,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Clone, Copy)]
|
|
||||||
enum Category {
|
|
||||||
Cool,
|
|
||||||
Musical,
|
|
||||||
Aerodynamic,
|
|
||||||
Shiny,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Clone, Copy)]
|
|
||||||
struct Step<'a> {
|
|
||||||
op: Operator,
|
|
||||||
next: Next<'a>,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<'a> Step<'a> {
|
|
||||||
fn process(&self, part: &Part) -> Option<Next<'a>> {
|
|
||||||
let ok = match self.op {
|
|
||||||
Operator::GreaterThan(Category::Cool, value) => part.x > value,
|
|
||||||
Operator::GreaterThan(Category::Musical, value) => part.m > value,
|
|
||||||
Operator::GreaterThan(Category::Aerodynamic, value) => part.a > value,
|
|
||||||
Operator::GreaterThan(Category::Shiny, value) => part.s > value,
|
|
||||||
Operator::LessThan(Category::Cool, value) => part.x < value,
|
|
||||||
Operator::LessThan(Category::Musical, value) => part.m < value,
|
|
||||||
Operator::LessThan(Category::Aerodynamic, value) => part.a < value,
|
|
||||||
Operator::LessThan(Category::Shiny, value) => part.s < value,
|
|
||||||
Operator::Otherwise => true,
|
|
||||||
};
|
|
||||||
|
|
||||||
if ok {
|
|
||||||
Some(self.next)
|
|
||||||
} else {
|
|
||||||
None
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn process_step(step: &str) -> Step {
|
|
||||||
if let Some((instruction, next)) = step.split_once(':') {
|
|
||||||
let next = match next {
|
|
||||||
"A" => Next::Accept,
|
|
||||||
"R" => Next::Reject,
|
|
||||||
n => Next::Step(n),
|
|
||||||
};
|
|
||||||
|
|
||||||
let (category, value) = instruction.split_once(['<', '>']).unwrap();
|
|
||||||
let category = match category {
|
|
||||||
"x" => Category::Cool,
|
|
||||||
"m" => Category::Musical,
|
|
||||||
"a" => Category::Aerodynamic,
|
|
||||||
"s" => Category::Shiny,
|
|
||||||
_ => unreachable!("Invalid input"),
|
|
||||||
};
|
|
||||||
let value = value.parse().unwrap();
|
|
||||||
|
|
||||||
let op = if instruction.contains('<') {
|
|
||||||
Operator::LessThan(category, value)
|
|
||||||
} else {
|
|
||||||
Operator::GreaterThan(category, value)
|
|
||||||
};
|
|
||||||
|
|
||||||
Step { op, next }
|
|
||||||
} else {
|
|
||||||
let next = match step {
|
|
||||||
"A" => Next::Accept,
|
|
||||||
"R" => Next::Reject,
|
|
||||||
n => Next::Step(n),
|
|
||||||
};
|
|
||||||
|
|
||||||
Step {
|
|
||||||
op: Operator::Otherwise,
|
|
||||||
next,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// -- Solution --
|
|
||||||
pub struct Day;
|
|
||||||
impl aoc::Solver for Day {
|
|
||||||
type Output1 = usize;
|
|
||||||
type Output2 = usize;
|
|
||||||
|
|
||||||
fn day() -> u8 {
|
|
||||||
19
|
|
||||||
}
|
|
||||||
|
|
||||||
fn part1(input: &str) -> Self::Output1 {
|
|
||||||
let (workflows, parts) = input.split_once("\n\n").unwrap();
|
|
||||||
|
|
||||||
let workflows = workflows
|
|
||||||
.lines()
|
|
||||||
.map(|workflow| {
|
|
||||||
let (name, mut rest) = workflow.split_once('{').unwrap();
|
|
||||||
|
|
||||||
let mut steps = Vec::new();
|
|
||||||
|
|
||||||
while let Some((step, remaining)) = rest.split_once(',') {
|
|
||||||
rest = remaining;
|
|
||||||
steps.push(process_step(step));
|
|
||||||
}
|
|
||||||
|
|
||||||
steps.push(process_step(rest.split_once('}').unwrap().0));
|
|
||||||
|
|
||||||
(name, steps)
|
|
||||||
})
|
|
||||||
.collect::<HashMap<_, _>>();
|
|
||||||
|
|
||||||
let parts = parts
|
|
||||||
.lines()
|
|
||||||
.map(|part| {
|
|
||||||
let part: Vec<usize> = part
|
|
||||||
.split_once('{')
|
|
||||||
.unwrap()
|
|
||||||
.1
|
|
||||||
.split_once('}')
|
|
||||||
.unwrap()
|
|
||||||
.0
|
|
||||||
.splitn(4, ',')
|
|
||||||
.map(|category| category.split_once('=').unwrap().1.parse().unwrap())
|
|
||||||
.collect();
|
|
||||||
|
|
||||||
if let [x, m, a, s] = part.as_slice() {
|
|
||||||
Part {
|
|
||||||
x: *x,
|
|
||||||
m: *m,
|
|
||||||
a: *a,
|
|
||||||
s: *s,
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
unreachable!("Invalid input");
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.collect::<Vec<_>>();
|
|
||||||
|
|
||||||
parts
|
|
||||||
.iter()
|
|
||||||
.map(|part| {
|
|
||||||
let mut workflow = workflows.get("in").unwrap();
|
|
||||||
|
|
||||||
while let Some(next) = workflow.iter().find_map(|step| step.process(part)) {
|
|
||||||
match next {
|
|
||||||
Next::Step(name) => workflow = workflows.get(name).unwrap(),
|
|
||||||
Next::Accept => return part.sum(),
|
|
||||||
Next::Reject => return 0,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
0
|
|
||||||
})
|
|
||||||
.sum()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn part2(input: &str) -> Self::Output2 {
|
|
||||||
let (workflows, _) = input.split_once("\n\n").unwrap();
|
|
||||||
|
|
||||||
let workflows = workflows
|
|
||||||
.lines()
|
|
||||||
.map(|workflow| {
|
|
||||||
let (name, mut rest) = workflow.split_once('{').unwrap();
|
|
||||||
|
|
||||||
let mut steps = Vec::new();
|
|
||||||
|
|
||||||
while let Some((step, remaining)) = rest.split_once(',') {
|
|
||||||
rest = remaining;
|
|
||||||
steps.push(process_step(step));
|
|
||||||
}
|
|
||||||
|
|
||||||
steps.push(process_step(rest.split_once('}').unwrap().0));
|
|
||||||
|
|
||||||
(name, steps)
|
|
||||||
})
|
|
||||||
.collect::<HashMap<_, _>>();
|
|
||||||
|
|
||||||
let part = Part2 {
|
|
||||||
x: (1, 4000),
|
|
||||||
m: (1, 4000),
|
|
||||||
a: (1, 4000),
|
|
||||||
s: (1, 4000),
|
|
||||||
};
|
|
||||||
|
|
||||||
let mut queue = VecDeque::new();
|
|
||||||
queue.push_back((part, "in"));
|
|
||||||
|
|
||||||
let mut combinations = 0;
|
|
||||||
while let Some((mut part, name)) = queue.pop_front() {
|
|
||||||
let workflow = workflows.get(name).unwrap();
|
|
||||||
|
|
||||||
for step in workflow {
|
|
||||||
let (ok, fail) = match step.op {
|
|
||||||
Operator::GreaterThan(category, value) => {
|
|
||||||
let (a, b) = part.split(category, value + 1);
|
|
||||||
|
|
||||||
(b, a)
|
|
||||||
}
|
|
||||||
Operator::LessThan(category, value) => {
|
|
||||||
let (a, b) = part.split(category, value);
|
|
||||||
|
|
||||||
(a, b)
|
|
||||||
}
|
|
||||||
Operator::Otherwise => (Some(part), None),
|
|
||||||
};
|
|
||||||
|
|
||||||
// The part that matches goes to the next workflow
|
|
||||||
if let Some(ok) = ok {
|
|
||||||
match step.next {
|
|
||||||
Next::Step(name) => queue.push_back((ok, name)),
|
|
||||||
Next::Accept => {
|
|
||||||
let a = ok.combinations();
|
|
||||||
combinations += a;
|
|
||||||
}
|
|
||||||
Next::Reject => {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// The part that failed goes to the next step
|
|
||||||
if let Some(fail) = fail {
|
|
||||||
part = fail;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
combinations
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,274 +0,0 @@
|
|||||||
#![feature(test)]
|
|
||||||
use std::collections::{HashMap, VecDeque};
|
|
||||||
|
|
||||||
use anyhow::Result;
|
|
||||||
use aoc::Solver;
|
|
||||||
|
|
||||||
// -- Runners --
|
|
||||||
fn main() -> Result<()> {
|
|
||||||
Day::solve()
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(test)]
|
|
||||||
mod tests {
|
|
||||||
use super::*;
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn part1_test1() -> Result<()> {
|
|
||||||
Day::test(Day::part1, "test-1", 32000000)
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn part1_test2() -> Result<()> {
|
|
||||||
Day::test(Day::part1, "test-2", 11687500)
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn part1_solution() -> Result<()> {
|
|
||||||
Day::test(Day::part1, "input", 666795063)
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn part2_solution() -> Result<()> {
|
|
||||||
Day::test(Day::part2, "input", 253302889093151)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Benchmarks
|
|
||||||
extern crate test;
|
|
||||||
#[bench]
|
|
||||||
#[ignore]
|
|
||||||
fn part1_bench(b: &mut test::Bencher) {
|
|
||||||
Day::benchmark(Day::part1, b)
|
|
||||||
}
|
|
||||||
#[bench]
|
|
||||||
#[ignore]
|
|
||||||
fn part2_bench(b: &mut test::Bencher) {
|
|
||||||
Day::benchmark(Day::part2, b)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
|
||||||
enum ModuleType<'a> {
|
|
||||||
Broadcaster,
|
|
||||||
FlipFlop(bool),
|
|
||||||
Conjunction(HashMap<&'a str, bool>),
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
|
||||||
struct Module<'a> {
|
|
||||||
module_type: ModuleType<'a>,
|
|
||||||
destinations: Vec<&'a str>,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<'a> Module<'a> {
|
|
||||||
fn process(&mut self, source: &'a str, high: bool) -> Option<bool> {
|
|
||||||
match &mut self.module_type {
|
|
||||||
ModuleType::Broadcaster => Some(high),
|
|
||||||
ModuleType::FlipFlop(current) => {
|
|
||||||
if high {
|
|
||||||
None
|
|
||||||
} else {
|
|
||||||
*current = !*current;
|
|
||||||
Some(*current)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ModuleType::Conjunction(inputs) => {
|
|
||||||
let input = inputs.get_mut(source).unwrap();
|
|
||||||
*input = high;
|
|
||||||
|
|
||||||
Some(!inputs.iter().all(|(_, prev)| *prev))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
|
||||||
struct Pulse<'a> {
|
|
||||||
source: &'a str,
|
|
||||||
destination: &'a str,
|
|
||||||
high: bool,
|
|
||||||
}
|
|
||||||
|
|
||||||
// Copied from day 8
|
|
||||||
fn gcd(a: usize, b: usize) -> usize {
|
|
||||||
if b == 0 {
|
|
||||||
return a;
|
|
||||||
}
|
|
||||||
|
|
||||||
gcd(b, a % b)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Copied from day 8
|
|
||||||
fn lcm(a: usize, b: usize) -> usize {
|
|
||||||
if a > b {
|
|
||||||
(a / gcd(a, b)) * b
|
|
||||||
} else {
|
|
||||||
(b / gcd(a, b)) * a
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// -- Solution --
|
|
||||||
pub struct Day;
|
|
||||||
impl aoc::Solver for Day {
|
|
||||||
type Output1 = usize;
|
|
||||||
type Output2 = usize;
|
|
||||||
|
|
||||||
fn day() -> u8 {
|
|
||||||
20
|
|
||||||
}
|
|
||||||
|
|
||||||
fn part1(input: &str) -> Self::Output1 {
|
|
||||||
let mut modules: HashMap<_, _> = input
|
|
||||||
.lines()
|
|
||||||
.map(|line| {
|
|
||||||
let (name, destinations) = line.split_once(" -> ").unwrap();
|
|
||||||
let destinations: Vec<_> = destinations.split(", ").collect();
|
|
||||||
|
|
||||||
let (name, module_type) = if name.starts_with('%') {
|
|
||||||
(name.split_at(1).1, ModuleType::FlipFlop(false))
|
|
||||||
} else if name.starts_with('&') {
|
|
||||||
(name.split_at(1).1, ModuleType::Conjunction(HashMap::new()))
|
|
||||||
} else if name == "broadcaster" {
|
|
||||||
(name, ModuleType::Broadcaster)
|
|
||||||
} else {
|
|
||||||
unreachable!("Invalid input");
|
|
||||||
};
|
|
||||||
|
|
||||||
(
|
|
||||||
name,
|
|
||||||
Module {
|
|
||||||
module_type,
|
|
||||||
destinations,
|
|
||||||
},
|
|
||||||
)
|
|
||||||
})
|
|
||||||
.collect();
|
|
||||||
|
|
||||||
// TODO: Because of the borrow check we have to create a clone of modules here
|
|
||||||
for (name, module) in modules.clone() {
|
|
||||||
for destination in &module.destinations {
|
|
||||||
if let Some(module) = modules.get_mut(destination) {
|
|
||||||
if let ModuleType::Conjunction(inputs) = &mut module.module_type {
|
|
||||||
inputs.insert(name, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let mut count = (0, 0);
|
|
||||||
let mut pulses = VecDeque::new();
|
|
||||||
for _ in 0..1000 {
|
|
||||||
pulses.push_back(Pulse {
|
|
||||||
source: "button",
|
|
||||||
destination: "broadcaster",
|
|
||||||
high: false,
|
|
||||||
});
|
|
||||||
|
|
||||||
while let Some(pulse) = pulses.pop_front() {
|
|
||||||
if pulse.high {
|
|
||||||
count.1 += 1;
|
|
||||||
} else {
|
|
||||||
count.0 += 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if let Some(module) = modules.get_mut(pulse.destination) {
|
|
||||||
if let Some(high) = module.process(pulse.source, pulse.high) {
|
|
||||||
for destination in &module.destinations {
|
|
||||||
pulses.push_back(Pulse {
|
|
||||||
source: pulse.destination,
|
|
||||||
destination,
|
|
||||||
high,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
count.0 * count.1
|
|
||||||
}
|
|
||||||
|
|
||||||
fn part2(input: &str) -> Self::Output2 {
|
|
||||||
let mut modules: HashMap<_, _> = input
|
|
||||||
.lines()
|
|
||||||
.map(|line| {
|
|
||||||
let (name, destinations) = line.split_once(" -> ").unwrap();
|
|
||||||
let destinations: Vec<_> = destinations.split(", ").collect();
|
|
||||||
|
|
||||||
let (name, module_type) = if name.starts_with('%') {
|
|
||||||
(name.split_at(1).1, ModuleType::FlipFlop(false))
|
|
||||||
} else if name.starts_with('&') {
|
|
||||||
(name.split_at(1).1, ModuleType::Conjunction(HashMap::new()))
|
|
||||||
} else if name == "broadcaster" {
|
|
||||||
(name, ModuleType::Broadcaster)
|
|
||||||
} else {
|
|
||||||
unreachable!("Invalid input");
|
|
||||||
};
|
|
||||||
|
|
||||||
(
|
|
||||||
name,
|
|
||||||
Module {
|
|
||||||
module_type,
|
|
||||||
destinations,
|
|
||||||
},
|
|
||||||
)
|
|
||||||
})
|
|
||||||
.collect();
|
|
||||||
|
|
||||||
// TODO: Because of the borrow check we have to create a clone of modules here
|
|
||||||
for (name, module) in modules.clone() {
|
|
||||||
for destination in &module.destinations {
|
|
||||||
if let Some(module) = modules.get_mut(destination) {
|
|
||||||
if let ModuleType::Conjunction(inputs) = &mut module.module_type {
|
|
||||||
inputs.insert(name, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let r#final = modules
|
|
||||||
.iter()
|
|
||||||
.find(|(_, module)| module.destinations.contains(&"rx"))
|
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
let final_name = r#final.0.to_owned();
|
|
||||||
let final_module = r#final.1.clone();
|
|
||||||
let mut frequencies = HashMap::new();
|
|
||||||
|
|
||||||
println!("{final_name}: {final_module:?}");
|
|
||||||
|
|
||||||
let mut pulses = VecDeque::new();
|
|
||||||
for i in 0..10000 {
|
|
||||||
pulses.push_back(Pulse {
|
|
||||||
source: "button",
|
|
||||||
destination: "broadcaster",
|
|
||||||
high: false,
|
|
||||||
});
|
|
||||||
|
|
||||||
while let Some(pulse) = pulses.pop_front() {
|
|
||||||
if let Some(module) = modules.get_mut(pulse.destination) {
|
|
||||||
if pulse.destination == final_name && pulse.high {
|
|
||||||
frequencies.insert(pulse.source, i + 1);
|
|
||||||
if let ModuleType::Conjunction(ref inputs) = final_module.module_type {
|
|
||||||
if frequencies.len() == inputs.len() {
|
|
||||||
return frequencies.values().copied().fold(1, lcm);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if let Some(high) = module.process(pulse.source, pulse.high) {
|
|
||||||
for destination in &module.destinations {
|
|
||||||
pulses.push_back(Pulse {
|
|
||||||
source: pulse.destination,
|
|
||||||
destination,
|
|
||||||
high,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
unreachable!("No solution found");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,174 +0,0 @@
|
|||||||
#![feature(test)]
|
|
||||||
use std::collections::{HashMap, HashSet, VecDeque};
|
|
||||||
|
|
||||||
use anyhow::Result;
|
|
||||||
use aoc::Solver;
|
|
||||||
|
|
||||||
// -- Runners --
|
|
||||||
fn main() -> Result<()> {
|
|
||||||
Day::solve()
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(test)]
|
|
||||||
mod tests {
|
|
||||||
use super::*;
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn part1_test1() -> Result<()> {
|
|
||||||
// The example only provides an answer for 6 steps. (16)
|
|
||||||
// This should be the correct answer for running the example with 64 steps
|
|
||||||
Day::test(Day::part1, "test-1", 42)
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn part1_solution() -> Result<()> {
|
|
||||||
Day::test(Day::part1, "input", 3642)
|
|
||||||
}
|
|
||||||
|
|
||||||
// There is no test case for part 2
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn part2_solution() -> Result<()> {
|
|
||||||
Day::test(Day::part2, "input", 608603023105276)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Benchmarks
|
|
||||||
extern crate test;
|
|
||||||
#[bench]
|
|
||||||
#[ignore]
|
|
||||||
fn part1_bench(b: &mut test::Bencher) {
|
|
||||||
Day::benchmark(Day::part1, b)
|
|
||||||
}
|
|
||||||
#[bench]
|
|
||||||
#[ignore]
|
|
||||||
fn part2_bench(b: &mut test::Bencher) {
|
|
||||||
Day::benchmark(Day::part2, b)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// -- Solution --
|
|
||||||
pub struct Day;
|
|
||||||
impl aoc::Solver for Day {
|
|
||||||
type Output1 = usize;
|
|
||||||
type Output2 = isize;
|
|
||||||
|
|
||||||
fn day() -> u8 {
|
|
||||||
21
|
|
||||||
}
|
|
||||||
|
|
||||||
fn part1(input: &str) -> Self::Output1 {
|
|
||||||
let mut queue = Vec::new();
|
|
||||||
let map: HashMap<(isize, isize), char> = input
|
|
||||||
.lines()
|
|
||||||
.enumerate()
|
|
||||||
.flat_map(|(y, line)| {
|
|
||||||
line.chars()
|
|
||||||
.enumerate()
|
|
||||||
.map(|(x, mut c)| {
|
|
||||||
if c == 'S' {
|
|
||||||
queue.push((x as isize, y as isize));
|
|
||||||
c = '.';
|
|
||||||
}
|
|
||||||
|
|
||||||
((x as isize, y as isize), c)
|
|
||||||
})
|
|
||||||
.collect::<Vec<_>>()
|
|
||||||
})
|
|
||||||
.collect();
|
|
||||||
|
|
||||||
let mut set = HashSet::new();
|
|
||||||
let directions = [(-1, 0), (1, 0), (0, -1), (0, 1)];
|
|
||||||
for _ in 0..64 {
|
|
||||||
while let Some(step) = queue.pop() {
|
|
||||||
for direction in directions {
|
|
||||||
let next = (step.0 + direction.0, step.1 + direction.1);
|
|
||||||
|
|
||||||
// If the tile is free add it to the queue
|
|
||||||
if let Some(&tile) = map.get(&next) {
|
|
||||||
if tile == '.' {
|
|
||||||
set.insert(next);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
queue = set.into_iter().collect();
|
|
||||||
set = HashSet::new();
|
|
||||||
}
|
|
||||||
|
|
||||||
queue.len()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn part2(input: &str) -> Self::Output2 {
|
|
||||||
// All maps are square
|
|
||||||
let size = input.lines().count();
|
|
||||||
// Map is square: 131 x 131 => size = 131
|
|
||||||
// !!! Others have observed 26501365 = 202300 * size + size/2 !!!
|
|
||||||
// Is there a pattern for i * size + size/2?
|
|
||||||
// i = 0 => 3776
|
|
||||||
// i = 1 => 33652
|
|
||||||
// i = 2 => 93270
|
|
||||||
// Is there a function of i that can fit to this?
|
|
||||||
// Yes => Quadratic equation will fit this
|
|
||||||
// 3642 - 14737 x + 14871 x^2
|
|
||||||
// i = 202300 => 608603023105276
|
|
||||||
// Could not have done this without a hint from Reddit...
|
|
||||||
let i: isize = 202300;
|
|
||||||
|
|
||||||
let mut queue = Vec::new();
|
|
||||||
let map: HashMap<(isize, isize), char> = input
|
|
||||||
.lines()
|
|
||||||
.enumerate()
|
|
||||||
.flat_map(|(y, line)| {
|
|
||||||
line.chars()
|
|
||||||
.enumerate()
|
|
||||||
.map(|(x, mut c)| {
|
|
||||||
if c == 'S' {
|
|
||||||
queue.push((x as isize, y as isize));
|
|
||||||
c = '.';
|
|
||||||
}
|
|
||||||
|
|
||||||
((x as isize, y as isize), c)
|
|
||||||
})
|
|
||||||
.collect::<Vec<_>>()
|
|
||||||
})
|
|
||||||
.collect();
|
|
||||||
|
|
||||||
let mut nums = Vec::new();
|
|
||||||
let mut set = HashSet::new();
|
|
||||||
let directions = [(-1, 0), (1, 0), (0, -1), (0, 1)];
|
|
||||||
for n in 0..(2 * size + size / 2) {
|
|
||||||
while let Some(step) = queue.pop() {
|
|
||||||
for direction in directions {
|
|
||||||
let next = (step.0 + direction.0, step.1 + direction.1);
|
|
||||||
|
|
||||||
let next_wrapped = (
|
|
||||||
next.0.rem_euclid(size as isize),
|
|
||||||
next.1.rem_euclid(size as isize),
|
|
||||||
);
|
|
||||||
|
|
||||||
// If the tile is free add it to the queue
|
|
||||||
if let Some(&tile) = map.get(&next_wrapped) {
|
|
||||||
if tile == '.' {
|
|
||||||
set.insert(next);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
queue = set.into_iter().collect();
|
|
||||||
set = HashSet::new();
|
|
||||||
|
|
||||||
if n + 1 == nums.len() * size + size / 2 {
|
|
||||||
nums.push(queue.len() as isize);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Using linear algebra these solutions can be found
|
|
||||||
let a = (nums[0] - 2 * nums[1] + nums[2]) / 2;
|
|
||||||
let b = (4 * nums[1] - 3 * nums[0] - nums[2]) / 2;
|
|
||||||
let c = nums[0];
|
|
||||||
|
|
||||||
a * i.pow(2) + b * i + c
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,229 +0,0 @@
|
|||||||
#![feature(test)]
|
|
||||||
use std::collections::{HashMap, HashSet};
|
|
||||||
|
|
||||||
use anyhow::Result;
|
|
||||||
use aoc::Solver;
|
|
||||||
|
|
||||||
// -- Runners --
|
|
||||||
fn main() -> Result<()> {
|
|
||||||
Day::solve()
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(test)]
|
|
||||||
mod tests {
|
|
||||||
use super::*;
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn part1_test1() -> Result<()> {
|
|
||||||
Day::test(Day::part1, "test-1", 5)
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn part1_solution() -> Result<()> {
|
|
||||||
Day::test(Day::part1, "input", 488)
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn part2_test1() -> Result<()> {
|
|
||||||
Day::test(Day::part2, "test-1", 7)
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn part2_solution() -> Result<()> {
|
|
||||||
Day::test(Day::part2, "input", 79465)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Benchmarks
|
|
||||||
extern crate test;
|
|
||||||
#[bench]
|
|
||||||
#[ignore]
|
|
||||||
fn part1_bench(b: &mut test::Bencher) {
|
|
||||||
Day::benchmark(Day::part1, b)
|
|
||||||
}
|
|
||||||
#[bench]
|
|
||||||
#[ignore]
|
|
||||||
fn part2_bench(b: &mut test::Bencher) {
|
|
||||||
Day::benchmark(Day::part2, b)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Hash, Clone, Copy, PartialEq, Eq)]
|
|
||||||
struct Brick {
|
|
||||||
start: (isize, isize, isize),
|
|
||||||
end: (isize, isize, isize),
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Brick {
|
|
||||||
fn fall(
|
|
||||||
&self,
|
|
||||||
index: usize,
|
|
||||||
grid: &mut HashMap<(isize, isize, isize), usize>,
|
|
||||||
) -> HashSet<usize> {
|
|
||||||
let mut down = 0;
|
|
||||||
// Keep track of all the unique bricks supporting the current brick
|
|
||||||
let mut supports = HashSet::new();
|
|
||||||
for o in 1..self.start.2 {
|
|
||||||
for x in self.start.0..=self.end.0 {
|
|
||||||
for y in self.start.1..=self.end.1 {
|
|
||||||
for z in self.start.2..=self.end.2 {
|
|
||||||
if let Some(&support) = grid.get(&(x, y, z - o)) {
|
|
||||||
supports.insert(support);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// We have landed on a support
|
|
||||||
if !supports.is_empty() {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
down += 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Occupy the space in the grid
|
|
||||||
for x in self.start.0..=self.end.0 {
|
|
||||||
for y in self.start.1..=self.end.1 {
|
|
||||||
for z in self.start.2..=self.end.2 {
|
|
||||||
grid.insert((x, y, z - down), index);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Return all the unique supports
|
|
||||||
supports
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// -- Solution --
|
|
||||||
pub struct Day;
|
|
||||||
impl aoc::Solver for Day {
|
|
||||||
type Output1 = usize;
|
|
||||||
type Output2 = usize;
|
|
||||||
|
|
||||||
fn day() -> u8 {
|
|
||||||
22
|
|
||||||
}
|
|
||||||
|
|
||||||
fn part1(input: &str) -> Self::Output1 {
|
|
||||||
let mut bricks: Vec<_> = input
|
|
||||||
.lines()
|
|
||||||
.map(|line| {
|
|
||||||
let (start, end) = line.split_once('~').unwrap();
|
|
||||||
|
|
||||||
let start: Vec<_> = start
|
|
||||||
.splitn(3, ',')
|
|
||||||
.map(|num| num.parse::<isize>().unwrap())
|
|
||||||
.collect();
|
|
||||||
let start = (start[0], start[1], start[2]);
|
|
||||||
|
|
||||||
let end: Vec<_> = end
|
|
||||||
.splitn(3, ',')
|
|
||||||
.map(|num| num.parse::<isize>().unwrap())
|
|
||||||
.collect();
|
|
||||||
let end = (end[0], end[1], end[2]);
|
|
||||||
|
|
||||||
Brick { start, end }
|
|
||||||
})
|
|
||||||
.collect();
|
|
||||||
|
|
||||||
// Sort the bricks from top to bottom
|
|
||||||
bricks.sort_by(|a, b| a.start.2.cmp(&b.start.2));
|
|
||||||
|
|
||||||
// Figure out which bricks are essential and can not be disintegrated
|
|
||||||
let mut grid = HashMap::new();
|
|
||||||
let essential_bricks: HashSet<_> = bricks
|
|
||||||
.iter()
|
|
||||||
.enumerate()
|
|
||||||
// Drop down each brick and get all the supporting bricks
|
|
||||||
.map(|(index, brick)| brick.fall(index, &mut grid))
|
|
||||||
// Only keep bricks that are supported by one other brick
|
|
||||||
// If that other brick is disintegrated this brick will fall
|
|
||||||
.filter(|supports| supports.len() == 1)
|
|
||||||
// Flatten out and collect to take out duplicate entries
|
|
||||||
.flatten()
|
|
||||||
.collect();
|
|
||||||
|
|
||||||
bricks.len() - essential_bricks.len()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn part2(input: &str) -> Self::Output2 {
|
|
||||||
let mut bricks: Vec<_> = input
|
|
||||||
.lines()
|
|
||||||
.map(|line| {
|
|
||||||
let (start, end) = line.split_once('~').unwrap();
|
|
||||||
|
|
||||||
let start: Vec<_> = start
|
|
||||||
.splitn(3, ',')
|
|
||||||
.map(|num| num.parse::<isize>().unwrap())
|
|
||||||
.collect();
|
|
||||||
let start = (start[0], start[1], start[2]);
|
|
||||||
|
|
||||||
let end: Vec<_> = end
|
|
||||||
.splitn(3, ',')
|
|
||||||
.map(|num| num.parse::<isize>().unwrap())
|
|
||||||
.collect();
|
|
||||||
let end = (end[0], end[1], end[2]);
|
|
||||||
|
|
||||||
Brick { start, end }
|
|
||||||
})
|
|
||||||
.collect();
|
|
||||||
|
|
||||||
// Sort the bricks from top to bottom
|
|
||||||
bricks.sort_by(|a, b| a.start.2.cmp(&b.start.2));
|
|
||||||
|
|
||||||
// Figure out which bricks are essential and can not be disintegrated
|
|
||||||
let mut grid = HashMap::new();
|
|
||||||
let supports: Vec<_> = bricks
|
|
||||||
.iter()
|
|
||||||
.enumerate()
|
|
||||||
// Drop down each brick and get all the supporting bricks
|
|
||||||
.map(|(index, brick)| brick.fall(index, &mut grid))
|
|
||||||
.collect();
|
|
||||||
|
|
||||||
let essential_bricks: HashSet<_> = supports
|
|
||||||
.iter()
|
|
||||||
.filter(|supports| supports.len() == 1)
|
|
||||||
// Flatten out and collect to take out duplicate entries
|
|
||||||
.flatten()
|
|
||||||
.collect();
|
|
||||||
|
|
||||||
let mut sum = 0;
|
|
||||||
for eliminate in essential_bricks {
|
|
||||||
let mut falling = HashSet::new();
|
|
||||||
falling.insert(*eliminate);
|
|
||||||
let mut previous = 0;
|
|
||||||
|
|
||||||
while previous != falling.len() {
|
|
||||||
previous = falling.len();
|
|
||||||
|
|
||||||
let new: HashSet<_> = supports
|
|
||||||
.iter()
|
|
||||||
.enumerate()
|
|
||||||
.filter(|(_, supports)| {
|
|
||||||
if supports.is_empty() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
for support in *supports {
|
|
||||||
if !falling.contains(support) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
true
|
|
||||||
})
|
|
||||||
.map(|(index, _)| index)
|
|
||||||
.collect();
|
|
||||||
|
|
||||||
falling.extend(new);
|
|
||||||
}
|
|
||||||
|
|
||||||
if !falling.is_empty() {
|
|
||||||
sum += falling.len() - 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sum
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,169 +0,0 @@
|
|||||||
#![feature(test)]
|
|
||||||
use std::collections::HashSet;
|
|
||||||
|
|
||||||
use anyhow::Result;
|
|
||||||
use aoc::Solver;
|
|
||||||
|
|
||||||
// -- Runners --
|
|
||||||
fn main() -> Result<()> {
|
|
||||||
Day::solve()
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(test)]
|
|
||||||
mod tests {
|
|
||||||
use super::*;
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn part1_test1() -> Result<()> {
|
|
||||||
Day::test(Day::part1, "test-1", 94)
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn part1_solution() -> Result<()> {
|
|
||||||
Day::test(Day::part1, "input", 2130)
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn part2_test1() -> Result<()> {
|
|
||||||
Day::test(Day::part2, "test-1", 154)
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn part2_solution() -> Result<()> {
|
|
||||||
Day::test(Day::part2, "input", 6710)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Benchmarks
|
|
||||||
extern crate test;
|
|
||||||
#[bench]
|
|
||||||
#[ignore]
|
|
||||||
fn part1_bench(b: &mut test::Bencher) {
|
|
||||||
Day::benchmark(Day::part1, b)
|
|
||||||
}
|
|
||||||
#[bench]
|
|
||||||
#[ignore]
|
|
||||||
fn part2_bench(b: &mut test::Bencher) {
|
|
||||||
Day::benchmark(Day::part2, b)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
|
||||||
enum Tile {
|
|
||||||
Path,
|
|
||||||
Forest,
|
|
||||||
Up,
|
|
||||||
Down,
|
|
||||||
Left,
|
|
||||||
Right,
|
|
||||||
}
|
|
||||||
|
|
||||||
fn find_path(
|
|
||||||
position: (isize, isize),
|
|
||||||
end: (isize, isize),
|
|
||||||
map: &Vec<Vec<Tile>>,
|
|
||||||
visited: &mut Vec<Vec<bool>>,
|
|
||||||
slippery: bool,
|
|
||||||
) -> (usize, (isize, isize)) {
|
|
||||||
visited[position.1 as usize][position.0 as usize] = true;
|
|
||||||
let size = (map[0].len() as isize, map.len() as isize);
|
|
||||||
|
|
||||||
let mut final_position = position;
|
|
||||||
|
|
||||||
let directions = [(0, -1), (0, 1), (-1, 0), (1, 0)];
|
|
||||||
let mut steps = 0;
|
|
||||||
for direction in directions {
|
|
||||||
let next_position = (position.0 + direction.0, position.1 + direction.1);
|
|
||||||
|
|
||||||
if next_position.0 < 0
|
|
||||||
|| next_position.1 < 0
|
|
||||||
|| next_position.0 >= size.0
|
|
||||||
|| next_position.1 >= size.1
|
|
||||||
|| visited[next_position.1 as usize][next_position.0 as usize]
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
let tile = map[next_position.1 as usize][next_position.0 as usize];
|
|
||||||
if tile == Tile::Forest {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if slippery
|
|
||||||
&& (tile == Tile::Up && direction != (0, -1)
|
|
||||||
|| tile == Tile::Down && direction != (0, 1)
|
|
||||||
|| tile == Tile::Left && direction != (-1, 0)
|
|
||||||
|| tile == Tile::Right && direction != (1, 0))
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
let (mut a, b) = find_path(next_position, end, map, visited, slippery);
|
|
||||||
a += 1;
|
|
||||||
|
|
||||||
if a > steps && b == end {
|
|
||||||
steps = a;
|
|
||||||
final_position = b;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
visited[position.1 as usize][position.0 as usize] = false;
|
|
||||||
|
|
||||||
(steps, final_position)
|
|
||||||
}
|
|
||||||
|
|
||||||
// -- Solution --
|
|
||||||
pub struct Day;
|
|
||||||
impl aoc::Solver for Day {
|
|
||||||
type Output1 = usize;
|
|
||||||
type Output2 = usize;
|
|
||||||
|
|
||||||
fn day() -> u8 {
|
|
||||||
23
|
|
||||||
}
|
|
||||||
|
|
||||||
fn part1(input: &str) -> Self::Output1 {
|
|
||||||
let map: Vec<Vec<_>> = input
|
|
||||||
.lines()
|
|
||||||
.map(|line| {
|
|
||||||
line.chars()
|
|
||||||
.map(|c| match c {
|
|
||||||
'.' => Tile::Path,
|
|
||||||
'#' => Tile::Forest,
|
|
||||||
'^' => Tile::Up,
|
|
||||||
'v' => Tile::Down,
|
|
||||||
'<' => Tile::Left,
|
|
||||||
'>' => Tile::Right,
|
|
||||||
_ => unreachable!("Invalid input"),
|
|
||||||
})
|
|
||||||
.collect()
|
|
||||||
})
|
|
||||||
.collect();
|
|
||||||
|
|
||||||
let size = (map[0].len() as isize, map.len() as isize);
|
|
||||||
let mut visited = vec![vec![false; size.0 as usize]; size.1 as usize];
|
|
||||||
find_path((1, 0), (size.0 - 2, size.1 - 1), &map, &mut visited, true).0
|
|
||||||
}
|
|
||||||
|
|
||||||
fn part2(input: &str) -> Self::Output2 {
|
|
||||||
let map: Vec<Vec<_>> = input
|
|
||||||
.lines()
|
|
||||||
.map(|line| {
|
|
||||||
line.chars()
|
|
||||||
.map(|c| match c {
|
|
||||||
'.' => Tile::Path,
|
|
||||||
'#' => Tile::Forest,
|
|
||||||
'^' => Tile::Up,
|
|
||||||
'v' => Tile::Down,
|
|
||||||
'<' => Tile::Left,
|
|
||||||
'>' => Tile::Right,
|
|
||||||
_ => unreachable!("Invalid input"),
|
|
||||||
})
|
|
||||||
.collect()
|
|
||||||
})
|
|
||||||
.collect();
|
|
||||||
|
|
||||||
let size = (map[0].len() as isize, map.len() as isize);
|
|
||||||
let mut visited = vec![vec![false; size.0 as usize]; size.1 as usize];
|
|
||||||
find_path((1, 0), (size.0 - 2, size.1 - 1), &map, &mut visited, false).0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,235 +0,0 @@
|
|||||||
#![feature(test)]
|
|
||||||
extern crate nalgebra as na;
|
|
||||||
use std::{collections::HashMap, convert::Infallible, str::FromStr};
|
|
||||||
|
|
||||||
use anyhow::Result;
|
|
||||||
use aoc::Solver;
|
|
||||||
use na::{Matrix6, Vector6};
|
|
||||||
|
|
||||||
// -- Runners --
|
|
||||||
fn main() -> Result<()> {
|
|
||||||
Day::solve()
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(test)]
|
|
||||||
mod tests {
|
|
||||||
use super::*;
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn part1_test1() -> Result<()> {
|
|
||||||
Day::test(Day::part1, "test-1", 2)
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn part1_solution() -> Result<()> {
|
|
||||||
Day::test(Day::part1, "input", 13149)
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn part2_test1() -> Result<()> {
|
|
||||||
Day::test(Day::part2, "test-1", 47)
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn part2_solution() -> Result<()> {
|
|
||||||
Day::test(Day::part2, "input", 1033770143421619)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Benchmarks
|
|
||||||
extern crate test;
|
|
||||||
#[bench]
|
|
||||||
#[ignore]
|
|
||||||
fn part1_bench(b: &mut test::Bencher) {
|
|
||||||
Day::benchmark(Day::part1, b)
|
|
||||||
}
|
|
||||||
#[bench]
|
|
||||||
#[ignore]
|
|
||||||
fn part2_bench(b: &mut test::Bencher) {
|
|
||||||
Day::benchmark(Day::part2, b)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Clone, Copy)]
|
|
||||||
struct Hailstone {
|
|
||||||
px: f64,
|
|
||||||
py: f64,
|
|
||||||
pz: f64,
|
|
||||||
vx: f64,
|
|
||||||
vy: f64,
|
|
||||||
vz: f64,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Hailstone {
|
|
||||||
fn intersect_2d(&self, other: &Hailstone) -> Option<(f64, f64)> {
|
|
||||||
let dx = self.px - other.px;
|
|
||||||
let dy = self.py - other.py;
|
|
||||||
|
|
||||||
let d = self.vy * other.vx - self.vx * other.vy;
|
|
||||||
|
|
||||||
let t1 = (other.vy * dx - other.vx * dy) / d;
|
|
||||||
let t2 = (self.vy * dx - self.vx * dy) / d;
|
|
||||||
|
|
||||||
if t1.is_sign_negative() || t2.is_sign_negative() {
|
|
||||||
// Intersection is in the past
|
|
||||||
return None;
|
|
||||||
}
|
|
||||||
|
|
||||||
let x = self.px + self.vx * t1;
|
|
||||||
let y = self.py + self.vy * t1;
|
|
||||||
|
|
||||||
if x.is_infinite() || y.is_infinite() {
|
|
||||||
// Paths are parallel
|
|
||||||
return None;
|
|
||||||
}
|
|
||||||
|
|
||||||
Some((x, y))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl FromStr for Hailstone {
|
|
||||||
type Err = Infallible;
|
|
||||||
|
|
||||||
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
|
||||||
let parts: Vec<f64> = s
|
|
||||||
.split([',', '@'])
|
|
||||||
.map(|part| part.trim().parse().unwrap())
|
|
||||||
.collect();
|
|
||||||
|
|
||||||
Ok(Hailstone {
|
|
||||||
px: parts[0],
|
|
||||||
py: parts[1],
|
|
||||||
pz: parts[2],
|
|
||||||
vx: parts[3],
|
|
||||||
vy: parts[4],
|
|
||||||
vz: parts[5],
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn mode(numbers: &[usize]) -> usize {
|
|
||||||
let mut occurrences = HashMap::<_, usize>::new();
|
|
||||||
|
|
||||||
for &value in numbers {
|
|
||||||
*occurrences.entry(value).or_insert(0) += 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
occurrences
|
|
||||||
.into_iter()
|
|
||||||
.max_by_key(|&(_, count)| count)
|
|
||||||
.map(|(value, _)| value)
|
|
||||||
.unwrap()
|
|
||||||
}
|
|
||||||
|
|
||||||
// -- Solution --
|
|
||||||
pub struct Day;
|
|
||||||
impl aoc::Solver for Day {
|
|
||||||
type Output1 = usize;
|
|
||||||
type Output2 = usize;
|
|
||||||
|
|
||||||
fn day() -> u8 {
|
|
||||||
24
|
|
||||||
}
|
|
||||||
|
|
||||||
fn part1(input: &str) -> Self::Output1 {
|
|
||||||
let hailstones: Vec<_> = input.lines().flat_map(Hailstone::from_str).collect();
|
|
||||||
|
|
||||||
let range = if hailstones.len() == 5 {
|
|
||||||
7.0..=27.0
|
|
||||||
} else {
|
|
||||||
200000000000000.0..=400000000000000.0
|
|
||||||
};
|
|
||||||
|
|
||||||
hailstones
|
|
||||||
.iter()
|
|
||||||
.enumerate()
|
|
||||||
.flat_map(|(index_a, a)| {
|
|
||||||
hailstones
|
|
||||||
.iter()
|
|
||||||
.enumerate()
|
|
||||||
.filter(|(index_b, _)| index_b < &index_a)
|
|
||||||
.filter_map(|(_, b)| a.intersect_2d(b))
|
|
||||||
.collect::<Vec<_>>()
|
|
||||||
})
|
|
||||||
.filter(|&(x, y)| range.contains(&x) && range.contains(&y))
|
|
||||||
.count()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn part2(input: &str) -> Self::Output2 {
|
|
||||||
let h: Vec<_> = input.lines().flat_map(Hailstone::from_str).collect();
|
|
||||||
|
|
||||||
// Key insight for part 2 is
|
|
||||||
// p_rock + v_rock * t_i = p_i + v_i * t_i
|
|
||||||
// for every hailstone i
|
|
||||||
//
|
|
||||||
// This can be rewritten as
|
|
||||||
// p_rock - p_i = t_i * (v_i - v_rock)
|
|
||||||
// and since t_i is a scalar this means that
|
|
||||||
// (p_rock - p_i) is parallel to (v_i - v_rock)
|
|
||||||
// and therefore
|
|
||||||
// c_i = (p_rock - p_i) x (v_i - v_rock) = 0
|
|
||||||
// This holds true for every hailstone i, so
|
|
||||||
// c_i = c_j
|
|
||||||
// c_i = c_k
|
|
||||||
// with i != j != k
|
|
||||||
// Writing out these equations leads to a set of six linear equations
|
|
||||||
// And can therefore be written in matrix form
|
|
||||||
// A * solution = constant
|
|
||||||
// And the solution can now be found using
|
|
||||||
// solution = A^-1 * constant
|
|
||||||
|
|
||||||
let i = 0;
|
|
||||||
let j = 1;
|
|
||||||
// Due to numerical instability we run this with several different options for the third
|
|
||||||
// hailstone
|
|
||||||
let solutions: Vec<_> = (2..h.len())
|
|
||||||
.map(|k| {
|
|
||||||
// Constant in the matrix
|
|
||||||
let c1 = h[i].vz - h[j].vz;
|
|
||||||
let c2 = h[i].py - h[j].py;
|
|
||||||
let c3 = h[j].vy - h[i].vy;
|
|
||||||
let c4 = h[j].pz - h[i].pz;
|
|
||||||
let c5 = h[i].vx - h[j].vx;
|
|
||||||
let c6 = h[j].px - h[i].px;
|
|
||||||
|
|
||||||
let c7 = h[i].vz - h[k].vz;
|
|
||||||
let c8 = h[i].py - h[k].py;
|
|
||||||
let c9 = h[k].vy - h[i].vy;
|
|
||||||
let c10 = h[k].pz - h[i].pz;
|
|
||||||
let c11 = h[i].vx - h[k].vx;
|
|
||||||
let c12 = h[k].px - h[i].px;
|
|
||||||
|
|
||||||
// Setup the matrix
|
|
||||||
let matrix = Matrix6::new(
|
|
||||||
0.0, c1, c3, 0.0, c4, c2, -c1, 0.0, c5, -c4, 0.0, c6, -c3, -c5, 0.0, -c2, -c6,
|
|
||||||
0.0, 0.0, c7, c9, 0.0, c10, c8, -c7, 0.0, c11, -c10, 0.0, c12, -c9, -c11, 0.0,
|
|
||||||
-c8, -c12, 0.0,
|
|
||||||
);
|
|
||||||
|
|
||||||
// Constant on the rhs
|
|
||||||
let k1 =
|
|
||||||
h[i].py * h[i].vz - h[j].py * h[j].vz + h[j].pz * h[j].vy - h[i].pz * h[i].vy;
|
|
||||||
let k2 =
|
|
||||||
h[i].pz * h[i].vx - h[j].pz * h[j].vx + h[j].px * h[j].vz - h[i].px * h[i].vz;
|
|
||||||
let k3 =
|
|
||||||
h[i].px * h[i].vy - h[j].px * h[j].vy + h[j].py * h[j].vx - h[i].py * h[i].vx;
|
|
||||||
let k4 =
|
|
||||||
h[i].py * h[i].vz - h[k].py * h[k].vz + h[k].pz * h[k].vy - h[i].pz * h[i].vy;
|
|
||||||
let k5 =
|
|
||||||
h[i].pz * h[i].vx - h[k].pz * h[k].vx + h[k].px * h[k].vz - h[i].px * h[i].vz;
|
|
||||||
let k6 =
|
|
||||||
h[i].px * h[i].vy - h[k].px * h[k].vy + h[k].py * h[k].vx - h[i].py * h[i].vx;
|
|
||||||
|
|
||||||
// Put them into a vector
|
|
||||||
let k = Vector6::new(k1, k2, k3, k4, k5, k6);
|
|
||||||
|
|
||||||
let solution = matrix.lu().solve(&k).unwrap();
|
|
||||||
|
|
||||||
// The sum of all elements of the starting position is the answer
|
|
||||||
(solution[0] + solution[1] + solution[2]).round() as usize
|
|
||||||
})
|
|
||||||
.collect();
|
|
||||||
|
|
||||||
// The most common solution is the actual solution
|
|
||||||
mode(&solutions)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,172 +0,0 @@
|
|||||||
#![feature(test)]
|
|
||||||
#![feature(iter_map_windows)]
|
|
||||||
use std::collections::{HashMap, HashSet, VecDeque};
|
|
||||||
|
|
||||||
use anyhow::Result;
|
|
||||||
use aoc::Solver;
|
|
||||||
use petgraph::{
|
|
||||||
algo::{condensation, has_path_connecting},
|
|
||||||
graphmap::{GraphMap, UnGraphMap},
|
|
||||||
visit::IntoNodeReferences,
|
|
||||||
Undirected,
|
|
||||||
};
|
|
||||||
|
|
||||||
// -- Runners --
|
|
||||||
fn main() -> Result<()> {
|
|
||||||
Day::solve()
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(test)]
|
|
||||||
mod tests {
|
|
||||||
use super::*;
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn part1_test1() -> Result<()> {
|
|
||||||
Day::test(Day::part1, "test-1", 54)
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn part1_solution() -> Result<()> {
|
|
||||||
Day::test(Day::part1, "input", 552695)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Benchmarks
|
|
||||||
extern crate test;
|
|
||||||
#[bench]
|
|
||||||
#[ignore]
|
|
||||||
fn part1_bench(b: &mut test::Bencher) {
|
|
||||||
Day::benchmark(Day::part1, b)
|
|
||||||
}
|
|
||||||
#[bench]
|
|
||||||
#[ignore]
|
|
||||||
fn part2_bench(b: &mut test::Bencher) {
|
|
||||||
Day::benchmark(Day::part2, b)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Totally copied this from: https://github.com/Zemogus/AOC-2023/blob/328dc6618f3a360c3d3851ad1b10513a6c133336/src/day25.rs
|
|
||||||
// For some reason the graph library has no dijkstra that returns the actual path
|
|
||||||
fn find_shortest_path<'a>(
|
|
||||||
graph: &GraphMap<&'a str, (), Undirected>,
|
|
||||||
start: &'a str,
|
|
||||||
end: &'a str,
|
|
||||||
) -> Option<Vec<&'a str>> {
|
|
||||||
let mut queue = VecDeque::new();
|
|
||||||
let mut visited = HashSet::new();
|
|
||||||
let mut parents = HashMap::new();
|
|
||||||
|
|
||||||
queue.push_back(start);
|
|
||||||
while let Some(node) = queue.pop_front() {
|
|
||||||
// Already visited this node
|
|
||||||
if !visited.insert(node) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Reached the destination
|
|
||||||
if node == end {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
for neighbour in graph.neighbors(node) {
|
|
||||||
if !visited.contains(neighbour) {
|
|
||||||
parents.insert(neighbour, node);
|
|
||||||
queue.push_back(neighbour);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let mut path = Vec::new();
|
|
||||||
let mut node = end;
|
|
||||||
while node != start {
|
|
||||||
path.push(node);
|
|
||||||
if let Some(parent) = parents.get(&node) {
|
|
||||||
node = parent;
|
|
||||||
} else {
|
|
||||||
return None;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
path.push(start);
|
|
||||||
|
|
||||||
Some(path)
|
|
||||||
}
|
|
||||||
|
|
||||||
// -- Solution --
|
|
||||||
pub struct Day;
|
|
||||||
impl aoc::Solver for Day {
|
|
||||||
type Output1 = usize;
|
|
||||||
type Output2 = usize;
|
|
||||||
|
|
||||||
fn day() -> u8 {
|
|
||||||
25
|
|
||||||
}
|
|
||||||
|
|
||||||
fn part1(input: &str) -> Self::Output1 {
|
|
||||||
// Create a list of all edges
|
|
||||||
let edges: Vec<_> = input
|
|
||||||
.lines()
|
|
||||||
.flat_map(|line| {
|
|
||||||
let (a, rest) = line.split_once(": ").unwrap();
|
|
||||||
rest.split(' ').map(|b| (a, b)).collect::<Vec<_>>()
|
|
||||||
})
|
|
||||||
.collect();
|
|
||||||
|
|
||||||
// Create a graph from all the edges
|
|
||||||
let graph = UnGraphMap::<_, ()>::from_edges(edges);
|
|
||||||
|
|
||||||
// Take a node as the starting point
|
|
||||||
let start = graph.nodes().next().unwrap();
|
|
||||||
// Loop over all other nodes
|
|
||||||
for end in graph.nodes() {
|
|
||||||
// Make a copy of the graph so we can modify it and undo changes later
|
|
||||||
let mut graph = graph.clone();
|
|
||||||
if start == end {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// If the two nodes are on the same side there should be more then three paths
|
|
||||||
// connecting the nodes together
|
|
||||||
// At least I think???
|
|
||||||
// This solution worked, so ¯\_(ツ)_/¯
|
|
||||||
for _ in 0..3 {
|
|
||||||
// Find the current shortest path
|
|
||||||
let path = find_shortest_path(&graph, start, end).unwrap();
|
|
||||||
|
|
||||||
// Remove the path
|
|
||||||
for slice in path.windows(2) {
|
|
||||||
match slice {
|
|
||||||
[a, b] => graph.remove_edge(a, b),
|
|
||||||
_ => unreachable!(
|
|
||||||
"There should be three paths connecting all the nodes together"
|
|
||||||
),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// If there is no path connecting the two nodes we have removed the three edges
|
|
||||||
// connecting the two halves
|
|
||||||
if !has_path_connecting(&graph, start, end, None) {
|
|
||||||
// Condense the graph, creates a new graph where each node contains all nodes that
|
|
||||||
// where connected in the input node
|
|
||||||
let condensed = condensation(graph.into_graph::<usize>(), false);
|
|
||||||
|
|
||||||
// The should give us two nodes each containing all the nodes in their respective
|
|
||||||
// half if we split the graph
|
|
||||||
if condensed.node_count() != 2 {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Multiply the size of each of the halves together giving the final solution
|
|
||||||
return condensed
|
|
||||||
.node_references()
|
|
||||||
.fold(1, |acc, (_, nodes)| acc * nodes.len());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
unreachable!("No solution found");
|
|
||||||
}
|
|
||||||
|
|
||||||
fn part2(_input: &str) -> Self::Output2 {
|
|
||||||
0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user