aboutsummaryrefslogtreecommitdiff
path: root/racket/aoc2021/day-01
diff options
context:
space:
mode:
authorH.J <thechairman@thechairman.info>2024-10-09 11:36:55 -0400
committerH.J <thechairman@thechairman.info>2024-10-09 11:36:55 -0400
commit8777ff071f7bb37631baa7b6717ad29961e50911 (patch)
tree6d59c4ed58e454b960339c3d1151f0a879e8d7cb /racket/aoc2021/day-01
parent6156a9ef7be4012063a042aafb4e9b0d7eadde8e (diff)
downloadgleam_aoc-8777ff071f7bb37631baa7b6717ad29961e50911.tar.gz
gleam_aoc-8777ff071f7bb37631baa7b6717ad29961e50911.zip
sorting by language
Diffstat (limited to 'racket/aoc2021/day-01')
-rw-r--r--racket/aoc2021/day-01/day-01.pl20
-rw-r--r--racket/aoc2021/day-01/day-01.rkt20
2 files changed, 40 insertions, 0 deletions
diff --git a/racket/aoc2021/day-01/day-01.pl b/racket/aoc2021/day-01/day-01.pl
new file mode 100644
index 0000000..d3c3fa7
--- /dev/null
+++ b/racket/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
diff --git a/racket/aoc2021/day-01/day-01.rkt b/racket/aoc2021/day-01/day-01.rkt
new file mode 100644
index 0000000..48ef158
--- /dev/null
+++ b/racket/aoc2021/day-01/day-01.rkt
@@ -0,0 +1,20 @@
+#lang racket
+(require advent-of-code
+ threading)
+
+;; part 1
+(define sensor-data
+ (~> (open-aoc-input (find-session) 2021 1 #:cache (string->path "./cache"))
+ (port->list read _)))
+
+(define (count-increases data offset)
+ (for/sum ([x (in-list data)]
+ [y (in-list (drop data offset))]
+ #:when (< x y))
+ 1))
+
+(~a "Part 1: " (count-increases sensor-data 1))
+
+;; part 2
+
+(~a "Part 2: " (count-increases sensor-data 3)) \ No newline at end of file