aboutsummaryrefslogtreecommitdiff
path: root/aoc2021/day-01/day-01.pl
diff options
context:
space:
mode:
authorJ.J <thechairman@thechairman.info>2023-11-30 17:10:00 -0500
committerJ.J <thechairman@thechairman.info>2023-11-30 17:10:00 -0500
commit8ab65dc2da1742eb86ec636c50c7018385b68167 (patch)
treec4fd556aca9b867cfa1f2f174128c30857353884 /aoc2021/day-01/day-01.pl
parentfafbeaf9e3c09ba7a5bea7e47d5736001f8a5aa1 (diff)
downloadgleam_aoc-8ab65dc2da1742eb86ec636c50c7018385b68167.tar.gz
gleam_aoc-8ab65dc2da1742eb86ec636c50c7018385b68167.zip
prep for 2023, renaming for consistency
Diffstat (limited to 'aoc2021/day-01/day-01.pl')
-rw-r--r--aoc2021/day-01/day-01.pl20
1 files changed, 20 insertions, 0 deletions
diff --git a/aoc2021/day-01/day-01.pl b/aoc2021/day-01/day-01.pl
new file mode 100644
index 0000000..d3c3fa7
--- /dev/null
+++ b/aoc2021/day-01/day-01.pl
@@ -0,0 +1,20 @@
+:- use_module(library(yall)).
+:- use_module(library(apply)).
+
+get_data(Result) :-
+ setup_call_cleanup(open("day-01/input.txt", read, In),
+ (read_string(In, _, Str),
+ split_string(Str, "\n", "\s\t\n", Lines),
+ maplist(number_string, Result, Lines)),
+ close(In)).
+
+calculate_diffs(Result, WindowWidth) :-
+ get_data(Xs),
+ length(TrimLeft, WindowWidth), append(TrimLeft, RightSide, Xs),
+ length(TrimRight, WindowWidth), append(LeftSide, TrimRight, Xs),
+ maplist([X, Y, Z]>>(Z is Y - X), LeftSide, RightSide, Diffs),
+ include([X]>>(X > 0), Diffs, Increases),
+ length(Increases, Result).
+
+part1_answer(Result) :- calculate_diffs(Result, 1).
+part2_answer(Result) :- calculate_diffs(Result, 3). \ No newline at end of file