diff --git a/README.md b/README.md index 8a2f6ce..19643c9 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ Day 00: Helper file | [aoc.clj](clojure/aoc.clj) | [Day 16](http://adventofcode.com/2023/day/16) | [day16.clj](clojure/day16.clj) | Is this a cousin of Day 10? [Day 17](http://adventofcode.com/2023/day/17) | [day17.clj](clojure/day17.clj) | Consider only L/R directions, and then go straight as far as you can. [Day 18](http://adventofcode.com/2023/day/18) | [day18.clj](clojure/day18.clj) | TIL about Shoelace formula and Pick's theorem. - +[Day 19](http://adventofcode.com/2023/day/19) | [day19.clj](clojure/day19.clj) | Simpler ranges than Day 5. diff --git a/clojure/day19.clj b/clojure/day19.clj new file mode 100644 index 0000000..c5fdaaa --- /dev/null +++ b/clojure/day19.clj @@ -0,0 +1,79 @@ +(ns day19 + (:require aoc + [clojure.string :as str])) + + +(defn parse-rule [rule] + (let [[cnd dest] (str/split rule #":")] + (if (nil? dest) + [(keyword cnd)] + (let [[c op & v] cnd + k (keyword (str c)) + f ({\> > \< <} op) + v (parse-long (apply str v))] + [(keyword dest) f k v])))) + +(defn parse-workflow [workflow] + (let [[_ k rules] (re-find #"(\w+)\{(.+)\}" workflow) + k (keyword k) + rules (map parse-rule (str/split rules #","))] + [k rules])) + +(defn parse-rating [rating] + (let [[x m a s] (aoc/integers rating)] + {:x x , :m m , :a a , :s s})) + + +(defn accepted [workflows rating] + (loop [wf :in] + (case wf + :R 0 + :A (reduce + (vals rating)) + (recur (loop [[[dest f k v] & tl] (workflows wf)] + (cond + (nil? f) dest + (f (rating k) v) dest + :else (recur tl))))))) + + + +(defn split-out [workflow rating] + (loop [[[dest f k v] & tl] workflow + out [] + rating rating] + (cond + (nil? dest) out + (nil? f) (conj out [dest rating]) + (= f <) (let [[a b] (rating k)] + (recur tl + (conj out [dest (assoc rating k [a (dec v)])]) + (assoc rating k [v b]))) + (= f >) (let [[a b] (rating k)] + (recur tl + (conj out [dest (assoc rating k [(inc v) b])]) + (assoc rating k [a v])))))) + +(defn accepted-combinations [workflows rating] + (loop [stack [[:in rating]] + score 0] + (if-let [[wf rating] (peek stack)] + (let [stack' (pop stack)] + (case wf + :R (recur stack' score) + :A (recur stack' (+ score (reduce * (map (fn [[a b]] (- (inc b) a)) + (vals rating))))) + (recur (reduce conj stack' (split-out (workflows wf) rating)) score))) + score))) + + + +(defn solve [input-file] + (let [[wrkfls rtngs] (aoc/read-input-paragraphs input-file) + workflows (into {} (map parse-workflow wrkfls)) + ratings (map parse-rating rtngs) + rating-2 (zipmap [:x :m :a :s] (repeat [1 4000]))] + [(reduce + (map (partial accepted workflows) ratings)) + (accepted-combinations workflows rating-2)])) + + +(solve 19) diff --git a/clojure/tests/solutions_tests.clj b/clojure/tests/solutions_tests.clj index 5f3e02e..138074d 100644 --- a/clojure/tests/solutions_tests.clj +++ b/clojure/tests/solutions_tests.clj @@ -3,7 +3,7 @@ day01 day02 day03 day04 day05 day06 day07 day08 day09 day10 day11 day12 day13 day14 day15 - day16 day17 day18 ; day19 day20 + day16 day17 day18 day19 ;day20 ; day21 day22 day23 day24 day25 [clojure.test :refer [deftest is run-tests successful?]])) @@ -42,6 +42,7 @@ (check-day 16 [46 51] [6921 7594]) (check-day 17 [102 94] [758 892]) (check-day 18 [62 952408144115] [47045 147839570293376]) +(check-day 19 [19114 167409079868000] [386787 131029523269531]) (let [summary (run-tests)] (when-not (successful? summary) diff --git a/inputs/19.txt b/inputs/19.txt new file mode 100644 index 0000000..ab8c973 --- /dev/null +++ b/inputs/19.txt @@ -0,0 +1,781 @@ +dc{m<2420:R,R} +jb{s>2618:vv,R} +vxv{m>2362:tsk,m>1949:hpf,qdx} +xs{a>2562:R,a>2291:R,s<3703:R,A} +tl{x<1583:hb,nd} +xk{m<3191:R,a>844:R,a<714:A,A} +sxh{m>128:trk,a<521:qvc,zq} +cxv{s>1082:A,s<1006:R,R} +jsm{a>776:A,m<2436:R,A} +sn{a<295:A,x<1774:fpm,fsk} +lld{m<2279:A,R} +ng{a<590:sdl,a>609:snx,R} +sdl{s<1719:A,a<553:A,s>1738:A,A} +hrd{s>3215:A,a>691:A,m>2571:R,R} +jq{s<2384:A,s<2587:zlc,txr} +gp{x>3310:R,s<3337:R,R} +nk{a<3026:jbp,sm} +kth{s>2224:A,R} +plr{x<1171:A,x>1291:A,R} +mzl{m>2788:R,R} +clc{s>2151:R,a<1437:mr,s>1993:gj,A} +tzk{x<3188:A,A} +df{s<127:A,R} +cjz{x<551:rr,a<3279:kpg,m<3044:R,R} +zpn{s<1044:R,a<928:R,x>667:A,A} +qlq{a<3396:A,m<188:A,R} +xl{x>871:R,x<576:A,fls} +hrj{x<1772:A,x<2715:R,A} +kb{x>1475:R,m<3188:R,R} +ljt{x<3132:R,s<1543:R,s>1572:R,A} +fl{a>2964:R,x<2878:A,R} +pn{a>1842:R,a<1709:R,x<2041:A,R} +tfn{s<2189:ntn,x<2729:A,R} +vlb{s>2382:R,R} +njr{s<1634:A,A} +fh{x>2659:R,s<3385:R,m<3515:A,R} +lbl{a>532:R,A} +pt{x>684:nm,pgc} +dq{s>2740:A,A} +ldb{m<54:zj,a>1147:R,A} +lxm{x<1904:ms,x<1973:ptx,s<1616:R,nms} +xgl{x<732:R,m>3339:A,a>289:R,A} +crj{m>1193:A,A} +mf{a>2400:A,s>570:A,R} +pfn{a>55:lfz,pdt} +gdc{a>1141:hsq,x>1870:dd,a>1080:A,prn} +snx{a<629:R,A} +kgc{m<1534:A,x>3548:A,A} +sj{a>1933:A,lx} +cz{a>837:xqq,s>1030:lb,hzs} +rsf{m>2637:bjr,a>1525:bk,m<2492:hl,xj} +ckd{m<3384:mcs,a<2487:nv,m<3630:gtd,jq} +gr{m<941:srr,s<3207:fq,a>563:gc,rt} +brt{m>2243:R,A} +cvk{x<2740:R,s>1596:R,a>789:A,R} +fg{m<1050:A,R} +sm{a>3394:pj,phh} +ktc{x<2073:R,cvk} +sqq{s<373:bst,a>509:A,m<1387:crh,R} +rqp{x>2332:R,x<2127:A,R} +cpp{s>365:R,m<451:A,s<226:A,R} +ds{m<2018:A,s>1329:A,R} +qc{x>2041:dj,tbx} +cdh{a>932:R,A} +tsk{s<694:pqq,s>1274:rth,sh} +hns{a<507:fx,x<885:fxz,s<1679:nxj,jjm} +prn{m<150:A,s<3241:A,R} +cn{x<728:A,a>515:mzl,x>1222:cbx,R} +jxh{m>1038:R,s>1571:rs,a<899:rxp,A} +nd{a>1206:rp,x>3028:rvm,a<1090:A,hh} +thg{a<1565:tnf,x<1487:cx,s>3604:mk,lkj} +fzf{a>2657:R,s<1584:A,m<413:A,xjb} +xcd{a<2376:A,x<1682:R,R} +qnd{m>3633:A,m>3408:tks,s>872:R,A} +sbz{m>1838:gs,x<1590:dft,x>3011:xmq,zms} +zch{s>194:bx,R} +zcq{x>2460:R,s<1436:A,m>2291:R,brt} +txr{s<2774:A,s<2873:R,a<3258:R,R} +fls{x>747:A,R} +dp{a<2534:jzq,cpt} +cs{a<1593:R,x<2725:pn,x<3189:dfq,R} +pgs{m>2514:A,a<973:R,s<1278:xh,vs} +mxc{a>330:A,s<3406:A,A} +grb{s<3474:A,R} +zzc{x<3201:A,m>1081:R,A} +rxp{m>887:R,s<1496:A,R} +zbz{x>2646:A,m>2836:A,R} +jvp{a>585:A,R} +nqf{x>1568:A,R} +xr{s>1713:A,a>426:A,R} +qjx{m<270:R,m>538:A,tf} +rck{m<265:vmt,a<3724:xmz,vzt} +bvg{m>2924:R,s>848:A,a<555:R,R} +qhv{x>1761:ccx,pts} +xc{a<1159:A,x<1697:A,A} +sdj{m>314:A,A} +lxc{a>1534:A,s>3403:A,a>865:A,A} +pgj{x>1955:hhp,a>2764:R,x<1140:A,xzp} +qcr{x>1970:xpf,a<1081:gr,x<981:mdc,qjm} +gj{s>2096:A,s<2044:R,R} +jmf{s>1086:tn,s>891:jfc,R} +pq{a>933:A,m>1455:R,x<3710:R,A} +kkl{s<1161:brd,tjz} +gvn{m<368:R,m<499:R,A} +mh{m<3341:A,m<3772:A,x>961:R,A} +fxz{x<313:R,R} +mz{m>1635:cn,m<881:hns,clg} +brd{a>1514:hm,m>2103:xsm,lsf} +hvl{m<3884:R,m<3891:R,A} +tp{s<2386:A,m<1033:R,a<657:R,R} +hb{m<97:pf,s>2312:R,R} +vrm{s<901:cpp,s>1305:hhr,a<146:cnq,dgf} +vc{a<1191:A,m>728:A,R} +tf{a>3424:A,a<3301:A,A} +vhb{x<1274:R,A} +xcs{a<871:R,a<1588:R,R} +dh{x<601:R,a<351:A,x>872:A,R} +gxr{a>3357:A,a<3143:R,A} +mgk{a>3299:R,m<45:A,A} +xtz{s>1471:A,m>1107:A,A} +dr{s>441:A,a>3261:A,a>3216:A,R} +srs{s<1069:R,s<1099:R,A} +qjm{s<2827:clc,thg} +tkq{a>1882:A,x<3265:A,A} +xsm{s<759:srg,m<3323:dn,s<937:A,cxv} +nxj{s<1661:A,s<1668:A,R} +xsk{a>19:A,s>3781:R,R} +qlg{x<2587:R,A} +jft{x<2232:R,x>2411:R,R} +dx{x<2552:jdj,x>3346:jvg,xsx} +zr{x<2400:A,m<3690:R,x>2593:A,A} +rn{m<2915:R,m>3162:A,R} +cqh{s<1070:A,A} +kn{x<1557:A,s>2799:A,mvm} +pnp{a<2753:R,x>2405:fh,A} +lrf{m<335:rk,a>3635:zch,gg} +zv{s<663:R,x>3288:R,A} +nxr{x<2407:R,a>359:R,R} +ntn{x<2865:R,A} +zjg{x>1922:zbh,m<2586:A,cq} +jx{s<792:R,x>2184:A,A} +xmq{m<1660:A,vt} +mm{a<1841:mgz,a>1953:mv,x>2296:tzk,fzb} +rth{a>3397:R,tj} +jbt{a<3554:A,s<413:R,A} +bk{m>2506:R,s>2288:R,a<2022:R,A} +qtg{m>3189:A,m<2647:R,s<1098:R,A} +bpr{x<3352:A,x>3720:A,R} +hqs{a>941:R,x>530:A,x<253:A,A} +chg{s<2676:R,A} +cnl{m<3057:R,qnt} +rvm{x>3655:R,s>2266:A,m<90:A,A} +znc{x<1897:A,R} +xsx{x<2921:srs,x>3066:A,a<842:vcf,A} +vsz{m<3368:R,x<1768:A,s<1653:A,R} +mrh{x>1352:kth,s>2546:R,s>2154:vlb,A} +jvg{a<863:kgp,s>1043:nbm,a<999:pq,gsr} +rdk{s<573:A,x<315:R,R} +tb{x>522:R,x<332:A,R} +kkr{m<1675:dqp,R} +lkj{x>1662:R,m>1068:A,R} +jn{m<46:A,s<3886:A,R} +cvn{a>1734:R,A} +crr{a>3221:A,a<3093:A,R} +ggm{m>3699:R,m<3433:R,A} +nl{m>1368:R,A} +qpn{m>623:jxh,blb} +mgz{a>1545:hct,m<99:kvg,m<166:R,cl} +jl{a>1514:A,s<2760:R,R} +jjm{a<585:R,m<518:A,a>621:R,A} +pdt{m>1100:zmk,x>2084:rbk,R} +srg{a>1251:R,a<1171:R,a>1199:A,A} +gz{a>942:bsz,s>603:fv,s<513:sqf,llh} +xn{x>2495:xm,x<886:mb,s>2560:R,R} +hnf{m<2103:R,R} +vlx{m>1474:vxv,s<714:sff,cjc} +mvm{m>3096:R,a<3112:R,R} +zcd{a>336:R,x<2664:R,R} +ck{m<115:R,x<717:R,R} +ld{s>2943:tz,m<2944:rsf,vl} +ndz{x<427:R,x<603:A,s>1486:R,A} +km{s<988:A,x<961:R,A} +flk{s<3049:gvn,R} +hsq{a>1234:R,x>2510:R,m<104:A,A} +kd{a<2938:R,a<3461:A,s<439:A,R} +tc{a>2499:bv,m>325:dxp,s>431:mf,jbm} +rrc{x>1770:R,s<3008:A,s>3545:R,A} +tnd{s<920:sbl,x<946:hdl,frt} +zmk{m>1592:R,x<2341:R,s>1068:A,A} +llh{a<841:R,R} +rd{s>1565:R,x>3214:R,s>1519:A,R} +rmq{a<898:ftx,x>3382:cbp,A} +sbh{m<1905:R,s>3213:ql,m<2126:R,R} +tqf{x<1553:flk,m<358:khz,m<465:jl,cs} +tlp{a<3575:qjx,x<1564:rck,cg} +xz{s>2317:R,a<3490:R,x>2510:A,R} +vm{a<2836:jg,m<1749:A,R} +mv{m>105:R,s<2958:tsq,s>3568:nqf,R} +znv{m>3185:R,R} +dhr{m<1967:R,A} +bz{m<635:R,A} +nv{s<2204:R,jd} +flh{x<2334:R,x<2934:vqg,R} +stj{x>736:R,R} +gd{a<459:fn,m<1741:rb,A} +ngt{x<2607:hjl,s>1104:zmr,xrx} +vf{s>1654:A,s<1631:A,A} +bv{a<2721:A,a>2828:mmh,gb} +sff{m>680:jv,a<2906:tc,s<325:lrf,qlp} +zct{a<456:hkq,a<500:R,x<2109:R,lbl} +tjz{m<2497:zb,hx} +dgf{a>187:R,s<1048:R,R} +jg{x>2301:A,s>3370:A,A} +zj{x>1836:R,R} +tnt{m>2872:A,a>3297:A,x<2235:A,A} +qvc{m<67:R,A} +xnb{a>1928:R,s>2287:A,x<739:R,A} +ntr{m>181:A,a<2441:R,A} +blt{x<1980:vk,m<2092:R,vrb} +tbx{a>423:R,s<3681:A,A} +rj{a>1380:A,s>2867:A,A} +rk{m>133:gvd,mgk} +rf{a>1036:R,R} +ztt{a<1176:jn,pd} +xzp{m>1694:R,a>2561:R,R} +hpf{s<1058:qlg,m>2212:zcq,blt} +nz{s<915:R,x>3243:R,A} +ptx{a>1510:A,x<1938:R,s<1664:R,A} +dd{a<1074:A,R} +nms{s<1665:A,s<1707:R,x<2042:A,R} +tnf{s<3502:A,A} +gsr{s<1002:A,s>1019:R,a<1034:R,A} +dl{s>3490:A,hgb} +ccx{a>2085:hjv,x>2074:sj,ft} +bsz{a<1011:A,A} +krq{m>1856:A,R} +fpm{x>911:R,s>2561:A,A} +tks{a<68:R,x<3159:A,A} +mb{s>2309:R,a>794:A,m>422:A,A} +tm{m<3640:A,a>38:A,a>24:A,A} +jd{s<2635:R,s>2861:A,x<2444:A,R} +cl{a<1487:A,A} +ks{m>3873:hvl,s>2520:A,xp} +pl{x>1634:qb,a>1976:rgn,kx} +sq{m>1062:kd,m>933:A,fl} +bf{m<295:qlq,gxr} +qb{a>2051:nsh,m>2598:A,s<3081:ts,hmj} +pz{x<1077:rtf,xg} +dqp{m>1009:R,s<1679:R,A} +hcs{s<2525:A,s>3056:R,a<2896:A,R} +vzt{m>486:R,m>406:A,R} +cpt{x>1917:rpf,pt} +kqc{m>1059:R,s<2314:A,m<856:R,R} +qlp{x<2076:xl,s>456:bf,smp} +smp{m>381:R,a>3571:A,R} +kf{a<3449:R,x>2649:fj,A} +zmb{s<3595:fd,m>373:xtk,sdj} +lb{a>760:bpj,s>1094:A,cqh} +zmt{a<2607:R,x<2494:R,x<2625:A,A} +hrs{s<3442:A,m<2938:rx,R} +vs{a>1022:A,m<1556:R,R} +tj{a>2713:R,a>2515:A,s<1508:R,A} +vg{m>1861:A,R} +hsz{m>2662:R,x<2851:A,x<3435:A,R} +fj{m<1691:R,R} +sbl{s<559:R,s>786:A,A} +pbt{x>2656:kkl,a>1768:qhv,xt} +lhl{x>1684:R,R} +clg{m>1239:A,s<1688:jdk,a<489:xr,R} +hxc{x>2077:jp,s<1527:zjg,lxm} +zl{x>2468:rmq,x<1255:pr,s<399:cdh,gz} +vmk{s>2804:R,a<798:R,a>1792:R,A} +xjb{m<580:A,A} +dfq{s<2644:A,a<1846:A,s<3186:A,A} +jdk{a>538:A,s>1662:R,A} +cbr{m<2499:rqp,A} +fzt{m<2823:R,s<2719:R,s<2989:A,A} +kx{x<1487:A,x>1580:hrd,s>3205:R,hr} +mdc{s>2678:vb,x<479:bqt,x<661:xd,jkv} +db{a>3443:jbt,x<2147:dr,A} +ptz{m>292:A,x<2852:A,m>275:A,R} +pk{x>2230:rd,s>1596:gfx,x>881:nbz,khh} +ggg{a>1517:R,x<158:R,s<1333:A,A} +lx{x>2306:A,s<930:R,s<1289:R,R} +pf{s>2169:A,R} +bl{m<1235:A,x<618:A,A} +kgp{x>3660:A,m<2117:R,a>787:R,R} +gtt{a<821:jsm,m<1415:lm,hrj} +np{a>1026:A,a<537:A,s>3199:A,A} +qs{s>2059:A,a>3426:A,A} +vk{x<1173:R,s<1371:A,A} +dtm{m>3399:A,x>1063:fzt,R} +bph{s<1636:R,A} +hn{s>755:gh,lth} +gn{x<240:A,s<313:R,R} +hng{s>1990:A,a>1724:R,s>1865:A,R} +vxl{a>475:xn,a<174:mrh,sn} +mg{a>55:R,x>1083:R,A} +dqn{s<1522:R,a<707:A,R} +xmz{x>885:R,a>3671:R,A} +dnn{a>2403:R,m>381:A,s<317:A,A} +knx{m>2648:jvp,s>1655:R,A} +mr{s>1887:A,s>1800:R,x>1621:R,R} +cgz{a<334:A,R} +tn{s>1209:A,A} +rx{m<2648:A,s<3802:R,R} +ljj{x>2311:R,a>1322:R,R} +ccj{a<897:gtt,pgs} +sf{x<828:ffd,R} +kk{a<2309:ld,x<650:hc,gm} +sd{s<3490:gdc,m>86:xc,s>3727:ztt,ldb} +frt{x>1622:zlj,s<1199:A,A} +hkq{a<422:R,m<1595:R,R} +ffd{a<1595:R,A} +jt{a>779:cm,sbh} +bfh{m<1742:grb,x>3013:R,R} +lk{x>1946:A,m>147:A,R} +gtd{s>2429:dq,s>2097:xz,A} +zk{m>221:R,m<123:R,x<3107:R,A} +mk{s<3811:R,A} +rbk{x>3208:A,R} +bst{x>2634:R,x<965:A,R} +br{m>3155:ghz,ngt} +krj{m<2941:dk,ppr} +jzf{s<286:plr,A} +hdl{m>1800:R,x<531:fsf,mx} +vlt{s>1646:sr,a<808:dqn,R} +pgc{a>3070:A,R} +zbh{a>1505:R,A} +szx{s<371:A,R} +xpf{x<2983:gt,x<3494:lrv,jr} +cd{m>3395:R,R} +in{s>1748:vh,th} +gb{a>2761:A,x<1367:R,A} +sxn{a>1528:tq,bdm} +ft{m<2464:R,s<669:cr,A} +njp{x>2512:A,m>3390:A,A} +vj{a<2188:A,A} +gv{x<1415:R,s>3684:A,a>73:R,R} +bjb{m<782:A,R} +jzq{a>1538:sbz,jt} +qnt{a>1849:A,s>3148:R,A} +rb{m<1030:A,a>515:A,A} +hqb{a>180:A,x<2462:A,s<776:ggm,A} +qsp{a>517:ljt,A} +dj{a<479:R,R} +ms{a<1531:A,R} +fx{s>1676:A,A} +xh{a<1028:R,s<1208:R,A} +td{s<279:R,s>309:R,m<559:R,A} +jxs{m>1040:R,x<1013:A,x>1442:R,R} +zbx{m>1180:jkd,A} +bfz{s<963:vjx,s<1451:kmf,a<644:jcq,ppv} +tx{x>2961:A,x>2724:R,s>1722:A,A} +th{a>2282:vlx,a>1079:pbt,a>361:bfz,fhl} +nh{x<1964:R,m>1122:R,R} +mcs{a<2425:R,a>2964:R,m>3001:R,zmt} +pj{m>623:A,a>3740:R,A} +czz{x>1674:px,kb} +ktp{m<3783:grj,m>3903:vlq,m>3825:ks,jb} +shf{s<649:R,m<1371:A,s<894:A,A} +xg{s>1515:R,x<1605:A,R} +bb{m>400:R,a>117:R,a<43:xsk,gv} +vt{x>3630:R,x<3347:R,a<2164:A,R} +jv{x>1524:sq,x<632:bp,a>3325:zbx,jzf} +trk{s<3156:nxr,m>186:R,rz} +jkv{s>2135:R,x<847:A,m<907:bjb,hng} +fs{s>731:mg,a>75:R,s>329:A,tm} +sfh{s<738:R,m>2004:bvg,s<824:jx,R} +khh{s<1520:ndz,s>1564:xk,a>825:hqs,snc} +vmt{s>1060:A,R} +xtn{a>2734:A,a<2487:xcd,s<942:R,jsk} +pv{m<225:sxh,s<3025:vxl,a<625:mn,zmb} +mbh{m>2984:pnp,m<2727:cbr,a>2966:zc,kq} +tz{x>736:lxc,R} +ns{s>2974:R,a>1996:A,R} +zs{s<2274:R,m<2653:R,m>2890:A,R} +hjv{m<1376:R,m<2830:snd,x<2077:vj,R} +vh{m>2348:fcr,m>1339:dp,rrl} +fhl{a>214:hn,m<1951:hs,br} +vrj{s<1124:sf,x<615:gtk,krq} +lh{s>1638:R,a<732:A,A} +xtk{s<3861:A,x>1489:lkb,A} +zq{a>832:R,m>69:qhk,rrc} +lm{x>1458:A,x>685:A,s>1314:R,R} +czd{s<489:A,x>2594:zv,vhb} +gfx{s>1694:A,a>839:bph,x<1229:lh,vsz} +ngr{x>3139:vf,R} +sr{a<801:A,R} +vlq{a>1769:A,a<621:A,rf} +xpd{x>3380:znv,ct} +vjx{a<669:gmx,zl} +gmx{s>607:sfh,sqq} +hl{m<2429:A,m<2450:A,s>2366:R,A} +hct{s>2831:R,x>2514:A,R} +phh{x>1599:A,fmv} +lzk{s<2826:A,m>3497:R,A} +bp{x<381:A,rl} +zfj{s>799:R,R} +grj{a<2590:A,m>3601:A,lzk} +crh{a>415:R,R} +ddq{s<1675:R,m>1049:clt,a<492:tx,R} +gg{s<195:A,a<3334:A,a>3509:R,td} +rrh{a>175:R,s>390:A,a<138:R,A} +bqt{a>1637:bd,kqc} +nbz{x<1655:A,A} +gh{a<309:nl,pgr} +jsk{s<1160:R,R} +fb{m>970:lq,vrm} +qm{s>3780:R,m>2873:A,R} +rp{s<2253:R,x>3049:A,A} +xj{x>463:A,R} +pcx{x>1634:jlk,hk} +dg{a<507:kkr,s<1701:knx,m<2153:nh,ng} +pgr{s<1402:dhr,x<1539:cgz,m>1479:hsz,zcd} +dft{x>894:dv,a>1914:tb,a>1752:R,A} +gvb{a<3246:A,x<897:A,x<1036:mh,bg} +gm{s>3232:gvb,x<862:htj,a<3394:dtm,xrs} +bjr{a>1239:R,A} +xqj{s<591:A,R} +hs{a<101:pfn,fb} +bx{x<2203:A,m>525:A,a<3797:A,R} +rgn{m<2544:dc,A} +dtp{s<2907:R,a<1367:A,s<3356:A,A} +xrs{m<3218:zs,kbh} +pbd{x<767:rdk,a>1955:xqj,R} +jk{x>475:A,m>735:R,A} +jkd{s>382:A,R} +jdj{s>1069:R,x<2063:R,m>1449:jft,R} +sh{s>973:qtg,a<3299:R,s>843:njp,R} +mx{m<782:R,a>1233:R,A} +rz{m>148:A,R} +hv{a>581:A,m<1097:R,x>1545:R,R} +tv{s>1402:R,s>1132:A,A} +fmv{a<3156:A,s>2817:R,a>3300:A,R} +xtp{m>3299:zr,rn} +fsf{m>1065:A,A} +vb{m<902:jk,x<441:A,stj} +fv{s<804:R,R} +nsh{x>1820:R,A} +tsq{x<1368:A,R} +kbh{a>3711:R,A} +ppv{m<1487:qpn,m<2624:lsr,pk} +lth{m<2336:czd,kvl} +ct{a<2007:A,A} +ppr{a>348:A,A} +qzr{a>217:A,A} +blb{x<1814:A,a>909:A,m<331:A,blk} +vqg{x<2587:A,x>2754:A,R} +nbm{x<3693:R,x>3858:A,m<1530:A,R} +cx{m>986:R,m<723:A,s<3404:A,A} +kmf{a<709:st,s>1159:ccj,x<1726:cz,dx} +ts{m>2444:R,a>1139:A,a>383:R,R} +fp{a>1549:A,A} +dk{m<2698:A,x<2449:R,s>3326:A,R} +hhr{x<1749:A,m>547:R,R} +lsv{x<2400:A,m>1615:A,m>1467:R,A} +jlk{s<1130:tr,a>3233:A,s>1532:A,fg} +cg{s>1183:R,A} +srr{a>485:R,s<2618:A,a<252:A,mxc} +kvg{m>35:A,A} +jfc{s<1005:A,x<1825:R,m<560:A,A} +cnq{m>428:A,s>1163:R,a<116:A,R} +zmr{m<2411:R,a>131:bpr,A} +xrx{m>2375:R,x>3390:hnf,R} +xd{s<2074:R,s>2301:A,A} +rl{x>493:R,x<451:A,R} +kq{x<2435:R,s<3612:zbz,s<3796:xs,R} +cjc{m>746:pcx,a<3205:qmx,tlp} +md{m<499:lhl,a>2683:hcs,m>805:mt,A} +gt{s<3090:ljj,A} +jp{x>2291:fp,ds} +gc{m<1185:A,s<3658:A,s<3806:R,R} +hx{s>1399:A,cvn} +pqq{s<233:A,A} +zlc{x>2517:R,m<3848:A,s>2506:R,A} +bvh{x>2874:zml,s<2987:ckd,a<1871:cf,mbh} +xt{a<1365:tnd,x<1659:vrj,s<1095:sxn,hxc} +lkb{a<831:A,R} +qmx{s>1392:fzf,m<385:xtn,jmf} +kvl{x>2180:R,xgl} +hk{m>1029:crj,x<897:R,x>1308:A,tv} +zml{s>2651:dl,xpd} +clt{s>1718:A,A} +lsf{a>1350:rlg,R} +fdr{m>3361:R,m>3132:A,x<654:A,A} +rs{m>835:A,a<920:A,a<1026:R,R} +cbx{a>446:A,a<405:A,x>1386:R,R} +sx{a<174:A,A} +jcq{x>2321:cnv,s<1630:pz,x>1538:dg,mz} +hr{x>1519:R,R} +hc{x<369:rbc,cjz} +vl{s>2539:vmk,fdr} +sz{m>3350:ktp,m>2889:hpq,pl} +fn{s>1110:R,s<1035:A,s<1063:R,R} +cq{s>1362:A,a<1568:A,R} +bg{a<3545:R,a>3798:R,a<3713:A,A} +htj{s>2418:A,m>3061:A,qs} +jbp{x<2646:md,cc} +st{a>564:znc,s<1257:gd,zct} +kpg{a>2688:R,m<3392:A,a<2491:A,A} +fsk{m>357:A,m<311:A,x<3129:R,A} +jbm{a>2382:ntr,x>1828:A,s>174:ck,R} +ps{s<431:A,s>747:A,a>936:R,R} +rpf{s<2575:tfn,a>3276:bfh,x>2664:gp,vm} +ftx{m>1690:A,m>794:R,a<817:A,A} +hm{s<527:tkq,vg} +tq{s>559:R,s<257:df,zdc} +gtk{m>1751:R,x<258:ggg,s<1506:bz,A} +jr{m<842:vc,np} +mn{s<3484:qzr,a<221:bb,qc} +blk{a>796:A,s<1618:R,a>736:R,R} +zb{x<3229:xtz,kgc} +hhp{m<1773:A,x<3131:R,A} +xtq{x>2186:nz,x<1290:R,R} +bdm{x<2036:shf,R} +rlg{s<684:A,m<875:R,m<1631:A,R} +dv{a<2197:R,s>2537:A,a<2331:A,R} +bd{m>1013:R,x>242:A,R} +lq{m>1354:sx,s>720:A,rrh} +fq{x>1264:hv,m>1131:A,tp} +gs{x>1566:ns,vfj} +cnv{s<1602:qsp,m<2380:ddq,ngr} +xm{m<343:A,A} +mmh{s<291:R,x<1456:A,A} +zms{a<2039:lsv,a>2233:R,A} +xp{m>3844:R,m<3838:A,s<2189:A,R} +rtf{s>1523:nf,R} +zc{a>3480:R,x<2433:tnt,s<3567:crr,qm} +vcf{s>1064:R,m<1393:R,x<3004:A,R} +hjl{x<877:A,R} +hgb{a<2627:R,m>2929:A,x>3373:A,R} +xqq{x<1122:zpn,knn} +hpq{a<1358:czz,a<2378:cnl,kn} +dn{m<2817:A,s>955:A,A} +cf{a>676:xtp,a>429:cd,a>284:krj,hrs} +rbc{s>2943:A,a<3139:R,s>2207:R,R} +hzs{s<1005:km,a<777:R,m>1999:A,R} +snd{x<2160:A,R} +pts{s>910:qx,pbd} +pr{x>496:ps,s<622:gn,x<306:lld,zfj} +vrb{m>2168:A,x<2939:A,s<1299:R,A} +fcr{x>1992:bvh,x<1197:kk,sz} +fd{s<3312:R,a>799:R,A} +mt{x>1417:A,A} +ql{x<1450:A,R} +dxp{m<453:dnn,a>2362:R,R} +qx{s<1418:A,njr} +vfj{a<2161:A,A} +sqf{s<443:A,m>2471:A,R} +qhk{a<697:R,m<94:A,s>2770:A,R} +khz{a>1572:A,s<2885:A,ptz} +rrl{a>2077:nk,m>578:qcr,a>996:sjv,pv} +pd{s<3893:R,m>48:R,x>1937:R,R} +hh{s>2263:R,s>1964:R,R} +zdc{a<1650:R,R} +lfz{s>766:A,m>1252:A,szx} +snc{x<510:A,a<758:A,a<783:A,R} +lrv{s>2792:zzc,s<2399:R,m>919:xcs,R} +cbp{a>973:R,m>1397:R,s>454:R,A} +ghz{a>113:hqb,x>2596:qnd,fs} +bpj{a<809:A,s<1088:R,x>1033:A,R} +nm{m>1867:R,x<1396:A,R} +cm{m<1960:R,a<1206:chg,x>2233:dtp,rj} +vv{m>3801:A,R} +cr{a>1924:A,a>1850:A,A} +px{x<1831:A,s<2981:A,R} +cc{m<464:zk,A} +tr{a>2913:A,s>927:A,a<2508:A,R} +rr{s<2862:A,s<3387:A,A} +zlj{x>2280:A,a>1213:A,R} +gvd{a<3539:A,A} +qdx{a<3152:pgj,a>3680:xtq,s<683:db,kf} +rt{m<1169:jxs,x>1210:A,a>241:dh,bl} +fzb{a<1909:A,x>1470:lk,s>2790:R,xnb} +sjv{m>240:tqf,a>1375:mm,s<2795:tl,sd} +lsr{m>2100:vlt,a>915:flh,ktc} +nf{m<1838:R,x>602:R,s>1568:R,R} +knn{x<1325:A,R} +hmj{m<2476:R,m>2543:R,s<3602:A,A} + +{x=1944,m=374,a=2634,s=8} +{x=141,m=893,a=1184,s=204} +{x=2175,m=702,a=33,s=3294} +{x=191,m=188,a=929,s=1228} +{x=3489,m=978,a=1114,s=40} +{x=131,m=2550,a=545,s=507} +{x=618,m=176,a=1023,s=405} +{x=984,m=206,a=583,s=42} +{x=1105,m=967,a=1583,s=1} +{x=1012,m=642,a=1747,s=805} +{x=68,m=2933,a=1053,s=140} +{x=3259,m=216,a=51,s=1001} +{x=2483,m=2048,a=1925,s=37} +{x=614,m=136,a=2225,s=611} +{x=51,m=325,a=1709,s=6} +{x=2709,m=947,a=2155,s=43} +{x=623,m=421,a=845,s=1287} +{x=112,m=1090,a=2387,s=315} +{x=398,m=351,a=871,s=1026} +{x=53,m=183,a=110,s=15} +{x=473,m=150,a=123,s=1760} +{x=125,m=1522,a=1150,s=311} +{x=1714,m=1744,a=1595,s=2652} +{x=833,m=77,a=509,s=2196} +{x=475,m=311,a=1064,s=206} +{x=2281,m=1760,a=1058,s=646} +{x=807,m=1435,a=2360,s=2883} +{x=399,m=531,a=518,s=14} +{x=912,m=1148,a=429,s=1148} +{x=167,m=28,a=1019,s=240} +{x=1147,m=2396,a=2581,s=2398} +{x=1045,m=2929,a=142,s=213} +{x=16,m=821,a=144,s=128} +{x=1533,m=159,a=1111,s=522} +{x=1165,m=1032,a=1492,s=36} +{x=693,m=691,a=603,s=1494} +{x=2732,m=391,a=969,s=85} +{x=1533,m=71,a=14,s=3024} +{x=4,m=178,a=1541,s=79} +{x=141,m=768,a=120,s=824} +{x=973,m=593,a=416,s=384} +{x=801,m=193,a=1492,s=27} +{x=2256,m=3879,a=2173,s=2369} +{x=794,m=939,a=832,s=618} +{x=1997,m=827,a=34,s=1916} +{x=505,m=492,a=1173,s=121} +{x=287,m=2210,a=1670,s=293} +{x=822,m=1053,a=214,s=602} +{x=362,m=166,a=2328,s=97} +{x=2389,m=1629,a=1179,s=653} +{x=423,m=2182,a=1382,s=673} +{x=200,m=2534,a=1485,s=872} +{x=2310,m=2501,a=3008,s=462} +{x=822,m=1964,a=1352,s=1898} +{x=617,m=401,a=424,s=397} +{x=639,m=253,a=62,s=1178} +{x=2888,m=381,a=551,s=586} +{x=3024,m=473,a=7,s=578} +{x=36,m=1931,a=696,s=858} +{x=2041,m=457,a=16,s=451} +{x=829,m=815,a=1595,s=2977} +{x=1033,m=1585,a=559,s=2116} +{x=1207,m=41,a=393,s=567} +{x=216,m=5,a=1246,s=432} +{x=519,m=181,a=85,s=2719} +{x=323,m=1368,a=1654,s=2271} +{x=73,m=1535,a=1105,s=1227} +{x=1740,m=1501,a=2659,s=587} +{x=2557,m=377,a=1542,s=1275} +{x=1937,m=116,a=711,s=746} +{x=797,m=17,a=880,s=215} +{x=628,m=1378,a=115,s=254} +{x=159,m=1975,a=1625,s=1348} +{x=277,m=1402,a=873,s=2550} +{x=1293,m=666,a=809,s=1739} +{x=97,m=33,a=721,s=22} +{x=988,m=1837,a=2899,s=6} +{x=1629,m=1897,a=966,s=1792} +{x=2469,m=410,a=904,s=2235} +{x=3263,m=3915,a=2380,s=901} +{x=735,m=1334,a=2677,s=575} +{x=228,m=1493,a=2053,s=200} +{x=1507,m=545,a=1127,s=466} +{x=2809,m=112,a=36,s=106} +{x=2140,m=382,a=2961,s=199} +{x=1597,m=103,a=2660,s=2912} +{x=306,m=3150,a=185,s=377} +{x=601,m=2052,a=134,s=336} +{x=349,m=713,a=108,s=224} +{x=783,m=178,a=944,s=2074} +{x=1252,m=1085,a=78,s=850} +{x=143,m=2078,a=92,s=36} +{x=319,m=1013,a=1559,s=223} +{x=1,m=2330,a=170,s=637} +{x=270,m=519,a=513,s=1457} +{x=839,m=1168,a=175,s=543} +{x=3797,m=380,a=36,s=711} +{x=54,m=326,a=1082,s=884} +{x=2212,m=1832,a=2355,s=74} +{x=171,m=540,a=1547,s=1734} +{x=733,m=1898,a=911,s=296} +{x=2215,m=502,a=56,s=162} +{x=326,m=489,a=1289,s=2268} +{x=538,m=618,a=1284,s=181} +{x=907,m=298,a=12,s=683} +{x=919,m=1744,a=193,s=1311} +{x=352,m=426,a=623,s=364} +{x=2529,m=2360,a=200,s=290} +{x=123,m=240,a=1817,s=882} +{x=347,m=812,a=1948,s=3} +{x=13,m=25,a=2175,s=352} +{x=870,m=52,a=1641,s=2573} +{x=2602,m=13,a=3010,s=1343} +{x=459,m=653,a=1241,s=1162} +{x=218,m=81,a=582,s=2449} +{x=457,m=1231,a=931,s=216} +{x=373,m=312,a=1286,s=839} +{x=1294,m=115,a=258,s=1645} +{x=1983,m=1367,a=102,s=891} +{x=280,m=127,a=297,s=92} +{x=2344,m=811,a=1648,s=2198} +{x=607,m=711,a=103,s=17} +{x=438,m=141,a=1178,s=87} +{x=508,m=980,a=2773,s=897} +{x=163,m=873,a=112,s=13} +{x=1776,m=1924,a=2306,s=1502} +{x=1644,m=1430,a=468,s=1032} +{x=1996,m=166,a=500,s=44} +{x=877,m=2113,a=106,s=77} +{x=606,m=475,a=1004,s=1518} +{x=599,m=332,a=587,s=2451} +{x=1933,m=1173,a=282,s=2563} +{x=734,m=768,a=409,s=2222} +{x=220,m=683,a=3306,s=499} +{x=1923,m=661,a=950,s=397} +{x=107,m=890,a=1111,s=3107} +{x=328,m=461,a=121,s=451} +{x=44,m=96,a=1393,s=3698} +{x=1790,m=2863,a=454,s=648} +{x=663,m=3091,a=410,s=181} +{x=1832,m=201,a=1234,s=2606} +{x=2434,m=3163,a=183,s=1353} +{x=1048,m=1787,a=200,s=351} +{x=464,m=272,a=56,s=1247} +{x=740,m=648,a=574,s=1271} +{x=2886,m=784,a=2316,s=2107} +{x=698,m=1111,a=2183,s=3245} +{x=676,m=1724,a=817,s=349} +{x=730,m=1493,a=832,s=362} +{x=222,m=135,a=2512,s=102} +{x=42,m=1061,a=2535,s=2516} +{x=1552,m=37,a=155,s=288} +{x=1431,m=2,a=207,s=1366} +{x=1276,m=265,a=321,s=510} +{x=194,m=458,a=1672,s=401} +{x=362,m=2060,a=400,s=1461} +{x=2459,m=2101,a=141,s=956} +{x=71,m=2833,a=940,s=383} +{x=2471,m=1950,a=2123,s=271} +{x=321,m=1017,a=9,s=1275} +{x=2063,m=454,a=2973,s=2973} +{x=2305,m=1296,a=1226,s=492} +{x=1519,m=292,a=2874,s=171} +{x=2382,m=324,a=275,s=29} +{x=809,m=2,a=3287,s=462} +{x=616,m=150,a=289,s=69} +{x=386,m=449,a=537,s=1761} +{x=128,m=815,a=134,s=420} +{x=1647,m=19,a=1352,s=2} +{x=205,m=10,a=12,s=146} +{x=568,m=16,a=1237,s=1529} +{x=1512,m=2264,a=644,s=2495} +{x=133,m=307,a=1933,s=154} +{x=274,m=1292,a=2878,s=402} +{x=1053,m=55,a=630,s=136} +{x=36,m=80,a=101,s=1037} +{x=856,m=877,a=2063,s=378} +{x=78,m=149,a=89,s=42} +{x=65,m=510,a=1880,s=1042} +{x=241,m=180,a=653,s=477} +{x=1486,m=703,a=1681,s=1060} +{x=1499,m=903,a=1976,s=2050} +{x=596,m=311,a=352,s=709} +{x=649,m=1165,a=1479,s=276} +{x=383,m=581,a=420,s=199} +{x=456,m=2294,a=682,s=141} +{x=503,m=239,a=114,s=1220} +{x=328,m=2272,a=172,s=926} +{x=18,m=1949,a=104,s=1705} +{x=1480,m=557,a=420,s=975} +{x=192,m=193,a=1258,s=2211} +{x=590,m=1061,a=2034,s=20} +{x=1468,m=1643,a=115,s=2094} +{x=2606,m=1891,a=462,s=1082} +{x=1783,m=1289,a=1352,s=462} +{x=1168,m=169,a=279,s=1599} +{x=741,m=2359,a=1096,s=610} +{x=267,m=892,a=881,s=1623} +{x=2198,m=1275,a=2212,s=241} +{x=552,m=1892,a=207,s=818} \ No newline at end of file diff --git a/inputs/19_test.txt b/inputs/19_test.txt new file mode 100644 index 0000000..a08746e --- /dev/null +++ b/inputs/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} \ No newline at end of file