diff --git a/2021/day02/EXAMPLE.txt b/2021/day02/EXAMPLE.txt new file mode 100644 index 0000000..b7172ac --- /dev/null +++ b/2021/day02/EXAMPLE.txt @@ -0,0 +1,6 @@ +forward 5 +down 5 +forward 8 +up 3 +down 8 +forward 2 diff --git a/2021/day02/INPUT.txt b/2021/day02/INPUT.txt new file mode 100644 index 0000000..96cdcf7 --- /dev/null +++ b/2021/day02/INPUT.txt @@ -0,0 +1,1000 @@ +forward 5 +forward 2 +forward 9 +down 2 +forward 9 +forward 3 +forward 2 +down 6 +forward 3 +forward 3 +down 3 +down 3 +forward 8 +down 5 +forward 7 +forward 9 +forward 9 +forward 6 +forward 9 +forward 3 +forward 3 +forward 1 +forward 7 +down 6 +forward 7 +forward 4 +down 3 +down 1 +forward 4 +down 7 +down 2 +down 8 +forward 9 +down 5 +down 2 +forward 6 +up 4 +down 3 +down 1 +down 6 +down 7 +forward 6 +up 2 +forward 2 +down 9 +down 3 +forward 7 +up 3 +up 7 +forward 8 +forward 7 +down 4 +up 8 +up 1 +forward 4 +down 6 +forward 9 +forward 3 +down 1 +down 1 +forward 2 +forward 4 +forward 3 +up 2 +forward 1 +down 8 +forward 4 +down 5 +forward 9 +up 1 +forward 3 +forward 6 +up 8 +forward 1 +forward 7 +up 9 +down 3 +up 7 +down 1 +forward 5 +forward 3 +forward 7 +down 5 +down 1 +down 2 +down 4 +down 5 +down 5 +down 8 +up 9 +down 7 +down 7 +down 6 +forward 3 +forward 5 +forward 1 +forward 8 +up 4 +down 8 +down 3 +down 1 +down 9 +down 3 +down 9 +down 8 +down 2 +forward 1 +forward 7 +forward 1 +down 3 +down 1 +up 3 +down 6 +forward 6 +forward 6 +down 8 +forward 3 +down 1 +forward 2 +down 4 +down 7 +up 8 +forward 4 +down 4 +up 1 +forward 6 +down 6 +forward 5 +forward 9 +up 5 +down 3 +up 9 +down 6 +up 3 +down 9 +down 4 +down 2 +forward 3 +down 6 +down 7 +down 9 +forward 7 +forward 2 +forward 5 +up 6 +down 8 +forward 1 +down 2 +forward 8 +down 5 +down 2 +up 4 +forward 9 +up 4 +down 4 +down 2 +forward 3 +up 2 +down 5 +down 9 +up 4 +forward 9 +down 5 +down 2 +down 2 +forward 9 +up 9 +forward 6 +up 7 +down 2 +forward 8 +down 1 +forward 2 +down 3 +up 6 +down 4 +forward 5 +up 4 +forward 5 +forward 9 +forward 9 +forward 5 +down 1 +down 7 +forward 6 +forward 9 +forward 3 +forward 4 +up 8 +down 1 +up 1 +down 3 +up 1 +down 5 +forward 6 +up 5 +up 6 +down 9 +forward 7 +down 7 +forward 1 +forward 2 +up 4 +forward 4 +down 9 +up 4 +down 6 +forward 1 +up 9 +forward 2 +down 8 +forward 6 +forward 6 +down 6 +forward 5 +forward 9 +up 8 +down 4 +forward 8 +up 6 +down 4 +up 9 +forward 2 +down 8 +down 6 +forward 2 +down 3 +forward 1 +forward 3 +forward 2 +up 4 +down 6 +up 6 +down 4 +down 2 +forward 1 +up 7 +forward 9 +forward 9 +forward 7 +down 1 +down 9 +forward 5 +forward 4 +forward 1 +forward 4 +down 5 +forward 6 +forward 8 +down 5 +down 7 +up 2 +up 1 +forward 5 +down 5 +down 1 +down 5 +down 8 +down 8 +down 5 +forward 7 +down 6 +down 2 +forward 9 +forward 1 +forward 3 +forward 4 +up 3 +down 4 +up 7 +forward 8 +forward 7 +up 4 +down 9 +forward 7 +forward 6 +up 1 +down 1 +up 6 +down 5 +up 1 +forward 2 +down 2 +forward 3 +down 6 +up 5 +up 4 +down 8 +down 5 +down 3 +down 4 +up 3 +down 3 +down 2 +down 7 +up 2 +down 8 +forward 5 +up 1 +forward 9 +down 6 +down 6 +down 8 +up 4 +forward 9 +forward 8 +up 7 +down 9 +down 4 +forward 9 +forward 9 +up 2 +down 1 +forward 1 +forward 4 +forward 2 +forward 9 +down 1 +down 3 +down 1 +down 3 +up 5 +down 2 +forward 4 +down 2 +forward 1 +down 6 +up 9 +down 3 +forward 1 +forward 5 +forward 8 +down 5 +down 6 +down 9 +forward 4 +down 7 +up 8 +forward 8 +down 9 +forward 6 +down 8 +up 3 +forward 4 +up 9 +down 7 +up 7 +forward 6 +forward 1 +up 9 +down 7 +up 7 +down 5 +forward 6 +up 7 +down 8 +down 8 +forward 4 +up 4 +forward 1 +forward 6 +down 4 +up 9 +forward 4 +up 1 +up 8 +up 6 +forward 9 +forward 4 +forward 7 +up 1 +down 5 +up 5 +up 5 +forward 4 +down 9 +up 8 +down 6 +down 3 +down 6 +forward 2 +up 1 +forward 3 +up 8 +down 1 +forward 5 +down 9 +forward 4 +up 5 +forward 3 +forward 2 +down 8 +down 9 +up 6 +down 9 +down 7 +forward 5 +forward 4 +forward 9 +up 8 +forward 3 +down 7 +forward 9 +down 8 +forward 4 +forward 8 +up 9 +up 9 +down 6 +forward 5 +forward 5 +forward 5 +up 2 +up 2 +up 1 +down 6 +forward 2 +forward 2 +down 8 +down 6 +up 2 +forward 1 +down 1 +up 5 +forward 7 +down 2 +forward 1 +forward 3 +down 5 +down 7 +forward 8 +forward 4 +forward 9 +up 1 +up 7 +up 9 +forward 3 +up 1 +forward 6 +forward 3 +forward 9 +up 9 +down 6 +forward 8 +up 6 +down 9 +forward 3 +forward 7 +down 9 +forward 4 +forward 5 +forward 7 +down 1 +down 4 +down 3 +forward 6 +down 3 +forward 7 +forward 8 +down 1 +forward 3 +down 4 +up 7 +forward 2 +forward 8 +down 6 +up 3 +down 2 +forward 9 +forward 5 +forward 7 +up 2 +up 6 +down 9 +forward 1 +up 5 +forward 1 +up 6 +up 2 +up 1 +forward 6 +down 8 +forward 7 +down 5 +forward 3 +down 9 +down 4 +forward 3 +down 1 +up 1 +up 7 +forward 4 +down 6 +forward 3 +forward 2 +down 8 +forward 9 +forward 6 +up 3 +down 3 +down 1 +down 7 +up 8 +up 2 +up 8 +forward 6 +forward 8 +forward 6 +forward 4 +down 6 +forward 6 +forward 6 +forward 1 +down 2 +forward 2 +forward 6 +down 1 +up 6 +forward 3 +forward 9 +forward 6 +down 2 +forward 2 +up 4 +down 2 +up 4 +forward 2 +forward 2 +forward 3 +up 1 +forward 8 +forward 3 +forward 3 +forward 1 +down 5 +down 9 +forward 4 +down 1 +forward 5 +forward 2 +down 5 +forward 6 +forward 3 +up 3 +forward 6 +forward 9 +forward 5 +down 2 +down 2 +down 7 +forward 8 +down 1 +down 5 +down 9 +up 3 +up 5 +up 4 +forward 3 +down 9 +down 2 +down 8 +down 5 +down 2 +forward 4 +up 3 +down 5 +up 3 +down 8 +down 7 +up 1 +forward 2 +forward 1 +down 2 +up 1 +up 5 +down 8 +down 3 +up 9 +forward 2 +down 8 +down 4 +down 3 +forward 3 +forward 7 +up 1 +down 9 +forward 1 +down 6 +up 3 +up 5 +down 6 +up 4 +forward 7 +up 4 +forward 9 +up 4 +forward 4 +down 7 +down 2 +down 8 +up 3 +down 7 +down 4 +up 5 +forward 8 +down 8 +down 1 +forward 7 +up 9 +down 5 +up 8 +down 1 +up 3 +forward 8 +up 4 +down 1 +up 1 +up 7 +forward 3 +forward 6 +forward 5 +forward 2 +down 4 +forward 2 +down 7 +up 7 +up 6 +down 4 +forward 4 +forward 9 +forward 7 +down 4 +down 6 +forward 5 +down 2 +down 6 +down 2 +down 2 +forward 9 +up 5 +forward 9 +down 3 +down 6 +down 1 +forward 5 +down 5 +forward 7 +forward 9 +up 8 +forward 6 +down 6 +down 2 +forward 8 +forward 5 +up 9 +up 4 +forward 1 +forward 2 +forward 2 +up 9 +down 6 +forward 6 +forward 8 +up 5 +up 7 +forward 4 +down 3 +forward 1 +up 6 +up 9 +forward 6 +up 8 +forward 5 +down 4 +forward 1 +down 3 +forward 1 +forward 6 +forward 2 +up 4 +down 6 +forward 9 +down 2 +forward 4 +down 4 +forward 3 +down 5 +down 2 +forward 2 +forward 2 +up 1 +forward 1 +down 7 +down 8 +up 6 +forward 8 +forward 5 +forward 8 +down 6 +forward 5 +down 3 +up 3 +forward 4 +up 9 +forward 8 +forward 4 +down 3 +forward 6 +up 6 +down 2 +down 7 +down 3 +down 2 +down 8 +forward 5 +down 9 +up 6 +down 6 +forward 8 +down 1 +forward 8 +down 1 +down 1 +forward 3 +forward 9 +down 6 +forward 7 +down 4 +forward 1 +forward 4 +forward 3 +down 6 +forward 5 +down 5 +forward 1 +forward 3 +forward 8 +down 9 +up 8 +up 6 +up 6 +forward 2 +forward 9 +down 4 +down 8 +forward 6 +up 1 +down 2 +down 6 +forward 6 +forward 2 +up 8 +forward 6 +down 9 +down 1 +forward 7 +forward 6 +forward 5 +forward 6 +down 6 +up 7 +down 9 +forward 9 +forward 3 +forward 5 +down 4 +down 1 +down 7 +up 3 +up 7 +forward 6 +forward 8 +down 7 +down 4 +forward 7 +down 6 +up 1 +forward 4 +down 2 +forward 4 +forward 3 +forward 4 +forward 4 +up 3 +down 8 +down 4 +down 1 +down 8 +down 3 +up 9 +down 4 +forward 7 +down 6 +up 2 +down 8 +up 9 +down 6 +forward 1 +down 3 +forward 9 +down 9 +forward 1 +down 5 +up 5 +up 1 +forward 8 +down 8 +down 9 +down 5 +down 2 +down 5 +forward 3 +down 9 +forward 4 +forward 4 +up 2 +forward 8 +forward 4 +forward 1 +down 5 +forward 5 +down 5 +forward 6 +forward 4 +up 5 +down 9 +up 3 +up 8 +forward 5 +forward 9 +up 6 +forward 6 +down 5 +forward 7 +down 8 +down 7 +down 9 +forward 4 +down 8 +forward 4 +down 5 +forward 6 +forward 4 +down 7 +down 5 +forward 4 +down 3 +up 4 +forward 3 +up 9 +down 8 +forward 9 +forward 6 +forward 9 +down 1 +forward 2 +up 5 +down 9 +down 2 +down 9 +up 8 +forward 7 +forward 8 +forward 4 +down 1 +up 8 +forward 8 +down 8 +down 4 +forward 9 +down 3 +forward 7 +forward 9 +down 5 +forward 7 +forward 1 +forward 5 +forward 2 +down 4 +forward 7 +down 6 +forward 3 +down 9 +forward 3 +down 5 +up 6 +up 3 +forward 1 +up 9 +down 1 +forward 2 +down 8 +down 7 +up 9 +up 2 +down 5 +up 9 +forward 9 +forward 9 +down 1 +forward 5 +up 5 +forward 1 +up 1 +down 3 +forward 3 +down 3 +forward 3 +up 5 +up 4 +down 7 +down 7 +down 4 +forward 7 +down 6 +forward 1 +up 1 +down 8 +forward 4 +down 3 +forward 9 +up 6 +forward 6 +forward 3 +up 9 +down 9 +forward 4 +up 5 +down 3 +down 8 +down 3 +down 3 +forward 4 +forward 6 +forward 4 +up 2 +up 3 +up 5 +down 5 +down 6 +forward 5 +forward 4 +down 1 +down 2 +up 8 +down 2 +down 1 +up 4 +forward 5 +forward 8 +forward 8 +forward 5 +down 3 +forward 4 +up 8 +forward 7 +forward 4 +down 9 +down 6 +forward 2 +down 7 +forward 6 +up 7 +up 1 +up 4 +forward 2 +forward 9 +forward 7 +up 5 +forward 2 +up 5 +forward 1 +forward 2 +forward 4 +down 6 +forward 2 +up 6 +up 7 +forward 3 +forward 2 +forward 6 +forward 4 +forward 9 +forward 6 +up 6 +forward 5 +up 7 +up 5 +down 6 +down 2 +down 1 +forward 7 +down 5 +down 1 +down 7 +forward 8 +forward 8 +forward 5 +down 9 +forward 6 diff --git a/2021/day02/Makefile b/2021/day02/Makefile new file mode 100644 index 0000000..8b0eac6 --- /dev/null +++ b/2021/day02/Makefile @@ -0,0 +1,54 @@ +# AOC daily Makefile - GNU make only. +# +# Copyright (C) 2021 Bruno Raoult ("br") +# Licensed under the GNU General Public License v3.0 or later. +# Some rights reserved. See COPYING. +# * You should have received a copy of the GNU General Public License along with this +# program. If not, see . +# +# SPDX-License-Identifier: GPL-3.0-or-later +# + +INPUT := INPUT.txt +SHELL := /bin/bash + +CC := gcc + +LIB := aoc_$(shell uname -m) +INCDIR := ../include +LIBDIR := ../lib +LDFLAGS := -L$(LIBDIR) +LDLIB := -l$(LIB) + +export LD_LIBRARY_PATH = $(LIBDIR) + +CFLAGS += -std=gnu99 +CFLAGS += -O2 +CFLAGS += -g +CFLAGS += -Wall +CFLAGS += -Wextra +CFLAGS += -march=native + +CFLAGS += -DDEBUG_POOL # memory pools management + +TIME := \time -f "\ttime: %E real, %U user, %S sys\n\tcontext-switch:\t%c+%w, page-faults: %F+%R\n" +export PATH := .:$(PATH) + +.PHONY: clean all compile deploy ex1 ex2 + +all: ex1 ex2 + +compile: aoc-c + +ex1: aoc-c + @$(TIME) aoc-c -d 5 -p 1 < $(INPUT) + +ex2: aoc-c + @$(TIME) aoc-c -d 5 -p 2 < $(INPUT) + +clean: + @rm -f aoc-c core* + +.c: + @echo compiling $< + @$(CC) $(CFLAGS) $(LDFLAGS) -I $(INCDIR) $< $(LDLIB) -o $@ diff --git a/2021/day02/README.txt b/2021/day02/README.txt new file mode 100644 index 0000000..91d8a7d --- /dev/null +++ b/2021/day02/README.txt @@ -0,0 +1,39 @@ +--- Day 2: Dive! --- + +Now, you need to figure out how to pilot this thing. + +It seems like the submarine can take a series of commands like forward 1, down 2, or up 3: + + forward X increases the horizontal position by X units. + down X increases the depth by X units. + up X decreases the depth by X units. + +Note that since you're on a submarine, down and up affect your depth, and so they have the opposite result of what you might expect. + +The submarine seems to already have a planned course (your puzzle input). You should probably figure out where it's going. For example: + +forward 5 +down 5 +forward 8 +up 3 +down 8 +forward 2 + +Your horizontal position and depth both start at 0. The steps above would then modify them as follows: + + forward 5 adds 5 to your horizontal position, a total of 5. + down 5 adds 5 to your depth, resulting in a value of 5. + forward 8 adds 8 to your horizontal position, a total of 13. + up 3 decreases your depth by 3, resulting in a value of 2. + down 8 adds 8 to your depth, resulting in a value of 10. + forward 2 adds 2 to your horizontal position, a total of 15. + +After following these instructions, you would have a horizontal position of 15 and a depth of 10. (Multiplying these together produces 150.) + +Calculate the horizontal position and depth you would have after following the planned course. What do you get if you multiply your final horizontal position by your final depth? + +To begin, get your puzzle input. + +Answer: + +You can also [Shareon Mastodon] this puzzle.