/* Advent of Code 2024 in Picat. Problem 19 https://adventofcode.com/2024/day/19 This program was created by Hakan Kjellerstrand, hakank@gmail.com See also my Picat page: http://www.hakank.org/picat/ */ import util. import aoc_utils. main => go. /* Part 1 Hyperfine Benchmark 1: picat -g go 19.pi Time (mean ± σ): 58.5 ms ± 11.4 ms [User: 44.7 ms, System: 13.8 ms] Range (min … max): 41.6 ms … 80.9 ms 43 runs */ go => Split = split2(read_file_chars("19.txt")), Patterns = Split.first.split(", "), Designs = Split.second.split("\n"), [1 : Design in Designs, check1(Design,Patterns)].len.println. check1([],_). check1(L,Ps) :- member(P,Ps), append(P,Rest,L), check1(Rest,Ps). /* Part 2 Hyperfine Benchmark 1: picat -g go2 19.pi Time (mean ± σ): 266.7 ms ± 10.9 ms [User: 252.4 ms, System: 13.9 ms] Range (min … max): 239.1 ms … 279.8 ms 11 runs */ go2 => Split = split2(read_file_chars("19.txt")), Patterns = Split.first.split(", "), Designs = Split.second.split("\n"), [check2(Design,Patterns) : Design in Designs].sum.println. table check2([_],Ps) = 1. check2(L,Ps) = [check2(Rest,Ps) : P in Ps, append(P,Rest,L)].sum.