Skip to content

Instantly share code, notes, and snippets.

Created December 7, 2015 19:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/45a220cbec93e4f283c6 to your computer and use it in GitHub Desktop.
Save anonymous/45a220cbec93e4f283c6 to your computer and use it in GitHub Desktop.
GNU Makefile solution for Advent Of Code day 7
# Advent of Code day 7 solution by askalski
# http://adventofcode.com/
SHELL=/bin/bash
advent7: answer.part2
@echo -n "Part 1: "; cat answer.part1
@echo -n "Part 2: "; cat answer.part2
clean:
@rm -f answer.part1 answer.part2 advent7-part1.sh advent7-part2.sh Makefile.solver
answer.part1: advent7-part1.sh
@$(SHELL) $^ >$@
answer.part2: advent7-part2.sh
@$(SHELL) $^ >$@
advent7-part2.sh: answer.part1
@sed s/^b=.*/b=`cat answer.part1`/ advent7-part1.sh >$@
advent7-part1.sh: Makefile.solver
@( $(MAKE) -s -f $^ a ; echo 'echo $$a' ) >$@
Makefile.solver: input.txt
@sed -r \
' s/AND/\&/;'\
' s/OR/|/;'\
' s/LSHIFT/<</;'\
' s/RSHIFT/>>/;'\
' s/NOT/~/;'\
' s/^(([a-z]*)[0-9]* )?([^ ]* )?(([a-z]*)[0-9]*) -> (.*)/\6: \2 \5\n\t@echo '\''\6=$$$$((\1 \3 \4))'\''/;'\
$^ >$@
input.txt:
$(error Please name your input file input.txt)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment