diff options
Diffstat (limited to 'day04')
-rw-r--r-- | day04/Dockerfile | 7 | ||||
-rw-r--r-- | day04/Makefile | 14 | ||||
-rwxr-xr-x | day04/entrypoint | 13 | ||||
-rw-r--r-- | day04/input | 1 | ||||
-rw-r--r-- | day04/input.dzn | 1 | ||||
-rwxr-xr-x | day04/part1 | 3 | ||||
-rw-r--r-- | day04/part1.mzn | 27 | ||||
-rwxr-xr-x | day04/part2 | 3 | ||||
-rw-r--r-- | day04/part2.mzn | 29 |
9 files changed, 98 insertions, 0 deletions
diff --git a/day04/Dockerfile b/day04/Dockerfile new file mode 100644 index 0000000..363f0e6 --- /dev/null +++ b/day04/Dockerfile @@ -0,0 +1,7 @@ +FROM minizinc/minizinc:latest + +WORKDIR /opt + +COPY . . + +ENTRYPOINT ["./entrypoint"] diff --git a/day04/Makefile b/day04/Makefile new file mode 100644 index 0000000..991c0f6 --- /dev/null +++ b/day04/Makefile @@ -0,0 +1,14 @@ +DAY = 04 + +.PHONY: run clean + +run: build + docker run -it --rm aoc2019day$(DAY) + +build: part* input.dzn + docker build -t aoc2019day$(DAY) . + touch build + +clean: + docker image rm -f aoc2019day$(DAY) + rm -f build diff --git a/day04/entrypoint b/day04/entrypoint new file mode 100755 index 0000000..3a5d4de --- /dev/null +++ b/day04/entrypoint @@ -0,0 +1,13 @@ +#!/bin/bash + +if [ -x part1 ] ; then + echo -ne "Part 1:\n\t" + time ./part1 +fi +if [ -x part1 -a -x part2 ] ; then + echo +fi +if [ -x part2 ] ; then + echo -ne "Part 2:\n\t" + time ./part2 +fi diff --git a/day04/input b/day04/input new file mode 100644 index 0000000..b612032 --- /dev/null +++ b/day04/input @@ -0,0 +1 @@ +183564-657474 diff --git a/day04/input.dzn b/day04/input.dzn new file mode 100644 index 0000000..90fff44 --- /dev/null +++ b/day04/input.dzn @@ -0,0 +1 @@ +range = 183564..657474; diff --git a/day04/part1 b/day04/part1 new file mode 100755 index 0000000..d78634e --- /dev/null +++ b/day04/part1 @@ -0,0 +1,3 @@ +#!/bin/bash + +minizinc --all-solutions -s part1.mzn input.dzn 3>&1 1>/dev/null 2>&3- | cut -d= -f2 diff --git a/day04/part1.mzn b/day04/part1.mzn new file mode 100644 index 0000000..eccd08a --- /dev/null +++ b/day04/part1.mzn @@ -0,0 +1,27 @@ +include "globals.mzn"; + +par set of int: range; + +array[0..5] of var 0..9: digits; +var range: code; + +constraint + code = + digits[0] * 100000 + + digits[1] * 10000 + + digits[2] * 1000 + + digits[3] * 100 + + digits[4] * 10 + + digits[5]; + +constraint + exists (i in 0..4) ( + digits[i] == digits[i+1] + ); + +constraint + increasing(digits); + +output [show(code)]; + +solve satisfy; diff --git a/day04/part2 b/day04/part2 new file mode 100755 index 0000000..3376bec --- /dev/null +++ b/day04/part2 @@ -0,0 +1,3 @@ +#!/bin/bash + +minizinc --all-solutions -s part2.mzn input.dzn 3>&1 1>/dev/null 2>&3- | cut -d= -f2 diff --git a/day04/part2.mzn b/day04/part2.mzn new file mode 100644 index 0000000..ea5bbb1 --- /dev/null +++ b/day04/part2.mzn @@ -0,0 +1,29 @@ +include "globals.mzn"; + +par set of int: range; + +array[0..5] of var 0..9: digits; +var range: code; + +constraint + code = + digits[0] * 100000 + + digits[1] * 10000 + + digits[2] * 1000 + + digits[3] * 100 + + digits[4] * 10 + + digits[5]; + +constraint + exists (i in 0..4) ( + digits[i] == digits[i+1] /\ + if i > 0 then digits[i-1] != digits[i] else true endif /\ + if i < 4 then digits[i+2] != digits[i] else true endif + ); + +constraint + increasing(digits); + +output [show(code)]; + +solve satisfy; |