From 487c3425a23ef52c6de3c045f1110d5e7342d042 Mon Sep 17 00:00:00 2001 From: Nat Lasseter Date: Tue, 22 Oct 2019 18:40:19 +0100 Subject: Day 14, part 2 not working (very slow) --- day14/Dockerfile | 7 +++++++ day14/Makefile | 17 +++++++++++++++++ day14/entrypoint | 13 +++++++++++++ day14/input | 1 + day14/part1 | 24 ++++++++++++++++++++++++ day14/part2 | 32 ++++++++++++++++++++++++++++++++ 6 files changed, 94 insertions(+) create mode 100644 day14/Dockerfile create mode 100644 day14/Makefile create mode 100755 day14/entrypoint create mode 100644 day14/input create mode 100755 day14/part1 create mode 100755 day14/part2 diff --git a/day14/Dockerfile b/day14/Dockerfile new file mode 100644 index 0000000..5e0a8b7 --- /dev/null +++ b/day14/Dockerfile @@ -0,0 +1,7 @@ +FROM ruby:2.5-slim + +WORKDIR /opt + +COPY . . + +ENTRYPOINT ["./entrypoint"] diff --git a/day14/Makefile b/day14/Makefile new file mode 100644 index 0000000..3ad62be --- /dev/null +++ b/day14/Makefile @@ -0,0 +1,17 @@ +DAY = 14 + +.PHONY: run clean push + +run: build + docker run -it --rm aoc2018day$(DAY) + +build: part* input + docker build -t aoc2018day$(DAY) . + touch build + +clean: + rm -f build + +push: build + docker tag aoc2018day$(DAY) advent.4574.co.uk/aoc2018day$(DAY) + docker push advent.4574.co.uk/aoc2018day$(DAY) diff --git a/day14/entrypoint b/day14/entrypoint new file mode 100755 index 0000000..8982d21 --- /dev/null +++ b/day14/entrypoint @@ -0,0 +1,13 @@ +#!/bin/bash + +if [ -x part1 ] ; then + echo -ne "Part 1:\n\t" + time ./part1 < input +fi +if [ -x part1 -a -x part2 ] ; then + echo +fi +if [ -x part2 ] ; then + echo -ne "Part 2:\n\t" + time ./part2 < input +fi diff --git a/day14/input b/day14/input new file mode 100644 index 0000000..2f44252 --- /dev/null +++ b/day14/input @@ -0,0 +1 @@ +165061 diff --git a/day14/part1 b/day14/part1 new file mode 100755 index 0000000..2f46375 --- /dev/null +++ b/day14/part1 @@ -0,0 +1,24 @@ +#!/usr/bin/env ruby + +input = $stdin.readlines[0].strip.to_i + +scores = [3, 7] +elf1 = 0 +elf2 = 1 + +loop do + se1 = scores[elf1] + se2 = scores[elf2] + + sum = se1 + se2 + scores += sum.to_s.chars.map(&:to_i) + + slen = scores.length + + elf1 = (elf1 + 1 + se1) % slen + elf2 = (elf2 + 1 + se2) % slen + + break if slen > (input + 10) +end + +puts scores[input...(input+10)].join diff --git a/day14/part2 b/day14/part2 new file mode 100755 index 0000000..9a2c9f3 --- /dev/null +++ b/day14/part2 @@ -0,0 +1,32 @@ +#!/usr/bin/env ruby + +input = $stdin.readlines[0].strip.chars.map(&:to_i) +ilen = input.length + +scores = [3, 7] +elf1 = 0 +elf2 = 1 + +loop do + se1 = scores[elf1] + se2 = scores[elf2] + + sum = se1 + se2 + scores += sum.to_s.chars.map(&:to_i) + + slen = scores.length + + elf1 = (elf1 + 1 + se1) % slen + elf2 = (elf2 + 1 + se2) % slen + + m1 = scores[-ilen..-1] + m2 = scores[-ilen-1..-2] + + if m1 == input then + puts slen - ilen + break + elsif m2 == input then + puts slen - ilen - 1 + break + end +end -- cgit v1.2.1