From a4b171a4394ef2bd597175a08628eccc82040985 Mon Sep 17 00:00:00 2001 From: plasmaofthedawn Date: Wed, 6 Dec 2023 00:59:01 -0500 Subject: [PATCH] python day 4 and pascal day 6 --- Makefile | 11 +++++++++++ pythonsrc/day4/part1.py | 11 +++++++++++ pythonsrc/day4/part2.py | 34 ++++++++++++++++++++++++++++++++++ resources/day6.txt | 2 ++ src/day6/part1.pas | 35 +++++++++++++++++++++++++++++++++++ src/day6/part2.pas | 32 ++++++++++++++++++++++++++++++++ 6 files changed, 125 insertions(+) create mode 100644 pythonsrc/day4/part1.py create mode 100644 pythonsrc/day4/part2.py create mode 100644 resources/day6.txt create mode 100644 src/day6/part1.pas create mode 100644 src/day6/part2.pas diff --git a/Makefile b/Makefile index 22e8695..64a8621 100644 --- a/Makefile +++ b/Makefile @@ -48,5 +48,16 @@ day5part2: @echo ./build/day5part2 +day6part1: + fpc src/day6/part1.pas -obuild/day6part1 + @echo + ./build/day6part1 + +day6part2: + fpc src/day6/part2.pas -obuild/day6part2 + @echo + ./build/day6part2 + + clean: rm build/* \ No newline at end of file diff --git a/pythonsrc/day4/part1.py b/pythonsrc/day4/part1.py new file mode 100644 index 0000000..4c5b787 --- /dev/null +++ b/pythonsrc/day4/part1.py @@ -0,0 +1,11 @@ +print( + sum([[0, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512][p] for p in + [sum( + [[b in x[0] for b in x[1]] for x in [ + [[int(y) for y in x.strip().split(" ") if len(y) != 0] for x in l.split(':')[1].split("|")] + ]][0] + ) for l in open("resources/day4.txt").readlines()] + ]) +) + +# sum([[0, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512][p] for p in [sum([[b in x[0] for b in x[1]] for x in [[[int(y) for y in x.strip().split(" ") if len(y) != 0] for x in l.split(':')[1].split("|")]]][0]) for l in open("resources/day4.txt").readlines()]]) \ No newline at end of file diff --git a/pythonsrc/day4/part2.py b/pythonsrc/day4/part2.py new file mode 100644 index 0000000..f47449d --- /dev/null +++ b/pythonsrc/day4/part2.py @@ -0,0 +1,34 @@ +def print2d(x): + print("\n".join([str(xx) for xx in x])) + +a = [sum( + [[b in x[0] for b in x[1]] for x in [ + [[int(y) for y in x.strip().split(" ") if len(y) != 0] for x in l.split(':')[1].split("|")] + ]][0] +) for l in open("resources/day4.txt").readlines()] + +# print(a) + +b = [ + [d[x] for x in range(20) for d in [a]] +] + + +e = [2, 1, 1, 0, 0] + +# [1, 2, 4, 5, 1] + +# [0, 1, 1, 0, 0] +# [0, 0, 1, 0, 0] +# [0, 0, 0, 1, 0] +# [0, 0, 0, 0, 0] +# [0, 0, 0, 0, 0] + +p = [[1 if x > c and x < c + 1 + i else 0 for x in range(5)] for c, i in enumerate(e)] + +print2d(p) +print(p) + +print([ + [sum([p[x][y] for x in range(5)]) for y in range(5)] +]) \ No newline at end of file diff --git a/resources/day6.txt b/resources/day6.txt new file mode 100644 index 0000000..148f6c2 --- /dev/null +++ b/resources/day6.txt @@ -0,0 +1,2 @@ +Time: 57 72 69 92 +Distance: 291 1172 1176 2026 \ No newline at end of file diff --git a/src/day6/part1.pas b/src/day6/part1.pas new file mode 100644 index 0000000..1bc0ea4 --- /dev/null +++ b/src/day6/part1.pas @@ -0,0 +1,35 @@ +program day5part1; +uses sysutils; + +type + SState = (ToColon, WasteSpace, ReadSeeds, NewLine); + MState = (Seed, WaitMap, ReadMap); + + +var + + race_times: array of int32 = (57, 72, 69, 92); + race_distances: array of int32 = (291, 1172, 1176, 2026); + valid: array of int32 = (0, 0, 0, 0); + + i, j: int32; + +begin + + for i := 0 to 3 do + begin + writeln(race_times[i]); + writeln(race_distances[i]); + + for j := 1 to race_times[i] do + begin + + if (race_times[i] - j) * j > race_distances[i] then + valid[i] := valid[i] + 1 + + end; + end; + + writeln(valid[0] * valid[1] * valid[2] * valid[3]) + +end. \ No newline at end of file diff --git a/src/day6/part2.pas b/src/day6/part2.pas new file mode 100644 index 0000000..2c0d1dc --- /dev/null +++ b/src/day6/part2.pas @@ -0,0 +1,32 @@ +program day5part1; +uses sysutils; + +type + SState = (ToColon, WasteSpace, ReadSeeds, NewLine); + MState = (Seed, WaitMap, ReadMap); + + +var + + race_time: int64 = 57726992; + race_distance: int64 = 291117211762026; + valid: int64 = 0; + + i, j: int32; + +begin + + writeln(race_time); + writeln(race_distance); + + for j := 1 to race_time do + begin + + if (race_time - j) * j > race_distance then + valid := valid + 1 + + end; + + writeln(valid); + +end. \ No newline at end of file