Compare commits

...

2 commits

Author SHA1 Message Date
a3a7df74b8 add day19a 2023-12-19 20:08:45 +01:00
d20bb3f539 add day 12a and day 18a 2023-12-19 08:22:20 +01:00
9 changed files with 2698 additions and 0 deletions

1000
23/elixir/inputs/day12.txt Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,6 @@
???.### 1,1,3
.??..??...?##. 1,1,3
?#?#?#?#?#?#?#? 1,3,1,6
????.#...#... 4,1,1
????.######..#####. 1,6,5
?###???????? 3,2,1

618
23/elixir/inputs/day18.txt Normal file
View file

@ -0,0 +1,618 @@
L 4 (#6c74e0)
D 4 (#1afab1)
L 4 (#0b54a0)
D 18 (#3533c1)
L 3 (#411270)
U 14 (#121ed3)
L 4 (#17e0f0)
U 10 (#113841)
L 8 (#4fa040)
U 13 (#113843)
L 3 (#1b7fb0)
U 7 (#121ed1)
L 10 (#005ed0)
D 4 (#502e73)
L 5 (#47ebf0)
D 10 (#2d9421)
R 7 (#2d4360)
D 8 (#2d9423)
L 7 (#2164d0)
D 8 (#530f03)
L 9 (#14d330)
D 14 (#1c6c43)
L 8 (#5133e0)
U 13 (#2ec813)
L 7 (#2c56a0)
U 6 (#2b50c3)
L 14 (#465990)
U 3 (#5c9e03)
L 6 (#052cf0)
U 7 (#09d973)
L 10 (#3500b0)
D 11 (#088d63)
L 11 (#473f60)
U 11 (#405733)
L 5 (#414100)
U 5 (#10b5b3)
L 9 (#624920)
U 8 (#10b5b1)
L 10 (#02a810)
U 7 (#29a8c1)
L 14 (#6896c2)
U 7 (#4a0001)
L 6 (#07ef12)
U 4 (#399321)
L 7 (#2054f0)
U 8 (#226a41)
R 8 (#5030e0)
U 6 (#57a921)
R 3 (#3f7160)
U 11 (#4df573)
R 6 (#49fe20)
U 13 (#1c3d03)
R 9 (#4f4362)
U 3 (#0ba303)
R 8 (#75c3f2)
U 13 (#3e1493)
R 12 (#0af520)
U 6 (#3dc1b3)
L 4 (#0e7730)
U 2 (#36f991)
L 8 (#565800)
D 5 (#36f993)
L 6 (#554300)
U 5 (#35a393)
L 8 (#3ff8c0)
U 7 (#345003)
R 11 (#0140c0)
U 5 (#34d343)
R 11 (#0140c2)
U 3 (#3da6b3)
R 2 (#368952)
U 8 (#6c3473)
R 5 (#132af2)
U 5 (#47ae31)
R 11 (#479542)
D 5 (#34c7d1)
R 3 (#096fc2)
D 4 (#00bec1)
R 9 (#1f8712)
D 10 (#317681)
R 3 (#475352)
D 2 (#463703)
R 12 (#2e2f12)
U 4 (#260611)
L 8 (#2fa902)
U 7 (#260613)
L 2 (#5461a2)
U 6 (#463701)
L 11 (#3050d2)
U 11 (#508b33)
L 11 (#258512)
U 14 (#5e2013)
L 4 (#2b63a2)
U 2 (#6c3471)
L 7 (#297132)
U 9 (#0a6333)
L 14 (#4c7b92)
U 4 (#6f3b33)
L 16 (#4c7b90)
U 6 (#09f3c3)
L 15 (#053fa2)
U 5 (#4ad5c3)
R 8 (#1f96b0)
U 7 (#5c6d63)
R 5 (#0835f2)
U 11 (#4d5af3)
R 6 (#525352)
U 8 (#165b63)
R 3 (#5a8940)
U 4 (#099e83)
L 3 (#1f96b2)
U 16 (#1af253)
L 6 (#767070)
U 4 (#231d23)
L 7 (#02a910)
U 9 (#42f673)
L 12 (#0b64d0)
U 3 (#27b9c3)
L 4 (#21b400)
U 10 (#1744e3)
L 12 (#5a75e0)
U 8 (#42c5c3)
L 12 (#199ed2)
U 13 (#4cefc3)
L 9 (#245442)
U 8 (#119c61)
R 10 (#095c02)
U 11 (#68be41)
R 6 (#14ae52)
D 9 (#161161)
R 4 (#03bf22)
D 6 (#121833)
L 4 (#11a032)
D 12 (#1d8a53)
R 8 (#570a92)
D 5 (#4f2d23)
R 9 (#24dc02)
U 6 (#119c63)
R 5 (#230162)
U 9 (#1b8183)
L 13 (#19a6f2)
U 10 (#5dbb13)
R 13 (#200702)
U 7 (#5ee763)
R 5 (#059f22)
D 3 (#5ee761)
R 10 (#1a4342)
D 8 (#394c93)
R 12 (#0a6d32)
U 8 (#5756d1)
R 8 (#1ca732)
D 10 (#22af01)
R 3 (#424712)
D 9 (#53bcc3)
R 9 (#331712)
D 10 (#264913)
R 4 (#244212)
D 7 (#3f48b3)
R 8 (#54dec2)
D 14 (#515d83)
R 4 (#4d5930)
D 8 (#058093)
R 5 (#3738b0)
D 3 (#2b5173)
R 9 (#1f3660)
D 16 (#4c7f03)
R 5 (#6179a0)
D 3 (#548343)
R 5 (#4a2640)
D 3 (#106533)
R 6 (#1cfc70)
U 4 (#184de3)
R 4 (#234e70)
U 9 (#67b7f1)
R 7 (#2a16d0)
U 7 (#24fea1)
R 9 (#564262)
D 4 (#436f31)
R 8 (#564260)
D 10 (#24e101)
R 12 (#4df570)
D 2 (#152b43)
R 9 (#2bcb50)
D 8 (#5e2443)
L 3 (#444350)
D 4 (#13c883)
L 16 (#079a60)
D 2 (#2e75b3)
L 2 (#5ffa70)
D 7 (#3aede3)
L 8 (#0231f0)
D 13 (#0cc973)
R 5 (#3986f0)
D 11 (#0486a3)
R 7 (#34db30)
D 8 (#609e53)
R 3 (#44d400)
D 8 (#4c3ca1)
L 15 (#40a880)
D 5 (#18e851)
R 5 (#24f640)
D 6 (#0cc971)
R 9 (#03f810)
D 8 (#46d213)
R 4 (#2a68f0)
D 18 (#179ca3)
R 3 (#58afe0)
U 18 (#4cf4b3)
R 2 (#2ac350)
U 2 (#18ecd3)
R 10 (#0e0360)
U 5 (#2df743)
R 11 (#4e89a0)
U 13 (#4beca3)
R 6 (#5610e0)
U 5 (#155291)
R 3 (#6dbb30)
U 5 (#03dd31)
R 3 (#4dc0c0)
U 12 (#18d661)
R 11 (#36e652)
U 10 (#4fe7a1)
R 5 (#2f6e32)
U 17 (#2fe1d1)
R 2 (#2cba62)
U 9 (#2930a1)
R 5 (#286d12)
U 7 (#3ee381)
R 12 (#0c4ce0)
U 4 (#286181)
L 17 (#259a80)
U 6 (#5e3323)
R 7 (#4185c0)
U 10 (#5e3321)
R 5 (#2a9270)
U 2 (#11e811)
R 12 (#0edfe0)
U 11 (#053c71)
R 11 (#2abf90)
U 7 (#5f6381)
R 7 (#307120)
U 3 (#17a761)
R 9 (#180940)
U 10 (#0baa11)
R 3 (#5fe2f0)
U 11 (#0baa13)
R 9 (#69f120)
U 5 (#14bc71)
R 7 (#2fe940)
U 16 (#184891)
L 7 (#3e76b0)
U 10 (#74c8b1)
L 13 (#11fe70)
U 9 (#3712e1)
R 6 (#114d30)
U 9 (#26b653)
R 11 (#05c152)
D 9 (#151243)
R 3 (#400370)
U 8 (#6d4e13)
R 17 (#400372)
D 6 (#0ae363)
L 4 (#05c150)
D 5 (#17a753)
R 7 (#10cfc2)
D 15 (#470433)
L 7 (#10cfc0)
D 6 (#37c983)
L 8 (#19e760)
D 6 (#0ab8e3)
R 12 (#5e9970)
D 5 (#1ee3f1)
R 6 (#2b3962)
U 11 (#3a45b1)
R 6 (#3da2a0)
U 6 (#6e96f1)
L 5 (#3da2a2)
U 8 (#2e7501)
R 11 (#2b3960)
U 10 (#657f61)
L 11 (#291930)
U 12 (#04b591)
R 5 (#0c7c20)
U 13 (#043ff3)
R 2 (#14c0b0)
U 11 (#65d263)
R 6 (#060310)
U 7 (#499ce1)
R 3 (#511ff0)
D 10 (#207571)
R 9 (#2e4e30)
D 5 (#33a333)
R 4 (#6ce740)
D 5 (#449c93)
R 3 (#4540d0)
U 9 (#244651)
R 3 (#36cb70)
U 3 (#53f971)
R 12 (#122200)
U 8 (#454131)
R 3 (#0c83f2)
D 7 (#0b87c1)
R 18 (#361a72)
D 7 (#589d41)
R 11 (#31dab2)
D 4 (#589d43)
R 5 (#432802)
D 7 (#0b87c3)
R 7 (#101df2)
D 18 (#32fb11)
R 5 (#597e62)
D 6 (#271ec1)
R 10 (#19d672)
D 3 (#5fe541)
R 12 (#358d42)
D 6 (#258221)
R 6 (#192fd2)
D 10 (#048fa3)
R 7 (#3b17e2)
D 9 (#44d6b3)
R 2 (#456350)
D 8 (#15ae53)
R 5 (#456352)
D 4 (#4d7183)
L 3 (#173ee2)
D 7 (#2754e1)
L 5 (#1df992)
D 13 (#09dc01)
L 7 (#1db1f2)
D 3 (#6660e1)
L 12 (#04b802)
D 2 (#00c7f1)
L 5 (#03d8e2)
D 8 (#1f7303)
L 9 (#05d1e2)
D 6 (#1ded03)
L 7 (#2743f2)
D 2 (#1eebc1)
L 4 (#3c3272)
D 10 (#1eebc3)
L 7 (#15c632)
D 13 (#1ded01)
R 7 (#12ea32)
D 4 (#1f7301)
L 6 (#2b9562)
D 6 (#2ffb01)
L 8 (#5bf420)
U 4 (#422961)
L 8 (#69be80)
U 9 (#0a0141)
L 5 (#006c40)
U 12 (#1da551)
L 2 (#1db1f0)
U 4 (#0769d1)
R 9 (#1be912)
U 4 (#5fe191)
R 6 (#2aa3c2)
U 16 (#2283a1)
L 6 (#0d5b30)
D 6 (#37efc1)
L 4 (#5d2960)
D 9 (#06b111)
L 12 (#72b960)
D 3 (#1bb7f1)
L 2 (#34e3f0)
D 12 (#4ff8b1)
L 10 (#2dbbc0)
D 3 (#46ec21)
L 7 (#248220)
U 11 (#19bc11)
R 11 (#338e40)
U 2 (#24d9e1)
R 3 (#0e7330)
U 10 (#514f71)
L 8 (#3e49e0)
U 6 (#32c963)
L 6 (#344102)
U 10 (#27f3e3)
L 14 (#344100)
D 11 (#2b8c83)
L 9 (#1ed1b0)
U 11 (#400a01)
L 5 (#4a5de0)
U 10 (#3b32b1)
L 5 (#4a5de2)
U 4 (#0b0d11)
L 11 (#3d3140)
U 5 (#508151)
L 5 (#47d872)
D 8 (#132e71)
L 12 (#07e2f2)
D 4 (#40a3b1)
L 4 (#5e24b2)
D 9 (#181e91)
R 16 (#5e24b0)
D 9 (#3042d1)
L 3 (#07e2f0)
D 11 (#638e01)
R 5 (#3de122)
D 8 (#0f9b41)
R 15 (#452fc2)
D 6 (#57e8b1)
R 7 (#2a4e22)
U 14 (#00d391)
R 5 (#435852)
D 10 (#1e6f91)
R 6 (#6a77d2)
D 7 (#217553)
L 6 (#0db942)
D 9 (#36a663)
L 7 (#541100)
D 11 (#547883)
R 6 (#46c250)
D 3 (#1ab863)
L 6 (#0040e0)
D 18 (#28b1d3)
R 6 (#197e32)
D 8 (#3739c3)
R 7 (#540ee2)
D 9 (#572ac3)
R 8 (#2d8722)
U 2 (#0825b3)
R 4 (#1a1be2)
U 13 (#1ef4f1)
R 3 (#35b942)
U 6 (#00ae13)
R 7 (#307ab0)
U 6 (#6d52e3)
R 5 (#307ab2)
U 11 (#1aec73)
R 6 (#1801e2)
D 9 (#09f4f1)
R 8 (#0b72b2)
D 4 (#156b11)
R 16 (#3ea4e2)
D 4 (#2b86f1)
R 8 (#3ea4e0)
D 10 (#3b22e1)
L 6 (#0b72b0)
D 9 (#02e391)
L 11 (#3b40c2)
D 4 (#4b0d21)
L 4 (#436750)
D 3 (#0a2871)
L 11 (#459490)
D 2 (#448131)
L 7 (#4e46d2)
D 6 (#1239c1)
L 2 (#18be72)
D 3 (#01e451)
L 2 (#63d532)
D 8 (#088331)
R 11 (#13fbd2)
D 2 (#76bde1)
R 9 (#010bf2)
D 7 (#093ed1)
R 11 (#34efc2)
D 9 (#346ad1)
R 15 (#5ea842)
D 8 (#3f1461)
R 8 (#075292)
D 5 (#43d301)
R 6 (#5c8642)
D 7 (#515c51)
R 6 (#35e392)
D 4 (#515c53)
L 11 (#3c52e2)
D 11 (#460471)
R 11 (#55f562)
D 4 (#275f23)
R 4 (#6901b2)
U 15 (#058f43)
R 5 (#4cad42)
U 8 (#5ad323)
R 6 (#4180a2)
U 3 (#408241)
R 14 (#3c0f62)
U 3 (#055fa1)
R 9 (#3f6652)
U 3 (#7414f1)
R 3 (#11ae90)
U 9 (#098c31)
L 13 (#4a7ad0)
U 6 (#5dfb41)
R 13 (#1f4c50)
U 8 (#165861)
R 3 (#2d68c2)
U 2 (#715cb1)
R 7 (#2b7e62)
D 6 (#241511)
R 9 (#4e1152)
D 8 (#26ec71)
R 5 (#247332)
D 14 (#051611)
L 9 (#09f002)
D 16 (#366e31)
L 3 (#0d6b12)
D 2 (#6dc513)
L 6 (#1eccb2)
D 7 (#6d5ce3)
R 8 (#4a81b2)
D 9 (#02b891)
L 8 (#282492)
D 5 (#02b893)
R 8 (#1c9a22)
D 13 (#5a47b3)
R 7 (#4287e2)
D 11 (#0aecb3)
R 3 (#285d50)
D 3 (#2fba33)
L 14 (#1115b0)
D 5 (#42d373)
L 5 (#610760)
U 11 (#42d371)
L 14 (#13cda0)
U 3 (#2e73f3)
L 11 (#424cf0)
U 9 (#0e40e3)
L 5 (#2ca0f2)
D 11 (#6284d3)
L 4 (#4f7e52)
D 12 (#00d2d3)
L 8 (#0d1642)
D 8 (#1f9c23)
L 6 (#6648b2)
D 9 (#0101c1)
L 9 (#2cbc52)
D 3 (#094dc1)
L 8 (#35d1a2)
D 2 (#66e3d1)
L 10 (#20ab92)
D 10 (#168e31)
L 8 (#710542)
U 12 (#1e5051)
L 8 (#248cc2)
U 3 (#3fbc61)
L 6 (#64dc10)
U 10 (#2b81c1)
L 11 (#69f840)
D 10 (#4eae41)
L 4 (#5a3aa0)
D 8 (#2bbb71)
L 13 (#574fc2)
D 3 (#1d2801)
L 3 (#1fa5d2)
D 12 (#04b8f1)
L 3 (#136922)
D 4 (#4ec981)
L 11 (#042042)
D 5 (#319921)
L 15 (#5bd8c2)
D 3 (#216d11)
L 3 (#110372)
U 7 (#530633)
L 2 (#2db3d2)
U 10 (#3f8131)
L 4 (#047412)
U 8 (#1f5091)
L 4 (#07efb2)
U 8 (#02d151)
L 4 (#0503b2)
U 4 (#517631)
L 12 (#11df72)
U 4 (#273981)
L 3 (#5a6a72)
D 4 (#1ac7a1)
L 8 (#0aa4c2)
D 4 (#1d29c3)
R 13 (#5f2750)
D 9 (#592b53)
L 13 (#5f2752)
D 8 (#1ff393)
L 7 (#2b1a32)
D 4 (#20d203)
L 18 (#2724e2)
D 4 (#486343)
R 19 (#2ea0e2)
D 2 (#486341)
R 14 (#33e032)
D 6 (#1fb073)
L 17 (#2a4422)
U 4 (#4b9413)
L 6 (#1563d0)
D 8 (#065ed1)
L 8 (#317df0)
U 8 (#02fac3)
L 12 (#2f35c0)
D 4 (#02fac1)
R 9 (#5d1770)
D 7 (#065ed3)
R 7 (#16fa70)
D 17 (#35b073)
R 7 (#0c5930)
D 5 (#400163)
L 9 (#2a1ab2)
D 11 (#3bc7a3)
L 14 (#269eb2)
D 9 (#1ef343)
L 10 (#269eb0)
U 4 (#2d4f23)
R 6 (#38f922)
U 9 (#5a3f31)
L 3 (#1269d2)
U 8 (#2dcad1)
L 7 (#2296c2)
U 9 (#3b97a3)
R 10 (#24c7b2)
U 3 (#67d443)
L 6 (#39a682)
U 8 (#1c8c93)
L 6 (#75d832)
U 3 (#11b393)
L 3 (#441282)
U 9 (#4c45b3)
L 11 (#385732)
U 11 (#1c1a93)
L 7 (#31b132)
U 8 (#25ae53)

View file

@ -0,0 +1,14 @@
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)

728
23/elixir/inputs/day19.txt Normal file
View file

@ -0,0 +1,728 @@
fxg{x<2288:tn,m<3059:mlg,xl}
fdl{m>3467:A,s<1414:A,s>2068:A,A}
fzv{m<82:R,m>134:A,s>1033:R,A}
fmd{a>3959:A,R}
xx{s>1478:shz,s>972:tfm,a>3810:jvb,lfb}
cjj{m<2288:R,a>3822:A,A}
qht{a<2481:vk,m>987:thk,s>2051:xkl,mz}
ds{a>2589:A,R}
ts{s<1928:A,A}
cb{s<3311:R,s<3404:R,R}
qcm{s>838:A,R}
xxz{m>2772:dpn,A}
zbx{s<2149:R,m>1885:R,s<3157:A,R}
mdq{m>2002:sg,a>3908:gz,m<1702:np,gxm}
rlm{m<2733:R,m>2925:lhf,s<2207:msh,gjh}
zlx{m>2987:R,s>1645:R,R}
ngc{m<3821:A,A}
mjq{s>1671:A,s<1484:A,A}
bk{a<3273:A,m>3695:pkb,m<3584:R,dzk}
mvc{m>3223:R,A}
xl{s>677:A,m>3381:A,A}
pm{s>2238:srn,dxg}
szv{a<1654:krs,a<3133:fnm,m<3024:gpl,lh}
tdp{m<3483:mnh,a<3418:xrv,sf}
kgk{x<1234:fbd,pjk}
xkl{a>2755:kd,x>1913:vv,R}
jx{a>3102:rzg,gsm}
pz{x<1357:R,s<338:R,R}
ztx{m>3558:kfs,s<1441:chq,x>2307:A,A}
jp{m<1022:R,a<401:hrk,x<2481:A,lfr}
nbp{x>3585:A,A}
lqv{x<1820:A,A}
hbd{a<387:hgd,nt}
hh{s<760:R,s>1049:A,A}
hbv{s>2416:A,m<1490:A,m<1526:R,R}
fq{s<490:R,R}
kql{s>1995:A,a<3405:R,A}
bhl{s>3286:dzj,m<3238:csn,vn}
nfs{m>454:A,x>2121:R,A}
vvd{m<45:A,s>2313:rr,m>86:A,vdx}
msm{m>410:hfx,m>213:qdk,a<3545:bd,xp}
zpt{s<393:fj,a<3968:R,x<989:R,vgm}
qc{x<1556:A,R}
tm{a>3874:R,s<3072:A,s<3430:A,A}
hxg{a>459:A,m<3846:A,A}
vrh{s>513:fxg,m>3140:mhj,a<2061:bv,zk}
pn{x>221:R,m>2805:A,R}
pb{x>2748:R,x>2190:A,m>343:R,ln}
zn{x>2133:xm,x<813:tb,s>252:pz,R}
jls{x<2268:A,m<422:R,a<2257:R,A}
pl{s>2588:A,s<975:smm,jlr}
kt{s<2491:R,s<2547:A,x<2548:A,A}
xrv{s>1456:bk,fq}
cs{x<1649:R,A}
hq{m>3164:rv,x>594:R,sjl}
qvr{s>457:R,a<1922:R,R}
cz{m>2163:R,m<1830:lqv,tbg}
mnm{x<2059:R,A}
msh{a>3672:A,x>2294:R,A}
jh{a>447:A,m>3125:R,R}
btl{s<1969:rmb,A}
nxj{a>1150:R,x<1570:A,A}
hcc{s>3619:R,m<3681:A,s<3546:R,A}
jnt{s>3000:ksn,a>3744:A,xlp}
ck{m>3636:hxg,a>265:R,a>134:R,mt}
kr{s>591:R,s<285:gj,x<1120:R,mnm}
jtl{m<2676:ljt,a>3746:R,pn}
tdj{x<3002:R,R}
pf{s<3426:qjt,s>3624:nsl,xjk}
pj{s>1859:R,R}
xz{s>2322:pf,m>2095:pvb,ss}
bl{x>1072:R,vrf}
hrk{a>204:R,R}
vv{s>2378:A,A}
px{a<3676:R,R}
cth{s>1089:R,x<1723:A,A}
vd{s>670:A,m<2596:A,x>1199:R,A}
hvb{x>1121:A,x<581:znp,A}
gn{m<920:gml,x<2325:kgk,rlx}
csn{x>893:R,s<2824:mnv,qn}
scs{m<3673:R,x<1134:A,a<3671:A,A}
ss{s<1302:zfx,x>815:hf,btl}
sjl{x>263:R,A}
tfm{a<3703:A,s<1173:R,dxt}
hfx{s>1106:A,s<547:bx,dj}
qt{a>3806:xlm,s>1595:bj,a<3717:xs,mmf}
mlg{x>3146:R,s>721:A,A}
gkm{a>660:R,A}
txg{s>810:R,m<3165:R,a<3430:R,R}
pvb{s<1031:qql,a>3301:jln,vf}
fxb{a<3859:pkq,mdq}
ljt{x>237:A,a>3840:R,R}
jcm{x>3322:A,A}
mqs{a<3643:pqp,a<3769:tbm,s<2584:fxb,tbs}
lxk{a>2753:qdm,a>2621:tlp,cq}
tbg{m<1957:A,m>2053:R,m>1999:R,R}
gdk{s<1637:A,A}
bv{s<197:xjx,a>1986:zp,R}
xnj{m<3359:R,m>3463:R,m<3428:R,A}
gv{s>1869:zqk,txp}
jln{x>679:gp,s<1624:R,s<2011:crb,xqx}
ft{s<1931:A,m>277:A,A}
fxr{m<2870:cgn,x>961:vm,m<3322:R,A}
jrb{s<3400:R,x>1684:R,x>1454:R,A}
dsd{a>3907:A,mf}
rp{s>3309:R,x<1004:A,jbs}
jlr{x>3494:A,m<3218:A,R}
lhd{x<814:R,x<1071:R,R}
thl{a<3885:R,s<3770:A,R}
qp{a<1700:A,m<1132:R,s<962:A,A}
xmg{m>3765:kb,s>2035:msf,s<1048:fx,lj}
sg{x>2270:A,R}
vtr{s>473:A,x>460:R,R}
zk{a<2113:bhg,m<2164:A,R}
gml{a<2183:jz,x>2629:fh,a>2379:kr,vl}
phl{a>1213:xnk,x>2508:lq,dsp}
grr{a>3924:zvv,a<3874:bmb,xv}
mz{s>1916:A,m<924:dtb,a<2668:A,zv}
dr{a>830:R,m>2354:R,lr}
mmp{m>3723:zqr,m<3706:R,s<580:R,A}
srn{m>1115:A,s>2393:R,A}
mhj{x>2438:A,dl}
mq{m<204:lc,x>1107:cc,A}
tbs{s>3146:mjl,dsd}
mmf{x>1280:R,s<937:R,A}
ksn{a>3701:R,m>3252:A,R}
spn{x>1838:R,x<1168:dzc,s>1037:A,qc}
vbf{a<3249:R,s<2020:R,R}
gt{s<2374:A,s<2461:A,R}
lg{m>867:A,x<1356:R,s>3363:R,R}
hr{a>3739:A,x>339:R,R}
fh{a<2473:A,a>2541:A,x>3430:cr,A}
tk{m>2064:R,m<1828:R,A}
mmc{s<3055:R,R}
flh{s>2954:A,x>3012:A,x<2516:R,A}
stn{s>1855:zl,a<3682:A,tk}
lt{a<2953:sm,m>140:tdj,kql}
pjh{s<3223:R,s>3319:R,x<1248:A,R}
cd{m<3499:pl,gb}
zfx{x<859:vtr,x<1065:R,lqm}
kbx{x>2196:tst,ctc}
ktq{s<1368:A,R}
spg{a<2022:A,m<2383:R,x<852:kxh,A}
kb{a>3815:grr,s>2167:rp,hbm}
vnh{x>2559:qvh,rb}
xk{s<973:A,s>1418:R,A}
zz{m<3797:pbt,R}
nrs{m<2763:R,a>2242:R,s>2010:A,A}
xqr{a<1948:bts,s>995:fpx,vrh}
tb{s<238:R,R}
qdx{x<582:csj,xx}
vts{a<3055:R,a>3208:A,a<3112:A,A}
fbd{a<1902:qp,nn}
smm{a<3598:A,x>3526:R,m<3214:R,R}
xs{s<1042:R,a>3659:A,A}
zc{a>2724:R,m<951:R,x>2100:R,R}
csj{m<2472:tq,s<2587:jtl,a>3749:fd,bbd}
rq{m>3626:A,a>2389:A,R}
ckk{s<721:qvr,a>2023:R,x>3096:R,A}
znp{x<195:R,x>385:A,a>3930:A,R}
hz{m<565:A,a>732:A,m>770:A,R}
zv{x>1524:R,x>740:A,s>1835:R,R}
zp{x<2081:R,A}
qgf{s<801:A,a<3653:A,s>1342:A,R}
tp{a>3371:zrk,R}
gm{a>937:mmc,x<833:fp,jh}
msf{s<2813:hnx,m<3701:jj,s<3492:ls,xt}
dxt{x>924:A,m<2200:A,A}
gpl{x>1337:mqs,a<3544:xz,qdx}
kjr{x<2252:A,m<2340:R,R}
xqx{x>414:A,m<2609:R,s<2216:A,A}
fn{x<1666:tzd,m<1371:pq,ph}
lqm{a>3330:A,m>1880:R,x<1195:R,A}
ssj{m>1131:cxm,m<992:A,x>2550:txx,R}
gxm{a<3878:A,s<1216:A,A}
pgk{x>1554:R,m>2073:A,m>1777:A,A}
cf{s>3103:A,R}
bnq{m<2544:R,m<3510:R,R}
sx{s<1453:dnl,m<1270:clq,zd}
nc{m>1030:A,a>3768:R,R}
flx{x<2558:A,m<1299:R,A}
rh{m<1142:rcq,a>3251:qpc,x<1463:rd,A}
vm{a>1836:R,s>1532:R,R}
qfc{x>1563:A,x>1412:R,A}
pkb{a>3343:A,R}
qn{m<3164:A,x<359:A,m<3195:A,A}
hpk{a<3860:A,m>2285:A,x<982:A,A}
vdx{s>2213:A,s>2184:A,x>2983:R,A}
nkm{m<3672:A,a<3571:R,m<3811:A,A}
rx{x<2190:fxx,dx}
hgd{m<981:A,A}
szs{m<2528:fv,m>3232:pj,zlx}
vz{x>1069:R,x<426:R,zg}
vk{m<1038:A,shc}
kk{m>2465:R,s>2032:R,A}
rk{s<3088:kmf,x<2955:pqk,s<3479:th,zb}
pkq{s<1716:cjj,s>2162:A,s<1905:vc,R}
bsx{x<370:R,m>2899:R,A}
qpm{s>3450:pp,bl}
pp{x<955:mh,x>1395:R,R}
tst{x>2877:bnq,R}
dhm{m<3479:xsg,mv}
fpx{x<1855:spg,szs}
mdh{a>3390:A,m<2131:A,s<3506:A,R}
phj{a>2554:lxk,s<2157:nj,s>3251:kbx,vnh}
hn{x>557:R,m<152:A,A}
fnm{a>2161:phj,s<2559:xqr,vs}
xzp{a>3400:A,a<3357:A,R}
dm{x>971:A,s<1707:A,s>1743:R,A}
fmt{x>3561:A,A}
tc{m<3759:R,m<3761:R,A}
zcq{s>953:gl,A}
qvh{m>3005:rq,a>2368:skg,qq}
xbg{a<2362:rkm,a<2427:A,A}
bgs{s>3730:A,x>2093:A,A}
vt{m<287:R,R}
vzs{x>2122:mdc,R}
dt{a<322:A,a<494:R,A}
kcd{m<2490:R,R}
bhg{a<2083:A,x>2127:R,A}
lc{x>1216:A,A}
lz{x>2398:A,m>1162:R,R}
mnh{m>3327:vz,x>1160:vtx,hq}
htm{x>2296:zkf,s>2077:jth,hnc}
tn{a<2020:R,R}
jzm{x>3227:A,R}
tj{a>3813:A,A}
fp{m>3076:A,a>493:R,m>2934:A,R}
rts{a<3848:nc,m<1013:bs,m<1078:tpk,lvh}
kl{m>767:R,s<2165:R,s<2258:R,A}
xr{x>1462:pb,x>820:mq,fdr}
sm{x>3094:A,A}
lr{m>1863:A,R}
dzj{x>1287:qfc,s<3612:lhd,thl}
bd{m>83:cth,s<970:jfs,db}
fdr{a<520:qd,s<892:A,R}
kfs{s>1567:R,a>3288:R,A}
gl{s>1251:R,m>949:R,R}
gx{a>3225:A,x>524:A,m>2467:R,A}
bs{x<1767:R,m>949:R,s>2069:R,R}
gmn{m>3647:R,a>3720:A,s<2882:R,R}
nh{m>538:A,A}
nv{m<3608:dt,m>3822:rhv,a<376:jtn,R}
xnk{a>1282:zhs,m>1091:flx,lg}
sl{x<943:hr,x<1538:hs,R}
pbz{s>2319:rct,a>750:R,kl}
xjx{x>1490:R,x>948:R,x<374:R,R}
hf{s>1961:A,mjq}
fr{x<2009:pbz,m<909:zjk,a<1227:tt,pm}
qpc{x>1774:R,x<1034:A,A}
nx{s>3695:A,a<458:R,A}
xlp{s>2692:R,x>1500:R,a<3692:A,A}
vrf{a>1813:A,x<675:A,m>2397:A,R}
fx{a<3858:dq,m<3684:hvb,a>3947:zpt,mmp}
dvz{s<2448:R,x<1803:nkm,a>3561:hfg,A}
nt{s<3265:R,s>3609:R,A}
lk{x>1092:R,A}
gb{m<3766:px,jcm}
tzd{x>643:R,m>1402:R,A}
gj{s<181:R,s>242:A,R}
lst{x>2139:hbd,x<1078:npf,lpq}
kf{s<1698:tf,ftj}
fd{x<225:A,x<444:R,tm}
gp{x<944:A,x<1151:A,A}
djs{x<1630:A,s<1045:A,A}
vc{m<2251:R,m>2675:A,s<1784:A,R}
mcv{x<1158:R,A}
sr{s>637:R,A}
xp{a<3809:qgf,a>3876:cs,fzv}
zq{a<2371:R,R}
sn{a<574:R,s<3238:A,s>3608:A,R}
prx{s>3406:R,A}
gsm{a<2825:zc,s<779:xb,m<880:A,bm}
qns{a>3713:R,A}
jth{m<3374:gm,a>776:nxg,x<1068:nv,ck}
qqn{s>2266:lqh,jf}
nsl{s>3816:A,a<3396:A,R}
tt{x>3233:nbp,A}
jbs{x<1614:A,A}
xj{s>2368:R,a>2424:R,s>2314:R,A}
xv{s<1349:A,R}
qqf{x>1015:jnt,qmk}
ztb{x<772:R,A}
qnr{m<3763:A,m<3892:R,R}
nn{s>775:A,x<470:R,R}
bbd{m<2836:R,bsx}
nj{s<1347:xbg,a<2328:bcz,cx}
lrg{a>3925:R,A}
jd{x<3255:R,a>1048:A,a<984:A,A}
qql{x<857:A,R}
hfg{a>3587:R,s>3271:R,R}
spc{a>3762:R,a<3682:R,s>1915:A,A}
skg{s>2718:A,m<2395:A,s>2452:A,A}
mzg{s>258:R,x<1217:R,A}
bx{m<551:A,R}
lfb{x<1060:R,s<416:mzg,m<2306:sr,vd}
pv{a<3182:R,m<600:R,R}
fv{a>2031:A,a<1998:R,x<3117:R,R}
lqb{x<937:A,a<2879:R,m>152:A,A}
shz{a>3752:hpk,a<3647:R,A}
cxc{a<1094:R,a<1220:A,R}
th{m>2853:R,a>1789:cb,hgq}
thk{m<1092:A,a>2706:vq,A}
fj{x<730:A,s>180:R,m<3718:A,R}
gjh{s<3014:R,A}
bts{x>1336:dv,x<614:fpm,fxr}
bpc{m>2876:frp,cz}
fxx{x>1291:sv,a>821:cxc,jg}
kdt{x>1408:A,x<526:A,a>2495:A,R}
xnx{s<2569:tz,s<3106:gmn,A}
bnt{s>3072:kh,x>1617:A,s<2861:A,A}
nqb{m>787:bnt,mtl}
fgj{x<982:pld,m<3732:mkh,R}
vmp{a>377:A,s>3562:A,A}
mt{x<1659:R,x>1949:R,a<86:A,A}
jjr{a<3524:md,pk}
nf{a>3693:A,m>3721:A,x<1258:R,A}
kmf{m>2616:A,ch}
qqm{m<759:msm,m<1066:jx,s<1072:mbx,sx}
npf{s>3135:nx,a<607:A,a<735:A,R}
zfz{a<593:R,m<1173:R,m<1287:R,A}
qd{x>400:R,a>333:A,s<926:A,A}
md{m>3814:A,A}
dl{s>329:A,R}
xns{s<1829:A,spc}
mf{x>2942:R,x<1923:R,A}
pc{x>578:R,s<1159:R,s<1501:A,R}
js{x<1654:A,A}
ph{x<2673:A,a<3382:A,R}
mdc{x>3156:A,A}
kd{s>2236:A,a<2877:A,s>2169:A,A}
stv{x<1621:A,A}
ttf{s<2002:gv,fr}
fc{a>2299:R,x>1400:A,R}
llx{m<1282:hvf,R}
txx{m<1072:R,m>1107:R,A}
tpk{m>1055:A,a<3918:R,s<2145:R,R}
gz{s<1406:A,s>2050:R,A}
clq{s<1549:lz,R}
vtz{a>1307:R,R}
xh{x>1990:R,s>2577:A,R}
dxg{s<2121:R,m>1223:A,s>2179:A,R}
jj{m<3671:lk,s<3497:R,s>3723:xdd,hcc}
dlh{m>2519:R,a>2691:R,R}
zkf{m>3525:fmm,s>1899:jzm,fkp}
bcz{s<1775:R,nrs}
hnx{m>3695:R,qk}
frp{s<3328:A,bgs}
jb{x>3417:R,m<3694:R,R}
htj{s<903:dr,jvf}
qdm{x<2036:vj,s<1607:hh,flh}
xn{a<561:R,m<3597:A,m<3806:stv,R}
tlp{x<2194:dlh,A}
bm{m>977:R,s<1159:A,a>2980:A,R}
cr{m<444:R,a<2515:R,a<2529:R,A}
cq{s<1598:kx,x>2199:ds,a>2582:R,mcv}
jg{x>719:R,a<322:A,m>425:R,R}
kx{a<2578:R,m<2783:R,R}
rmb{m>1701:R,s>1741:R,R}
cx{s<1842:kjr,a<2456:A,s<2046:ts,kdt}
dh{a>1396:nqb,m<707:rx,a<911:lst,phl}
rkm{s>624:A,m<2304:R,a>2285:R,A}
dj{s<896:R,s>1021:A,A}
jfs{m>50:A,m<30:A,A}
bj{s>1901:xnj,s<1781:dm,R}
sdm{s<2101:A,s<2351:R,A}
cnb{a>669:gfj,xh}
jvb{x<1067:nnl,a<3877:R,x>1216:R,A}
td{x<1697:pv,m>565:st,bzm}
bzm{m<433:sdm,a<3012:R,A}
jtn{a<200:R,x>576:A,x>340:A,R}
rct{x>835:R,a>1372:A,A}
pbt{m>3727:R,a<3631:A,x<2581:R,R}
vtx{s<2246:txg,x>1434:cf,rrx}
hfs{m<3564:mvc,x>2387:xzp,s<1647:qcm,A}
ctc{s<3638:fc,R}
lvh{m>1112:A,m<1095:R,x<1917:A,R}
km{a>3774:A,m>3368:A,s<2096:R,A}
hg{s<2175:A,s>2402:lqb,hn}
mv{a<3791:A,a>3912:prx,R}
pq{s<395:R,s>768:A,m<1330:R,R}
mnv{a>3937:R,R}
cgn{s>1534:A,a<1782:A,A}
hfj{a<1252:A,m<3238:A,s>1189:R,A}
vgm{x>1551:A,s>726:A,A}
xdd{a>3845:A,m>3687:R,R}
mjl{s>3637:R,s<3353:nz,A}
kdd{x<3760:fmt,x<3872:A,m<1006:A,R}
sz{s<2416:A,a<3004:kt,R}
xjk{a<3328:R,a>3466:R,mdh}
tf{a<1495:lsl,a>2641:qqm,gn}
rcq{s<784:R,x<1815:A,A}
pqk{m<2915:vfv,m>3530:R,R}
lj{m<3698:sl,s<1487:fgj,xns}
bt{m>3937:A,R}
mjn{a<3737:A,a<3910:R,fmd}
bzn{m>1148:tg,a>2948:cvg,qht}
vj{s<2479:R,m>2514:R,s>3114:A,A}
pk{m<3785:R,m<3925:A,A}
rd{s<770:R,x<757:A,s<872:A,A}
hnc{x>1219:xn,gkm}
qk{x<894:R,m<3674:R,R}
nnl{s>432:A,R}
lhf{s>1783:A,m>2962:A,R}
rtk{x<590:R,x<975:R,a>3259:R,A}
zd{m<1376:zh,s<1580:R,lxg}
hs{s<1492:R,m>3665:R,A}
tg{s<2247:llx,zj}
rrx{m<3208:R,x>1262:R,x>1206:R,R}
fkp{a<1091:R,a>1372:A,hfj}
qq{s>2866:A,R}
txp{s<1757:nh,lnz}
qcf{s>3084:R,A}
chq{x<2326:A,s>790:A,x<2514:R,R}
zrk{x>2475:R,m<2352:R,A}
hc{s<3171:cnb,vzs}
pdv{s>1694:hc,htj}
mtl{a>2562:A,s<3387:nfs,a<1966:R,R}
sv{s<3288:R,x<1848:A,R}
cj{m>522:A,R}
nz{x<3106:R,a>3915:R,A}
vgd{x<207:R,m>2937:R,a<1846:A,A}
rzg{a>3598:hts,R}
dzk{s>2875:R,a<3368:A,R}
fmm{s>1385:A,a>817:A,jb}
kxh{x<512:A,x>704:R,A}
xm{x>3079:R,R}
rlx{x<2946:ssj,x<3395:ckk,m<1126:kdd,qsz}
cxm{m<1297:R,A}
xlm{m<3363:lrg,fdl}
qsz{a>2068:zq,R}
gh{x<2722:km,x>2801:R,m<3266:R,R}
vs{a>1978:bpc,x<2043:qpm,rk}
fpm{s>1180:vgd,x<258:R,A}
zb{s>3696:R,xg}
vfv{x>2448:R,m<1999:R,R}
jvf{a>1057:pgk,R}
zj{a<2790:xj,a>3352:A,x<1345:tqd,vts}
hkr{a>3732:A,x>711:R,A}
dsp{a>1078:nxj,m>975:A,A}
dx{x>2822:R,sn}
hd{s<2428:qt,m>3374:dhm,a<3823:qqf,bhl}
ftj{s>2579:dh,a<2113:ttf,m<892:mx,bzn}
mkh{m<3720:A,s>1274:A,R}
vl{x>1641:jls,x<807:A,s>913:ktq,cj}
crb{a<3406:A,R}
dq{m>3694:A,x<678:R,a>3755:A,scs}
qjt{a<3401:rtk,a>3454:ztb,A}
np{x<2860:A,R}
rv{x<763:A,A}
bf{s<1946:A,R}
pjk{s>618:djs,R}
vx{x>1751:A,R}
gfj{x>2306:R,R}
cvg{a<3628:qqn,rts}
dhg{m>1688:zbx,m>1551:A,hbv}
zqr{m<3749:A,x<987:R,a>3895:A,A}
sf{x<1168:qnr,x<1554:jjr,a>3519:dvz,ngc}
blz{x<2324:xnx,m>3634:zz,x>2570:gh,mjn}
zg{a>3363:A,m>3389:A,R}
lxg{s>1646:R,s<1608:A,s>1631:A,R}
vn{s<2757:zr,a<3910:A,a>3961:A,A}
dnl{s>1311:vx,a<3248:A,qm}
qm{a>3722:A,R}
jf{m<994:A,R}
lq{s<3179:A,jd}
lpq{s>3282:vmp,s>2926:A,s<2718:zfz,A}
ls{m<3734:pjh,m>3754:tc,s<3231:R,R}
zh{a<3367:A,s<1566:A,s<1637:A,A}
vf{s>1463:kk,s>1304:A,gx}
kh{x<1450:A,A}
rhv{s>3306:R,A}
pld{s>1209:A,a<3823:A,x<409:R,A}
lfr{x<3457:A,a<669:R,A}
zhs{s<3266:A,a>1355:A,x>2573:R,R}
dpn{m<2862:R,x>2400:A,R}
zl{x>2727:A,x>2192:A,A}
tz{s>1150:R,s>426:R,s<176:A,R}
krs{m<2856:pdv,htm}
tqd{a<2979:A,x<502:A,m<1339:A,A}
ch{x<2847:A,m>1957:R,R}
pqp{m<2055:dhg,m<2603:tp,xxz}
lh{x>1949:gf,a<3601:tdp,m<3635:hd,xmg}
hvf{a>2819:A,x<1830:R,R}
zvv{a<3953:R,R}
dzc{m>950:A,R}
mx{m>308:td,tvp}
xt{m>3743:R,a<3740:nf,R}
zqk{m<516:ft,m<883:bf,x<1639:R,R}
vq{s<2233:A,s<2350:A,A}
xb{m<903:R,R}
lqh{x<2091:R,A}
zr{a>3919:A,x>1276:A,x<690:A,R}
in{m<1457:kf,szv}
xg{m>2358:A,A}
rb{x>1307:R,s>2733:R,hv}
st{a<2850:A,vbf}
tbm{a>3715:kcd,m>2410:rlm,stn}
zjk{s<2242:hz,x<2870:gt,vtz}
shc{a<2332:R,A}
drb{a>3328:hfs,a<3240:jsr,ztx}
tq{m>2044:A,s>1419:R,m>1835:tj,R}
tvp{x<1506:hg,s<2159:lt,m<126:vvd,sz}
dtb{a>2641:R,A}
mbx{m>1293:fn,s<417:zn,rh}
ln{m>136:R,m<83:A,m<110:A,R}
gf{x>2871:cd,a>3436:blz,drb}
hbm{x<756:qns,x<1386:R,m<3894:R,bt}
jsr{m<3426:A,A}
bmb{m>3851:R,A}
nxg{x>1128:qcf,R}
dnz{s>3099:A,R}
qdk{x>1536:R,a<3185:R,xk}
jz{m>573:js,s<809:A,x>1381:vt,pc}
hgq{x>3568:A,A}
db{m<34:A,s<1263:A,A}
hts{a>3856:A,a<3741:A,A}
lsl{m<587:xr,zpx}
dv{a<1753:gdk,R}
mh{x>365:R,m<2574:R,s>3648:R,R}
cc{m<367:A,R}
zpx{a<835:jp,a>1137:spn,zcq}
hv{s<2493:A,s>2632:R,s<2564:A,R}
lnz{s>1813:R,s>1793:A,R}
xsg{x<1276:R,m<3419:jrb,A}
qmk{x<446:R,m<3220:hkr,dnz}
rr{a>3328:A,A}
{x=555,m=85,a=257,s=1864}
{x=561,m=159,a=473,s=524}
{x=1,m=1419,a=1233,s=675}
{x=1089,m=766,a=1101,s=2378}
{x=1010,m=662,a=1172,s=2016}
{x=2979,m=1043,a=169,s=1191}
{x=100,m=379,a=1959,s=1262}
{x=1782,m=2770,a=3430,s=344}
{x=3185,m=1618,a=156,s=13}
{x=834,m=666,a=1565,s=1106}
{x=2134,m=2304,a=222,s=2574}
{x=1138,m=953,a=296,s=1331}
{x=973,m=84,a=1449,s=1053}
{x=872,m=810,a=918,s=77}
{x=1796,m=994,a=441,s=3453}
{x=2566,m=1336,a=1625,s=72}
{x=596,m=208,a=380,s=1858}
{x=838,m=217,a=620,s=595}
{x=404,m=238,a=2051,s=62}
{x=1150,m=1729,a=227,s=1352}
{x=652,m=255,a=257,s=115}
{x=1,m=632,a=554,s=2230}
{x=1116,m=1646,a=2196,s=691}
{x=1498,m=59,a=503,s=546}
{x=1471,m=3369,a=692,s=190}
{x=1026,m=1795,a=593,s=549}
{x=50,m=1170,a=2057,s=751}
{x=74,m=562,a=926,s=348}
{x=2649,m=597,a=117,s=1675}
{x=651,m=1092,a=395,s=1332}
{x=56,m=1418,a=866,s=1866}
{x=232,m=1836,a=163,s=546}
{x=699,m=472,a=423,s=2767}
{x=150,m=2686,a=637,s=281}
{x=99,m=1703,a=237,s=74}
{x=136,m=3409,a=1103,s=1570}
{x=1409,m=185,a=2260,s=610}
{x=1637,m=2277,a=150,s=27}
{x=515,m=1482,a=298,s=3343}
{x=710,m=820,a=459,s=508}
{x=1337,m=776,a=67,s=607}
{x=1987,m=565,a=2309,s=1127}
{x=724,m=243,a=330,s=863}
{x=73,m=1092,a=790,s=523}
{x=2645,m=3064,a=866,s=389}
{x=895,m=2653,a=419,s=3558}
{x=2098,m=518,a=1856,s=3256}
{x=655,m=194,a=1988,s=1864}
{x=1433,m=1887,a=1790,s=1238}
{x=2053,m=535,a=337,s=958}
{x=244,m=1087,a=2686,s=901}
{x=1170,m=1684,a=411,s=1889}
{x=726,m=1934,a=1618,s=443}
{x=1332,m=1810,a=380,s=422}
{x=649,m=1852,a=1,s=2544}
{x=3146,m=437,a=2784,s=10}
{x=596,m=491,a=2173,s=327}
{x=88,m=207,a=48,s=444}
{x=452,m=40,a=39,s=2294}
{x=99,m=499,a=1671,s=101}
{x=1220,m=1274,a=376,s=297}
{x=2330,m=137,a=100,s=923}
{x=1581,m=687,a=2567,s=317}
{x=429,m=186,a=163,s=1936}
{x=797,m=2500,a=1780,s=2179}
{x=186,m=2375,a=2173,s=363}
{x=320,m=48,a=1853,s=982}
{x=1055,m=2256,a=41,s=914}
{x=527,m=1721,a=119,s=2447}
{x=75,m=126,a=1660,s=393}
{x=18,m=1989,a=10,s=129}
{x=1552,m=142,a=599,s=453}
{x=735,m=1193,a=365,s=2696}
{x=1489,m=6,a=932,s=92}
{x=212,m=2273,a=145,s=1142}
{x=1237,m=200,a=712,s=61}
{x=117,m=1395,a=3696,s=3625}
{x=1004,m=1531,a=1623,s=44}
{x=935,m=1000,a=1599,s=261}
{x=12,m=2868,a=43,s=803}
{x=1335,m=1559,a=2373,s=334}
{x=278,m=409,a=1180,s=948}
{x=1190,m=804,a=267,s=53}
{x=800,m=1523,a=866,s=286}
{x=160,m=3245,a=1135,s=477}
{x=1299,m=2492,a=970,s=105}
{x=2643,m=928,a=56,s=1661}
{x=214,m=2863,a=2692,s=348}
{x=178,m=1747,a=916,s=126}
{x=12,m=302,a=857,s=302}
{x=433,m=120,a=1018,s=3452}
{x=461,m=1048,a=196,s=1933}
{x=665,m=594,a=2435,s=8}
{x=1135,m=2290,a=259,s=741}
{x=886,m=560,a=881,s=278}
{x=1429,m=1225,a=245,s=269}
{x=3164,m=346,a=1088,s=3245}
{x=137,m=248,a=2201,s=451}
{x=190,m=175,a=1798,s=86}
{x=2769,m=2152,a=2079,s=960}
{x=932,m=184,a=52,s=131}
{x=815,m=2580,a=1474,s=3349}
{x=1257,m=1833,a=974,s=16}
{x=593,m=685,a=649,s=1583}
{x=756,m=2884,a=602,s=438}
{x=221,m=399,a=579,s=68}
{x=1368,m=1064,a=110,s=144}
{x=14,m=576,a=1284,s=1241}
{x=2791,m=689,a=76,s=171}
{x=281,m=216,a=264,s=635}
{x=270,m=235,a=1566,s=226}
{x=740,m=1145,a=111,s=415}
{x=194,m=2410,a=272,s=176}
{x=3068,m=259,a=164,s=222}
{x=594,m=191,a=439,s=12}
{x=26,m=256,a=278,s=1457}
{x=276,m=489,a=1479,s=2972}
{x=601,m=216,a=1040,s=1666}
{x=765,m=1805,a=485,s=304}
{x=1533,m=1953,a=658,s=10}
{x=4,m=11,a=766,s=89}
{x=483,m=1013,a=1281,s=1708}
{x=2284,m=49,a=55,s=150}
{x=558,m=254,a=20,s=22}
{x=441,m=330,a=148,s=1761}
{x=1956,m=422,a=2927,s=324}
{x=387,m=1026,a=568,s=3575}
{x=703,m=852,a=293,s=341}
{x=2347,m=258,a=1681,s=3083}
{x=142,m=451,a=450,s=228}
{x=83,m=2112,a=1696,s=60}
{x=2408,m=1812,a=228,s=815}
{x=31,m=952,a=125,s=550}
{x=55,m=2535,a=10,s=3172}
{x=303,m=264,a=161,s=525}
{x=140,m=979,a=548,s=2664}
{x=107,m=1615,a=111,s=2000}
{x=812,m=600,a=349,s=950}
{x=1900,m=724,a=1278,s=1492}
{x=370,m=1483,a=636,s=2186}
{x=314,m=711,a=548,s=1023}
{x=615,m=2745,a=1560,s=1901}
{x=875,m=1076,a=1257,s=129}
{x=1918,m=935,a=250,s=372}
{x=2814,m=894,a=397,s=619}
{x=1894,m=1200,a=1263,s=163}
{x=361,m=2982,a=1094,s=552}
{x=376,m=764,a=3825,s=1272}
{x=197,m=6,a=431,s=2883}
{x=916,m=258,a=1016,s=13}
{x=1550,m=255,a=420,s=193}
{x=2448,m=646,a=951,s=3294}
{x=51,m=47,a=1154,s=1582}
{x=780,m=1994,a=190,s=613}
{x=2125,m=2036,a=419,s=370}
{x=3530,m=653,a=112,s=2043}
{x=830,m=1481,a=1151,s=826}
{x=39,m=605,a=58,s=1708}
{x=605,m=918,a=2267,s=77}
{x=2308,m=436,a=753,s=820}
{x=2078,m=2190,a=460,s=2282}
{x=165,m=2188,a=460,s=416}
{x=2343,m=2285,a=718,s=478}
{x=139,m=578,a=867,s=3364}
{x=212,m=26,a=1613,s=393}
{x=134,m=318,a=237,s=1171}
{x=23,m=233,a=85,s=876}
{x=89,m=157,a=2290,s=1932}
{x=96,m=377,a=49,s=1760}
{x=1064,m=78,a=798,s=160}
{x=1983,m=800,a=19,s=1766}
{x=1157,m=1617,a=1270,s=425}
{x=145,m=1754,a=517,s=915}
{x=98,m=46,a=1762,s=1202}
{x=13,m=359,a=3358,s=348}
{x=1221,m=231,a=81,s=1975}
{x=1523,m=385,a=1671,s=1234}
{x=279,m=96,a=27,s=743}
{x=1718,m=1694,a=886,s=1199}
{x=1640,m=77,a=879,s=925}
{x=239,m=73,a=2374,s=349}
{x=1774,m=319,a=212,s=379}
{x=2525,m=693,a=1126,s=1932}
{x=1842,m=1318,a=714,s=2978}
{x=286,m=1087,a=916,s=70}
{x=61,m=205,a=15,s=2176}
{x=804,m=1845,a=2665,s=664}
{x=79,m=16,a=1376,s=2558}
{x=1018,m=1624,a=1798,s=150}
{x=2670,m=615,a=733,s=229}
{x=1221,m=2070,a=238,s=201}
{x=465,m=947,a=1251,s=1679}
{x=1161,m=1334,a=57,s=1731}
{x=239,m=388,a=42,s=2493}
{x=1540,m=3200,a=849,s=89}
{x=179,m=2098,a=724,s=144}
{x=1605,m=636,a=3162,s=247}
{x=1128,m=145,a=988,s=662}
{x=1716,m=1127,a=1354,s=1470}
{x=2411,m=92,a=482,s=1395}

View file

@ -0,0 +1,17 @@
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}

103
23/elixir/lib/days/day12.ex Normal file
View file

@ -0,0 +1,103 @@
defmodule AOC.Day12 do
use AOC.Day, day: 12, input: "example"
# use AOC.Day, day: 12
def parse_input(lines) do
Enum.map(lines, fn line ->
[conditions, groups] = String.split(line, " ")
conditions = String.to_charlist(conditions)
groups =
groups
|> String.split(",")
|> Enum.map(&String.to_integer/1)
{conditions, groups}
end)
end
def possible_unknown_spring_conditions(unknown_spring_count) when unknown_spring_count == 0,
do: [[]]
def possible_unknown_spring_conditions(unknown_spring_count) do
next_list = possible_unknown_spring_conditions(unknown_spring_count - 1)
Enum.map(next_list, &[true | &1]) ++ Enum.map(next_list, &[false | &1])
end
def apply_spring_configuration([], []), do: []
def apply_spring_configuration([?. | conditions], spring_configuration) do
[?. | apply_spring_configuration(conditions, spring_configuration)]
end
def apply_spring_configuration([?# | conditions], spring_configuration) do
[?# | apply_spring_configuration(conditions, spring_configuration)]
end
def apply_spring_configuration([?? | conditions], [true | spring_configuration]) do
[?. | apply_spring_configuration(conditions, spring_configuration)]
end
def apply_spring_configuration([?? | conditions], [false | spring_configuration]) do
[?# | apply_spring_configuration(conditions, spring_configuration)]
end
def valid_spring_conditions?(conditions, []) do
not Enum.member?(conditions, ?#)
end
def valid_spring_conditions?([?. | conditions], groups) do
valid_spring_conditions?(conditions, groups)
end
def valid_spring_conditions?(conditions, [count | groups]) do
{left, right} = Enum.split(conditions, count)
length(left) == count and Enum.all?(left, &(&1 == ?#)) and
(length(right) == 0 or hd(right) == ?.) and valid_spring_conditions?(right, groups)
end
def generate_arrangements(conditions, groups) do
unknown_spring_count = Enum.count(conditions, &(&1 == ??))
possible_unknown_spring_conditions(unknown_spring_count)
|> Stream.map(fn spring_configuration ->
apply_spring_configuration(conditions, spring_configuration)
end)
|> Stream.filter(fn possible_conditions ->
valid_spring_conditions?(possible_conditions, groups)
end)
# |> Enum.to_list()
end
def calculate_arrangement_counts(input, duplicates \\ 1) do
input
|> Enum.map(fn {conditions, groups} ->
conditions =
conditions
|> List.duplicate(duplicates)
|> Enum.intersperse(~c"?")
|> List.flatten()
groups =
groups
|> List.duplicate(duplicates)
|> List.flatten()
generate_arrangements(conditions, groups)
end)
|> Enum.map(&Enum.count/1)
|> Enum.sum()
end
def part1(input) do
calculate_arrangement_counts(input)
end
def part2(input) do
calculate_arrangement_counts(input, 5)
end
end
# NOTE TO SELF: memoize the brute force...

109
23/elixir/lib/days/day18.ex Normal file
View file

@ -0,0 +1,109 @@
defmodule AOC.Day18 do
use AOC.Day, day: 18
def parse_input(lines) do
Enum.map(lines, fn line ->
%{"direction" => direction, "length" => length, "color" => color} =
Regex.named_captures(
~r/^(?<direction>[UDLR]) (?<length>\d+) \(\#(?<color>[[:alnum:]]+)\)$/,
line
)
{String.to_atom(direction), String.to_integer(length), color}
end)
end
def dig_stretch({y, x}, direction, length) do
Enum.map(1..length, fn n ->
case direction do
:U -> {y - n, x}
:R -> {y, x + n}
:D -> {y + n, x}
:L -> {y, x - n}
end
end)
end
def execute_dig_plan(dig_plan) do
Enum.reduce(dig_plan, {%{{0, 0} => true}, {0, 0}}, fn {direction, length, _color},
{terrain, position} ->
stretch = dig_stretch(position, direction, length)
terrain =
Enum.reduce(stretch, terrain, fn new_position, acc ->
Map.put(acc, new_position, true)
end)
new_position = stretch |> Enum.reverse() |> hd()
{terrain, new_position}
end)
end
def print_terrain(terrain) do
max_y = terrain |> Enum.map(&elem(&1, 0)) |> Enum.map(&elem(&1, 0)) |> Enum.max()
max_x = terrain |> Enum.map(&elem(&1, 0)) |> Enum.map(&elem(&1, 1)) |> Enum.max()
min_y = terrain |> Enum.map(&elem(&1, 0)) |> Enum.map(&elem(&1, 0)) |> Enum.min()
min_x = terrain |> Enum.map(&elem(&1, 0)) |> Enum.map(&elem(&1, 1)) |> Enum.min()
Enum.each(min_y..max_y, fn y ->
Enum.map(min_x..max_x, fn x ->
case Map.fetch(terrain, {y, x}) do
:error -> "."
_ -> "#"
end
end)
|> Enum.join()
|> IO.puts()
end)
end
def find_interior_space(terrain) do
max_x = terrain |> Enum.map(&elem(&1, 0)) |> Enum.map(&elem(&1, 1)) |> Enum.max()
min_x = terrain |> Enum.map(&elem(&1, 0)) |> Enum.map(&elem(&1, 1)) |> Enum.min()
edge_x =
Enum.find(min_x..max_x, fn x ->
case Map.fetch(terrain, {2, x}) do
:error -> false
_ -> true
end
end)
edge_x + 1
end
def flood_fill_terrain(terrain) do
interior_x = find_interior_space(terrain)
flood_fill_terrain(terrain, {1, interior_x})
end
def flood_fill_terrain(terrain, {y, x}) do
[{y - 1, x}, {y, x + 1}, {y + 1, x}, {y, x - 1}]
|> Enum.reduce(terrain, fn next_position, acc ->
case Map.fetch(acc, next_position) do
:error ->
acc
|> Map.put(next_position, true)
|> flood_fill_terrain(next_position)
_ ->
acc
end
end)
end
def part1(dig_plan) do
execute_dig_plan(dig_plan)
|> elem(0)
# |> tap(&print_terrain/1)
|> flood_fill_terrain()
# |> tap(&print_terrain/1)
|> Enum.count()
end
def part2(_input) do
"TODO"
end
end

103
23/elixir/lib/days/day19.ex Normal file
View file

@ -0,0 +1,103 @@
defmodule AOC.Day19 do
# use AOC.Day, day: 19, input: "example"
use AOC.Day, day: 19
def string_to_action("R"), do: :reject
def string_to_action("A"), do: :accept
def string_to_action(workflow), do: {:workflow, workflow}
def parse_input(lines) do
[workflows, _, ratings] = Enum.chunk_by(lines, &(&1 == ""))
workflows =
Enum.map(workflows, fn line ->
%{"name" => name, "rules" => rules} =
Regex.named_captures(~r/^(?<name>[[:alpha:]]+)\{(?<rules>.*)\}$/, line)
rules =
rules
|> String.split(",")
|> Enum.map(fn rule ->
if String.contains?(rule, ":") do
{property, rest} = String.split_at(rule, 1)
{operation, rest} = String.split_at(rest, 1)
[count, action] = String.split(rest, ":")
action = string_to_action(action)
count = String.to_integer(count)
operation =
case operation do
"<" -> &Kernel.</2
">" -> &Kernel.>/2
end
fn part ->
value = Map.fetch!(part, property)
if operation.(value, count) do
action
else
:continue
end
end
else
action = string_to_action(rule)
fn _ -> action end
end
end)
{name, rules}
end)
|> Enum.into(%{})
ratings =
Enum.map(ratings, fn line ->
line
|> String.trim_leading("{")
|> String.trim_trailing("}")
|> String.split(",")
|> Enum.map(fn property ->
[name, value] = String.split(property, "=")
{name, String.to_integer(value)}
end)
|> Enum.into(%{})
end)
{workflows, ratings}
end
def perform_workflow([rule | tl], rating) do
case rule.(rating) do
:continue -> perform_workflow(tl, rating)
action -> action
end
end
def sort_rating(workflows, rating, current_workflow_name) do
workflow = Map.fetch!(workflows, current_workflow_name)
case perform_workflow(workflow, rating) do
{:workflow, next_workflow_name} ->
sort_rating(workflows, rating, next_workflow_name)
action ->
action
end
end
def part1({workflows, ratings}) do
Enum.filter(ratings, fn rating ->
sort_rating(workflows, rating, "in") == :accept
end)
|> Enum.map(fn x ->
Enum.map(x, &elem(&1, 1))
|> Enum.sum()
end)
|> Enum.sum()
end
def part2(_input) do
"TOD"
end
end