aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore4
-rw-r--r--aoc2015/day-01/day-01.rkt (renamed from 2015/day-01/day-01.rkt)0
-rw-r--r--aoc2015/day-02/day-02.rkt (renamed from 2015/day-02/day-02.rkt)0
-rw-r--r--aoc2015/day-03/day-03.rkt (renamed from 2015/day-03/day-03.rkt)0
-rw-r--r--aoc2015/day-04/day-04.rkt (renamed from 2015/day-04/day-04.rkt)0
-rw-r--r--aoc2015/day-05/day-05.rkt (renamed from 2015/day-05/day-05.rkt)0
-rw-r--r--aoc2015/day-06/day-06.rkt (renamed from 2015/day-06/day-06.rkt)0
-rw-r--r--aoc2015/day-25/day-25.rkt (renamed from 2015/day-25/day-25.rkt)0
-rw-r--r--aoc2019/day-02/day-02.rkt (renamed from 2019/day-02/day-02.rkt)0
-rw-r--r--aoc2019/day-03/day-03.rkt (renamed from 2019/day-03/day-03.rkt)0
-rw-r--r--aoc2019/day-04/day-04.rkt (renamed from 2019/day-04/day-04.rkt)0
-rw-r--r--aoc2019/day-05/day-05.rkt (renamed from 2019/day-05/day-05.rkt)0
-rw-r--r--aoc2020/day-01/day-01.rkt (renamed from 2020/day-01/day-01.rkt)0
-rw-r--r--aoc2020/day-02/day-02.rkt (renamed from 2020/day-02/day-02.rkt)0
-rw-r--r--aoc2020/day-03/day-03.rkt (renamed from 2020/day-03/day-03.rkt)0
-rw-r--r--aoc2020/day-04/day-04.rkt (renamed from 2020/day-04/day-04.rkt)0
-rw-r--r--aoc2020/day-05/day-05.rkt (renamed from 2020/day-05/day-05.rkt)0
-rw-r--r--aoc2020/day-06/day-06.rkt (renamed from 2020/day-06/day-06.rkt)0
-rw-r--r--aoc2020/day-07/day-07.rkt (renamed from 2020/day-07/day-07.rkt)0
-rw-r--r--aoc2020/day-08/day-08.ipynb (renamed from 2020/day-08/day-08.ipynb)0
-rw-r--r--aoc2020/day-09/day-09.ipynb (renamed from 2020/day-09/day-09.ipynb)0
-rw-r--r--aoc2020/day-10/day-10.rkt (renamed from 2020/day-10/day-10.rkt)0
-rw-r--r--aoc2020/day-11/day-11.rkt (renamed from 2020/day-11/day-11.rkt)0
-rw-r--r--aoc2020/day-12/day-12.rkt (renamed from 2020/day-12/day-12.rkt)0
-rw-r--r--aoc2020/day-13/day-13.rkt (renamed from 2020/day-13/day-13.rkt)0
-rw-r--r--aoc2020/day-14/day-14.rkt (renamed from 2020/day-14/day-14.rkt)0
-rw-r--r--aoc2020/day-15/day-15.rkt (renamed from 2020/day-15/day-15.rkt)0
-rw-r--r--aoc2020/day-16/day-16.rkt (renamed from 2020/day-16/day-16.rkt)0
-rw-r--r--aoc2021/day-01/day-01.pl (renamed from 2021/day-01/day-01.pl)0
-rw-r--r--aoc2021/day-01/day-01.rkt (renamed from 2021/day-01/day-01.rkt)0
-rw-r--r--aoc2021/day-02/day-02.ex (renamed from 2021/day-02/day-02.ex)0
-rw-r--r--aoc2021/day-02/day-02.rkt (renamed from 2021/day-02/day-02.rkt)0
-rw-r--r--aoc2021/day-03/day-03.rkt (renamed from 2021/day-03/day-03.rkt)0
-rw-r--r--aoc2021/day-04/day-04.rkt (renamed from 2021/day-04/day-04.rkt)0
-rw-r--r--aoc2021/day-05/day-05.rkt (renamed from 2021/day-05/day-05.rkt)0
-rw-r--r--aoc2021/day-06/day-06.ex (renamed from 2021/day-06/day-06.ex)0
-rw-r--r--aoc2021/day-06/day-06.livemd (renamed from 2021/day-06/day-06.livemd)0
-rw-r--r--aoc2021/day-06/day-06.rkt (renamed from 2021/day-06/day-06.rkt)0
-rw-r--r--aoc2021/day-06/input.txt (renamed from 2021/day-06/input.txt)0
-rw-r--r--aoc2021/day-07/day-07.rkt (renamed from 2021/day-07/day-07.rkt)0
-rw-r--r--aoc2021/day-08/day-08.rkt (renamed from 2021/day-08/day-08.rkt)0
-rw-r--r--aoc2021/day-09/day-09.livemd (renamed from 2021/day-09/day-09.livemd)0
-rw-r--r--aoc2021/day-09/day-09.rkt (renamed from 2021/day-09/day-09.rkt)0
-rw-r--r--aoc2021/day-09/input.txt (renamed from 2021/day-09/input.txt)0
-rw-r--r--aoc2021/day-10/day-10.rkt (renamed from 2021/day-10/day-10.rkt)0
-rw-r--r--aoc2021/day-11/day-11.rkt (renamed from 2021/day-11/day-11.rkt)0
-rw-r--r--aoc2021/day-12/day-12.rkt (renamed from 2021/day-12/day-12.rkt)0
-rw-r--r--aoc2021/day-13/day-13.rkt (renamed from 2021/day-13/day-13.rkt)0
-rw-r--r--aoc2021/day-14/day-14.rkt (renamed from 2021/day-14/day-14.rkt)0
-rw-r--r--aoc2021/day-15/day-15-list-nodes.rkt (renamed from 2021/day-15/day-15-list-nodes.rkt)0
-rw-r--r--aoc2021/day-15/day-15.livemd (renamed from 2021/day-15/day-15.livemd)0
-rw-r--r--aoc2021/day-15/day-15.rkt (renamed from 2021/day-15/day-15.rkt)0
-rw-r--r--aoc2021/day-16/day-16.rkt (renamed from 2021/day-16/day-16.rkt)0
-rw-r--r--aoc2021/day-17/day-17.rkt (renamed from 2021/day-17/day-17.rkt)0
-rw-r--r--aoc2021/day-18/day-18.rkt (renamed from 2021/day-18/day-18.rkt)0
-rw-r--r--aoc2021/day-19/day-19.rkt (renamed from 2021/day-19/day-19.rkt)0
-rw-r--r--aoc2021/day-19/test-scanners (renamed from 2021/day-19/test-scanners)0
-rw-r--r--aoc2021/day-20/day-20.rkt (renamed from 2021/day-20/day-20.rkt)0
-rw-r--r--aoc2021/day-21/day-21.rkt (renamed from 2021/day-21/day-21.rkt)0
-rw-r--r--aoc2021/day-25/day-25.rkt (renamed from 2021/day-25/day-25.rkt)0
-rw-r--r--aoc2022/commentary.md (renamed from 2022/commentary.md)0
-rw-r--r--aoc2022/day-01/day-01.ipynb (renamed from 2022/day-01/day-01.ipynb)0
-rw-r--r--aoc2022/day-01/day-01.rkt (renamed from 2022/day-01/day-01.rkt)0
-rw-r--r--aoc2022/day-02/day-02.ipynb (renamed from 2022/day-02/day-02.ipynb)0
-rw-r--r--aoc2022/day-02/day-02.pl (renamed from 2022/day-02/day-02.pl)0
-rw-r--r--aoc2022/day-02/prolog-input.txt (renamed from 2022/day-02/prolog-input.txt)0
-rw-r--r--aoc2022/day-03/day-03.ipynb (renamed from 2022/day-03/day-03.ipynb)0
-rw-r--r--aoc2022/day-04/day-04.ipynb (renamed from 2022/day-04/day-04.ipynb)0
-rw-r--r--aoc2022/day-05/day-05.ipynb (renamed from 2022/day-05/day-05.ipynb)0
-rw-r--r--aoc2022/day-05/day-05.rkt (renamed from 2022/day-05/day-05.rkt)0
-rw-r--r--aoc2022/day-06/day-06.ipynb (renamed from 2022/day-06/day-06.ipynb)0
-rw-r--r--aoc2022/day-06/day-06.rkt (renamed from 2022/day-06/day-06.rkt)0
-rw-r--r--aoc2022/day-07/day-07.rkt (renamed from 2022/day-07/day-07.rkt)0
-rw-r--r--aoc2022/day-08/day-08.ipynb (renamed from 2022/day-08/day-08.ipynb)0
-rw-r--r--aoc2022/day-08/day-08.rkt (renamed from 2022/day-08/day-08.rkt)0
-rw-r--r--aoc2022/day-09/day-09.rkt (renamed from 2022/day-09/day-09.rkt)0
-rw-r--r--aoc2022/day-10/day-10.rkt (renamed from 2022/day-10/day-10.rkt)0
-rw-r--r--aoc2022/day-11/day-11.rkt (renamed from 2022/day-11/day-11.rkt)0
-rw-r--r--aoc2022/day-12/day-12.rkt (renamed from 2022/day-12/day-12.rkt)0
-rw-r--r--aoc2022/day-13/day-13.rkt (renamed from 2022/day-13/day-13.rkt)0
-rw-r--r--aoc2022/day-14/day-14.rkt (renamed from 2022/day-14/day-14.rkt)0
-rw-r--r--aoc2022/day-15/day-15.rkt (renamed from 2022/day-15/day-15.rkt)0
-rw-r--r--aoc2022/day-16/day-16.rkt (renamed from 2022/day-16/day-16.rkt)0
-rw-r--r--aoc2022/day-17/day-17.rkt (renamed from 2022/day-17/day-17.rkt)0
-rw-r--r--aoc2022/day-17/rock-shapes (renamed from 2022/day-17/rock-shapes)0
-rw-r--r--aoc2022/day-18/day-18.rkt (renamed from 2022/day-18/day-18.rkt)0
-rw-r--r--aoc2022/day-19/day-19.rkt (renamed from 2022/day-19/day-19.rkt)0
-rw-r--r--aoc2022/day-20/day-20.rkt (renamed from 2022/day-20/day-20.rkt)0
-rw-r--r--aoc2022/day-21/day-21.rkt (renamed from 2022/day-21/day-21.rkt)0
-rw-r--r--aoc2022/day-22/day-22.rkt (renamed from 2022/day-22/day-22.rkt)0
-rw-r--r--aoc2022/day-23/day-23.rkt (renamed from 2022/day-23/day-23.rkt)0
-rw-r--r--aoc2022/day-25/day-25.rkt (renamed from 2022/day-25/day-25.rkt)0
-rw-r--r--aoc2023/.github/workflows/test.yml23
-rw-r--r--aoc2023/.gitignore4
-rw-r--r--aoc2023/README.md22
-rw-r--r--aoc2023/gleam.toml16
-rw-r--r--aoc2023/src/aoc2023.gleam5
-rw-r--r--aoc2023/test/aoc2023_test.gleam12
98 files changed, 85 insertions, 1 deletions
diff --git a/.gitignore b/.gitignore
index 9a17e3f..e65e9df 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,4 +2,6 @@
.cache/*
compiled/*
*.bak
-input \ No newline at end of file
+input
+.clj-kondo/*
+.lsp/*
diff --git a/2015/day-01/day-01.rkt b/aoc2015/day-01/day-01.rkt
index efbd02a..efbd02a 100644
--- a/2015/day-01/day-01.rkt
+++ b/aoc2015/day-01/day-01.rkt
diff --git a/2015/day-02/day-02.rkt b/aoc2015/day-02/day-02.rkt
index 579fd00..579fd00 100644
--- a/2015/day-02/day-02.rkt
+++ b/aoc2015/day-02/day-02.rkt
diff --git a/2015/day-03/day-03.rkt b/aoc2015/day-03/day-03.rkt
index 1d44955..1d44955 100644
--- a/2015/day-03/day-03.rkt
+++ b/aoc2015/day-03/day-03.rkt
diff --git a/2015/day-04/day-04.rkt b/aoc2015/day-04/day-04.rkt
index 2c16043..2c16043 100644
--- a/2015/day-04/day-04.rkt
+++ b/aoc2015/day-04/day-04.rkt
diff --git a/2015/day-05/day-05.rkt b/aoc2015/day-05/day-05.rkt
index 3449adc..3449adc 100644
--- a/2015/day-05/day-05.rkt
+++ b/aoc2015/day-05/day-05.rkt
diff --git a/2015/day-06/day-06.rkt b/aoc2015/day-06/day-06.rkt
index d2eed08..d2eed08 100644
--- a/2015/day-06/day-06.rkt
+++ b/aoc2015/day-06/day-06.rkt
diff --git a/2015/day-25/day-25.rkt b/aoc2015/day-25/day-25.rkt
index 975f4c3..975f4c3 100644
--- a/2015/day-25/day-25.rkt
+++ b/aoc2015/day-25/day-25.rkt
diff --git a/2019/day-02/day-02.rkt b/aoc2019/day-02/day-02.rkt
index 56019e8..56019e8 100644
--- a/2019/day-02/day-02.rkt
+++ b/aoc2019/day-02/day-02.rkt
diff --git a/2019/day-03/day-03.rkt b/aoc2019/day-03/day-03.rkt
index 6da3a07..6da3a07 100644
--- a/2019/day-03/day-03.rkt
+++ b/aoc2019/day-03/day-03.rkt
diff --git a/2019/day-04/day-04.rkt b/aoc2019/day-04/day-04.rkt
index 9518779..9518779 100644
--- a/2019/day-04/day-04.rkt
+++ b/aoc2019/day-04/day-04.rkt
diff --git a/2019/day-05/day-05.rkt b/aoc2019/day-05/day-05.rkt
index 6f1f7b4..6f1f7b4 100644
--- a/2019/day-05/day-05.rkt
+++ b/aoc2019/day-05/day-05.rkt
diff --git a/2020/day-01/day-01.rkt b/aoc2020/day-01/day-01.rkt
index e31c45c..e31c45c 100644
--- a/2020/day-01/day-01.rkt
+++ b/aoc2020/day-01/day-01.rkt
diff --git a/2020/day-02/day-02.rkt b/aoc2020/day-02/day-02.rkt
index 9e22a1a..9e22a1a 100644
--- a/2020/day-02/day-02.rkt
+++ b/aoc2020/day-02/day-02.rkt
diff --git a/2020/day-03/day-03.rkt b/aoc2020/day-03/day-03.rkt
index ee9edcf..ee9edcf 100644
--- a/2020/day-03/day-03.rkt
+++ b/aoc2020/day-03/day-03.rkt
diff --git a/2020/day-04/day-04.rkt b/aoc2020/day-04/day-04.rkt
index 54d50f8..54d50f8 100644
--- a/2020/day-04/day-04.rkt
+++ b/aoc2020/day-04/day-04.rkt
diff --git a/2020/day-05/day-05.rkt b/aoc2020/day-05/day-05.rkt
index bd89ede..bd89ede 100644
--- a/2020/day-05/day-05.rkt
+++ b/aoc2020/day-05/day-05.rkt
diff --git a/2020/day-06/day-06.rkt b/aoc2020/day-06/day-06.rkt
index b0e2af9..b0e2af9 100644
--- a/2020/day-06/day-06.rkt
+++ b/aoc2020/day-06/day-06.rkt
diff --git a/2020/day-07/day-07.rkt b/aoc2020/day-07/day-07.rkt
index f2a1ffe..f2a1ffe 100644
--- a/2020/day-07/day-07.rkt
+++ b/aoc2020/day-07/day-07.rkt
diff --git a/2020/day-08/day-08.ipynb b/aoc2020/day-08/day-08.ipynb
index 1cb060b..1cb060b 100644
--- a/2020/day-08/day-08.ipynb
+++ b/aoc2020/day-08/day-08.ipynb
diff --git a/2020/day-09/day-09.ipynb b/aoc2020/day-09/day-09.ipynb
index e6f712b..e6f712b 100644
--- a/2020/day-09/day-09.ipynb
+++ b/aoc2020/day-09/day-09.ipynb
diff --git a/2020/day-10/day-10.rkt b/aoc2020/day-10/day-10.rkt
index 77d9bb7..77d9bb7 100644
--- a/2020/day-10/day-10.rkt
+++ b/aoc2020/day-10/day-10.rkt
diff --git a/2020/day-11/day-11.rkt b/aoc2020/day-11/day-11.rkt
index e2fe052..e2fe052 100644
--- a/2020/day-11/day-11.rkt
+++ b/aoc2020/day-11/day-11.rkt
diff --git a/2020/day-12/day-12.rkt b/aoc2020/day-12/day-12.rkt
index e4bbd32..e4bbd32 100644
--- a/2020/day-12/day-12.rkt
+++ b/aoc2020/day-12/day-12.rkt
diff --git a/2020/day-13/day-13.rkt b/aoc2020/day-13/day-13.rkt
index b53f045..b53f045 100644
--- a/2020/day-13/day-13.rkt
+++ b/aoc2020/day-13/day-13.rkt
diff --git a/2020/day-14/day-14.rkt b/aoc2020/day-14/day-14.rkt
index 9ac339c..9ac339c 100644
--- a/2020/day-14/day-14.rkt
+++ b/aoc2020/day-14/day-14.rkt
diff --git a/2020/day-15/day-15.rkt b/aoc2020/day-15/day-15.rkt
index 4dd9e88..4dd9e88 100644
--- a/2020/day-15/day-15.rkt
+++ b/aoc2020/day-15/day-15.rkt
diff --git a/2020/day-16/day-16.rkt b/aoc2020/day-16/day-16.rkt
index 9a38eda..9a38eda 100644
--- a/2020/day-16/day-16.rkt
+++ b/aoc2020/day-16/day-16.rkt
diff --git a/2021/day-01/day-01.pl b/aoc2021/day-01/day-01.pl
index d3c3fa7..d3c3fa7 100644
--- a/2021/day-01/day-01.pl
+++ b/aoc2021/day-01/day-01.pl
diff --git a/2021/day-01/day-01.rkt b/aoc2021/day-01/day-01.rkt
index 48ef158..48ef158 100644
--- a/2021/day-01/day-01.rkt
+++ b/aoc2021/day-01/day-01.rkt
diff --git a/2021/day-02/day-02.ex b/aoc2021/day-02/day-02.ex
index d37ab05..d37ab05 100644
--- a/2021/day-02/day-02.ex
+++ b/aoc2021/day-02/day-02.ex
diff --git a/2021/day-02/day-02.rkt b/aoc2021/day-02/day-02.rkt
index 0bd0c3d..0bd0c3d 100644
--- a/2021/day-02/day-02.rkt
+++ b/aoc2021/day-02/day-02.rkt
diff --git a/2021/day-03/day-03.rkt b/aoc2021/day-03/day-03.rkt
index 95b7efd..95b7efd 100644
--- a/2021/day-03/day-03.rkt
+++ b/aoc2021/day-03/day-03.rkt
diff --git a/2021/day-04/day-04.rkt b/aoc2021/day-04/day-04.rkt
index c572f74..c572f74 100644
--- a/2021/day-04/day-04.rkt
+++ b/aoc2021/day-04/day-04.rkt
diff --git a/2021/day-05/day-05.rkt b/aoc2021/day-05/day-05.rkt
index e568490..e568490 100644
--- a/2021/day-05/day-05.rkt
+++ b/aoc2021/day-05/day-05.rkt
diff --git a/2021/day-06/day-06.ex b/aoc2021/day-06/day-06.ex
index efe10e4..efe10e4 100644
--- a/2021/day-06/day-06.ex
+++ b/aoc2021/day-06/day-06.ex
diff --git a/2021/day-06/day-06.livemd b/aoc2021/day-06/day-06.livemd
index 5ab794f..5ab794f 100644
--- a/2021/day-06/day-06.livemd
+++ b/aoc2021/day-06/day-06.livemd
diff --git a/2021/day-06/day-06.rkt b/aoc2021/day-06/day-06.rkt
index d8855ba..d8855ba 100644
--- a/2021/day-06/day-06.rkt
+++ b/aoc2021/day-06/day-06.rkt
diff --git a/2021/day-06/input.txt b/aoc2021/day-06/input.txt
index ba3c3cc..ba3c3cc 100644
--- a/2021/day-06/input.txt
+++ b/aoc2021/day-06/input.txt
diff --git a/2021/day-07/day-07.rkt b/aoc2021/day-07/day-07.rkt
index 89d5009..89d5009 100644
--- a/2021/day-07/day-07.rkt
+++ b/aoc2021/day-07/day-07.rkt
diff --git a/2021/day-08/day-08.rkt b/aoc2021/day-08/day-08.rkt
index 6476eae..6476eae 100644
--- a/2021/day-08/day-08.rkt
+++ b/aoc2021/day-08/day-08.rkt
diff --git a/2021/day-09/day-09.livemd b/aoc2021/day-09/day-09.livemd
index 3b984a5..3b984a5 100644
--- a/2021/day-09/day-09.livemd
+++ b/aoc2021/day-09/day-09.livemd
diff --git a/2021/day-09/day-09.rkt b/aoc2021/day-09/day-09.rkt
index d550a9e..d550a9e 100644
--- a/2021/day-09/day-09.rkt
+++ b/aoc2021/day-09/day-09.rkt
diff --git a/2021/day-09/input.txt b/aoc2021/day-09/input.txt
index 322b31f..322b31f 100644
--- a/2021/day-09/input.txt
+++ b/aoc2021/day-09/input.txt
diff --git a/2021/day-10/day-10.rkt b/aoc2021/day-10/day-10.rkt
index ea1b389..ea1b389 100644
--- a/2021/day-10/day-10.rkt
+++ b/aoc2021/day-10/day-10.rkt
diff --git a/2021/day-11/day-11.rkt b/aoc2021/day-11/day-11.rkt
index bc22991..bc22991 100644
--- a/2021/day-11/day-11.rkt
+++ b/aoc2021/day-11/day-11.rkt
diff --git a/2021/day-12/day-12.rkt b/aoc2021/day-12/day-12.rkt
index 18ed86f..18ed86f 100644
--- a/2021/day-12/day-12.rkt
+++ b/aoc2021/day-12/day-12.rkt
diff --git a/2021/day-13/day-13.rkt b/aoc2021/day-13/day-13.rkt
index 153eabc..153eabc 100644
--- a/2021/day-13/day-13.rkt
+++ b/aoc2021/day-13/day-13.rkt
diff --git a/2021/day-14/day-14.rkt b/aoc2021/day-14/day-14.rkt
index e445694..e445694 100644
--- a/2021/day-14/day-14.rkt
+++ b/aoc2021/day-14/day-14.rkt
diff --git a/2021/day-15/day-15-list-nodes.rkt b/aoc2021/day-15/day-15-list-nodes.rkt
index 38c558a..38c558a 100644
--- a/2021/day-15/day-15-list-nodes.rkt
+++ b/aoc2021/day-15/day-15-list-nodes.rkt
diff --git a/2021/day-15/day-15.livemd b/aoc2021/day-15/day-15.livemd
index 2495c32..2495c32 100644
--- a/2021/day-15/day-15.livemd
+++ b/aoc2021/day-15/day-15.livemd
diff --git a/2021/day-15/day-15.rkt b/aoc2021/day-15/day-15.rkt
index 5e61c55..5e61c55 100644
--- a/2021/day-15/day-15.rkt
+++ b/aoc2021/day-15/day-15.rkt
diff --git a/2021/day-16/day-16.rkt b/aoc2021/day-16/day-16.rkt
index 86083ef..86083ef 100644
--- a/2021/day-16/day-16.rkt
+++ b/aoc2021/day-16/day-16.rkt
diff --git a/2021/day-17/day-17.rkt b/aoc2021/day-17/day-17.rkt
index 7de44a0..7de44a0 100644
--- a/2021/day-17/day-17.rkt
+++ b/aoc2021/day-17/day-17.rkt
diff --git a/2021/day-18/day-18.rkt b/aoc2021/day-18/day-18.rkt
index 45016b1..45016b1 100644
--- a/2021/day-18/day-18.rkt
+++ b/aoc2021/day-18/day-18.rkt
diff --git a/2021/day-19/day-19.rkt b/aoc2021/day-19/day-19.rkt
index 4c6334d..4c6334d 100644
--- a/2021/day-19/day-19.rkt
+++ b/aoc2021/day-19/day-19.rkt
diff --git a/2021/day-19/test-scanners b/aoc2021/day-19/test-scanners
index b596cc4..b596cc4 100644
--- a/2021/day-19/test-scanners
+++ b/aoc2021/day-19/test-scanners
diff --git a/2021/day-20/day-20.rkt b/aoc2021/day-20/day-20.rkt
index b7ed092..b7ed092 100644
--- a/2021/day-20/day-20.rkt
+++ b/aoc2021/day-20/day-20.rkt
diff --git a/2021/day-21/day-21.rkt b/aoc2021/day-21/day-21.rkt
index 9ca9b1b..9ca9b1b 100644
--- a/2021/day-21/day-21.rkt
+++ b/aoc2021/day-21/day-21.rkt
diff --git a/2021/day-25/day-25.rkt b/aoc2021/day-25/day-25.rkt
index 7a3a5ca..7a3a5ca 100644
--- a/2021/day-25/day-25.rkt
+++ b/aoc2021/day-25/day-25.rkt
diff --git a/2022/commentary.md b/aoc2022/commentary.md
index 0736232..0736232 100644
--- a/2022/commentary.md
+++ b/aoc2022/commentary.md
diff --git a/2022/day-01/day-01.ipynb b/aoc2022/day-01/day-01.ipynb
index c79a3f6..c79a3f6 100644
--- a/2022/day-01/day-01.ipynb
+++ b/aoc2022/day-01/day-01.ipynb
diff --git a/2022/day-01/day-01.rkt b/aoc2022/day-01/day-01.rkt
index 5215014..5215014 100644
--- a/2022/day-01/day-01.rkt
+++ b/aoc2022/day-01/day-01.rkt
diff --git a/2022/day-02/day-02.ipynb b/aoc2022/day-02/day-02.ipynb
index 13b9986..13b9986 100644
--- a/2022/day-02/day-02.ipynb
+++ b/aoc2022/day-02/day-02.ipynb
diff --git a/2022/day-02/day-02.pl b/aoc2022/day-02/day-02.pl
index 707da41..707da41 100644
--- a/2022/day-02/day-02.pl
+++ b/aoc2022/day-02/day-02.pl
diff --git a/2022/day-02/prolog-input.txt b/aoc2022/day-02/prolog-input.txt
index 95a2b2a..95a2b2a 100644
--- a/2022/day-02/prolog-input.txt
+++ b/aoc2022/day-02/prolog-input.txt
diff --git a/2022/day-03/day-03.ipynb b/aoc2022/day-03/day-03.ipynb
index 27b8086..27b8086 100644
--- a/2022/day-03/day-03.ipynb
+++ b/aoc2022/day-03/day-03.ipynb
diff --git a/2022/day-04/day-04.ipynb b/aoc2022/day-04/day-04.ipynb
index 44c8980..44c8980 100644
--- a/2022/day-04/day-04.ipynb
+++ b/aoc2022/day-04/day-04.ipynb
diff --git a/2022/day-05/day-05.ipynb b/aoc2022/day-05/day-05.ipynb
index 34cf4e4..34cf4e4 100644
--- a/2022/day-05/day-05.ipynb
+++ b/aoc2022/day-05/day-05.ipynb
diff --git a/2022/day-05/day-05.rkt b/aoc2022/day-05/day-05.rkt
index 76d4ca6..76d4ca6 100644
--- a/2022/day-05/day-05.rkt
+++ b/aoc2022/day-05/day-05.rkt
diff --git a/2022/day-06/day-06.ipynb b/aoc2022/day-06/day-06.ipynb
index 0c89fa1..0c89fa1 100644
--- a/2022/day-06/day-06.ipynb
+++ b/aoc2022/day-06/day-06.ipynb
diff --git a/2022/day-06/day-06.rkt b/aoc2022/day-06/day-06.rkt
index 1c167a6..1c167a6 100644
--- a/2022/day-06/day-06.rkt
+++ b/aoc2022/day-06/day-06.rkt
diff --git a/2022/day-07/day-07.rkt b/aoc2022/day-07/day-07.rkt
index 3826cc4..3826cc4 100644
--- a/2022/day-07/day-07.rkt
+++ b/aoc2022/day-07/day-07.rkt
diff --git a/2022/day-08/day-08.ipynb b/aoc2022/day-08/day-08.ipynb
index 890a9bb..890a9bb 100644
--- a/2022/day-08/day-08.ipynb
+++ b/aoc2022/day-08/day-08.ipynb
diff --git a/2022/day-08/day-08.rkt b/aoc2022/day-08/day-08.rkt
index 6b60eca..6b60eca 100644
--- a/2022/day-08/day-08.rkt
+++ b/aoc2022/day-08/day-08.rkt
diff --git a/2022/day-09/day-09.rkt b/aoc2022/day-09/day-09.rkt
index 0390d2e..0390d2e 100644
--- a/2022/day-09/day-09.rkt
+++ b/aoc2022/day-09/day-09.rkt
diff --git a/2022/day-10/day-10.rkt b/aoc2022/day-10/day-10.rkt
index 70c80d3..70c80d3 100644
--- a/2022/day-10/day-10.rkt
+++ b/aoc2022/day-10/day-10.rkt
diff --git a/2022/day-11/day-11.rkt b/aoc2022/day-11/day-11.rkt
index af7b4ee..af7b4ee 100644
--- a/2022/day-11/day-11.rkt
+++ b/aoc2022/day-11/day-11.rkt
diff --git a/2022/day-12/day-12.rkt b/aoc2022/day-12/day-12.rkt
index c3f01ac..c3f01ac 100644
--- a/2022/day-12/day-12.rkt
+++ b/aoc2022/day-12/day-12.rkt
diff --git a/2022/day-13/day-13.rkt b/aoc2022/day-13/day-13.rkt
index 39435e9..39435e9 100644
--- a/2022/day-13/day-13.rkt
+++ b/aoc2022/day-13/day-13.rkt
diff --git a/2022/day-14/day-14.rkt b/aoc2022/day-14/day-14.rkt
index 88ba297..88ba297 100644
--- a/2022/day-14/day-14.rkt
+++ b/aoc2022/day-14/day-14.rkt
diff --git a/2022/day-15/day-15.rkt b/aoc2022/day-15/day-15.rkt
index b050807..b050807 100644
--- a/2022/day-15/day-15.rkt
+++ b/aoc2022/day-15/day-15.rkt
diff --git a/2022/day-16/day-16.rkt b/aoc2022/day-16/day-16.rkt
index 5ec56d6..5ec56d6 100644
--- a/2022/day-16/day-16.rkt
+++ b/aoc2022/day-16/day-16.rkt
diff --git a/2022/day-17/day-17.rkt b/aoc2022/day-17/day-17.rkt
index 28e8763..28e8763 100644
--- a/2022/day-17/day-17.rkt
+++ b/aoc2022/day-17/day-17.rkt
diff --git a/2022/day-17/rock-shapes b/aoc2022/day-17/rock-shapes
index fbcc382..fbcc382 100644
--- a/2022/day-17/rock-shapes
+++ b/aoc2022/day-17/rock-shapes
diff --git a/2022/day-18/day-18.rkt b/aoc2022/day-18/day-18.rkt
index 157784d..157784d 100644
--- a/2022/day-18/day-18.rkt
+++ b/aoc2022/day-18/day-18.rkt
diff --git a/2022/day-19/day-19.rkt b/aoc2022/day-19/day-19.rkt
index 1400bf2..1400bf2 100644
--- a/2022/day-19/day-19.rkt
+++ b/aoc2022/day-19/day-19.rkt
diff --git a/2022/day-20/day-20.rkt b/aoc2022/day-20/day-20.rkt
index 6dd1070..6dd1070 100644
--- a/2022/day-20/day-20.rkt
+++ b/aoc2022/day-20/day-20.rkt
diff --git a/2022/day-21/day-21.rkt b/aoc2022/day-21/day-21.rkt
index fccd6ad..fccd6ad 100644
--- a/2022/day-21/day-21.rkt
+++ b/aoc2022/day-21/day-21.rkt
diff --git a/2022/day-22/day-22.rkt b/aoc2022/day-22/day-22.rkt
index bcce5f8..bcce5f8 100644
--- a/2022/day-22/day-22.rkt
+++ b/aoc2022/day-22/day-22.rkt
diff --git a/2022/day-23/day-23.rkt b/aoc2022/day-23/day-23.rkt
index 6069859..6069859 100644
--- a/2022/day-23/day-23.rkt
+++ b/aoc2022/day-23/day-23.rkt
diff --git a/2022/day-25/day-25.rkt b/aoc2022/day-25/day-25.rkt
index 078cef4..078cef4 100644
--- a/2022/day-25/day-25.rkt
+++ b/aoc2022/day-25/day-25.rkt
diff --git a/aoc2023/.github/workflows/test.yml b/aoc2023/.github/workflows/test.yml
new file mode 100644
index 0000000..cf2096e
--- /dev/null
+++ b/aoc2023/.github/workflows/test.yml
@@ -0,0 +1,23 @@
+name: test
+
+on:
+ push:
+ branches:
+ - master
+ - main
+ pull_request:
+
+jobs:
+ test:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: erlef/setup-beam@v1
+ with:
+ otp-version: "26.0.2"
+ gleam-version: "0.32.4"
+ rebar3-version: "3"
+ # elixir-version: "1.15.4"
+ - run: gleam deps download
+ - run: gleam test
+ - run: gleam format --check src test
diff --git a/aoc2023/.gitignore b/aoc2023/.gitignore
new file mode 100644
index 0000000..170cca9
--- /dev/null
+++ b/aoc2023/.gitignore
@@ -0,0 +1,4 @@
+*.beam
+*.ez
+build
+erl_crash.dump
diff --git a/aoc2023/README.md b/aoc2023/README.md
new file mode 100644
index 0000000..921dfae
--- /dev/null
+++ b/aoc2023/README.md
@@ -0,0 +1,22 @@
+# aoc2023
+
+[![Package Version](https://img.shields.io/hexpm/v/aoc2023)](https://hex.pm/packages/aoc2023)
+[![Hex Docs](https://img.shields.io/badge/hex-docs-ffaff3)](https://hexdocs.pm/aoc2023/)
+
+## Quick start
+
+```sh
+gleam run # Run the project
+gleam test # Run the tests
+gleam shell # Run an Erlang shell
+```
+
+## Installation
+
+If available on Hex this package can be added to your Gleam project:
+
+```sh
+gleam add aoc2023
+```
+
+and its documentation can be found at <https://hexdocs.pm/aoc2023>.
diff --git a/aoc2023/gleam.toml b/aoc2023/gleam.toml
new file mode 100644
index 0000000..df51c5d
--- /dev/null
+++ b/aoc2023/gleam.toml
@@ -0,0 +1,16 @@
+name = "aoc2023"
+version = "0.1.0"
+
+# Fill out these fields if you intend to generate HTML documentation or publish
+# your project to the Hex package manager.
+#
+# description = ""
+# licences = ["Apache-2.0"]
+# repository = { type = "github", user = "username", repo = "project" }
+# links = [{ title = "Website", href = "https://gleam.run" }]
+
+[dependencies]
+gleam_stdlib = "~> 0.32"
+
+[dev-dependencies]
+gleeunit = "~> 1.0"
diff --git a/aoc2023/src/aoc2023.gleam b/aoc2023/src/aoc2023.gleam
new file mode 100644
index 0000000..ea5c211
--- /dev/null
+++ b/aoc2023/src/aoc2023.gleam
@@ -0,0 +1,5 @@
+import gleam/io
+
+pub fn main() {
+ io.println("Hello from aoc2023!")
+}
diff --git a/aoc2023/test/aoc2023_test.gleam b/aoc2023/test/aoc2023_test.gleam
new file mode 100644
index 0000000..3831e7a
--- /dev/null
+++ b/aoc2023/test/aoc2023_test.gleam
@@ -0,0 +1,12 @@
+import gleeunit
+import gleeunit/should
+
+pub fn main() {
+ gleeunit.main()
+}
+
+// gleeunit test functions end in `_test`
+pub fn hello_world_test() {
+ 1
+ |> should.equal(1)
+}