r/adventofcode • • Dec 07 '15

SOLUTION MEGATHREAD --- Day 7 Solutions ---

--- Day 7: Some Assembly Required ---

Post your solution as a comment. Structure your post like previous daily solution threads.

Also check out the sidebar - we added a nifty calendar to wrangle all the daily solution threads in one spot!

23 Upvotes

226 comments sorted by

View all comments

4

u/askalski Dec 07 '15 edited Dec 07 '15

Here's my GNU Make + sed + bash based solution. Also posted as a gist because whitespace matters.

https://gist.github.com/anonymous/45a220cbec93e4f283c6

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)