- commit
- 0cd28a12366c21b728a38257c6a46186223680e2
- parent
- a76fbf456609949af458fdc08fa7c435c7b48142
- Author
- Tobias Bengfort <tobias.bengfort@posteo.de>
- Date
- 2023-12-19 11:55
2023-12-19
Diffstat
A | 2023/19/input.txt | 710 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
A | 2023/19/solution.rs | 132 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
A | 2023/19/test.txt | 17 | +++++++++++++++++ |
3 files changed, 859 insertions, 0 deletions
diff --git a/2023/19/input.txt b/2023/19/input.txt
@@ -0,0 +1,710 @@ -1 1 brn{a>3342:A,R} -1 2 jls{a<887:A,s>1443:A,R} -1 3 pxk{m<2246:A,x>1998:R,a>170:R,R} -1 4 vl{s>2294:R,s>2057:A,A} -1 5 zjs{s>1912:A,a>838:R,x>620:A,A} -1 6 dzh{m>2601:rfn,a>3285:js,m<2527:scz,lt} -1 7 tr{x<500:R,s<1092:R,A} -1 8 sg{x<3252:kb,m<2286:A,mlx} -1 9 bcn{s>3614:hs,hnp} -1 10 nxl{s>346:R,m<3521:A,x>2963:R,A} -1 11 vk{a>2827:cgv,x<1369:txs,klk} -1 12 jph{m>2234:bdv,m<2211:hcg,a>3665:jzv,ks} -1 13 bp{s>1408:A,m<2281:A,A} -1 14 mn{m>2667:R,s<3064:R,A} -1 15 prs{s>2614:R,x>2262:R,m>2474:A,R} -1 16 grb{s<1246:A,x<2546:ddd,R} -1 17 nj{m>2749:dg,A} -1 18 qp{a>3378:A,x<2336:R,m<3213:R,xr} -1 19 kq{a>120:vm,a>72:cn,A} -1 20 jcg{m>2746:R,x<611:A,s>1050:R,A} -1 21 kb{a>3159:R,A} -1 22 gcz{s>845:cf,x<1421:dr,m>2297:cb,jph} -1 23 fs{s<1275:A,a>2135:A,a<1933:R,A} -1 24 mvb{m<1519:xcq,R} -1 25 lkh{s>2665:R,s>2539:R,A} -1 26 lzr{m>980:zcx,a<2062:A,a<2126:A,A} -1 27 sds{s<2263:lr,a>1624:A,s<2594:A,sfx} -1 28 qzz{a>2011:czj,R} -1 29 in{m>2048:npv,qmn} -1 30 nc{s<1052:R,s<1468:R,A} -1 31 zv{a>1998:R,x<2403:R,spt} -1 32 vfn{a>3746:A,m>2797:R,m>2774:A,A} -1 33 jp{m>2284:A,a>3722:R,m>2229:R,R} -1 34 sk{s<2821:kn,kfj} -1 35 pgb{m>359:pvm,zn} -1 36 ql{s<2431:fb,x<2455:vh,R} -1 37 rj{s<1283:qb,m>2800:nz,tp} -1 38 qps{m>242:A,a>3633:A,A} -1 39 sj{a>1665:R,a<877:fzq,A} -1 40 dc{a>3479:sgl,x<1417:A,R} -1 41 hmz{m<2567:A,s<3456:A,A} -1 42 lf{m<2572:R,R} -1 43 gj{m<2575:A,s>3294:tzv,s>2387:R,rqf} -1 44 km{a>793:R,A} -1 45 fz{a<2506:A,m>1196:A,a>2537:A,R} -1 46 nml{a>303:dj,a<110:zvt,m<2988:sl,R} -1 47 lzl{m<3174:A,m<3235:hq,qgr} -1 48 mx{m>1311:th,xtj} -1 49 md{s<2642:sr,m<657:sxs,m<876:np,A} -1 50 nz{x<3045:lqk,A} -1 51 kcn{m>2486:R,A} -1 52 qrq{a>2455:rrr,x<1402:mrm,hf} -1 53 dvl{a>808:R,s>1965:A,m<3110:R,A} -1 54 rfj{s<2379:A,m>3896:A,A} -1 55 mrt{m>2825:R,s<883:A,A} -1 56 lgp{m<3796:R,m<3924:R,A} -1 57 gr{m>1627:A,A} -1 58 msr{s>2172:lfb,rpq} -1 59 lm{m>3597:lb,s<2096:R,a>3112:R,A} -1 60 jmd{m>3270:ztq,nt} -1 61 qh{m<2303:lv,fk} -1 62 zr{s<3472:R,a>2636:A,A} -1 63 lh{a<3622:rxh,qn} -1 64 rfn{s<2236:mm,a<3135:jvh,fnx} -1 65 vbv{x>1976:qh,m>2209:jpg,jh} -1 66 gs{m>3877:R,A} -1 67 bmn{m<264:R,x<1479:R,s>804:A,R} -1 68 clc{a>2079:pk,ln} -1 69 jdd{x<2643:R,x<3119:R,s<885:A,A} -1 70 ht{s<443:R,s>730:A,x<2247:A,A} -1 71 hnp{m<1666:A,s>3471:R,s<3426:A,R} -1 72 qhj{x<3245:R,s>2513:A,mhq} -1 73 gk{x<2627:R,m>873:A,R} -1 74 cfl{x<3209:A,R} -1 75 fc{x<1594:vr,a<255:R,vt} -1 76 fxr{a<1985:ngk,s>2230:cg,zh} -1 77 hk{s<3179:slx,x<932:A,A} -1 78 slz{s>3267:A,A} -1 79 tdz{a<3600:A,x>1636:A,a<3742:R,A} -1 80 gv{s<918:A,s>990:A,s<950:A,A} -1 81 ngk{a>672:xb,s>2213:rm,fc} -1 82 fm{a<2660:qc,m<1678:tt,R} -1 83 ts{a<2026:xg,R} -1 84 fv{a>3074:R,xt} -1 85 cmp{s>3676:A,s>3548:A,A} -1 86 kgs{x>2016:A,m>3160:R,A} -1 87 rx{a>625:df,tsk} -1 88 znr{a<3387:A,A} -1 89 hmg{s<380:A,R} -1 90 xnh{s>2277:rlx,smv} -1 91 gdf{x>2191:lkh,s>2586:xtx,x>1119:kmd,A} -1 92 pjl{s<3552:R,a<3516:R,R} -1 93 cgv{a>3098:A,A} -1 94 fk{m<2388:cfl,R} -1 95 mt{a>2107:R,a>2053:R,m<3666:R,R} -1 96 fvf{s>3136:A,s<2954:R,m<3637:A,R} -1 97 zs{m<2196:gsh,x>2272:tf,a>3339:gcz,vk} -1 98 pvm{a<1940:R,s>3529:R,hcc} -1 99 qj{m>2119:qjg,fsb} -1 100 gh{x<1609:R,A} -1 101 fzq{m<3304:A,m<3428:A,a<346:R,A} -1 102 tv{a>2695:R,R} -1 103 jgn{a<2816:pt,s>3239:hbt,A} -1 104 qmz{m>2331:A,s>1823:R,A} -1 105 nxp{m>749:R,A} -1 106 fpz{x<1322:R,A} -1 107 xg{a>1898:R,a<1847:R,s>2053:A,A} -1 108 qv{a>142:R,R} -1 109 bmh{m>2858:R,m>2833:R,A} -1 110 nvx{a<1373:A,x>1979:R,a>1736:A,A} -1 111 fsb{a>984:A,m>2091:A,a<602:R,R} -1 112 lll{a<950:A,dkd} -1 113 sbj{s>1164:A,a>2143:R,x<1709:R,R} -1 114 lrf{x>2563:A,A} -1 115 jqt{a<3409:R,A} -1 116 sfp{x>2877:tx,x>2526:R,A} -1 117 fb{s>2348:R,a>2308:A,R} -1 118 chf{a<2619:A,m<2435:R,x>1094:A,R} -1 119 xf{x<1729:A,a<2135:A,R} -1 120 jz{s>1829:A,s<1124:R,s<1585:A,R} -1 121 kpn{s<2844:prs,a<3654:pjl,A} -1 122 hz{m<1894:R,a<340:R,m>1949:A,R} -1 123 ndk{x<2803:A,A} -1 124 jtm{x<1323:A,R} -1 125 thh{x<3100:A,s<338:R,R} -1 126 dgs{s>2821:km,x>3046:vl,cxm} -1 127 sfx{x>2576:R,A} -1 128 jvn{x>2299:A,x>1184:bj,klg} -1 129 fnx{x>1358:nj,m>2742:mbx,zst} -1 130 rv{m<288:A,m<427:R,x<2377:R,R} -1 131 lt{s>1905:njm,zzh} -1 132 krn{a<3220:mh,ht} -1 133 cb{x<1754:R,A} -1 134 sl{a<230:R,x<2565:A,A} -1 135 rqf{x<1500:A,a>2642:A,R} -1 136 dr{x<822:R,m<2270:gst,a>3718:rnz,jxh} -1 137 xr{a<2854:A,R} -1 138 tf{s>1067:pxh,s>710:sg,fqk} -1 139 kc{x<2265:A,R} -1 140 nxc{m<2273:R,m<2354:R,a>2596:R,R} -1 141 gst{s<397:A,m>2233:R,A} -1 142 rn{a<2631:jtm,m<3615:A,x<922:dt,jm} -1 143 xs{s<920:A,s>1257:A,m>3424:lgp,vsg} -1 144 lzp{m>2400:R,a>270:hlh,s>3370:pxk,R} -1 145 jvs{x<1828:qzh,m<2727:mxq,cv} -1 146 jj{m>3671:A,x>1061:A,R} -1 147 zp{s<1062:A,s>1478:R,a<2720:R,A} -1 148 tk{a>3566:fjx,a>3274:nmv,slz} -1 149 hqn{m>2561:A,x>3239:R,R} -1 150 vv{s>2841:A,A} -1 151 vrs{a<1806:npc,x<2207:xhz,x>3102:ts,lbg} -1 152 dj{x<1692:A,A} -1 153 ng{x<1352:jcg,m<2756:mhg,R} -1 154 lfc{s<2000:R,s<2311:A,s>2410:R,R} -1 155 tc{x>2349:zrk,x>1524:qkt,R} -1 156 dm{s<3686:brn,s<3861:thv,R} -1 157 vrb{s>423:R,A} -1 158 cxm{a>424:A,m>999:A,A} -1 159 dkd{s<2124:A,m<1574:R,x>2611:A,A} -1 160 sv{m<2777:mn,A} -1 161 bft{x<3237:A,a<3041:A,x<3543:A,R} -1 162 lfb{a<2807:fsn,tk} -1 163 ljp{x>1186:jg,lpm} -1 164 jm{x<1528:R,m>3709:A,A} -1 165 jvh{x<2455:hk,sv} -1 166 xq{s<1163:R,s>1782:A,R} -1 167 qn{s>850:R,a<3771:A,s>284:R,R} -1 168 jv{a>1232:mx,xhp} -1 169 rz{m>1023:jz,nxp} -1 170 gf{m<3732:A,A} -1 171 bj{s>2167:A,a<1487:R,R} -1 172 pp{s<1039:A,m<2559:A,x>1116:R,A} -1 173 kcp{x>3200:A,m<2485:tfx,x>2752:R,R} -1 174 hlh{s<3196:R,A} -1 175 kvp{x>786:mvb,bl} -1 176 bsm{a>1939:R,A} -1 177 ltx{m>3553:tn,s<3379:sj,hn} -1 178 ct{m>636:A,A} -1 179 lrc{a<1519:R,s<980:R,x>1152:A,R} -1 180 bz{s>2254:ghn,m<3138:sht,s>1909:fv,qp} -1 181 vt{x>2546:A,x<2214:R,s<1892:A,A} -1 182 sr{x<1300:A,R} -1 183 smv{m>1053:kvp,a<2499:tm,m>690:rs,jqj} -1 184 np{m>776:A,R} -1 185 pj{s>2781:R,x<3585:R,R} -1 186 ssr{x<1279:A,m>2468:R,x<1422:A,R} -1 187 cjn{x<1650:kj,x>1708:A,A} -1 188 pv{m<2990:lfc,m<3041:dtc,jfq} -1 189 pzl{m>1647:A,x<1879:R,m<1363:jr,nn} -1 190 zn{a<2404:R,a<2955:A,R} -1 191 qbn{s>3381:cmp,tdz} -1 192 jpg{m<2407:jsn,zgq} -1 193 zx{x<1007:ns,x>1267:A,s>1035:R,R} -1 194 clq{x<1849:chf,A} -1 195 dvr{s<2199:zs,sk} -1 196 kfk{s>3605:nh,hmz} -1 197 rm{x>1734:mp,a>339:gf,x>952:R,qv} -1 198 zlm{a<3342:A,s<1679:R,m<2645:A,A} -1 199 zd{x<2278:A,A} -1 200 qzn{x>1539:kcn,x<899:gmk,a>3677:mf,nxv} -1 201 spv{a>3553:A,x<796:R,A} -1 202 pq{a>1702:A,A} -1 203 jg{x>1636:R,s>883:A,A} -1 204 ln{m<2681:sz,x>1597:xh,fjl} -1 205 cm{m>2541:R,m>2529:R,R} -1 206 jh{x>840:cd,qj} -1 207 fjl{m<2771:A,R} -1 208 tm{m<654:ljp,rq} -1 209 jtv{s<981:A,R} -1 210 hh{a>578:A,m<2576:R,A} -1 211 jd{x>1334:zlm,s>1373:jq,m<2656:xmf,A} -1 212 vm{a<185:A,R} -1 213 ztd{s>1957:zfx,m<2530:vbv,a>1427:mj,nd} -1 214 nt{m>3040:R,x>718:R,A} -1 215 tn{m>3798:gcl,a<1797:st,fvf} -1 216 zh{s<2000:gh,lm} -1 217 gjp{a<2724:clq,mlh} -1 218 ps{m<3076:nml,s>2270:gq,a>217:lzl,kq} -1 219 ff{m<2438:R,m>2450:A,x<2100:R,R} -1 220 bt{x>2739:fg,a>921:hg,lz} -1 221 cvp{x>2263:A,R} -1 222 zst{a<3607:R,s>3076:rlv,A} -1 223 thv{m>1517:R,s<3794:A,R} -1 224 dg{x<2840:R,A} -1 225 tsk{s>964:kk,a<284:R,A} -1 226 mnt{a<3097:ff,s>3224:R,s<3050:A,spz} -1 227 nxv{m>2512:pp,ssr} -1 228 tfx{a<2681:A,m<2470:A,s>2617:A,R} -1 229 qkv{x<3136:A,s>1837:bk,a>2777:ms,R} -1 230 tcr{x<2657:ml,x<2916:jvz,R} -1 231 bf{a<340:R,m>838:A,A} -1 232 kp{m>3075:czp,pv} -1 233 rcb{a<3527:A,gxd} -1 234 njm{a>2813:pn,a>2694:db,gj} -1 235 bfn{a<3454:nc,a>3659:qnz,spv} -1 236 dl{s<860:nxl,x<2576:A,x>3419:R,A} -1 237 scz{s<2078:prt,a>2902:lx,m<2458:gjp,sc} -1 238 zrk{a<3119:A,m<2147:R,A} -1 239 jfq{a>944:A,R} -1 240 rg{a>3196:dkf,s<1001:thh,s>1451:qkv,spn} -1 241 vs{s<507:A,A} -1 242 hzh{a<1927:fdz,a>2326:kx,R} -1 243 xcq{s<1264:A,x<1418:A,A} -1 244 smd{a>2665:dm,x<1584:gr,x>1737:pzl,cjn} -1 245 ml{m>1562:R,R} -1 246 kl{s<3539:mz,zv} -1 247 jc{a<3448:R,m<458:qps,ct} -1 248 pbv{a>2642:R,x<2088:R,R} -1 249 pl{s>842:R,a>898:R,m<2348:A,R} -1 250 kj{a>1149:A,R} -1 251 qkj{x>755:A,x>264:R,m>2209:R,R} -1 252 jt{s<1011:lf,R} -1 253 fxx{s>1307:A,m>743:A,R} -1 254 qsp{m<428:A,s>603:A,a<3236:R,R} -1 255 mxq{x>3038:R,a<2129:R,a>2362:R,gv} -1 256 spt{x>3082:A,x>2723:R,a<1697:R,R} -1 257 vz{x>2056:ltx,m<3484:ds,nx} -1 258 cf{a<3691:R,a>3829:A,a<3760:jp,bp} -1 259 mh{a>2965:R,A} -1 260 nhf{a>1873:A,a<1699:A,a<1782:R,R} -1 261 kxc{x<3036:A,s>484:A,A} -1 262 jjb{a<1180:A,x>2202:R,s>2117:A,A} -1 263 lr{m<2641:R,A} -1 264 dsk{a>2376:A,m>3865:R,R} -1 265 lv{m>2171:R,A} -1 266 ddd{a>3297:A,s<1645:R,s>1987:R,A} -1 267 qnz{m>947:R,m>914:R,x>1098:A,A} -1 268 spz{s<3158:A,a<3217:R,R} -1 269 nh{m<2697:A,R} -1 270 fg{x<3208:R,A} -1 271 mr{s<2803:A,m>282:A,A} -1 272 vj{a<2886:A,m<2458:A,s<1064:A,A} -1 273 csb{s<2352:qkj,s>2383:R,s<2364:R,R} -1 274 jq{x<655:A,a<3265:R,R} -1 275 fj{m>2818:A,R} -1 276 mcj{a>1014:A,m<2170:R,s<2067:R,A} -1 277 pqh{x>2521:cch,m>1585:rdq,a>632:jgh,A} -1 278 pt{m<2485:R,x<2171:R,x<3169:A,A} -1 279 xhz{s<2286:gm,a>2005:A,m<3052:gln,A} -1 280 xtx{s>2721:R,A} -1 281 ddm{a<781:jtv,A} -1 282 jmk{s>2358:A,R} -1 283 bc{x<940:R,s>1238:R,R} -1 284 ztq{a>1950:A,A} -1 285 mrm{x<640:gtt,zx} -1 286 nmv{m>1076:R,x<2991:R,m>626:R,mr} -1 287 gtt{x>350:tr,x>199:cdj,s>1117:A,R} -1 288 fqk{x>3048:jqt,a<3367:R,s>284:R,A} -1 289 fr{s<1609:ddm,x>3355:pj,x>3181:qhj,dgs} -1 290 cd{x<1304:R,x>1558:R,A} -1 291 sxs{m<573:A,m<621:A,R} -1 292 th{x>3245:qhv,tcr} -1 293 lbg{m<3064:R,R} -1 294 hqq{a<3435:R,s<3410:A,A} -1 295 kpm{a<1405:R,m<3874:R,a>1632:R,A} -1 296 mlx{x>3700:R,s<915:A,x>3425:R,R} -1 297 sp{x>3196:A,s<311:A,x<2444:A,A} -1 298 jzv{m>2220:A,m<2216:A,R} -1 299 rlx{x<1120:cp,s<3205:dpm,m>935:smd,pgb} -1 300 klk{x>1851:A,x>1552:zp,a>2716:dnr,A} -1 301 fsn{a<2457:sfp,jk} -1 302 ghn{x<2652:A,x>3143:R,A} -1 303 gm{a<1988:R,A} -1 304 kn{s>2406:gdf,s<2291:gss,x<2256:csb,tvv} -1 305 mkp{a<1887:R,kxc} -1 306 gz{s<774:R,s<1102:R,x>2835:A,A} -1 307 dtc{x>2488:A,R} -1 308 kfj{m<2250:tc,m<2316:hqq,a>3189:qbn,pjj} -1 309 pfm{s<224:R,x>1157:vrb,A} -1 310 vd{m>3736:rfj,kg} -1 311 dt{m>3707:R,x<572:A,x<700:R,A} -1 312 zvp{x<1403:R,s>1054:R,m<2662:A,A} -1 313 xh{s>1392:R,x>2537:A,m<2750:A,A} -1 314 gkm{x>396:hnv,A} -1 315 pd{s<1996:A,x<2867:R,x<3439:A,A} -1 316 bk{a>2542:A,R} -1 317 fjx{x>2752:R,x>2469:gk,a>3813:cvp,vv} -1 318 fcn{m>2471:sds,s>2272:vlb,m<2202:klx,jvn} -1 319 jqj{x>1232:bvv,x>475:rf,xx} -1 320 pjj{a>2841:R,R} -1 321 mj{s>1093:clc,s<657:kst,jvs} -1 322 zvt{m<2975:R,s>2275:R,A} -1 323 ms{m<1447:A,A} -1 324 fd{x<2370:A,R} -1 325 rrr{x<1596:xs,a<3274:dl,lh} -1 326 lrd{a<1963:R,a>2013:A,m>2694:R,R} -1 327 zj{s<3209:zd,a>1906:sq,x<2414:kfk,tgv} -1 328 lk{s>3507:R,x>2530:nq,m<2457:fpz,R} -1 329 vr{x>572:A,s<1886:R,R} -1 330 ggg{s<2984:R,s<3128:A,R} -1 331 pdv{s>2449:A,s>2368:A,a<1746:R,A} -1 332 mhg{x<2744:R,m<2735:R,A} -1 333 klg{s<2159:R,m>2315:A,A} -1 334 rnz{m<2329:R,A} -1 335 ld{x>3451:A,a<1561:A,R} -1 336 bdv{m>2265:A,x>1794:A,a>3580:A,A} -1 337 rzx{m<2184:R,m<2308:A,R} -1 338 czn{m>584:A,rv} -1 339 kgr{m>3577:vs,m<3119:R,nvx} -1 340 fdz{a>1650:R,m<2604:A,R} -1 341 js{s<2242:qzn,fjt} -1 342 crj{m<227:R,s<2793:A,m>410:A,A} -1 343 pk{m<2745:R,R} -1 344 mz{s>3189:A,m>2232:A,R} -1 345 vrz{a>3637:slp,x>2160:hqn,s>2879:R,cm} -1 346 slp{x>1600:A,R} -1 347 lz{m>2616:A,hh} -1 348 hnv{m>1712:A,m>1568:R,a>648:R,R} -1 349 jgh{m<1485:R,s>1699:R,s<872:A,A} -1 350 zq{a<678:A,R} -1 351 gss{x<1901:rzx,x>2820:bft,a<3107:bqs,A} -1 352 nd{x<1588:rx,m>2720:rj,bt} -1 353 gc{m<943:R,m>1007:A,R} -1 354 gln{x<954:R,m>2958:A,m>2911:R,A} -1 355 qnv{m<1295:czn,a<549:rfl,a<790:pqh,lll} -1 356 kr{m>2434:R,R} -1 357 hq{s>1938:R,m<3214:R,A} -1 358 jsn{m<2299:R,a<1534:pl,x<1178:fs,sbj} -1 359 cdj{x>288:A,R} -1 360 kmd{m>2187:A,m>2106:R,R} -1 361 cp{m<1356:nnl,s>3389:bcn,a<1891:gkm,fm} -1 362 rfl{s<2240:A,m<1728:A,hz} -1 363 xb{s<2075:A,m<3736:qcg,x<2023:gs,kpm} -1 364 bl{m<1526:bsm,R} -1 365 fqt{x>693:R,A} -1 366 kx{s<365:R,x<2163:R,m<2600:A,A} -1 367 sqh{s>2420:A,a>2649:tv,m<2481:R,R} -1 368 nx{m>3762:pm,rn} -1 369 kk{m>2759:A,m<2677:A,x>730:R,R} -1 370 slx{x>1117:R,x>483:R,R} -1 371 sf{a>641:lk,lzp} -1 372 hbt{m>2498:A,a>2865:A,A} -1 373 czj{m<277:R,a>2101:R,a<2064:A,R} -1 374 rf{x<831:A,x<1053:R,A} -1 375 hf{x>2488:fqv,s<946:kgr,jls} -1 376 zvh{x>3760:A,s<1547:R,A} -1 377 pn{m<2566:zkc,a<3038:A,A} -1 378 zjc{s<3764:A,x>2644:A,A} -1 379 gns{m>823:R,m>777:R,R} -1 380 sd{s>2599:vz,s<1700:qrq,m>3290:fxr,mmt} -1 381 nnl{m>514:R,s<3404:crj,a>1590:R,fqt} -1 382 fl{a<2794:kfh,x<3266:rcb,s>1035:jc,znr} -1 383 qgr{a>337:A,A} -1 384 mhq{m>721:R,R} -1 385 vb{x<1268:A,x>1326:A,A} -1 386 npv{m>2886:sd,a<2542:ztd,m>2411:dzh,dvr} -1 387 rpq{m>815:rg,fl} -1 388 db{x<1494:A,A} -1 389 mmt{a>2140:bz,a>1253:vrs,a<514:ps,kp} -1 390 qjg{a>1444:R,x>463:R,A} -1 391 mlh{x>1576:kr,hx} -1 392 sm{m<2757:R,a<2141:R,a>2298:A,A} -1 393 bvv{s>1255:R,x<1719:bmn,A} -1 394 mbx{a>3513:vfn,m<2819:A,bmh} -1 395 qcg{x<2137:A,m<3509:R,m>3592:R,R} -1 396 qc{a>2250:R,x>639:A,A} -1 397 lb{x>2504:A,A} -1 398 mp{a<415:R,R} -1 399 cch{a<630:A,x>2677:R,A} -1 400 czp{s>2241:kgs,x<1422:zjs,m>3153:pmb,dvl} -1 401 gq{a<293:A,A} -1 402 xt{x<1922:A,x<3048:A,x>3585:A,R} -1 403 zzh{x<1597:bc,jt} -1 404 spn{x>3087:R,a>2707:A,fd} -1 405 vlb{m>2323:A,a>1028:pdv,x<2660:R,ndd} -1 406 zkc{a<3038:A,a<3172:R,s<2955:R,R} -1 407 nr{x<1951:R,vj} -1 408 cn{s>2060:A,A} -1 409 ndd{m<2189:R,s<2552:A,a<625:A,A} -1 410 fsg{s<489:A,s>691:A,s<594:R,R} -1 411 gmg{m>2283:A,A} -1 412 klx{m>2134:mcj,jjb} -1 413 cg{a>2687:vd,m<3644:ql,m>3779:dsk,rp} -1 414 xx{s<1226:qsp,a<3457:zbd,A} -1 415 hn{x<3059:zjc,a<1420:lcf,nxh} -1 416 nxh{m>3268:R,m<3061:R,x>3496:R,A} -1 417 qsm{a<3225:R,a<3253:A,A} -1 418 lgj{x>1089:gns,s<812:fsg,m>799:R,fxx} -1 419 zcx{m>1148:A,R} -1 420 npc{s<2193:A,R} -1 421 dpm{m>1055:hsq,x>1462:njj,m<457:pq,md} -1 422 rs{m>892:bfn,lgj} -1 423 qhv{x>3633:zvh,m<1679:ld,A} -1 424 dkf{s<781:A,s<1484:A,A} -1 425 zgq{s<784:A,s<1187:lrc,x>663:A,R} -1 426 qmn{x<2008:xnh,a<2168:jv,msr} -1 427 lcf{m>3120:A,R} -1 428 nq{s>3242:A,s<2983:R,R} -1 429 bqs{s<2248:A,a<2832:A,R} -1 430 cc{a>2485:R,R} -1 431 lx{s<2723:bm,m<2462:mnt,tz} -1 432 ls{x<649:A,R} -1 433 sln{x<2203:A,m>2647:A,x>2418:R,A} -1 434 rdq{a>698:A,a<603:R,s<2377:R,A} -1 435 prt{a>3003:zm,a<2760:pbv,nr} -1 436 ns{s<626:A,s>1295:R,R} -1 437 jr{a<1614:A,R} -1 438 pm{m>3874:R,m<3814:R,R} -1 439 hpg{m>2759:A,fh} -1 440 jxh{s<547:A,x>1116:R,R} -1 441 df{x<705:A,x<1278:A,m<2749:zvp,fj} -1 442 xhp{x>2916:fr,qnv} -1 443 dnr{x>1463:R,A} -1 444 sgl{x>2396:A,a<3778:A,s<1318:R,A} -1 445 kg{s>2376:A,a<3276:R,A} -1 446 scl{m>2865:R,x<2305:A,s<820:R,A} -1 447 ds{x>1336:ll,jmd} -1 448 sz{a<1833:A,a>1960:A,A} -1 449 fjt{m>2506:vrz,kpn} -1 450 znd{s<1960:A,a>1444:R,R} -1 451 hg{s<1136:sln,s>1670:A,R} -1 452 gmk{s>928:R,x<384:A,x>690:A,A} -1 453 txs{s<832:ls,a>2641:R,nxc} -1 454 tx{x<3524:R,a<2350:R,R} -1 455 cv{m<2804:sm,m<2840:mrt,x>2603:rc,scl} -1 456 tzv{a<2633:R,m>2586:A,a<2660:A,R} -1 457 qkt{a>3196:A,x>1972:A,s>3281:A,A} -1 458 hsq{m<1524:R,m<1852:A,x<1418:vb,R} -1 459 kv{s<1341:R,A} -1 460 mm{m>2787:dc,m>2723:ng,s<914:krn,jd} -1 461 qb{m>2820:gz,s<561:sp,R} -1 462 tt{m<1529:A,A} -1 463 vh{s<2541:R,s>2565:A,s>2553:R,R} -1 464 hs{a<2367:R,m<1602:R,x<684:A,A} -1 465 pmb{x>2897:R,R} -1 466 sht{a>3271:R,rcl} -1 467 rcl{a<2645:R,a>2957:R,R} -1 468 zfx{s<2783:fcn,a<1310:sf,m<2364:kl,zj} -1 469 zbd{a<2989:R,R} -1 470 mvc{m<808:znd,a<1515:ndk,m>1132:pd,gc} -1 471 pxh{a<3082:gmg,s>1605:qmz,kv} -1 472 st{x>2896:R,m>3700:R,R} -1 473 sc{a>2771:jgn,s>2920:zr,x>2029:kcp,sqh} -1 474 sq{a>2235:R,a>2057:A,m<2594:R,lrd} -1 475 zm{s>754:R,a<3168:lrf,x<2383:qsm,hmg} -1 476 fcc{x<2813:A,R} -1 477 ks{x<1866:R,x<2087:R,a>3475:R,R} -1 478 rp{m>3705:A,a<2282:mt,x>2043:cc,jj} -1 479 qzh{s<841:A,nhf} -1 480 gxd{s>1409:R,A} -1 481 hcc{a>2754:R,m<578:A,a<2348:R,R} -1 482 lqk{s<1698:R,s>1859:R,m>2841:R,R} -1 483 kfh{s>1352:A,A} -1 484 gcl{a>2466:A,R} -1 485 jk{a>2640:R,a>2561:fcc,fz} -1 486 gsh{m<2121:grb,jdd} -1 487 rq{x<1115:R,a<1002:bf,A} -1 488 jvz{s>2361:A,x>2818:R,A} -1 489 rc{a<2074:A,x<3176:A,x>3648:A,R} -1 490 rxh{s<1077:R,a>3482:A,m<3457:A,A} -1 491 ll{m<3123:A,xf} -1 492 fh{s<162:A,m>2702:A,R} -1 493 tgv{m>2662:R,m>2514:R,A} -1 494 fqv{m>3293:A,a<1586:R,R} -1 495 tvv{m>2198:R,a<3307:jmk,A} -1 496 hcg{m>2202:A,R} -1 497 rlv{a>3748:R,a>3685:R,m>2670:A,R} -1 498 mf{a>3816:R,xq} -1 499 hx{a<2807:R,s>3296:R,m>2437:A,R} -1 500 vsg{a<3230:A,s<1116:R,A} -1 501 tp{m>2765:zq,a>516:A,R} -1 502 kst{m<2671:hzh,x<2530:pfm,s>365:mkp,hpg} -1 503 bm{x<1908:R,R} -1 504 njj{a<1976:R,s>2758:ggg,s>2490:R,R} -1 505 tz{a<3156:kc,s>3280:R,R} -1 506 xmf{s>1127:A,a<3411:R,R} -1 507 lpm{s>1361:R,R} -1 508 xtj{a<1705:mvc,m<505:qzz,a<1868:rz,lzr} -1 509 nn{s<3625:R,a<1356:R,m>1462:A,A} -1 510 -1 511 {x=1065,m=825,a=1002,s=2038} -1 512 {x=1108,m=1570,a=2715,s=995} -1 513 {x=787,m=2716,a=64,s=918} -1 514 {x=131,m=39,a=821,s=527} -1 515 {x=390,m=1630,a=2,s=3328} -1 516 {x=843,m=446,a=2851,s=561} -1 517 {x=567,m=496,a=38,s=2250} -1 518 {x=127,m=313,a=2172,s=1319} -1 519 {x=494,m=130,a=875,s=563} -1 520 {x=948,m=1634,a=2547,s=29} -1 521 {x=833,m=431,a=2134,s=2478} -1 522 {x=898,m=2498,a=547,s=30} -1 523 {x=348,m=1293,a=846,s=851} -1 524 {x=234,m=1673,a=344,s=1551} -1 525 {x=1219,m=939,a=619,s=1537} -1 526 {x=1972,m=76,a=488,s=288} -1 527 {x=2525,m=850,a=660,s=1964} -1 528 {x=1878,m=2205,a=1535,s=986} -1 529 {x=1260,m=905,a=550,s=1618} -1 530 {x=365,m=885,a=3496,s=2405} -1 531 {x=83,m=98,a=1096,s=2337} -1 532 {x=3972,m=340,a=2261,s=6} -1 533 {x=1313,m=709,a=1825,s=5} -1 534 {x=854,m=1952,a=75,s=2149} -1 535 {x=490,m=8,a=54,s=1102} -1 536 {x=158,m=1191,a=443,s=419} -1 537 {x=47,m=641,a=1084,s=82} -1 538 {x=738,m=184,a=781,s=1066} -1 539 {x=556,m=48,a=1233,s=284} -1 540 {x=696,m=3569,a=1224,s=3026} -1 541 {x=1500,m=2037,a=352,s=400} -1 542 {x=337,m=27,a=695,s=1827} -1 543 {x=96,m=1276,a=999,s=868} -1 544 {x=524,m=1542,a=465,s=132} -1 545 {x=2352,m=50,a=1,s=1392} -1 546 {x=2604,m=25,a=549,s=395} -1 547 {x=211,m=1747,a=212,s=293} -1 548 {x=2099,m=494,a=3307,s=152} -1 549 {x=1980,m=413,a=48,s=95} -1 550 {x=1627,m=828,a=1046,s=59} -1 551 {x=471,m=1752,a=66,s=418} -1 552 {x=43,m=495,a=89,s=3032} -1 553 {x=577,m=1034,a=392,s=584} -1 554 {x=1060,m=1579,a=1416,s=30} -1 555 {x=2493,m=424,a=611,s=924} -1 556 {x=1703,m=965,a=228,s=1780} -1 557 {x=2339,m=143,a=2647,s=79} -1 558 {x=2677,m=1682,a=1922,s=1127} -1 559 {x=253,m=1493,a=360,s=1183} -1 560 {x=344,m=1220,a=964,s=1781} -1 561 {x=751,m=2234,a=1272,s=2060} -1 562 {x=415,m=1831,a=1080,s=1463} -1 563 {x=3565,m=1951,a=2107,s=531} -1 564 {x=979,m=762,a=2641,s=1010} -1 565 {x=503,m=603,a=271,s=301} -1 566 {x=127,m=353,a=887,s=502} -1 567 {x=301,m=2968,a=1046,s=2802} -1 568 {x=2,m=1303,a=1192,s=2492} -1 569 {x=163,m=18,a=911,s=623} -1 570 {x=538,m=21,a=218,s=1679} -1 571 {x=281,m=1425,a=2271,s=98} -1 572 {x=925,m=635,a=1166,s=1269} -1 573 {x=2589,m=1375,a=84,s=2312} -1 574 {x=681,m=855,a=2330,s=499} -1 575 {x=937,m=431,a=60,s=449} -1 576 {x=449,m=20,a=566,s=366} -1 577 {x=175,m=2031,a=20,s=2128} -1 578 {x=3776,m=1006,a=2109,s=1698} -1 579 {x=2729,m=707,a=1155,s=597} -1 580 {x=2794,m=2123,a=39,s=556} -1 581 {x=274,m=818,a=2552,s=725} -1 582 {x=1187,m=521,a=2668,s=2039} -1 583 {x=322,m=630,a=2322,s=924} -1 584 {x=325,m=1615,a=1342,s=191} -1 585 {x=2330,m=3095,a=968,s=622} -1 586 {x=386,m=553,a=2856,s=2324} -1 587 {x=1429,m=2482,a=293,s=178} -1 588 {x=1730,m=277,a=103,s=168} -1 589 {x=863,m=91,a=1562,s=28} -1 590 {x=2747,m=62,a=1326,s=520} -1 591 {x=572,m=216,a=161,s=405} -1 592 {x=1341,m=215,a=1349,s=708} -1 593 {x=2276,m=1408,a=384,s=1903} -1 594 {x=54,m=781,a=944,s=1124} -1 595 {x=779,m=1799,a=1951,s=3282} -1 596 {x=1471,m=2503,a=90,s=570} -1 597 {x=35,m=2218,a=66,s=402} -1 598 {x=767,m=21,a=3169,s=3129} -1 599 {x=886,m=292,a=3069,s=1774} -1 600 {x=1144,m=60,a=54,s=899} -1 601 {x=488,m=637,a=11,s=507} -1 602 {x=1769,m=339,a=1521,s=978} -1 603 {x=634,m=300,a=438,s=1819} -1 604 {x=584,m=113,a=1324,s=889} -1 605 {x=872,m=119,a=1941,s=804} -1 606 {x=25,m=231,a=488,s=1696} -1 607 {x=267,m=257,a=798,s=203} -1 608 {x=63,m=27,a=2067,s=3378} -1 609 {x=46,m=1007,a=427,s=3493} -1 610 {x=748,m=735,a=1429,s=49} -1 611 {x=1767,m=177,a=64,s=1281} -1 612 {x=547,m=95,a=685,s=48} -1 613 {x=824,m=610,a=215,s=244} -1 614 {x=447,m=1137,a=2254,s=834} -1 615 {x=269,m=750,a=1078,s=1787} -1 616 {x=2830,m=138,a=1009,s=153} -1 617 {x=3005,m=523,a=804,s=181} -1 618 {x=328,m=2325,a=2498,s=1919} -1 619 {x=690,m=42,a=3749,s=1000} -1 620 {x=1348,m=332,a=3277,s=1621} -1 621 {x=259,m=414,a=3105,s=1851} -1 622 {x=350,m=2033,a=185,s=917} -1 623 {x=371,m=872,a=2002,s=33} -1 624 {x=408,m=486,a=40,s=1297} -1 625 {x=105,m=201,a=914,s=512} -1 626 {x=412,m=1559,a=1124,s=385} -1 627 {x=2286,m=863,a=870,s=1639} -1 628 {x=326,m=3217,a=1704,s=152} -1 629 {x=2590,m=2552,a=1053,s=767} -1 630 {x=1969,m=1574,a=698,s=1802} -1 631 {x=144,m=2271,a=2230,s=1154} -1 632 {x=163,m=2394,a=2393,s=2536} -1 633 {x=111,m=55,a=66,s=1050} -1 634 {x=2419,m=567,a=365,s=2870} -1 635 {x=675,m=2524,a=1051,s=1230} -1 636 {x=289,m=21,a=413,s=309} -1 637 {x=3093,m=337,a=623,s=106} -1 638 {x=608,m=64,a=1961,s=354} -1 639 {x=501,m=792,a=69,s=25} -1 640 {x=2296,m=214,a=92,s=748} -1 641 {x=349,m=861,a=872,s=15} -1 642 {x=3303,m=3688,a=217,s=104} -1 643 {x=1973,m=152,a=825,s=573} -1 644 {x=2342,m=2066,a=205,s=72} -1 645 {x=1989,m=55,a=32,s=1454} -1 646 {x=2325,m=2275,a=25,s=42} -1 647 {x=229,m=117,a=2282,s=1426} -1 648 {x=1161,m=1640,a=1337,s=52} -1 649 {x=20,m=68,a=2647,s=312} -1 650 {x=772,m=1009,a=473,s=1476} -1 651 {x=1096,m=443,a=303,s=50} -1 652 {x=856,m=3787,a=1871,s=666} -1 653 {x=1736,m=1722,a=171,s=3004} -1 654 {x=896,m=665,a=1633,s=117} -1 655 {x=167,m=543,a=928,s=554} -1 656 {x=56,m=2365,a=642,s=974} -1 657 {x=36,m=53,a=1328,s=17} -1 658 {x=242,m=1517,a=1178,s=458} -1 659 {x=3863,m=539,a=2501,s=748} -1 660 {x=389,m=936,a=938,s=2437} -1 661 {x=62,m=2277,a=1906,s=2242} -1 662 {x=950,m=410,a=297,s=476} -1 663 {x=3599,m=813,a=12,s=1348} -1 664 {x=210,m=2617,a=86,s=3035} -1 665 {x=528,m=57,a=858,s=424} -1 666 {x=1287,m=880,a=2338,s=138} -1 667 {x=59,m=769,a=631,s=2770} -1 668 {x=984,m=3556,a=2484,s=483} -1 669 {x=908,m=2431,a=282,s=601} -1 670 {x=608,m=299,a=1085,s=504} -1 671 {x=3333,m=454,a=1227,s=129} -1 672 {x=993,m=952,a=860,s=161} -1 673 {x=296,m=935,a=967,s=985} -1 674 {x=2984,m=7,a=1728,s=738} -1 675 {x=3,m=2257,a=1460,s=1664} -1 676 {x=56,m=869,a=188,s=2882} -1 677 {x=1686,m=295,a=10,s=2973} -1 678 {x=38,m=517,a=1597,s=935} -1 679 {x=885,m=1334,a=2046,s=1128} -1 680 {x=2131,m=970,a=909,s=419} -1 681 {x=98,m=1162,a=1478,s=750} -1 682 {x=161,m=1484,a=1036,s=423} -1 683 {x=1801,m=917,a=253,s=415} -1 684 {x=3460,m=471,a=1183,s=2267} -1 685 {x=2025,m=197,a=963,s=46} -1 686 {x=133,m=283,a=2460,s=214} -1 687 {x=339,m=624,a=1371,s=1042} -1 688 {x=660,m=685,a=98,s=307} -1 689 {x=1021,m=959,a=1197,s=287} -1 690 {x=2882,m=939,a=1095,s=284} -1 691 {x=474,m=33,a=79,s=817} -1 692 {x=317,m=385,a=1461,s=369} -1 693 {x=890,m=3413,a=478,s=1210} -1 694 {x=20,m=481,a=151,s=1095} -1 695 {x=231,m=517,a=1915,s=551} -1 696 {x=532,m=898,a=687,s=1302} -1 697 {x=7,m=415,a=114,s=461} -1 698 {x=285,m=353,a=2247,s=91} -1 699 {x=510,m=635,a=222,s=906} -1 700 {x=567,m=426,a=1318,s=597} -1 701 {x=1779,m=518,a=3349,s=441} -1 702 {x=513,m=1636,a=2020,s=203} -1 703 {x=1553,m=1136,a=738,s=137} -1 704 {x=1195,m=320,a=692,s=3486} -1 705 {x=1692,m=1715,a=1541,s=1538} -1 706 {x=128,m=492,a=104,s=682} -1 707 {x=157,m=960,a=1801,s=282} -1 708 {x=301,m=1944,a=3292,s=362} -1 709 {x=222,m=738,a=1020,s=479} -1 710 {x=12,m=762,a=1286,s=401}
diff --git a/2023/19/solution.rs b/2023/19/solution.rs
@@ -0,0 +1,132 @@ -1 1 use std::collections::HashMap; -1 2 -1 3 #[path = "../lib.rs"] -1 4 mod lib; -1 5 -1 6 #[derive(Debug)] -1 7 enum Rule { -1 8 Less(usize, u64, String), -1 9 More(usize, u64, String), -1 10 Always(String), -1 11 } -1 12 -1 13 fn get_cat(s: &str) -> Option<usize> { -1 14 return match s { -1 15 "x" => Some(0), -1 16 "m" => Some(1), -1 17 "a" => Some(2), -1 18 "s" => Some(3), -1 19 _ => None, -1 20 }; -1 21 } -1 22 -1 23 fn parse_rule(s: &str) -> Option<Rule> { -1 24 if let Some((c, rest)) = s.split_once('>') { -1 25 let (k, target) = rest.split_once(':')?; -1 26 return Some(Rule::More( -1 27 get_cat(c)?, -1 28 k.parse().ok()?, -1 29 target.to_string(), -1 30 )); -1 31 } else if let Some((c, rest)) = s.split_once('<') { -1 32 let (k, target) = rest.split_once(':')?; -1 33 return Some(Rule::Less( -1 34 get_cat(c)?, -1 35 k.parse().ok()?, -1 36 target.to_string(), -1 37 )); -1 38 } else { -1 39 return Some(Rule::Always(s.to_string())); -1 40 } -1 41 } -1 42 -1 43 fn parse_workflow(line: &str, workflows: &mut HashMap<String, Vec<Rule>>) -> Option<()> { -1 44 let mut rules = vec![]; -1 45 let (name, rules_s) = line.strip_suffix('}')?.split_once('{')?; -1 46 for s in rules_s.split(',') { -1 47 rules.push(parse_rule(s)?); -1 48 } -1 49 workflows.insert(name.to_string(), rules); -1 50 return Some(()); -1 51 } -1 52 -1 53 fn parse_part(line: &str) -> Option<[[u64; 2]; 4]> { -1 54 let mut result = [[0, 0]; 4]; -1 55 for s in line.strip_prefix('{')?.strip_suffix('}')?.split(',') { -1 56 let (c, k) = s.split_once('=')?; -1 57 let kk = k.parse().ok()?; -1 58 result[get_cat(c)?] = [kk, kk + 1]; -1 59 } -1 60 return Some(result); -1 61 } -1 62 -1 63 fn apply_workflows(part: [[u64; 2]; 4], workflows: &HashMap<String, Vec<Rule>>, name: &str) -> u64 { -1 64 if name == "A" { -1 65 return part.iter().map(|[a, b]| b - a).product(); -1 66 } else if name == "R" { -1 67 return 0; -1 68 } -1 69 -1 70 let mut sum = 0; -1 71 let mut mpart = part.clone(); -1 72 let workflow = workflows.get(name).unwrap(); -1 73 -1 74 for rule in workflow.iter() { -1 75 match rule { -1 76 Rule::Less(c, k, target) => { -1 77 if mpart[*c][0] < *k { -1 78 if mpart[*c][1] <= *k { -1 79 sum += apply_workflows(mpart, workflows, target); -1 80 return sum; -1 81 } else { -1 82 let mut p = mpart.clone(); -1 83 p[*c][1] = *k; -1 84 mpart[*c][0] = *k; -1 85 sum += apply_workflows(p, workflows, target); -1 86 } -1 87 } -1 88 } -1 89 Rule::More(c, k, target) => { -1 90 if mpart[*c][1] > *k { -1 91 if mpart[*c][0] >= *k { -1 92 sum += apply_workflows(mpart, workflows, target); -1 93 return sum; -1 94 } else { -1 95 let mut p = mpart.clone(); -1 96 p[*c][0] = *k + 1; -1 97 mpart[*c][1] = *k + 1; -1 98 sum += apply_workflows(p, workflows, target); -1 99 } -1 100 } -1 101 } -1 102 Rule::Always(target) => { -1 103 sum += apply_workflows(mpart, workflows, target); -1 104 return sum; -1 105 } -1 106 } -1 107 } -1 108 -1 109 unreachable!(); -1 110 } -1 111 -1 112 fn main() { -1 113 let mut workflows = HashMap::new(); -1 114 let mut rules_done = false; -1 115 let mut sum = 0; -1 116 -1 117 for line in lib::iter_input() { -1 118 if rules_done { -1 119 let part = parse_part(&line).unwrap(); -1 120 if apply_workflows(part, &workflows, "in") != 0 { -1 121 sum += part.iter().map(|[a, _]| a).sum::<u64>(); -1 122 } -1 123 } else if line == "" { -1 124 rules_done = true; -1 125 } else { -1 126 parse_workflow(&line, &mut workflows).unwrap(); -1 127 } -1 128 } -1 129 -1 130 println!("part1: {}", sum); -1 131 println!("part2: {}", apply_workflows([[1, 4001]; 4], &workflows, "in")); -1 132 }
diff --git a/2023/19/test.txt b/2023/19/test.txt
@@ -0,0 +1,17 @@ -1 1 px{a<2006:qkq,m>2090:A,rfg} -1 2 pv{a>1716:R,A} -1 3 lnx{m>1548:A,A} -1 4 rfg{s<537:gd,x>2440:R,A} -1 5 qs{s>3448:A,lnx} -1 6 qkq{x<1416:A,crn} -1 7 crn{x>2662:A,R} -1 8 in{s<1351:px,qqz} -1 9 qqz{s>2770:qs,m<1801:hdj,R} -1 10 gd{a>3333:R,R} -1 11 hdj{m>838:A,pv} -1 12 -1 13 {x=787,m=2655,a=1222,s=2876} -1 14 {x=1679,m=44,a=2067,s=496} -1 15 {x=2036,m=264,a=79,s=2244} -1 16 {x=2461,m=1339,a=466,s=291} -1 17 {x=2127,m=1623,a=2188,s=1013}