diff --git a/19/input.txt b/19/input.txt new file mode 100644 index 0000000..055652e --- /dev/null +++ b/19/input.txt @@ -0,0 +1,733 @@ +vvr{a>520:jq,s<3691:R,a>325:A,R} +dmg{s<1730:A,x<3350:R,R} +ctv{s<3757:R,R} +xhh{a<3542:A,A} +cpx{m<1847:A,R} +qqg{a<911:nf,lpf} +mnr{a>1914:A,x>752:A,A} +ktx{m<1153:R,A} +mkz{a>2959:A,a<2378:rlr,R} +br{x>2184:A,s>3693:A,s>3530:R,A} +fpk{a<2465:A,a>2524:A,A} +ffs{a>536:A,a>328:A,s>3058:R,R} +zcl{m>2554:pz,a>2167:gr,qs} +lpf{a>1643:hc,x>3626:xxp,mth} +vl{x>2958:R,R} +nrs{m>2481:R,x>3117:A,m<1978:R,R} +sv{m<1749:R,rl} +tv{x<219:R,a<1429:A,m<2884:R,A} +nl{m>1827:A,m>1345:A,x>2928:A,R} +vj{x>439:A,s<2318:A,a<806:A,R} +kd{s>767:jhv,x<1090:bk,A} +ts{s<3148:rxp,a>1365:lr,bkt} +bl{m<2736:A,s<571:R,dv} +brp{a<923:R,a<1279:R,a<1574:A,R} +bgt{a<1575:R,s<3923:fbv,s<3953:A,pdj} +djn{s>322:A,m<1056:A,a<1988:A,A} +rqq{s<3130:A,m<2434:A,A} +lz{x>3622:A,x>3296:qt,s>3010:R,A} +pts{x>1771:R,R} +kpp{s>1217:A,s<1204:R,R} +bnq{s>3121:A,x>490:A,a>2141:R,A} +hxf{s>2885:R,a>1520:A,s>2880:A,A} +khd{s>3265:bc,a<1211:ffs,R} +gv{m>3417:A,a>2938:R,m<3354:A,R} +lk{m<2377:xk,s<3132:R,A} +cs{s<960:A,x>3655:R,R} +mh{a>1468:A,s>2418:R,x<508:vj,vgr} +cnt{x<766:R,x>1060:R,A} +zt{a>3624:R,x<1504:R,s>271:A,A} +fpt{m<1199:bnq,x<958:R,x<1153:A,mrg} +jkq{a>1783:qnp,a>1626:A,R} +fnc{x<3093:fzx,x>3571:cp,m<3233:zpz,xxl} +kmg{m<1640:lvj,x>2199:xv,R} +lkm{m>722:xbm,R} +pgd{s<2128:brp,jj} +shm{m>919:R,s<3189:R,R} +xfr{m>761:R,s>2748:A,m>323:A,R} +rgl{a<1202:R,R} +qgd{a<746:hzp,rgl} +vkj{m<2086:R,x>850:A,a>3710:R,R} +cm{s<1657:R,R} +lvj{s>2173:R,a>747:R,A} +vz{a<2716:A,R} +nsm{m<2126:A,a>1310:A,x>2771:A,A} +pk{x>2292:A,A} +jm{s<363:A,A} +hp{a>2641:trf,mh} +nlr{s>2969:A,x>1304:A,A} +hx{m<3078:R,R} +pjv{x>253:grc,x<97:R,x<193:A,hz} +xrb{x>3443:kn,A} +tx{a>1279:A,dcf} +qjb{m>1551:qfg,qrq} +ftr{s>2830:nmq,td} +jvn{s>3843:R,A} +gsz{s<2923:rfs,ts} +xhx{x<2340:lj,A} +gbn{m<882:A,A} +qvl{a>1697:hr,a<1466:A,a<1601:A,ll} +jh{m>173:R,s<564:A,s<797:A,R} +vgf{x>497:A,x>320:A,R} +lgk{a>3109:R,A} +lbx{x>1134:A,R} +nxp{s>840:A,R} +gkh{m<545:A,m>610:A,m>569:A,R} +zpz{x<3332:jk,m>2774:A,R} +sqt{x<399:R,m<3088:A,s<477:A,A} +mpf{a>3316:A,A} +ckv{m<3213:A,a<842:A,s<2396:A,A} +lpq{s<2685:A,A} +fg{m>3358:R,x>3763:A,R} +cf{a>1252:A,x>346:A,x>212:A,R} +bcv{s>3187:cxd,x>2785:R,x>2752:nsm,zn} +pq{x>2944:A,R} +vc{x>2389:cqz,m>1620:bd,bdr} +jgb{x<2002:A,R} +nfb{s<2319:A,a>3483:hj,m>1700:R,A} +zh{m<664:A,s<2311:A,A} +hrs{a<340:R,x>1096:A,R} +stl{a<1757:cfp,qrl} +lg{x<2142:R,m>1798:bx,x>3110:rg,A} +nrd{x<2026:qh,m>1735:mrk,pn} +cmk{s>292:A,A} +szf{a<996:A,x>1757:bqq,s<1243:R,A} +tg{a>989:A,s<936:R,s<1091:R,R} +ktl{x<2556:R,x<2639:A,R} +nb{m<3571:A,s>1051:R,R} +vx{a<2247:A,x<2460:A,a<2331:R,A} +in{s<2569:qj,csb} +rvc{m<1417:A,s>2822:A,m>3074:R,A} +hcv{a<3271:A,A} +blq{m<1523:mz,rq} +dvv{m<1558:rx,rn} +pdj{m>1764:R,s>3971:R,R} +tzf{s>3567:R,m<631:A,a<3273:R,R} +vvp{a<2271:nrc,m>2025:ls,a>3004:znl,ftr} +dx{s>3049:qdv,m>1362:hpq,m<759:A,xrl} +fgb{a>3186:pq,s>3045:A,rz} +zfr{s<3704:pg,a<1503:kkc,a>1606:rj,mcm} +hk{s<3670:A,a<2667:R,R} +vbs{m>2005:jgb,pts} +mmr{m>2322:R,m>1991:A,s>1195:A,R} +jsj{a<846:R,A} +gr{x>1637:A,m>1437:A,tzf} +smr{x>553:xkj,a>3828:pjv,s<2877:rvn,lk} +kkh{a<979:A,a<1290:R,m<3262:R,R} +rfs{s<2782:zfq,s>2869:rlj,vvp} +hld{m<2626:R,R} +pdr{s>3716:R,x<1984:A,R} +bpl{m>2642:R,m<2208:A,R} +rsb{s>2186:A,klj} +svh{m>1897:A,a<3228:A,s<2449:trr,A} +nvc{a>1611:sfr,A} +kx{x>637:A,x>614:A,A} +qh{x>1954:pdr,sl} +mr{x>2233:R,x>2163:A,R} +ndm{a<2304:R,A} +fb{m>2610:A,m>1344:A,A} +qm{m>2943:R,a>2109:R,R} +dv{a<678:A,R} +nbv{a<1299:R,m>2259:R,s>2404:A,R} +ls{a>2854:mpf,zqx} +xc{m>2101:R,s<2882:R,a>1165:A,R} +lct{m<2076:bs,s>2785:mkf,m>2855:A,bks} +dk{a<3506:A,A} +qmn{x>325:qf,a>449:kl,a<295:A,vm} +ncg{a<1018:lct,a<1371:rnd,x<2673:jkq,nvc} +zmq{m<2525:R,A} +thd{a>2757:gj,a<2405:qrn,m>2056:bmz,kr} +tts{m<3228:R,s>640:R,a>3171:A,A} +trr{a>3548:R,s<2437:R,R} +clc{s<2527:R,s>2549:A,A} +jtv{m<2950:A,s<210:R,R} +ghv{m>1136:xkd,s<1218:ql,m<502:gvn,szf} +jq{s<3727:A,m<1398:R,A} +ql{x<2601:lbx,dz} +rvn{x<189:vvb,hxn} +xx{x>2241:A,m>1897:A,R} +ccd{s<3621:A,R} +lts{s<3872:A,m>835:A,s<3931:R,A} +rn{s>925:R,R} +ngb{s<2880:A,R} +xxv{a<2094:A,s<2881:R,R} +kr{x>2351:A,s>258:R,a>2619:bdp,A} +mz{x<3454:fgb,zzp} +hd{a>2529:A,dmg} +hz{x>224:R,m<2084:R,A} +gh{m<971:A,m>1211:R,A} +jr{a>2700:R,m>1234:A,x<355:A,A} +jc{x<739:A,a<917:R,s<2457:ck,mnr} +bpj{x>330:rqq,R} +xfj{s<1260:ht,m<2092:jd,xhx} +bz{s<3823:A,R} +cxd{a<874:A,R} +bs{s>2688:A,m>1007:A,x<2651:A,R} +htn{m>977:R,a<2308:A,x<2327:A,A} +jhv{a>996:R,s<967:A,s<1075:R,A} +bcr{a<3147:ndm,tp} +pkj{m<2510:gbn,a>981:jjx,A} +zzp{s>2986:shm,x>3786:rpv,mb} +bc{s>3370:A,a<923:R,x>2579:R,A} +tj{x<2848:rb,s>1693:A,A} +fvl{s>1450:css,s>1274:fr,a>1541:ngh,rmz} +frc{m<2984:A,m<3157:sqt,tts} +lb{m>1612:A,A} +bp{m>2003:A,x>3015:cs,tg} +nnl{a<1000:R,s<3854:A,s>3945:A,R} +rl{m<3088:A,x<463:A,a>1631:A,R} +gvn{s>1250:A,s>1235:fhj,fqn} +rnf{m<733:R,x<1676:R,A} +cp{a<3134:fg,m>3460:A,kmc} +pd{s>637:vb,s<564:pt,R} +rz{x<3098:R,m>826:R,m<293:A,A} +zc{a>689:vmd,a<339:A,llk} +zl{s<3450:R,A} +rj{s<3855:A,m<1825:lcq,x>558:qn,R} +tp{a<3484:R,x>2024:R,a>3761:A,R} +jbz{m<3184:cnt,R} +fs{s<1772:A,m>908:nl,a>2631:A,A} +sfr{a>1871:A,a<1714:A,R} +lv{a>3338:A,s<314:R,x>2326:R,R} +hjj{m<1335:R,m>2001:R,a<2651:R,A} +sm{x>2614:R,m<621:A,A} +qdv{x<2058:R,R} +xsg{m>2409:qb,x<1022:bg,mgj} +vvb{x<121:A,m<1386:R,R} +szz{x>1786:xs,s<2260:stl,x<596:qg,zk} +sr{m>1474:A,gbk} +xxp{s<2328:A,x<3808:A,A} +fxk{s>3196:A,btj} +mgg{m>2309:R,a<2169:R,x<1003:jr,R} +rc{x>853:R,x>554:R,x<304:tk,A} +vzk{a>830:A,m<1128:kh,x>558:R,npn} +dd{x<2364:R,hk} +jvf{s<1220:kkh,m<3274:qgd,a>869:tx,dxb} +xn{a<1700:rjg,A} +vf{a>1341:A,s>3229:R,A} +dxb{m>3699:R,s<1248:R,m<3525:sml,A} +zd{s>1372:cbd,zc} +qb{x>1140:R,a>3588:R,a<3369:A,R} +ck{s>2389:R,x>753:A,m>2076:A,R} +bk{m<1112:A,x>422:A,x<254:R,A} +bdp{s>119:R,m<885:A,R} +xfq{m>1857:km,a<2650:rvk,m<1229:svp,fnm} +jjx{a<1105:R,A} +hh{x>2723:A,x>2324:R,R} +vxv{s<3855:A,a<1221:R,A} +hj{m<1924:A,A} +zj{a>2161:A,a<1948:mmr,a>2043:A,R} +lcq{m<760:A,R} +zmm{a>1990:vx,m>3237:nq,m<2768:R,zrk} +qrn{m>1714:qm,a>2144:htn,djn} +zk{a<2467:lkf,txv} +gsm{a>2592:sm,m<700:A,a>2099:R,R} +vhm{m>3185:R,m>2612:A,x<2721:R,R} +lss{a>1698:dd,ldr} +gf{a<589:ggp,a>940:xc,A} +qrl{a<2989:mgg,s>2068:rsb,x>881:xjq,cnz} +nz{x>640:zl,m<654:A,gh} +ljc{m<2348:xqn,m<3307:hvc,zpt} +ptz{a<1956:kmk,x>332:ks,dxr} +lj{s>1269:A,A} +rjr{a>1905:A,s<3610:A,R} +bkt{s<3288:xm,gkz} +jjq{s<2376:R,a<3384:R,m>3288:A,A} +fzx{x<2811:A,s<786:R,sjr} +hcz{a<1441:A,A} +ng{x>2025:A,a<1962:R,m>2393:A,A} +kg{x<1581:R,x<1788:R,R} +hc{a<1965:A,m<2176:R,R} +zrk{x>2229:A,R} +cgp{x>715:A,m>3614:A,R} +vmd{s>1327:R,A} +jsk{x>2685:bcv,m>1553:qgx,m>700:khd,mx} +kkc{m<1471:hcz,a>1447:A,x>594:A,tv} +ph{s<2709:R,a>615:A,R} +bqq{m>918:A,s<1255:A,x>2567:R,R} +dn{a>3209:zt,fc} +vm{x<119:R,a<356:R,A} +bvz{s<3732:zcl,fvj} +vgr{x>557:A,s>2325:R,A} +kl{m>1917:R,a>623:R,s<3697:R,A} +css{x<2079:flp,a>2235:vp,ttl} +qsf{s>458:rfh,s<225:A,x<1109:jm,A} +jjl{a<1765:qv,x>2506:tf,x>1208:zv,ljc} +xr{s>1663:A,R} +zqx{m<3112:A,R} +mm{x<2642:A,A} +bmm{a>1287:vf,m>2723:cf,tpd} +bx{s>1379:R,m<3154:A,a>2029:A,R} +hb{s>3578:A,a>1601:A,R} +npn{a>418:R,R} +gn{a<1162:dxm,a<1473:lz,xrb} +pj{x>3259:bgb,m<2105:rqc,hn} +cfp{m<1402:pgd,nn} +rx{a>2279:R,m<809:R,s<927:A,A} +dj{s<2516:R,R} +bj{s<3719:fls,pj} +ttl{a<753:djc,s>1593:tj,qr} +zp{m<862:A,R} +hzp{a<266:R,A} +hnb{m<729:A,m>1432:A,m>1081:A,R} +dfv{s<899:R,m>1776:bss,A} +gx{x<420:R,s<739:A,x>875:A,R} +lp{m>1603:A,x<2185:A,R} +khp{m<1240:R,s<3695:R,x>2040:R,A} +dxr{s<2453:A,x>300:A,dj} +rqc{m>859:mrq,a>1818:jvn,m<375:A,A} +cbf{a>1801:A,x<2146:R,A} +dxm{a<741:A,x<3647:lvx,s>3125:zm,cpx} +zdf{x>918:hrs,s<3499:bpj,x<510:qmn,vvr} +rk{a<1622:kjn,x>2035:lx,R} +mkf{s<2843:R,m>3082:R,R} +tpd{s>3176:R,a>1225:R,x>394:R,A} +tzq{m>2428:ngb,vl} +qj{s<1179:jjl,s>1877:szz,fvl} +xm{s<3237:R,a<738:A,A} +mf{a>1552:A,s<2401:R,R} +rlr{x>3280:A,x>2759:R,R} +hxn{a>3691:R,s<2707:R,s<2802:R,A} +lt{a>3090:R,s<71:A,A} +xk{a>3660:R,A} +zqm{a>928:A,A} +qs{m>1136:R,rnf} +jl{m<3203:A,m>3526:R,s>3891:A,A} +lx{a<1729:A,x>2216:A,m>1412:A,R} +gc{m<3522:R,a<2626:A,R} +pzc{a<3024:vtg,m>1682:R,m<1377:A,rrf} +gbk{m<654:R,s<1217:A,s<1223:R,A} +lvx{a<927:R,m>2149:R,x>3327:A,A} +fhj{s<1242:R,A} +xqn{m<896:pv,x<621:hq,pzc} +hq{s<661:cr,a>3031:R,s<1000:R,A} +xtz{s>2914:A,s>2909:R,R} +mpv{s>3459:bj,a>2014:blq,tgr} +rmz{m<2196:ghv,jvf} +fc{a<2548:kg,s>166:R,a<2930:A,lt} +rpv{x>3861:R,a<3150:R,s<2725:R,R} +nq{a>1505:R,m<3509:R,R} +qz{a<1558:R,m<3088:A,m>3640:R,R} +pg{a<1524:cdc,s>3406:A,m<1803:R,R} +nn{m<2341:fm,s>2091:nnd,x>667:R,A} +qnp{a<1882:A,s<2689:R,A} +kb{x<1708:A,A} +km{m>3254:R,x>2185:R,s>3646:cbf,R} +qhp{x<1902:bvz,ksc} +tf{m>2474:fnc,lh} +mrk{m>2540:gth,nh} +btj{a<3349:R,x>877:A,R} +cv{s>1227:ss,sr} +dlr{m<1789:gsm,m>2852:rtx,a>2963:bxj,zj} +xbm{s<3216:R,A} +cx{a>1657:R,x>1871:R,A} +cb{a<2526:R,A} +llk{m>2126:A,A} +hjb{m>3625:R,m>3514:R,A} +bq{a<1187:pkj,m<1393:lkm,x<695:bmm,svf} +fn{x>151:R,m<2679:A,A} +vp{a>2870:ff,m>2322:hd,s<1637:vjv,fs} +rlj{s>2896:qd,a>2284:zdx,a<1323:gf,jg} +ggp{m<1794:R,s<2883:A,x<1856:R,A} +znl{m>856:A,a<3666:hcv,sf} +svp{x>2155:xhh,a<3541:ctv,s<3726:ccd,bz} +mgj{x<1387:A,x<1600:R,R} +lkf{x>1081:qk,x>777:jf,x<686:mrc,jc} +rjg{a<1443:R,x>1229:R,s<1556:R,A} +mbg{a<622:A,x<834:A,x<867:R,R} +bss{a<3054:A,x>2187:A,a<3492:R,A} +xkd{a<562:kpp,R} +qr{s<1530:jdd,x<3305:R,R} +qfg{a<2318:R,fn} +jf{x>919:A,a>935:A,mbg} +bg{s>2516:R,A} +cbd{m>2449:A,a>1041:cn,a<450:R,xp} +xl{s<2925:hx,a>3207:R,R} +vrg{a>1289:hb,cj} +mtb{s>2981:hrh,A} +gfm{s<3070:R,m>3645:R,m>3357:R,R} +zfq{a<1584:js,lpq} +fbv{a<2481:A,x>1644:A,R} +rxp{a<1460:dx,bcr} +dlj{a>3193:A,x>2205:A,A} +nrc{a<941:rvc,s>2824:R,cx} +vjv{a<2589:R,s<1539:A,s<1591:A,R} +prg{x>943:R,x>469:R,a>1828:A,R} +cn{s>1408:A,m>1058:R,A} +hvc{x<696:frc,x<972:tt,qsf} +flp{a>2225:fq,a<1241:fj,s<1733:xn,prg} +bkf{m<1041:A,A} +dl{a>1330:R,s<2427:R,x<1467:A,A} +sn{m>3136:gfm,grr} +rfh{x>1129:R,A} +td{m>1204:R,m>773:A,a<2619:R,A} +jg{x<1834:A,a<1719:hxf,x<2218:ng,xxv} +jrj{a<386:A,R} +nv{m>210:R,R} +pjx{s<2086:mm,a<3090:fb,x>2720:R,sfp} +ll{s<2174:A,s<2409:R,R} +pn{x>2063:rjr,m>970:khp,a>1997:A,fhq} +gj{a>3526:R,a<3207:mr,lv} +nj{m<2883:A,s<3049:R,s>3494:R,cgp} +xq{a<3632:R,s>2980:R,R} +mrq{m<1543:R,m>1844:A,R} +rm{a>3252:hv,R} +fxx{a<1183:kmg,m<2218:qvl,zmm} +grr{a<2906:R,s<2997:R,m>2839:R,R} +kjn{x>2064:R,m>2516:R,x>1756:R,A} +bvd{s>3355:A,a>1525:R,R} +nf{x>3448:jrj,R} +hs{a<3135:R,s>399:R,A} +dln{s<561:mv,x>2863:nxp,s<800:A,A} +kmc{s>639:A,m>2835:R,R} +sfp{a>3626:A,x<2148:A,R} +ff{a<3401:R,a>3684:A,m>1555:hh,zp} +jz{a<3162:xt,a<3530:vq,s<3365:smr,svn} +tgr{x>3121:gn,x>2865:tzq,s>2899:jsk,ncg} +gl{s<739:pd,x>1894:dfv,a>2666:zmq,dvv} +grc{x<435:A,A} +sml{s<1264:R,m>3363:A,x<2284:A,A} +mkc{x<760:A,a<631:A,a>1386:R,kq} +xp{s>1423:A,x<2579:R,R} +vq{m>1343:fxk,nz} +mrg{m<1518:R,m<1658:R,A} +js{a>944:xg,x>2026:ph,s<2666:R,R} +kh{a<318:R,x<621:R,a<659:A,R} +rg{x>3435:R,R} +fhq{x<2040:A,a>704:R,m>551:A,R} +kq{m<2577:R,s<894:A,x<1039:A,A} +qd{m>2322:R,s<2906:A,x>1957:A,xtz} +ksc{x<2099:nrd,x>2265:lss,xfq} +kzv{a>2414:xj,lg} +kk{a<617:R,R} +jk{s>538:A,m<2863:A,R} +xg{a>1210:R,x>1982:R,x>1800:R,A} +cl{a>2733:R,clc} +bd{m<2716:A,a<3313:R,m<3413:A,fbm} +xjq{s<1984:A,m<1511:A,bpl} +rvk{a>1155:bkf,m<813:br,m<1432:A,zkh} +nd{s>452:kd,x>1163:kk,vzk} +fvj{s>3841:bgt,m<2521:bb,tz} +ks{m>2382:R,ntz} +tt{a<2850:R,A} +qgx{s>3258:zqm,s<3027:R,ktl} +ss{m>2041:A,ft} +rq{x<3120:xl,m>2642:sn,rtf} +jdd{s>1486:R,m>2101:A,m>762:A,A} +qx{a>3696:qrp,s>3657:A,R} +bks{a<607:A,R} +xs{a>2441:fh,x>2963:qqg,fxx} +mrc{m>2461:ckv,m>1428:kx,m>724:tq,A} +rb{m<2468:R,x>2419:R,x<2271:R,A} +ht{s<1252:R,A} +qk{x<1328:mf,x<1549:dl,nbv} +djc{m<1600:cm,a>283:nrs,R} +fh{s<2220:pjx,lgk} +bdr{a>3328:jfn,m>707:R,R} +rtx{x<1386:R,m>3269:gc,gb} +xkj{a>3749:A,a<3675:dtp,s<3004:pht,vkj} +pv{m>323:R,x>502:jh,s>514:nv,vz} +vv{a>3320:R,s<636:R,s>948:A,R} +sg{s>601:bp,cmk} +cr{a<2514:R,R} +gb{a<2813:A,R} +bmz{s<196:A,a<2556:fpk,s>307:pk,R} +bb{m>1091:A,R} +zdx{s>2879:R,a<3102:vk,A} +jfn{a<3606:A,A} +nbp{m>818:A,A} +kn{s>2923:R,A} +fr{a<1594:zd,a>2929:vc,kzv} +xj{m<2544:hjj,R} +hv{m>1991:R,A} +qrp{x>874:A,x>389:R,A} +cnc{m<985:A,R} +cnz{m<2037:hnb,A} +vmb{a>1700:jz,nm} +mv{m<1362:R,A} +gkz{s>3342:jsj,x>1892:xx,m<1670:R,kb} +xt{m>1817:nj,a<2551:fpt,ktx} +fj{a>463:A,A} +mx{m>253:gkh,s<3140:R,m>137:R,R} +jd{m>842:lb,m>451:kkv,s<1266:A,A} +cqz{s<1368:A,m<1575:A,R} +svf{s<3263:R,R} +sl{m<2246:A,R} +zrq{x>2077:lsm,x<1840:A,a>1618:R,bvd} +pz{m>3317:hjb,s>3590:A,x<1658:R,jvc} +csb{x<1439:vmb,x>2420:mpv,s<3414:gsz,qhp} +kmk{x>328:kpg,R} +qrq{a>1614:A,s<2403:zh,x>114:R,nbp} +fq{x>909:xr,a>2931:A,A} +lr{a>2309:rm,a>1791:vbs,s>3276:zrq,rk} +lsm{x>2277:R,a>1618:R,R} +klj{x>1054:R,m>2202:A,x>399:A,R} +mb{a<3099:R,s<2735:R,R} +fqn{m<210:R,A} +jj{s<2200:A,A} +pht{a>3714:R,A} +tz{x<1673:R,a<1378:A,A} +rrf{a>3595:A,a>3246:A,R} +nmq{a>2748:R,a<2542:R,x<2016:R,A} +fls{a<2084:vrg,mkz} +fbm{a>3544:R,A} +fnm{s>3733:dlj,lp} +zpt{s>665:xb,m>3543:hs,gv} +bxj{m>2343:R,A} +zkh{a<571:A,s>3679:A,a>921:R,A} +cdc{m>1919:A,R} +ngh{s>1238:xfj,s<1208:dlr,cv} +cj{a>700:A,R} +bgb{a>2604:dk,m>1677:jl,x>3687:lts,R} +dz{m<718:R,x<3415:R,R} +nnd{x>1061:R,m>2920:A,a>798:R,R} +hn{m<2984:A,a>2031:A,vxv} +dtp{x<945:A,a<3591:A,R} +qv{x>2355:sg,m<1752:nd,nxg} +vtg{a>2512:R,m<1657:A,x>981:R,A} +hr{x>2303:A,m<1178:A,A} +txv{s<2416:nfb,s<2487:svh,a>3134:xsg,cl} +mth{a>1241:R,A} +sf{s<2826:A,a<3808:A,a<3934:R,A} +hrh{m>2319:A,x>461:A,m>839:R,A} +tk{s>3674:A,s>3485:A,A} +ldr{m<1530:R,s<3738:hld,x<2358:rrr,nnl} +kpg{a>779:R,m>2426:R,R} +mcm{m>1928:qz,a>1571:R,a>1536:A,vgf} +kkv{s<1268:R,R} +ntz{x>354:R,R} +qg{x>390:hp,x<245:qjb,ptz} +rrr{s<3885:A,m<2398:R,R} +rtf{a>3255:xq,x>3511:A,s<3159:A,R} +ft{x>2278:R,m<1043:R,a<2670:R,R} +dcf{x>2425:A,x<1158:A,A} +vb{s<704:R,x<1816:R,R} +zv{s>491:gl,x<2068:dn,thd} +xb{s>882:nb,gx} +gth{s>3795:R,m<3296:A,A} +nxg{x>1262:bl,s>410:mkc,a>704:jtv,jbz} +rnd{x<2587:R,m<2247:xfr,vhm} +sjr{a>2727:R,A} +pt{s>532:R,R} +fm{x>631:A,x>335:A,s<2100:R,A} +gq{s>681:R,a<2732:R,m>1215:A,R} +svn{m<1967:qx,rc} +xv{s<2249:A,A} +zn{s<3051:A,x>2727:A,A} +hpq{s<2983:R,m<3115:R,A} +nh{a<1716:A,R} +qn{m>2908:R,s<3927:A,R} +lh{x<3047:dln,gq} +zch{x>1081:nlr,A} +np{x>876:zch,a<1580:mtb,sv} +tq{a>1139:A,a<709:R,R} +vk{m>1771:R,a>2624:A,R} +qt{a<1334:R,x>3407:R,R} +qf{s<3748:R,A} +zm{s<3247:R,x<3878:A,R} +xrl{a<807:A,a<1157:A,s>2999:A,R} +jvc{s<3505:R,s>3546:A,R} +trf{m>2082:jjq,a<3517:cnc,R} +nm{a<835:zdf,a<1402:bq,s>3203:zfr,np} +xxl{a<3140:cb,a<3432:vv,A} + +{x=3161,m=1141,a=51,s=441} +{x=240,m=174,a=555,s=1269} +{x=639,m=25,a=2025,s=345} +{x=97,m=1410,a=1572,s=1133} +{x=763,m=1918,a=625,s=2037} +{x=83,m=1395,a=433,s=2841} +{x=359,m=652,a=831,s=129} +{x=979,m=204,a=1976,s=1629} +{x=3112,m=122,a=816,s=305} +{x=523,m=2334,a=108,s=1286} +{x=267,m=152,a=480,s=389} +{x=278,m=917,a=1419,s=2422} +{x=207,m=1337,a=600,s=282} +{x=128,m=913,a=3232,s=189} +{x=1359,m=15,a=1792,s=2028} +{x=87,m=2807,a=3202,s=104} +{x=4,m=240,a=686,s=1790} +{x=2332,m=537,a=1657,s=289} +{x=1739,m=75,a=2757,s=1320} +{x=2127,m=44,a=1389,s=224} +{x=564,m=3263,a=177,s=447} +{x=424,m=915,a=1856,s=18} +{x=632,m=1638,a=665,s=315} +{x=950,m=993,a=136,s=11} +{x=154,m=611,a=405,s=1090} +{x=1784,m=1239,a=506,s=878} +{x=379,m=332,a=89,s=1091} +{x=2234,m=315,a=1158,s=2140} +{x=971,m=283,a=56,s=1089} +{x=39,m=101,a=256,s=995} +{x=259,m=25,a=829,s=2383} +{x=2681,m=876,a=676,s=109} +{x=1783,m=2119,a=299,s=25} +{x=2735,m=1444,a=94,s=572} +{x=710,m=2673,a=372,s=1524} +{x=171,m=221,a=1344,s=234} +{x=250,m=547,a=40,s=2485} +{x=1282,m=1141,a=823,s=1862} +{x=3,m=557,a=1924,s=1310} +{x=23,m=1217,a=133,s=2587} +{x=2073,m=75,a=246,s=250} +{x=591,m=646,a=510,s=610} +{x=1057,m=1782,a=1460,s=360} +{x=715,m=2817,a=1441,s=1769} +{x=132,m=478,a=1510,s=1669} +{x=3098,m=1549,a=915,s=2968} +{x=1913,m=570,a=542,s=381} +{x=311,m=935,a=277,s=290} +{x=486,m=148,a=240,s=61} +{x=428,m=1469,a=26,s=1175} +{x=520,m=979,a=84,s=413} +{x=244,m=1671,a=2482,s=6} +{x=53,m=1426,a=3,s=202} +{x=787,m=1504,a=1281,s=1676} +{x=27,m=2265,a=1142,s=202} +{x=1876,m=170,a=2306,s=2130} +{x=699,m=48,a=228,s=634} +{x=684,m=1694,a=287,s=1244} +{x=1140,m=919,a=845,s=1543} +{x=2313,m=183,a=948,s=1856} +{x=345,m=325,a=399,s=673} +{x=758,m=79,a=523,s=1105} +{x=271,m=1196,a=611,s=1465} +{x=495,m=2296,a=543,s=873} +{x=1054,m=273,a=1040,s=975} +{x=2372,m=642,a=415,s=303} +{x=2865,m=216,a=208,s=1772} +{x=219,m=29,a=689,s=561} +{x=885,m=150,a=816,s=1035} +{x=2293,m=1052,a=546,s=527} +{x=1384,m=461,a=264,s=911} +{x=1125,m=652,a=3475,s=1492} +{x=193,m=823,a=511,s=719} +{x=3393,m=26,a=15,s=111} +{x=611,m=1012,a=114,s=839} +{x=527,m=159,a=3961,s=465} +{x=214,m=416,a=1332,s=348} +{x=21,m=1247,a=1356,s=112} +{x=3308,m=387,a=587,s=16} +{x=171,m=1571,a=2145,s=1685} +{x=1334,m=970,a=133,s=102} +{x=567,m=348,a=318,s=624} +{x=344,m=911,a=593,s=326} +{x=976,m=584,a=270,s=339} +{x=879,m=796,a=565,s=1348} +{x=1427,m=1060,a=751,s=1071} +{x=2412,m=582,a=407,s=1668} +{x=21,m=147,a=1452,s=681} +{x=457,m=404,a=1617,s=338} +{x=1810,m=1236,a=19,s=174} +{x=55,m=674,a=530,s=327} +{x=423,m=348,a=1067,s=424} +{x=2836,m=2279,a=3116,s=73} +{x=792,m=2863,a=1457,s=1643} +{x=537,m=910,a=2132,s=2005} +{x=895,m=1383,a=86,s=632} +{x=302,m=891,a=61,s=303} +{x=24,m=28,a=438,s=458} +{x=1134,m=104,a=219,s=623} +{x=208,m=1184,a=280,s=2224} +{x=1884,m=762,a=2518,s=588} +{x=1712,m=2692,a=580,s=1996} +{x=597,m=1108,a=1198,s=889} +{x=29,m=1692,a=456,s=2358} +{x=604,m=1656,a=149,s=374} +{x=995,m=1575,a=1300,s=1043} +{x=513,m=64,a=348,s=670} +{x=2016,m=148,a=288,s=240} +{x=2208,m=388,a=726,s=69} +{x=521,m=1808,a=2767,s=856} +{x=512,m=103,a=439,s=1943} +{x=148,m=935,a=787,s=477} +{x=1153,m=2337,a=238,s=3068} +{x=692,m=2215,a=1089,s=134} +{x=2260,m=1675,a=2775,s=1847} +{x=625,m=3316,a=1996,s=2999} +{x=2263,m=2373,a=2421,s=349} +{x=13,m=2202,a=316,s=132} +{x=1414,m=2836,a=2224,s=206} +{x=2597,m=203,a=741,s=1575} +{x=3420,m=1012,a=637,s=768} +{x=278,m=1222,a=1586,s=463} +{x=511,m=816,a=71,s=381} +{x=538,m=320,a=395,s=2388} +{x=522,m=741,a=2172,s=1418} +{x=112,m=619,a=1875,s=1458} +{x=462,m=2079,a=252,s=54} +{x=2828,m=121,a=297,s=19} +{x=444,m=1444,a=85,s=88} +{x=1328,m=43,a=1168,s=241} +{x=1963,m=162,a=135,s=915} +{x=350,m=994,a=223,s=3064} +{x=130,m=790,a=895,s=52} +{x=317,m=83,a=265,s=478} +{x=215,m=2935,a=703,s=2731} +{x=1274,m=1313,a=455,s=2270} +{x=18,m=1971,a=1987,s=1992} +{x=2444,m=646,a=1462,s=232} +{x=1054,m=44,a=241,s=1037} +{x=212,m=1389,a=1490,s=574} +{x=301,m=3887,a=1190,s=300} +{x=3405,m=2067,a=2279,s=976} +{x=503,m=1631,a=933,s=303} +{x=1877,m=2443,a=2986,s=2055} +{x=559,m=1073,a=2167,s=1286} +{x=2473,m=1614,a=1850,s=503} +{x=357,m=430,a=1105,s=15} +{x=601,m=271,a=891,s=290} +{x=1958,m=6,a=250,s=796} +{x=635,m=507,a=262,s=853} +{x=337,m=949,a=2590,s=53} +{x=3419,m=3441,a=1089,s=592} +{x=132,m=992,a=482,s=306} +{x=979,m=958,a=2428,s=572} +{x=20,m=60,a=1124,s=3558} +{x=189,m=406,a=1382,s=546} +{x=1264,m=12,a=716,s=239} +{x=916,m=2214,a=69,s=146} +{x=631,m=2307,a=1969,s=421} +{x=1277,m=864,a=1780,s=490} +{x=306,m=2550,a=53,s=2171} +{x=120,m=1296,a=474,s=301} +{x=1566,m=869,a=894,s=2050} +{x=698,m=2308,a=687,s=492} +{x=2410,m=2671,a=806,s=1228} +{x=988,m=3291,a=459,s=229} +{x=1481,m=204,a=646,s=2167} +{x=238,m=593,a=497,s=186} +{x=317,m=187,a=772,s=129} +{x=53,m=3624,a=751,s=554} +{x=503,m=59,a=699,s=2483} +{x=59,m=1139,a=442,s=334} +{x=297,m=473,a=2519,s=554} +{x=254,m=1241,a=1477,s=280} +{x=117,m=1332,a=251,s=571} +{x=543,m=2228,a=606,s=473} +{x=1241,m=822,a=1544,s=2650} +{x=656,m=665,a=2678,s=2842} +{x=111,m=1574,a=537,s=807} +{x=152,m=641,a=16,s=325} +{x=2814,m=230,a=2633,s=224} +{x=4,m=856,a=2263,s=32} +{x=1837,m=124,a=221,s=3059} +{x=320,m=311,a=1653,s=15} +{x=265,m=307,a=930,s=2960} +{x=796,m=87,a=2572,s=741} +{x=602,m=585,a=2755,s=381} +{x=455,m=441,a=610,s=1380} +{x=552,m=1554,a=1800,s=39} +{x=1707,m=170,a=92,s=789} +{x=772,m=490,a=1173,s=763} +{x=2930,m=2475,a=1873,s=1826} +{x=1571,m=572,a=1883,s=1534} +{x=2008,m=2416,a=155,s=799} +{x=2060,m=1868,a=372,s=41} +{x=1899,m=104,a=7,s=456} +{x=37,m=718,a=642,s=1394} +{x=2078,m=1001,a=2864,s=791} +{x=124,m=890,a=2174,s=2418} +{x=996,m=2173,a=318,s=2194} diff --git a/19/part1.pl b/19/part1.pl new file mode 100644 index 0000000..856112a --- /dev/null +++ b/19/part1.pl @@ -0,0 +1,54 @@ +:- use_module(library(pio)). +:- use_module(library(dcg/basics)). +:- initialization(main, main). + +main([FileName|_]) :- + input(FileName, Workflows, Parts), + concurrent_maplist(wf(Workflows, in), Parts, Scores), + sum_list(Scores, Score), + write(Score), nl. + +wf(_, accept, [x-X, m-M, a-A, s-S], Score) :- Score is X + M + A + S, !. +wf(_, reject, _Part, 0) :- !. +wf(Workflows, WorkflowName, Part, Score) :- + member(WorkflowName-Rules, Workflows), + rule(Workflows, Rules, Part, Score). + +rule(Workflows, [EndRule], Part, Score) :- wf(Workflows, EndRule, Part, Score). +rule(Workflows, [Attr-Cond-N-Dest|Rules], Part, Score) :- + ( satisfy(Attr-Cond-N, Part) + -> wf(Workflows, Dest, Part, Score) + ; rule(Workflows, Rules, Part, Score) + ). + +satisfy(Attr-Cond-N, Part) :- member(Attr-M, Part), call(Cond, M, N). + +% input parsing stuff below +input(FileName, Workflows, Parts) :- + phrase_from_file((workflows(Workflows), parts(Parts)), FileName). + +workflows([]) --> "\n", !. +workflows([Name-Rules|Ws]) --> + string_without("{", NameStr), "{", rules(Rules), "}\n", workflows(Ws), + {atom_codes(Name, NameStr)}. + +rules([End]) --> dest(End). +rules([Rule|Rules]) --> rule(Rule), ",", rules(Rules). + +rule(Attr-Cond-N-Dest) --> attr(Attr), cond(Cond), number(N), ":", dest(Dest). + +attr(x) --> "x". +attr(m) --> "m". +attr(a) --> "a". +attr(s) --> "s". +cond('>') --> ">". +cond('<') --> "<". +dest(reject) --> "R", !. +dest(accept) --> "A", !. +dest(Dest) --> endrule(Dest). +endrule(Rule) --> string_without(",}", RuleStr), {atom_codes(Rule, RuleStr)}. + +parts([]) --> eos, !. +parts([[x-X, m-M, a-A, s-S]|Parts]) --> + "{x=", number(X), ",m=", number(M), ",a=", number(A), ",s=", number(S), + "}\n", parts(Parts). diff --git a/19/test.txt b/19/test.txt new file mode 100644 index 0000000..e5b5d64 --- /dev/null +++ b/19/test.txt @@ -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}