From dff04944f605f195c67286c28aa035b732a35a03 Mon Sep 17 00:00:00 2001
From: chylex <contact@chylex.com>
Date: Sun, 4 Dec 2022 14:33:08 +0100
Subject: [PATCH] Add 2017 - Day 1 - Part 1

---
 2017/01/input.txt |  1 +
 2017/01/main.sql  | 19 +++++++++++++++++++
 README.md         | 35 ++++++++++++++++++++---------------
 3 files changed, 40 insertions(+), 15 deletions(-)
 create mode 100644 2017/01/input.txt
 create mode 100644 2017/01/main.sql

diff --git a/2017/01/input.txt b/2017/01/input.txt
new file mode 100644
index 0000000..736e686
--- /dev/null
+++ b/2017/01/input.txt
@@ -0,0 +1 @@
+494751136895345894732582362629576539599184296195318162664695189393364372585778868512194863927652788149779748657989318645936221887731542718562643272683862627537378624843614831337441659741281289638765171452576466381314558821636595394981788588673443769343597851883955668818165723174939893841654914556681324133667446412138511724424292394454166623639872425168644336248217213826339741267546823779383343362789527461579565822966859349777937921933694912369552152772735167832762563719664315456987186713541153781499646178238762644186484381142249926194743713139262596264878458636595896487362658672224346241358667234115974528626523648311919886566497837217169673923935143386823757293148719377821517314629812886912412829924484513493885672343964151252433622341141661523814465991516961684511941471572895453711624986269342398786175846925783918686856442684489873327497698963658862856336682422797551251489126661954848572297228765445646745256499679451426358865477844467458533962981852292513358871483321161973583245698763531598395467675529181496911117769834127516441369261275244225978893617456524385518493112272169767775861256649728253754964675812534546226295535939697352141217337346738553495616832783757866928174519145357234834584788253893618549484385733283627199445369658339175644484859385884574943219267922729967571943843794565736975716174727852348441254492886794362934343868643337828637454277582276962353246357835493338372219824371517526474283541714897994127864461433627894831268659336264234436872715374727211764167739169341999573855627775114848275268739159272518673316753672995297888734844388928439859359992475637439771269232916542385876779616695129412366735112593669719335783511355773814685491876721452994714318863716542473187246351548626157775143333161422867924437526253865859969947366972895674966845993244925218766937543487875485647329995285821739359369998935331986126873726737672159265827566443794515755939813676194755474477224152139987944419463371386499841415227734673733555261543871359797796529847861748979527579985757964742667473767269248335229836818297477665453189662485548925521497365877771665365728224394427883312135322325169141784
diff --git a/2017/01/main.sql b/2017/01/main.sql
new file mode 100644
index 0000000..4f4be16
--- /dev/null
+++ b/2017/01/main.sql
@@ -0,0 +1,19 @@
+CALL aoc_text_file('01');
+
+CREATE TABLE "01.characters" AS
+	SELECT r.row - 1 AS index, r.character
+	FROM "01.input"
+	CROSS JOIN REGEXP_SPLIT_TO_TABLE(input, '') WITH ORDINALITY AS r(character, row);
+
+CREATE UNIQUE INDEX "01.characters.index" ON "01.characters" (index);
+
+UPDATE "01.output"
+SET result = (
+	SELECT SUM(a.character::INTEGER) AS result
+	FROM "01.characters" a
+	INNER JOIN "01.characters" b ON a.index = (b.index + 1) % (SELECT MAX(index) + 1 FROM "01.characters")
+	WHERE a.character = b.character
+)
+WHERE part = 1;
+
+SELECT aoc_results('01')
diff --git a/README.md b/README.md
index 694b615..607bec0 100644
--- a/README.md
+++ b/README.md
@@ -67,19 +67,24 @@ The versions should not matter, but I used Visual Studio 2019 with `MSVC v142 (1
 
 # Solved Days
 
-| Year | Day | Language |  /  | Year | Day | Language |  /  | Year | Day | Language |
-|-----:|----:|----------|-----|-----:|----:|----------|-----|-----:|----:|----------|
-| 2015 |  01 | NASM x64 |  /  | 2020 |  01 | Rust     |  /  | 2021 |  01 | Kotlin   |
-| 2015 |  02 | NASM x64 |  /  | 2020 |  02 | Rust     |  /  | 2021 |  02 | Kotlin   |
-| 2015 |  03 | NASM x64 |  /  | 2020 |  03 | Rust     |  /  | 2021 |  03 | Kotlin   |
-|      |     |          |  /  | 2020 |  04 | Rust     |  /  | 2021 |  04 | Kotlin   |
-|      |     |          |  /  | 2020 |  05 | Rust     |  /  | 2021 |  05 | Kotlin   |
-|      |     |          |  /  | 2020 |  06 | Rust     |  /  | 2021 |  06 | Kotlin   |
-|      |     |          |  /  | 2020 |  07 | Rust     |  /  | 2021 |  07 | Kotlin   |
-|      |     |          |  /  | 2020 |  08 | Rust     |  /  | 2021 |  08 | Kotlin   |
+| Year | Day | Language |  /  | Year | Day | Language   |  /  | Year | Day | Language |
+|-----:|----:|----------|-----|-----:|----:|------------|-----|-----:|----:|----------|
+| 2015 |  01 | NASM x64 |  /  | 2017 |  01 | PostgreSQL |  /  | 2020 |  01 | Rust     |
+| 2015 |  02 | NASM x64 |  /  |      |     |            |  /  | 2020 |  02 | Rust     |
+| 2015 |  03 | NASM x64 |  /  |      |     |            |  /  | 2020 |  03 | Rust     |
+|      |     |          |  /  |      |     |            |  /  | 2020 |  04 | Rust     |
+|      |     |          |  /  |      |     |            |  /  | 2020 |  05 | Rust     |
+|      |     |          |  /  |      |     |            |  /  | 2020 |  06 | Rust     |
+|      |     |          |  /  |      |     |            |  /  | 2020 |  07 | Rust     |
+|      |     |          |  /  |      |     |            |  /  | 2020 |  08 | Rust     |
 
-| Year | Day | Language |
-|-----:|----:|----------|
-| 2022 |  01 | Python   |
-| 2022 |  02 | Python   |
-| 2022 |  03 | Python   |
+| Year | Day | Language |  /  | Year | Day | Language |
+|-----:|----:|----------|-----|-----:|----:|----------|
+| 2021 |  01 | Kotlin   |  /  | 2022 |  01 | Python   |
+| 2021 |  02 | Kotlin   |  /  | 2022 |  02 | Python   |
+| 2021 |  03 | Kotlin   |  /  | 2022 |  03 | Python   |
+| 2021 |  04 | Kotlin   |  /  |      |     |          |
+| 2021 |  05 | Kotlin   |  /  |      |     |          |
+| 2021 |  06 | Kotlin   |  /  |      |     |          |
+| 2021 |  07 | Kotlin   |  /  |      |     |          |
+| 2021 |  08 | Kotlin   |  /  |      |     |          |