mirror of
https://github.com/chylex/Advent-of-Code.git
synced 2025-09-16 09:24:50 +02:00
Compare commits
29 Commits
59db6f9c82
...
main
Author | SHA1 | Date | |
---|---|---|---|
04e2c35138
|
|||
c83c50eeaf
|
|||
c90b93c155
|
|||
2456d3d7a0
|
|||
20f7f156e0
|
|||
cb9a50198d
|
|||
638c5c88b6
|
|||
94bfc58598
|
|||
ca7b829db3
|
|||
4304efd023
|
|||
c2b2da271b
|
|||
dbd9e028e6
|
|||
7bd6da2c29
|
|||
5bb9f0af43
|
|||
dff04944f6
|
|||
0d85994dc4
|
|||
c81f9a4d99
|
|||
eba4d3ff3e
|
|||
db090e6176
|
|||
84975e8708
|
|||
91339c9d02
|
|||
fb795c2a38
|
|||
0fd3573077
|
|||
c199556965
|
|||
f4b90f89e8
|
|||
4407184536
|
|||
ee22516eb6
|
|||
c4d7d26bfd
|
|||
9e3e084c76
|
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
* text=auto eol=lf
|
12
.gitignore
vendored
12
.gitignore
vendored
@@ -1,12 +0,0 @@
|
|||||||
/.gradle/
|
|
||||||
/build/
|
|
||||||
|
|
||||||
/.idea/compiler.xml
|
|
||||||
/.idea/dictionaries
|
|
||||||
/.idea/encodings.xml
|
|
||||||
/.idea/gradle.xml
|
|
||||||
/.idea/inspectionProfiles/
|
|
||||||
/.idea/jarRepositories.xml
|
|
||||||
/.idea/modules.xml
|
|
||||||
/.idea/vcs.xml
|
|
||||||
/.idea/*.iml
|
|
3
.idea/.gitignore
generated
vendored
3
.idea/.gitignore
generated
vendored
@@ -1,3 +0,0 @@
|
|||||||
# Default ignored files
|
|
||||||
/shelf/
|
|
||||||
/workspace.xml
|
|
1
.idea/.name
generated
1
.idea/.name
generated
@@ -1 +0,0 @@
|
|||||||
AdventOfCode
|
|
34
.idea/misc.xml
generated
34
.idea/misc.xml
generated
@@ -1,34 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="CMakeWorkspace" PROJECT_DIR="$PROJECT_DIR$/2015">
|
|
||||||
<contentRoot DIR="$PROJECT_DIR$" />
|
|
||||||
</component>
|
|
||||||
<component name="CidrRootsConfiguration">
|
|
||||||
<sourceRoots>
|
|
||||||
<file path="$PROJECT_DIR$/2015" />
|
|
||||||
<file path="$PROJECT_DIR$/2020" />
|
|
||||||
</sourceRoots>
|
|
||||||
<excludeRoots>
|
|
||||||
<file path="$PROJECT_DIR$/.gradle" />
|
|
||||||
<file path="$PROJECT_DIR$/2020/target" />
|
|
||||||
<file path="$PROJECT_DIR$/2021" />
|
|
||||||
<file path="$PROJECT_DIR$/build" />
|
|
||||||
<file path="$PROJECT_DIR$/gradle" />
|
|
||||||
</excludeRoots>
|
|
||||||
</component>
|
|
||||||
<component name="CodeInsightWorkspaceSettings">
|
|
||||||
<option name="optimizeImportsOnTheFly" value="true" />
|
|
||||||
</component>
|
|
||||||
<component name="ComposerSettings">
|
|
||||||
<execution />
|
|
||||||
</component>
|
|
||||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
|
||||||
<component name="JsFlowSettings">
|
|
||||||
<service-enabled>true</service-enabled>
|
|
||||||
<exe-path />
|
|
||||||
<other-services-enabled>true</other-services-enabled>
|
|
||||||
<auto-save>true</auto-save>
|
|
||||||
</component>
|
|
||||||
<component name="PhpProjectSharedConfiguration" php_language_level="7.4" />
|
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="17" project-jdk-type="JavaSDK" />
|
|
||||||
</project>
|
|
7
.idea/runConfigurations/2015___Day_01.xml
generated
7
.idea/runConfigurations/2015___Day_01.xml
generated
@@ -1,7 +0,0 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
|
||||||
<configuration default="false" name="2015 - Day 01" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" WORKING_DIR="file://$PROJECT_DIR$/2015/01" PASS_PARENT_ENVS_2="true" PROJECT_NAME="AOC" TARGET_NAME="AOC_2015_01" CONFIG_NAME="Debug" RUN_TARGET_PROJECT_NAME="AOC" RUN_TARGET_NAME="AOC_2015_01">
|
|
||||||
<method v="2">
|
|
||||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
|
||||||
</method>
|
|
||||||
</configuration>
|
|
||||||
</component>
|
|
7
.idea/runConfigurations/2015___Day_02.xml
generated
7
.idea/runConfigurations/2015___Day_02.xml
generated
@@ -1,7 +0,0 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
|
||||||
<configuration default="false" name="2015 - Day 02" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" WORKING_DIR="file://$PROJECT_DIR$/2015/02" PASS_PARENT_ENVS_2="true" PROJECT_NAME="AOC" TARGET_NAME="AOC_2015_02" CONFIG_NAME="Debug" RUN_TARGET_PROJECT_NAME="AOC" RUN_TARGET_NAME="AOC_2015_02">
|
|
||||||
<method v="2">
|
|
||||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
|
||||||
</method>
|
|
||||||
</configuration>
|
|
||||||
</component>
|
|
7
.idea/runConfigurations/2015___Day_03.xml
generated
7
.idea/runConfigurations/2015___Day_03.xml
generated
@@ -1,7 +0,0 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
|
||||||
<configuration default="false" name="2015 - Day 03" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" WORKING_DIR="file://$PROJECT_DIR$/2015/03" PASS_PARENT_ENVS_2="true" PROJECT_NAME="AOC" TARGET_NAME="AOC_2015_03" CONFIG_NAME="Debug" RUN_TARGET_PROJECT_NAME="AOC" RUN_TARGET_NAME="AOC_2015_03">
|
|
||||||
<method v="2">
|
|
||||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
|
||||||
</method>
|
|
||||||
</configuration>
|
|
||||||
</component>
|
|
11
.idea/runConfigurations/2021___Day_01.xml
generated
11
.idea/runConfigurations/2021___Day_01.xml
generated
@@ -1,11 +0,0 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
|
||||||
<configuration default="false" name="2021 - Day 01" type="JetRunConfigurationType">
|
|
||||||
<option name="MAIN_CLASS_NAME" value="MainKt" />
|
|
||||||
<module name="Advent_of_Code.2021-01" />
|
|
||||||
<shortenClasspath name="NONE" />
|
|
||||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/2021/01" />
|
|
||||||
<method v="2">
|
|
||||||
<option name="Make" enabled="true" />
|
|
||||||
</method>
|
|
||||||
</configuration>
|
|
||||||
</component>
|
|
11
.idea/runConfigurations/2021___Day_02.xml
generated
11
.idea/runConfigurations/2021___Day_02.xml
generated
@@ -1,11 +0,0 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
|
||||||
<configuration default="false" name="2021 - Day 02" type="JetRunConfigurationType">
|
|
||||||
<option name="MAIN_CLASS_NAME" value="MainKt" />
|
|
||||||
<module name="Advent_of_Code.2021-02" />
|
|
||||||
<shortenClasspath name="NONE" />
|
|
||||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/2021/02" />
|
|
||||||
<method v="2">
|
|
||||||
<option name="Make" enabled="true" />
|
|
||||||
</method>
|
|
||||||
</configuration>
|
|
||||||
</component>
|
|
11
.idea/runConfigurations/2021___Day_03.xml
generated
11
.idea/runConfigurations/2021___Day_03.xml
generated
@@ -1,11 +0,0 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
|
||||||
<configuration default="false" name="2021 - Day 03" type="JetRunConfigurationType">
|
|
||||||
<option name="MAIN_CLASS_NAME" value="MainKt" />
|
|
||||||
<module name="Advent_of_Code.2021-03" />
|
|
||||||
<shortenClasspath name="NONE" />
|
|
||||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/2021/03" />
|
|
||||||
<method v="2">
|
|
||||||
<option name="Make" enabled="true" />
|
|
||||||
</method>
|
|
||||||
</configuration>
|
|
||||||
</component>
|
|
11
.idea/runConfigurations/2021___Day_04.xml
generated
11
.idea/runConfigurations/2021___Day_04.xml
generated
@@ -1,11 +0,0 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
|
||||||
<configuration default="false" name="2021 - Day 04" type="JetRunConfigurationType">
|
|
||||||
<option name="MAIN_CLASS_NAME" value="MainKt" />
|
|
||||||
<module name="Advent_of_Code.2021-04" />
|
|
||||||
<shortenClasspath name="NONE" />
|
|
||||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/2021/04" />
|
|
||||||
<method v="2">
|
|
||||||
<option name="Make" enabled="true" />
|
|
||||||
</method>
|
|
||||||
</configuration>
|
|
||||||
</component>
|
|
5
2015/.gitignore
vendored
5
2015/.gitignore
vendored
@@ -1,2 +1,7 @@
|
|||||||
|
/.idea/*
|
||||||
|
!/.idea/cmake.xml
|
||||||
|
!/.idea/misc.xml
|
||||||
|
!/.idea/runConfigurations
|
||||||
|
|
||||||
/cmake-build-debug/
|
/cmake-build-debug/
|
||||||
/cmake-build-release/
|
/cmake-build-release/
|
||||||
|
0
.idea/cmake.xml → 2015/.idea/cmake.xml
generated
0
.idea/cmake.xml → 2015/.idea/cmake.xml
generated
12
2015/.idea/misc.xml
generated
Normal file
12
2015/.idea/misc.xml
generated
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="CMakeWorkspace" PROJECT_DIR="$PROJECT_DIR$" />
|
||||||
|
<component name="CidrRootsConfiguration">
|
||||||
|
<sourceRoots>
|
||||||
|
<file path="$PROJECT_DIR$/01" />
|
||||||
|
<file path="$PROJECT_DIR$/02" />
|
||||||
|
<file path="$PROJECT_DIR$/03" />
|
||||||
|
<file path="$PROJECT_DIR$/utils" />
|
||||||
|
</sourceRoots>
|
||||||
|
</component>
|
||||||
|
</project>
|
7
2015/.idea/runConfigurations/Day_01.xml
generated
Normal file
7
2015/.idea/runConfigurations/Day_01.xml
generated
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Day 01" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" WORKING_DIR="file://$PROJECT_DIR$/01" PASS_PARENT_ENVS_2="true" PROJECT_NAME="2015" TARGET_NAME="2015_01" CONFIG_NAME="Debug" RUN_TARGET_PROJECT_NAME="2015" RUN_TARGET_NAME="2015_01">
|
||||||
|
<method v="2">
|
||||||
|
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
7
2015/.idea/runConfigurations/Day_02.xml
generated
Normal file
7
2015/.idea/runConfigurations/Day_02.xml
generated
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Day 02" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" WORKING_DIR="file://$PROJECT_DIR$/02" PASS_PARENT_ENVS_2="true" PROJECT_NAME="2015" TARGET_NAME="2015_02" CONFIG_NAME="Debug" RUN_TARGET_PROJECT_NAME="2015" RUN_TARGET_NAME="2015_02">
|
||||||
|
<method v="2">
|
||||||
|
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
7
2015/.idea/runConfigurations/Day_03.xml
generated
Normal file
7
2015/.idea/runConfigurations/Day_03.xml
generated
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Day 03" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" WORKING_DIR="file://$PROJECT_DIR$/03" PASS_PARENT_ENVS_2="true" PROJECT_NAME="2015" TARGET_NAME="2015_03" CONFIG_NAME="Debug" RUN_TARGET_PROJECT_NAME="2015" RUN_TARGET_NAME="2015_03">
|
||||||
|
<method v="2">
|
||||||
|
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
@@ -1,4 +1,4 @@
|
|||||||
set(PROJECT_NAME AOC_2015_01)
|
set(PROJECT_NAME 2015_01)
|
||||||
|
|
||||||
project(${PROJECT_NAME} C ASM_NASM)
|
project(${PROJECT_NAME} C ASM_NASM)
|
||||||
|
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
set(PROJECT_NAME AOC_2015_02)
|
set(PROJECT_NAME 2015_02)
|
||||||
|
|
||||||
project(${PROJECT_NAME} C ASM_NASM)
|
project(${PROJECT_NAME} C ASM_NASM)
|
||||||
|
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
set(PROJECT_NAME AOC_2015_03)
|
set(PROJECT_NAME 2015_03)
|
||||||
|
|
||||||
project(${PROJECT_NAME} C ASM_NASM)
|
project(${PROJECT_NAME} C ASM_NASM)
|
||||||
|
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
cmake_minimum_required(VERSION 3.20)
|
cmake_minimum_required(VERSION 3.20)
|
||||||
|
|
||||||
project(AOC)
|
project(2015)
|
||||||
|
|
||||||
enable_language(ASM_NASM)
|
enable_language(ASM_NASM)
|
||||||
|
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
#ifndef ADVENTOFCODE_BENCHMARK_H
|
#ifndef INC_2015_BENCHMARK_H
|
||||||
#define ADVENTOFCODE_BENCHMARK_H
|
#define INC_2015_BENCHMARK_H
|
||||||
|
|
||||||
#include "stdio.h"
|
#include "stdio.h"
|
||||||
|
|
||||||
@@ -64,4 +64,4 @@ void runBenchmark(const entryPointCallback ep, char* input) {
|
|||||||
|
|
||||||
#undef BENCHMARK_RUNS
|
#undef BENCHMARK_RUNS
|
||||||
|
|
||||||
#endif //ADVENTOFCODE_BENCHMARK_H
|
#endif //INC_2015_BENCHMARK_H
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
#ifndef ADVENTOFCODE_FILE_H
|
#ifndef INC_2015_FILE_H
|
||||||
#define ADVENTOFCODE_FILE_H
|
#define INC_2015_FILE_H
|
||||||
|
|
||||||
#include "stdio.h"
|
#include "stdio.h"
|
||||||
#include "stdlib.h"
|
#include "stdlib.h"
|
||||||
@@ -65,4 +65,4 @@ char* readFile(const char* filename) {
|
|||||||
return contents;
|
return contents;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif //ADVENTOFCODE_FILE_H
|
#endif //INC_2015_FILE_H
|
||||||
|
@@ -16,7 +16,7 @@ extern void print(const char *format, ...) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int main(void) {
|
int main(void) {
|
||||||
char *input = readFile("input/1.txt");
|
char *input = readFile("input.txt");
|
||||||
|
|
||||||
if (input == NULL) {
|
if (input == NULL) {
|
||||||
return 1;
|
return 1;
|
||||||
|
2
2017/.gitignore
vendored
Normal file
2
2017/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
/.idea/*
|
||||||
|
!/.idea/runConfigurations
|
1
2017/01/input.txt
Normal file
1
2017/01/input.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
494751136895345894732582362629576539599184296195318162664695189393364372585778868512194863927652788149779748657989318645936221887731542718562643272683862627537378624843614831337441659741281289638765171452576466381314558821636595394981788588673443769343597851883955668818165723174939893841654914556681324133667446412138511724424292394454166623639872425168644336248217213826339741267546823779383343362789527461579565822966859349777937921933694912369552152772735167832762563719664315456987186713541153781499646178238762644186484381142249926194743713139262596264878458636595896487362658672224346241358667234115974528626523648311919886566497837217169673923935143386823757293148719377821517314629812886912412829924484513493885672343964151252433622341141661523814465991516961684511941471572895453711624986269342398786175846925783918686856442684489873327497698963658862856336682422797551251489126661954848572297228765445646745256499679451426358865477844467458533962981852292513358871483321161973583245698763531598395467675529181496911117769834127516441369261275244225978893617456524385518493112272169767775861256649728253754964675812534546226295535939697352141217337346738553495616832783757866928174519145357234834584788253893618549484385733283627199445369658339175644484859385884574943219267922729967571943843794565736975716174727852348441254492886794362934343868643337828637454277582276962353246357835493338372219824371517526474283541714897994127864461433627894831268659336264234436872715374727211764167739169341999573855627775114848275268739159272518673316753672995297888734844388928439859359992475637439771269232916542385876779616695129412366735112593669719335783511355773814685491876721452994714318863716542473187246351548626157775143333161422867924437526253865859969947366972895674966845993244925218766937543487875485647329995285821739359369998935331986126873726737672159265827566443794515755939813676194755474477224152139987944419463371386499841415227734673733555261543871359797796529847861748979527579985757964742667473767269248335229836818297477665453189662485548925521497365877771665365728224394427883312135322325169141784
|
28
2017/01/main.sql
Normal file
28
2017/01/main.sql
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
CALL aoc_load_file_lines('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::INT) 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;
|
||||||
|
|
||||||
|
UPDATE "01.output"
|
||||||
|
SET result = (
|
||||||
|
SELECT SUM(a.character::INT) AS result
|
||||||
|
FROM "01.characters" a
|
||||||
|
INNER JOIN "01.characters" b ON a.index = (b.index + (SELECT (MAX(index) + 1) / 2 FROM "01.characters")) % (SELECT MAX(index) + 1 FROM "01.characters")
|
||||||
|
WHERE a.character = b.character
|
||||||
|
)
|
||||||
|
WHERE part = 2;
|
||||||
|
|
||||||
|
SELECT aoc_results('01')
|
16
2017/02/input.txt
Normal file
16
2017/02/input.txt
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
414 382 1515 319 83 1327 116 391 101 749 1388 1046 1427 105 1341 1590
|
||||||
|
960 930 192 147 932 621 1139 198 865 820 597 165 232 417 19 183
|
||||||
|
3379 987 190 3844 1245 1503 3151 3349 2844 4033 175 3625 3565 179 3938 184
|
||||||
|
116 51 32 155 102 92 65 42 48 91 74 69 52 89 20 143
|
||||||
|
221 781 819 121 821 839 95 117 626 127 559 803 779 543 44 369
|
||||||
|
199 2556 93 1101 122 124 2714 625 2432 1839 2700 2636 118 2306 1616 2799
|
||||||
|
56 804 52 881 1409 47 246 1368 1371 583 49 1352 976 400 1276 1240
|
||||||
|
1189 73 148 1089 93 76 3205 3440 3627 92 853 95 3314 3551 2929 3626
|
||||||
|
702 169 492 167 712 488 357 414 187 278 87 150 19 818 178 686
|
||||||
|
140 2220 1961 1014 2204 2173 1513 2225 443 123 148 580 833 1473 137 245
|
||||||
|
662 213 1234 199 1353 1358 1408 235 917 1395 1347 194 565 179 768 650
|
||||||
|
119 137 1908 1324 1085 661 1557 1661 1828 1865 432 110 658 821 1740 145
|
||||||
|
1594 222 4140 963 209 2782 180 2591 4390 244 4328 3748 4535 192 157 3817
|
||||||
|
334 275 395 128 347 118 353 281 430 156 312 386 160 194 63 141
|
||||||
|
146 1116 153 815 2212 2070 599 3018 2640 47 125 2292 165 2348 2694 184
|
||||||
|
1704 2194 1753 146 2063 1668 1280 615 163 190 2269 1856 150 158 2250 2459
|
19
2017/02/main.sql
Normal file
19
2017/02/main.sql
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
CALL aoc_load_file_lines('02');
|
||||||
|
CALL aoc_input_extract_cells('02', '\t', 'INT');
|
||||||
|
|
||||||
|
UPDATE "02.output" SET result = (
|
||||||
|
SELECT SUM(row.difference)
|
||||||
|
FROM (
|
||||||
|
SELECT MAX(value::INT) - MIN(value::INT) AS difference
|
||||||
|
FROM "02.input.cells"
|
||||||
|
GROUP BY row
|
||||||
|
) row
|
||||||
|
) WHERE part = 1;
|
||||||
|
|
||||||
|
UPDATE "02.output" SET result = (
|
||||||
|
SELECT SUM(a.value / b.value)
|
||||||
|
FROM "02.input.cells" a
|
||||||
|
INNER JOIN "02.input.cells" b ON a.row = b.row AND a.value != b.value AND a.value % b.value = 0
|
||||||
|
) WHERE part = 2;
|
||||||
|
|
||||||
|
SELECT aoc_results('02');
|
19
2017/docker-compose.yml
Normal file
19
2017/docker-compose.yml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
version: "3.9"
|
||||||
|
|
||||||
|
services:
|
||||||
|
postgres:
|
||||||
|
image: postgres:15
|
||||||
|
container_name: "aoc-2017-postgres"
|
||||||
|
ports:
|
||||||
|
- "127.0.0.1:2017:5432"
|
||||||
|
volumes:
|
||||||
|
- postgres:/var/lib/postgresql/data
|
||||||
|
- .:/aoc:ro
|
||||||
|
environment:
|
||||||
|
POSTGRES_USER: postgres
|
||||||
|
POSTGRES_PASSWORD: aoc2017
|
||||||
|
POSTGRES_DB: postgres
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
postgres:
|
||||||
|
name: "aoc-2017-postgres"
|
55
2017/utils/procedures.sql
Normal file
55
2017/utils/procedures.sql
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
CREATE OR REPLACE PROCEDURE aoc_drop_tables(day TEXT) AS
|
||||||
|
$$
|
||||||
|
DECLARE
|
||||||
|
row RECORD;
|
||||||
|
BEGIN
|
||||||
|
FOR row IN
|
||||||
|
SELECT table_name
|
||||||
|
FROM information_schema.tables
|
||||||
|
WHERE table_name LIKE (day || '.%') AND table_schema = CURRENT_SCHEMA()
|
||||||
|
LOOP
|
||||||
|
EXECUTE FORMAT('DROP TABLE %I CASCADE', row.table_name);
|
||||||
|
END LOOP;
|
||||||
|
END
|
||||||
|
$$ LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
CREATE OR REPLACE PROCEDURE aoc_setup_tables(day TEXT, input_columns TEXT) AS
|
||||||
|
$$
|
||||||
|
BEGIN
|
||||||
|
CALL aoc_drop_tables(day);
|
||||||
|
EXECUTE FORMAT('CREATE TABLE %I (%s)', day || '.input', input_columns);
|
||||||
|
EXECUTE FORMAT('CREATE TABLE %I (part INT, result TEXT NULL)', day || '.output');
|
||||||
|
EXECUTE FORMAT('INSERT INTO %I (part) VALUES (1), (2)', day || '.output');
|
||||||
|
END
|
||||||
|
$$ LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
CREATE OR REPLACE FUNCTION aoc_results(day TEXT)
|
||||||
|
RETURNS TABLE (
|
||||||
|
RESULT TEXT
|
||||||
|
)
|
||||||
|
STABLE
|
||||||
|
ROWS 2
|
||||||
|
AS
|
||||||
|
$$
|
||||||
|
BEGIN
|
||||||
|
RETURN QUERY EXECUTE FORMAT('SELECT result FROM %I ORDER BY part', day || '.output');
|
||||||
|
END
|
||||||
|
$$ LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
CREATE OR REPLACE PROCEDURE aoc_load_file_lines(day TEXT) AS
|
||||||
|
$$
|
||||||
|
BEGIN
|
||||||
|
CALL aoc_setup_tables(day, 'input TEXT');
|
||||||
|
EXECUTE FORMAT('COPY %I FROM ''/aoc/%s/input.txt'' WITH DELIMITER E''\1''', day || '.input', day);
|
||||||
|
END
|
||||||
|
$$ LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
CREATE OR REPLACE PROCEDURE aoc_input_extract_cells(day TEXT, delimiter TEXT, value_type TEXT) AS
|
||||||
|
$$
|
||||||
|
BEGIN
|
||||||
|
EXECUTE FORMAT('CREATE TABLE %I AS
|
||||||
|
SELECT input.row, cell.col, cell.value::%s
|
||||||
|
FROM (SELECT ROW_NUMBER() OVER () AS row, input AS line FROM %I) input
|
||||||
|
CROSS JOIN REGEXP_SPLIT_TO_TABLE(input.line, %L) WITH ORDINALITY AS cell(value, col)', day || '.input.cells', value_type, day || '.input', delimiter);
|
||||||
|
END
|
||||||
|
$$ LANGUAGE plpgsql;
|
3
2020/.gitignore
vendored
3
2020/.gitignore
vendored
@@ -1 +1,4 @@
|
|||||||
|
/.idea/*
|
||||||
|
!/.idea/runConfigurations
|
||||||
|
|
||||||
/target/
|
/target/
|
||||||
|
@@ -1,12 +1,13 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
<component name="ProjectRunConfigurationManager">
|
||||||
<configuration default="false" name="2020 - Day 01" type="CargoCommandRunConfiguration" factoryName="Cargo Command">
|
<configuration default="false" name="Day 01" type="CargoCommandRunConfiguration" factoryName="Cargo Command">
|
||||||
<option name="command" value="run --bin 01" />
|
<option name="command" value="run --bin 01" />
|
||||||
<option name="workingDirectory" value="file://$PROJECT_DIR$/2020/01" />
|
<option name="workingDirectory" value="file://$PROJECT_DIR$/01" />
|
||||||
<option name="channel" value="DEFAULT" />
|
<option name="channel" value="DEFAULT" />
|
||||||
<option name="requiredFeatures" value="true" />
|
<option name="requiredFeatures" value="true" />
|
||||||
<option name="allFeatures" value="false" />
|
<option name="allFeatures" value="false" />
|
||||||
<option name="emulateTerminal" value="false" />
|
<option name="emulateTerminal" value="false" />
|
||||||
<option name="withSudo" value="false" />
|
<option name="withSudo" value="false" />
|
||||||
|
<option name="buildTarget" value="REMOTE" />
|
||||||
<option name="backtrace" value="SHORT" />
|
<option name="backtrace" value="SHORT" />
|
||||||
<envs />
|
<envs />
|
||||||
<option name="isRedirectInput" value="false" />
|
<option name="isRedirectInput" value="false" />
|
@@ -1,12 +1,13 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
<component name="ProjectRunConfigurationManager">
|
||||||
<configuration default="false" name="2020 - Day 02" type="CargoCommandRunConfiguration" factoryName="Cargo Command">
|
<configuration default="false" name="Day 02" type="CargoCommandRunConfiguration" factoryName="Cargo Command">
|
||||||
<option name="command" value="run --bin 02" />
|
<option name="command" value="run --bin 02" />
|
||||||
<option name="workingDirectory" value="file://$PROJECT_DIR$/2020/02" />
|
<option name="workingDirectory" value="file://$PROJECT_DIR$/02" />
|
||||||
<option name="channel" value="DEFAULT" />
|
<option name="channel" value="DEFAULT" />
|
||||||
<option name="requiredFeatures" value="true" />
|
<option name="requiredFeatures" value="true" />
|
||||||
<option name="allFeatures" value="false" />
|
<option name="allFeatures" value="false" />
|
||||||
<option name="emulateTerminal" value="false" />
|
<option name="emulateTerminal" value="false" />
|
||||||
<option name="withSudo" value="false" />
|
<option name="withSudo" value="false" />
|
||||||
|
<option name="buildTarget" value="REMOTE" />
|
||||||
<option name="backtrace" value="SHORT" />
|
<option name="backtrace" value="SHORT" />
|
||||||
<envs />
|
<envs />
|
||||||
<option name="isRedirectInput" value="false" />
|
<option name="isRedirectInput" value="false" />
|
@@ -1,12 +1,13 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
<component name="ProjectRunConfigurationManager">
|
||||||
<configuration default="false" name="2020 - Day 03" type="CargoCommandRunConfiguration" factoryName="Cargo Command">
|
<configuration default="false" name="Day 03" type="CargoCommandRunConfiguration" factoryName="Cargo Command">
|
||||||
<option name="command" value="run --bin 03" />
|
<option name="command" value="run --bin 03" />
|
||||||
<option name="workingDirectory" value="file://$PROJECT_DIR$/2020/03" />
|
<option name="workingDirectory" value="file://$PROJECT_DIR$/03" />
|
||||||
<option name="channel" value="DEFAULT" />
|
<option name="channel" value="DEFAULT" />
|
||||||
<option name="requiredFeatures" value="true" />
|
<option name="requiredFeatures" value="true" />
|
||||||
<option name="allFeatures" value="false" />
|
<option name="allFeatures" value="false" />
|
||||||
<option name="emulateTerminal" value="false" />
|
<option name="emulateTerminal" value="false" />
|
||||||
<option name="withSudo" value="false" />
|
<option name="withSudo" value="false" />
|
||||||
|
<option name="buildTarget" value="REMOTE" />
|
||||||
<option name="backtrace" value="SHORT" />
|
<option name="backtrace" value="SHORT" />
|
||||||
<envs />
|
<envs />
|
||||||
<option name="isRedirectInput" value="false" />
|
<option name="isRedirectInput" value="false" />
|
@@ -1,12 +1,13 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
<component name="ProjectRunConfigurationManager">
|
||||||
<configuration default="false" name="2020 - Day 04" type="CargoCommandRunConfiguration" factoryName="Cargo Command">
|
<configuration default="false" name="Day 04" type="CargoCommandRunConfiguration" factoryName="Cargo Command">
|
||||||
<option name="command" value="run --bin 04" />
|
<option name="command" value="run --bin 04" />
|
||||||
<option name="workingDirectory" value="file://$PROJECT_DIR$/2020/04" />
|
<option name="workingDirectory" value="file://$PROJECT_DIR$/04" />
|
||||||
<option name="channel" value="DEFAULT" />
|
<option name="channel" value="DEFAULT" />
|
||||||
<option name="requiredFeatures" value="true" />
|
<option name="requiredFeatures" value="true" />
|
||||||
<option name="allFeatures" value="false" />
|
<option name="allFeatures" value="false" />
|
||||||
<option name="emulateTerminal" value="false" />
|
<option name="emulateTerminal" value="false" />
|
||||||
<option name="withSudo" value="false" />
|
<option name="withSudo" value="false" />
|
||||||
|
<option name="buildTarget" value="REMOTE" />
|
||||||
<option name="backtrace" value="SHORT" />
|
<option name="backtrace" value="SHORT" />
|
||||||
<envs />
|
<envs />
|
||||||
<option name="isRedirectInput" value="false" />
|
<option name="isRedirectInput" value="false" />
|
@@ -1,12 +1,13 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
<component name="ProjectRunConfigurationManager">
|
||||||
<configuration default="false" name="2020 - Day 05" type="CargoCommandRunConfiguration" factoryName="Cargo Command">
|
<configuration default="false" name="Day 05" type="CargoCommandRunConfiguration" factoryName="Cargo Command">
|
||||||
<option name="command" value="run --bin 05" />
|
<option name="command" value="run --bin 05" />
|
||||||
<option name="workingDirectory" value="file://$PROJECT_DIR$/2020/05" />
|
<option name="workingDirectory" value="file://$PROJECT_DIR$/05" />
|
||||||
<option name="channel" value="DEFAULT" />
|
<option name="channel" value="DEFAULT" />
|
||||||
<option name="requiredFeatures" value="true" />
|
<option name="requiredFeatures" value="true" />
|
||||||
<option name="allFeatures" value="false" />
|
<option name="allFeatures" value="false" />
|
||||||
<option name="emulateTerminal" value="false" />
|
<option name="emulateTerminal" value="false" />
|
||||||
<option name="withSudo" value="false" />
|
<option name="withSudo" value="false" />
|
||||||
|
<option name="buildTarget" value="REMOTE" />
|
||||||
<option name="backtrace" value="SHORT" />
|
<option name="backtrace" value="SHORT" />
|
||||||
<envs />
|
<envs />
|
||||||
<option name="isRedirectInput" value="false" />
|
<option name="isRedirectInput" value="false" />
|
@@ -1,12 +1,13 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
<component name="ProjectRunConfigurationManager">
|
||||||
<configuration default="false" name="2020 - Day 06" type="CargoCommandRunConfiguration" factoryName="Cargo Command">
|
<configuration default="false" name="Day 06" type="CargoCommandRunConfiguration" factoryName="Cargo Command">
|
||||||
<option name="command" value="run --bin 06" />
|
<option name="command" value="run --bin 06" />
|
||||||
<option name="workingDirectory" value="file://$PROJECT_DIR$/2020/06" />
|
<option name="workingDirectory" value="file://$PROJECT_DIR$/06" />
|
||||||
<option name="channel" value="DEFAULT" />
|
<option name="channel" value="DEFAULT" />
|
||||||
<option name="requiredFeatures" value="true" />
|
<option name="requiredFeatures" value="true" />
|
||||||
<option name="allFeatures" value="false" />
|
<option name="allFeatures" value="false" />
|
||||||
<option name="emulateTerminal" value="false" />
|
<option name="emulateTerminal" value="false" />
|
||||||
<option name="withSudo" value="false" />
|
<option name="withSudo" value="false" />
|
||||||
|
<option name="buildTarget" value="REMOTE" />
|
||||||
<option name="backtrace" value="SHORT" />
|
<option name="backtrace" value="SHORT" />
|
||||||
<envs />
|
<envs />
|
||||||
<option name="isRedirectInput" value="false" />
|
<option name="isRedirectInput" value="false" />
|
@@ -1,12 +1,13 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
<component name="ProjectRunConfigurationManager">
|
||||||
<configuration default="false" name="2020 - Day 07" type="CargoCommandRunConfiguration" factoryName="Cargo Command">
|
<configuration default="false" name="Day 07" type="CargoCommandRunConfiguration" factoryName="Cargo Command">
|
||||||
<option name="command" value="run --bin 07" />
|
<option name="command" value="run --bin 07" />
|
||||||
<option name="workingDirectory" value="file://$PROJECT_DIR$/2020/07" />
|
<option name="workingDirectory" value="file://$PROJECT_DIR$/07" />
|
||||||
<option name="channel" value="DEFAULT" />
|
<option name="channel" value="DEFAULT" />
|
||||||
<option name="requiredFeatures" value="true" />
|
<option name="requiredFeatures" value="true" />
|
||||||
<option name="allFeatures" value="false" />
|
<option name="allFeatures" value="false" />
|
||||||
<option name="emulateTerminal" value="false" />
|
<option name="emulateTerminal" value="false" />
|
||||||
<option name="withSudo" value="false" />
|
<option name="withSudo" value="false" />
|
||||||
|
<option name="buildTarget" value="REMOTE" />
|
||||||
<option name="backtrace" value="SHORT" />
|
<option name="backtrace" value="SHORT" />
|
||||||
<envs />
|
<envs />
|
||||||
<option name="isRedirectInput" value="false" />
|
<option name="isRedirectInput" value="false" />
|
@@ -1,12 +1,13 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
<component name="ProjectRunConfigurationManager">
|
||||||
<configuration default="false" name="2020 - Day 08" type="CargoCommandRunConfiguration" factoryName="Cargo Command">
|
<configuration default="false" name="Day 08" type="CargoCommandRunConfiguration" factoryName="Cargo Command">
|
||||||
<option name="command" value="run --bin 08" />
|
<option name="command" value="run --bin 08" />
|
||||||
<option name="workingDirectory" value="file://$PROJECT_DIR$/2020/08" />
|
<option name="workingDirectory" value="file://$PROJECT_DIR$/08" />
|
||||||
<option name="channel" value="DEFAULT" />
|
<option name="channel" value="DEFAULT" />
|
||||||
<option name="requiredFeatures" value="true" />
|
<option name="requiredFeatures" value="true" />
|
||||||
<option name="allFeatures" value="false" />
|
<option name="allFeatures" value="false" />
|
||||||
<option name="emulateTerminal" value="false" />
|
<option name="emulateTerminal" value="false" />
|
||||||
<option name="withSudo" value="false" />
|
<option name="withSudo" value="false" />
|
||||||
|
<option name="buildTarget" value="REMOTE" />
|
||||||
<option name="backtrace" value="SHORT" />
|
<option name="backtrace" value="SHORT" />
|
||||||
<envs />
|
<envs />
|
||||||
<option name="isRedirectInput" value="false" />
|
<option name="isRedirectInput" value="false" />
|
@@ -1,3 +1,5 @@
|
|||||||
|
#![allow(dead_code)]
|
||||||
|
|
||||||
use std::error::Error;
|
use std::error::Error;
|
||||||
use std::fmt::{Debug, Display, Formatter};
|
use std::fmt::{Debug, Display, Formatter};
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
@@ -6,11 +8,10 @@ use std::io::{BufRead, BufReader};
|
|||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
|
|
||||||
pub fn read_input_lines() -> Result<Vec<String>, io::Error> {
|
pub fn read_input_lines() -> Result<Vec<String>, io::Error> {
|
||||||
let file = File::open("input/1.txt")?;
|
let file = File::open("input.txt")?;
|
||||||
return BufReader::new(file).lines().collect();
|
return BufReader::new(file).lines().collect();
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(dead_code)]
|
|
||||||
pub fn parse_input_lines<T : FromStr>() -> Result<Vec<T>, Box<dyn Error>> where <T as FromStr>::Err : Into<Box<dyn Error>> {
|
pub fn parse_input_lines<T : FromStr>() -> Result<Vec<T>, Box<dyn Error>> where <T as FromStr>::Err : Into<Box<dyn Error>> {
|
||||||
return read_input_lines()?.iter().map(|line| line.parse::<T>()).collect::<Result<Vec<T>, T::Err>>().map_err(Into::into);
|
return read_input_lines()?.iter().map(|line| line.parse::<T>()).collect::<Result<Vec<T>, T::Err>>().map_err(Into::into);
|
||||||
}
|
}
|
||||||
|
5
2021/.gitignore
vendored
Normal file
5
2021/.gitignore
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
/.idea/*
|
||||||
|
!/.idea/runConfigurations
|
||||||
|
|
||||||
|
/.gradle/
|
||||||
|
/build/
|
23
2021/.idea/runConfigurations/Day_01.xml
generated
Normal file
23
2021/.idea/runConfigurations/Day_01.xml
generated
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Day 01" type="GradleRunConfiguration" factoryName="Gradle">
|
||||||
|
<ExternalSystemSettings>
|
||||||
|
<option name="executionName" />
|
||||||
|
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||||
|
<option name="externalSystemIdString" value="GRADLE" />
|
||||||
|
<option name="scriptParameters" value="--quiet" />
|
||||||
|
<option name="taskDescriptions">
|
||||||
|
<list />
|
||||||
|
</option>
|
||||||
|
<option name="taskNames">
|
||||||
|
<list>
|
||||||
|
<option value="01" />
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
<option name="vmOptions" />
|
||||||
|
</ExternalSystemSettings>
|
||||||
|
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
|
||||||
|
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
|
||||||
|
<DebugAllEnabled>false</DebugAllEnabled>
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
23
2021/.idea/runConfigurations/Day_02.xml
generated
Normal file
23
2021/.idea/runConfigurations/Day_02.xml
generated
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Day 02" type="GradleRunConfiguration" factoryName="Gradle">
|
||||||
|
<ExternalSystemSettings>
|
||||||
|
<option name="executionName" />
|
||||||
|
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||||
|
<option name="externalSystemIdString" value="GRADLE" />
|
||||||
|
<option name="scriptParameters" value="--quiet" />
|
||||||
|
<option name="taskDescriptions">
|
||||||
|
<list />
|
||||||
|
</option>
|
||||||
|
<option name="taskNames">
|
||||||
|
<list>
|
||||||
|
<option value="02" />
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
<option name="vmOptions" />
|
||||||
|
</ExternalSystemSettings>
|
||||||
|
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
|
||||||
|
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
|
||||||
|
<DebugAllEnabled>false</DebugAllEnabled>
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
23
2021/.idea/runConfigurations/Day_03.xml
generated
Normal file
23
2021/.idea/runConfigurations/Day_03.xml
generated
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Day 03" type="GradleRunConfiguration" factoryName="Gradle">
|
||||||
|
<ExternalSystemSettings>
|
||||||
|
<option name="executionName" />
|
||||||
|
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||||
|
<option name="externalSystemIdString" value="GRADLE" />
|
||||||
|
<option name="scriptParameters" value="--quiet" />
|
||||||
|
<option name="taskDescriptions">
|
||||||
|
<list />
|
||||||
|
</option>
|
||||||
|
<option name="taskNames">
|
||||||
|
<list>
|
||||||
|
<option value="03" />
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
<option name="vmOptions" />
|
||||||
|
</ExternalSystemSettings>
|
||||||
|
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
|
||||||
|
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
|
||||||
|
<DebugAllEnabled>false</DebugAllEnabled>
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
23
2021/.idea/runConfigurations/Day_04.xml
generated
Normal file
23
2021/.idea/runConfigurations/Day_04.xml
generated
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Day 04" type="GradleRunConfiguration" factoryName="Gradle">
|
||||||
|
<ExternalSystemSettings>
|
||||||
|
<option name="executionName" />
|
||||||
|
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||||
|
<option name="externalSystemIdString" value="GRADLE" />
|
||||||
|
<option name="scriptParameters" value="--quiet" />
|
||||||
|
<option name="taskDescriptions">
|
||||||
|
<list />
|
||||||
|
</option>
|
||||||
|
<option name="taskNames">
|
||||||
|
<list>
|
||||||
|
<option value="04" />
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
<option name="vmOptions" />
|
||||||
|
</ExternalSystemSettings>
|
||||||
|
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
|
||||||
|
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
|
||||||
|
<DebugAllEnabled>false</DebugAllEnabled>
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
23
2021/.idea/runConfigurations/Day_05.xml
generated
Normal file
23
2021/.idea/runConfigurations/Day_05.xml
generated
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Day 05" type="GradleRunConfiguration" factoryName="Gradle">
|
||||||
|
<ExternalSystemSettings>
|
||||||
|
<option name="executionName" />
|
||||||
|
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||||
|
<option name="externalSystemIdString" value="GRADLE" />
|
||||||
|
<option name="scriptParameters" value="--quiet" />
|
||||||
|
<option name="taskDescriptions">
|
||||||
|
<list />
|
||||||
|
</option>
|
||||||
|
<option name="taskNames">
|
||||||
|
<list>
|
||||||
|
<option value="05" />
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
<option name="vmOptions" />
|
||||||
|
</ExternalSystemSettings>
|
||||||
|
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
|
||||||
|
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
|
||||||
|
<DebugAllEnabled>false</DebugAllEnabled>
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
23
2021/.idea/runConfigurations/Day_06.xml
generated
Normal file
23
2021/.idea/runConfigurations/Day_06.xml
generated
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Day 06" type="GradleRunConfiguration" factoryName="Gradle">
|
||||||
|
<ExternalSystemSettings>
|
||||||
|
<option name="executionName" />
|
||||||
|
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||||
|
<option name="externalSystemIdString" value="GRADLE" />
|
||||||
|
<option name="scriptParameters" value="--quiet" />
|
||||||
|
<option name="taskDescriptions">
|
||||||
|
<list />
|
||||||
|
</option>
|
||||||
|
<option name="taskNames">
|
||||||
|
<list>
|
||||||
|
<option value="06" />
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
<option name="vmOptions" />
|
||||||
|
</ExternalSystemSettings>
|
||||||
|
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
|
||||||
|
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
|
||||||
|
<DebugAllEnabled>false</DebugAllEnabled>
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
23
2021/.idea/runConfigurations/Day_07.xml
generated
Normal file
23
2021/.idea/runConfigurations/Day_07.xml
generated
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Day 07" type="GradleRunConfiguration" factoryName="Gradle">
|
||||||
|
<ExternalSystemSettings>
|
||||||
|
<option name="executionName" />
|
||||||
|
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||||
|
<option name="externalSystemIdString" value="GRADLE" />
|
||||||
|
<option name="scriptParameters" value="--quiet" />
|
||||||
|
<option name="taskDescriptions">
|
||||||
|
<list />
|
||||||
|
</option>
|
||||||
|
<option name="taskNames">
|
||||||
|
<list>
|
||||||
|
<option value="07" />
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
<option name="vmOptions" />
|
||||||
|
</ExternalSystemSettings>
|
||||||
|
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
|
||||||
|
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
|
||||||
|
<DebugAllEnabled>false</DebugAllEnabled>
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
23
2021/.idea/runConfigurations/Day_08.xml
generated
Normal file
23
2021/.idea/runConfigurations/Day_08.xml
generated
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Day 08" type="GradleRunConfiguration" factoryName="Gradle">
|
||||||
|
<ExternalSystemSettings>
|
||||||
|
<option name="executionName" />
|
||||||
|
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||||
|
<option name="externalSystemIdString" value="GRADLE" />
|
||||||
|
<option name="scriptParameters" value="--quiet" />
|
||||||
|
<option name="taskDescriptions">
|
||||||
|
<list />
|
||||||
|
</option>
|
||||||
|
<option name="taskNames">
|
||||||
|
<list>
|
||||||
|
<option value="08" />
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
<option name="vmOptions" />
|
||||||
|
</ExternalSystemSettings>
|
||||||
|
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
|
||||||
|
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
|
||||||
|
<DebugAllEnabled>false</DebugAllEnabled>
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
@@ -1,7 +1,7 @@
|
|||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
fun main() {
|
fun main() {
|
||||||
val lines = File("input/1.txt").readLines().map(String::toInt)
|
val lines = File("input.txt").readLines().map(String::toInt)
|
||||||
|
|
||||||
val totalIncreases = lines.windowed(2).count { it[1] > it[0] }
|
val totalIncreases = lines.windowed(2).count { it[1] > it[0] }
|
||||||
val windowedIncreases = lines.windowed(3).map(List<Int>::sum).windowed(2).count { it[1] > it[0] }
|
val windowedIncreases = lines.windowed(3).map(List<Int>::sum).windowed(2).count { it[1] > it[0] }
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
fun main() {
|
fun main() {
|
||||||
val lines = File("input/1.txt").readLines()
|
val lines = File("input.txt").readLines()
|
||||||
val directions = lines.map { line -> line.split(' ', limit = 2).let { it[0] to it[1].toInt() } }
|
val directions = lines.map { line -> line.split(' ', limit = 2).let { it[0] to it[1].toInt() } }
|
||||||
|
|
||||||
println("Part 1:")
|
println("Part 1:")
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
fun main() {
|
fun main() {
|
||||||
val lines = File("input/1.txt").readLines().filter(String::isNotEmpty)
|
val lines = File("input.txt").readLines().filter(String::isNotEmpty)
|
||||||
val input = Input(lines)
|
val input = Input(lines)
|
||||||
part1(input)
|
part1(input)
|
||||||
part2(input)
|
part2(input)
|
||||||
|
@@ -3,7 +3,7 @@ import java.io.File
|
|||||||
const val SIZE = 5
|
const val SIZE = 5
|
||||||
|
|
||||||
fun main() {
|
fun main() {
|
||||||
val lineIterator = File("input/1.txt").readLines().iterator()
|
val lineIterator = File("input.txt").readLines().iterator()
|
||||||
val numbersToDraw = lineIterator.next().split(',').map(String::toInt).toList()
|
val numbersToDraw = lineIterator.next().split(',').map(String::toInt).toList()
|
||||||
val boards = mutableListOf<Board>()
|
val boards = mutableListOf<Board>()
|
||||||
|
|
||||||
|
@@ -6,7 +6,7 @@ import kotlin.system.measureTimeMillis
|
|||||||
|
|
||||||
fun main() {
|
fun main() {
|
||||||
val lineRegex = Regex("^(\\d+),(\\d+) -> (\\d+),(\\d+)$")
|
val lineRegex = Regex("^(\\d+),(\\d+) -> (\\d+),(\\d+)$")
|
||||||
val lines = File("input/1.txt").readLines()
|
val lines = File("input.txt").readLines()
|
||||||
.mapNotNull(lineRegex::matchEntire)
|
.mapNotNull(lineRegex::matchEntire)
|
||||||
.map { it.groupValues.takeLast(4).map(String::toInt) }
|
.map { it.groupValues.takeLast(4).map(String::toInt) }
|
||||||
.map { Line(it[0], it[1], it[2], it[3]) }
|
.map { Line(it[0], it[1], it[2], it[3]) }
|
||||||
@@ -15,7 +15,7 @@ fun main() {
|
|||||||
println("(Took ${measureTimeMillis { part2(lines) }} ms)")
|
println("(Took ${measureTimeMillis { part2(lines) }} ms)")
|
||||||
}
|
}
|
||||||
|
|
||||||
@Suppress("ProtectedInFinal", "MemberVisibilityCanBePrivate")
|
@Suppress("MemberVisibilityCanBePrivate")
|
||||||
data class Line(val x1: Int, val y1: Int, val x2: Int, val y2: Int) {
|
data class Line(val x1: Int, val y1: Int, val x2: Int, val y2: Int) {
|
||||||
val minX = min(x1, x2)
|
val minX = min(x1, x2)
|
||||||
val minY = min(y1, y2)
|
val minY = min(y1, y2)
|
||||||
|
@@ -3,7 +3,7 @@ import java.math.BigInteger
|
|||||||
import kotlin.system.measureTimeMillis
|
import kotlin.system.measureTimeMillis
|
||||||
|
|
||||||
fun main() {
|
fun main() {
|
||||||
val initialConfiguration = File("input/1.txt").readLines()
|
val initialConfiguration = File("input.txt").readLines()
|
||||||
.single()
|
.single()
|
||||||
.split(',')
|
.split(',')
|
||||||
.map(String::toInt)
|
.map(String::toInt)
|
||||||
|
@@ -2,7 +2,7 @@ import java.io.File
|
|||||||
import kotlin.math.abs
|
import kotlin.math.abs
|
||||||
|
|
||||||
fun main() {
|
fun main() {
|
||||||
val originalPositions = File("input/1.txt").readLines().single().split(',').map(String::toInt).toIntArray()
|
val originalPositions = File("input.txt").readLines().single().split(',').map(String::toInt).toIntArray()
|
||||||
|
|
||||||
val p1 = originalPositions.minOrNull() ?: return
|
val p1 = originalPositions.minOrNull() ?: return
|
||||||
val p2 = originalPositions.maxOrNull() ?: return
|
val p2 = originalPositions.maxOrNull() ?: return
|
||||||
|
@@ -9,7 +9,7 @@ import java.io.File
|
|||||||
import java.util.EnumSet
|
import java.util.EnumSet
|
||||||
|
|
||||||
fun main() {
|
fun main() {
|
||||||
val records = File("input/1.txt").readLines().map { line ->
|
val records = File("input.txt").readLines().map { line ->
|
||||||
line.split(" | ", limit = 2).map { it.split(' ') }.let { Record(it[0], it[1]) }
|
line.split(" | ", limit = 2).map { it.split(' ') }.let { Record(it[0], it[1]) }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -19,7 +19,7 @@ fun main() {
|
|||||||
|
|
||||||
fun part1(records: List<Record>) {
|
fun part1(records: List<Record>) {
|
||||||
@Suppress("ConvertLambdaToReference")
|
@Suppress("ConvertLambdaToReference")
|
||||||
val segmentCountToDigits = DIGITS
|
val segmentCountToDigits = allDigits
|
||||||
.map { it.value to it.positions.size }
|
.map { it.value to it.positions.size }
|
||||||
.groupBy { it.second }
|
.groupBy { it.second }
|
||||||
.mapValues { it.value.map { e -> e.first } }
|
.mapValues { it.value.map { e -> e.first } }
|
||||||
@@ -48,7 +48,7 @@ enum class Position {
|
|||||||
BOTTOM
|
BOTTOM
|
||||||
}
|
}
|
||||||
|
|
||||||
private val DIGITS = listOf(
|
private val allDigits = listOf(
|
||||||
Digit(0, EnumSet.of(TOP, TOP_LEFT, TOP_RIGHT, BOTTOM_LEFT, BOTTOM_RIGHT, BOTTOM)),
|
Digit(0, EnumSet.of(TOP, TOP_LEFT, TOP_RIGHT, BOTTOM_LEFT, BOTTOM_RIGHT, BOTTOM)),
|
||||||
Digit(1, EnumSet.of(TOP_RIGHT, BOTTOM_RIGHT)),
|
Digit(1, EnumSet.of(TOP_RIGHT, BOTTOM_RIGHT)),
|
||||||
Digit(2, EnumSet.of(TOP, TOP_RIGHT, MIDDLE, BOTTOM_LEFT, BOTTOM)),
|
Digit(2, EnumSet.of(TOP, TOP_RIGHT, MIDDLE, BOTTOM_LEFT, BOTTOM)),
|
||||||
@@ -124,7 +124,7 @@ data class Record(val patterns: List<String>, val output: List<String>) {
|
|||||||
|
|
||||||
return output.fold(0) { total, digit ->
|
return output.fold(0) { total, digit ->
|
||||||
val positions = digit.map(mapping::getValue).toSet()
|
val positions = digit.map(mapping::getValue).toSet()
|
||||||
val value = DIGITS.first { it.positions == positions }.value
|
val value = allDigits.first { it.positions == positions }.value
|
||||||
|
|
||||||
(total * 10) + value
|
(total * 10) + value
|
||||||
}
|
}
|
||||||
|
52
2021/build.gradle.kts
Normal file
52
2021/build.gradle.kts
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
@file:Suppress("ConvertLambdaToReference")
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
kotlin("jvm") version "1.6.0"
|
||||||
|
idea
|
||||||
|
}
|
||||||
|
|
||||||
|
group = "com.chylex.adventofcode"
|
||||||
|
version = "1.0"
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
implementation(kotlin("stdlib"))
|
||||||
|
}
|
||||||
|
|
||||||
|
idea {
|
||||||
|
module.excludeDirs.add(file("gradle"))
|
||||||
|
}
|
||||||
|
|
||||||
|
sourceSets {
|
||||||
|
fun make(day: Int) {
|
||||||
|
val paddedDay = day.toString().padStart(2, '0')
|
||||||
|
val sourceFolder = file(paddedDay)
|
||||||
|
|
||||||
|
if (!sourceFolder.exists()) {
|
||||||
|
sourceFolder.mkdir()
|
||||||
|
sourceFolder.resolve("main.kt").writeText("fun main() {\n\t\n}")
|
||||||
|
sourceFolder.resolve("input.txt").writeText("")
|
||||||
|
}
|
||||||
|
|
||||||
|
create(paddedDay) {
|
||||||
|
java.setSrcDirs(listOf(sourceFolder))
|
||||||
|
resources.setSrcDirs(listOf(sourceFolder))
|
||||||
|
resources.include("*.txt")
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.register<JavaExec>(paddedDay) {
|
||||||
|
group = "run"
|
||||||
|
|
||||||
|
mainClass.set("MainKt")
|
||||||
|
workingDir = sourceFolder
|
||||||
|
classpath = sourceSets[paddedDay].runtimeClasspath
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (day in 1..8) {
|
||||||
|
make(day)
|
||||||
|
}
|
||||||
|
}
|
0
gradlew → 2021/gradlew
vendored
0
gradlew → 2021/gradlew
vendored
0
gradlew.bat → 2021/gradlew.bat
vendored
0
gradlew.bat → 2021/gradlew.bat
vendored
1
2021/settings.gradle.kts
Normal file
1
2021/settings.gradle.kts
Normal file
@@ -0,0 +1 @@
|
|||||||
|
rootProject.name = "2021"
|
2
2022/.gitignore
vendored
Normal file
2
2022/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
/.idea/*
|
||||||
|
!/.idea/runConfigurations
|
24
2022/.idea/runConfigurations/Day_01.xml
generated
Normal file
24
2022/.idea/runConfigurations/Day_01.xml
generated
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Day 01" type="PythonConfigurationType" factoryName="Python">
|
||||||
|
<module name="2022" />
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
|
<option name="PARENT_ENVS" value="true" />
|
||||||
|
<envs>
|
||||||
|
<env name="PYTHONUNBUFFERED" value="1" />
|
||||||
|
</envs>
|
||||||
|
<option name="SDK_HOME" value="" />
|
||||||
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/01" />
|
||||||
|
<option name="IS_MODULE_SDK" value="true" />
|
||||||
|
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||||
|
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||||
|
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
|
||||||
|
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/01/main.py" />
|
||||||
|
<option name="PARAMETERS" value="" />
|
||||||
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
|
<option name="EMULATE_TERMINAL" value="false" />
|
||||||
|
<option name="MODULE_MODE" value="false" />
|
||||||
|
<option name="REDIRECT_INPUT" value="false" />
|
||||||
|
<option name="INPUT_FILE" value="" />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
24
2022/.idea/runConfigurations/Day_02.xml
generated
Normal file
24
2022/.idea/runConfigurations/Day_02.xml
generated
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Day 02" type="PythonConfigurationType" factoryName="Python">
|
||||||
|
<module name="2022" />
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
|
<option name="PARENT_ENVS" value="true" />
|
||||||
|
<envs>
|
||||||
|
<env name="PYTHONUNBUFFERED" value="1" />
|
||||||
|
</envs>
|
||||||
|
<option name="SDK_HOME" value="" />
|
||||||
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/02" />
|
||||||
|
<option name="IS_MODULE_SDK" value="true" />
|
||||||
|
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||||
|
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||||
|
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
|
||||||
|
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/02/main.py" />
|
||||||
|
<option name="PARAMETERS" value="" />
|
||||||
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
|
<option name="EMULATE_TERMINAL" value="false" />
|
||||||
|
<option name="MODULE_MODE" value="false" />
|
||||||
|
<option name="REDIRECT_INPUT" value="false" />
|
||||||
|
<option name="INPUT_FILE" value="" />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
24
2022/.idea/runConfigurations/Day_03.xml
generated
Normal file
24
2022/.idea/runConfigurations/Day_03.xml
generated
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Day 03" type="PythonConfigurationType" factoryName="Python">
|
||||||
|
<module name="2022" />
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
|
<option name="PARENT_ENVS" value="true" />
|
||||||
|
<envs>
|
||||||
|
<env name="PYTHONUNBUFFERED" value="1" />
|
||||||
|
</envs>
|
||||||
|
<option name="SDK_HOME" value="" />
|
||||||
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/03" />
|
||||||
|
<option name="IS_MODULE_SDK" value="true" />
|
||||||
|
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||||
|
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||||
|
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
|
||||||
|
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/03/main.py" />
|
||||||
|
<option name="PARAMETERS" value="" />
|
||||||
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
|
<option name="EMULATE_TERMINAL" value="false" />
|
||||||
|
<option name="MODULE_MODE" value="false" />
|
||||||
|
<option name="REDIRECT_INPUT" value="false" />
|
||||||
|
<option name="INPUT_FILE" value="" />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
24
2022/.idea/runConfigurations/Day_04.xml
generated
Normal file
24
2022/.idea/runConfigurations/Day_04.xml
generated
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Day 04" type="PythonConfigurationType" factoryName="Python">
|
||||||
|
<module name="2022" />
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
|
<option name="PARENT_ENVS" value="true" />
|
||||||
|
<envs>
|
||||||
|
<env name="PYTHONUNBUFFERED" value="1" />
|
||||||
|
</envs>
|
||||||
|
<option name="SDK_HOME" value="" />
|
||||||
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/04" />
|
||||||
|
<option name="IS_MODULE_SDK" value="true" />
|
||||||
|
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||||
|
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||||
|
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
|
||||||
|
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/04/main.py" />
|
||||||
|
<option name="PARAMETERS" value="" />
|
||||||
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
|
<option name="EMULATE_TERMINAL" value="false" />
|
||||||
|
<option name="MODULE_MODE" value="false" />
|
||||||
|
<option name="REDIRECT_INPUT" value="false" />
|
||||||
|
<option name="INPUT_FILE" value="" />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
24
2022/.idea/runConfigurations/Day_05.xml
generated
Normal file
24
2022/.idea/runConfigurations/Day_05.xml
generated
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Day 05" type="PythonConfigurationType" factoryName="Python">
|
||||||
|
<module name="2022" />
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
|
<option name="PARENT_ENVS" value="true" />
|
||||||
|
<envs>
|
||||||
|
<env name="PYTHONUNBUFFERED" value="1" />
|
||||||
|
</envs>
|
||||||
|
<option name="SDK_HOME" value="" />
|
||||||
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/05" />
|
||||||
|
<option name="IS_MODULE_SDK" value="true" />
|
||||||
|
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||||
|
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||||
|
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
|
||||||
|
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/05/main.py" />
|
||||||
|
<option name="PARAMETERS" value="" />
|
||||||
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
|
<option name="EMULATE_TERMINAL" value="false" />
|
||||||
|
<option name="MODULE_MODE" value="false" />
|
||||||
|
<option name="REDIRECT_INPUT" value="false" />
|
||||||
|
<option name="INPUT_FILE" value="" />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
24
2022/.idea/runConfigurations/Day_06.xml
generated
Normal file
24
2022/.idea/runConfigurations/Day_06.xml
generated
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Day 06" type="PythonConfigurationType" factoryName="Python">
|
||||||
|
<module name="2022" />
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
|
<option name="PARENT_ENVS" value="true" />
|
||||||
|
<envs>
|
||||||
|
<env name="PYTHONUNBUFFERED" value="1" />
|
||||||
|
</envs>
|
||||||
|
<option name="SDK_HOME" value="" />
|
||||||
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/06" />
|
||||||
|
<option name="IS_MODULE_SDK" value="true" />
|
||||||
|
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||||
|
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||||
|
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
|
||||||
|
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/06/main.py" />
|
||||||
|
<option name="PARAMETERS" value="" />
|
||||||
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
|
<option name="EMULATE_TERMINAL" value="false" />
|
||||||
|
<option name="MODULE_MODE" value="false" />
|
||||||
|
<option name="REDIRECT_INPUT" value="false" />
|
||||||
|
<option name="INPUT_FILE" value="" />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
24
2022/.idea/runConfigurations/Day_07.xml
generated
Normal file
24
2022/.idea/runConfigurations/Day_07.xml
generated
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Day 07" type="PythonConfigurationType" factoryName="Python">
|
||||||
|
<module name="2022" />
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
|
<option name="PARENT_ENVS" value="true" />
|
||||||
|
<envs>
|
||||||
|
<env name="PYTHONUNBUFFERED" value="1" />
|
||||||
|
</envs>
|
||||||
|
<option name="SDK_HOME" value="" />
|
||||||
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/07" />
|
||||||
|
<option name="IS_MODULE_SDK" value="true" />
|
||||||
|
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||||
|
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||||
|
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
|
||||||
|
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/07/main.py" />
|
||||||
|
<option name="PARAMETERS" value="" />
|
||||||
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
|
<option name="EMULATE_TERMINAL" value="false" />
|
||||||
|
<option name="MODULE_MODE" value="false" />
|
||||||
|
<option name="REDIRECT_INPUT" value="false" />
|
||||||
|
<option name="INPUT_FILE" value="" />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
24
2022/.idea/runConfigurations/Day_08.xml
generated
Normal file
24
2022/.idea/runConfigurations/Day_08.xml
generated
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Day 08" type="PythonConfigurationType" factoryName="Python">
|
||||||
|
<module name="2022" />
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
|
<option name="PARENT_ENVS" value="true" />
|
||||||
|
<envs>
|
||||||
|
<env name="PYTHONUNBUFFERED" value="1" />
|
||||||
|
</envs>
|
||||||
|
<option name="SDK_HOME" value="" />
|
||||||
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/08" />
|
||||||
|
<option name="IS_MODULE_SDK" value="true" />
|
||||||
|
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||||
|
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||||
|
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
|
||||||
|
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/08/main.py" />
|
||||||
|
<option name="PARAMETERS" value="" />
|
||||||
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
|
<option name="EMULATE_TERMINAL" value="false" />
|
||||||
|
<option name="MODULE_MODE" value="false" />
|
||||||
|
<option name="REDIRECT_INPUT" value="false" />
|
||||||
|
<option name="INPUT_FILE" value="" />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
2262
2022/01/input.txt
Normal file
2262
2022/01/input.txt
Normal file
File diff suppressed because it is too large
Load Diff
17
2022/01/main.py
Normal file
17
2022/01/main.py
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
from itertools import groupby
|
||||||
|
|
||||||
|
from utils.input import read_input_lines
|
||||||
|
|
||||||
|
lines = read_input_lines()
|
||||||
|
groups = [list(group) for is_group, group in groupby(lines, lambda x: x != '') if is_group]
|
||||||
|
|
||||||
|
carrying_calories = ((int(item) for item in group) for group in groups)
|
||||||
|
carrying_total_calories = [sum(group) for group in carrying_calories]
|
||||||
|
most_calories_carried = max(carrying_total_calories)
|
||||||
|
|
||||||
|
print(f"Most calories carried: {most_calories_carried}")
|
||||||
|
|
||||||
|
top3_most_calories_carried = sorted(carrying_total_calories, reverse=True)[:3]
|
||||||
|
top3_most_calories_carried_total = sum(top3_most_calories_carried)
|
||||||
|
|
||||||
|
print(f"Total calories carried by the top 3: {top3_most_calories_carried_total}")
|
2500
2022/02/input.txt
Normal file
2500
2022/02/input.txt
Normal file
File diff suppressed because it is too large
Load Diff
88
2022/02/main.py
Normal file
88
2022/02/main.py
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
from enum import Enum
|
||||||
|
from typing import Callable
|
||||||
|
|
||||||
|
from utils.input import read_input_lines
|
||||||
|
|
||||||
|
|
||||||
|
class Move(Enum):
|
||||||
|
ROCK = 1
|
||||||
|
PAPER = 2
|
||||||
|
SCISSORS = 3
|
||||||
|
|
||||||
|
def __init__(self, points: int):
|
||||||
|
self.points = points
|
||||||
|
|
||||||
|
|
||||||
|
class Outcome(Enum):
|
||||||
|
LOSS = 0
|
||||||
|
DRAW = 3
|
||||||
|
WIN = 6
|
||||||
|
|
||||||
|
def __init__(self, points: int):
|
||||||
|
self.points = points
|
||||||
|
|
||||||
|
|
||||||
|
def play_game_from_line(line: str, strategy: Callable[[Move, str], Move]) -> int:
|
||||||
|
(opponent_char, response_char) = line.split(" ", maxsplit = 2)
|
||||||
|
|
||||||
|
match opponent_char:
|
||||||
|
case "A": opponent = Move.ROCK
|
||||||
|
case "B": opponent = Move.PAPER
|
||||||
|
case "C": opponent = Move.SCISSORS
|
||||||
|
case _: raise ValueError(f"Invalid opponent move: {opponent_char}")
|
||||||
|
|
||||||
|
response = strategy(opponent, response_char)
|
||||||
|
outcome = play_game(response, opponent)
|
||||||
|
return response.points + outcome.points
|
||||||
|
|
||||||
|
|
||||||
|
def play_game(me: Move, opponent: Move) -> Outcome:
|
||||||
|
if me == opponent:
|
||||||
|
return Outcome.DRAW
|
||||||
|
elif me == Move.ROCK:
|
||||||
|
return Outcome.WIN if opponent == Move.SCISSORS else Outcome.LOSS
|
||||||
|
elif me == Move.PAPER:
|
||||||
|
return Outcome.WIN if opponent == Move.ROCK else Outcome.LOSS
|
||||||
|
elif me == Move.SCISSORS:
|
||||||
|
return Outcome.WIN if opponent == Move.PAPER else Outcome.LOSS
|
||||||
|
else:
|
||||||
|
raise ValueError(f"Invalid move: {me}")
|
||||||
|
|
||||||
|
|
||||||
|
# noinspection PyShadowingNames
|
||||||
|
def play_games_from_all_lines(lines: list[str], strategy) -> int:
|
||||||
|
return sum(play_game_from_line(line, strategy) for line in lines)
|
||||||
|
|
||||||
|
|
||||||
|
def strategy_response_char_determines_move(_: Move, response_char: str) -> Move:
|
||||||
|
match response_char:
|
||||||
|
case "X": return Move.ROCK
|
||||||
|
case "Y": return Move.PAPER
|
||||||
|
case "Z": return Move.SCISSORS
|
||||||
|
case _: raise ValueError(f"Invalid response move: {response_char}")
|
||||||
|
|
||||||
|
|
||||||
|
def strategy_response_char_determines_outcome(opponent: Move, response_char: str) -> Move:
|
||||||
|
match response_char:
|
||||||
|
case "Y": # Draw
|
||||||
|
return opponent
|
||||||
|
case "Z": # Win
|
||||||
|
match opponent:
|
||||||
|
case Move.ROCK: return Move.PAPER
|
||||||
|
case Move.PAPER: return Move.SCISSORS
|
||||||
|
case Move.SCISSORS: return Move.ROCK
|
||||||
|
case "X": # Lose
|
||||||
|
match opponent:
|
||||||
|
case Move.ROCK: return Move.SCISSORS
|
||||||
|
case Move.PAPER: return Move.ROCK
|
||||||
|
case Move.SCISSORS: return Move.PAPER
|
||||||
|
case _:
|
||||||
|
raise ValueError(f"Invalid response move: {response_char}")
|
||||||
|
|
||||||
|
|
||||||
|
lines = read_input_lines()
|
||||||
|
first_strategy_score = play_games_from_all_lines(lines, strategy_response_char_determines_move)
|
||||||
|
second_strategy_score = play_games_from_all_lines(lines, strategy_response_char_determines_outcome)
|
||||||
|
|
||||||
|
print(f"First strategy score: {first_strategy_score}")
|
||||||
|
print(f"Second strategy score: {second_strategy_score}")
|
300
2022/03/input.txt
Normal file
300
2022/03/input.txt
Normal file
@@ -0,0 +1,300 @@
|
|||||||
|
VdzVHmNpdVmBBCpmQLTNfTtMhMJnhFhTTf
|
||||||
|
FgqsZbqDDFqRrhhJnsnLMTfhJG
|
||||||
|
bRRRPrRRwSwbDqgjvDZbRbQzpzmQVWCzzBdvQBFCzlWV
|
||||||
|
GcDdRdvhRssRhGDdShCRtqWjlQzqWgqzNfNjfQWWjt
|
||||||
|
mwwnnPFwmVrPmJmzfNzqCjQCbgVlgC
|
||||||
|
nPnHHLrHwmJTrCTJpThBscBSdSLGZvZBvRhZ
|
||||||
|
RVQQcVlcSRclfZCCCnMJJTSTnC
|
||||||
|
NdHwjdwjbBBZrrZrbJDZJJ
|
||||||
|
wmhjGGBGwwmjtjtdPlfRcpVQlhRppVJF
|
||||||
|
pplbNBPPrppllrFNbpvppSTcwqcWFhTTShhJDTchqd
|
||||||
|
RGzRfLjjmZmfmwLftTWhStStJWTdWmDm
|
||||||
|
nfsMjQssnpPvNnrPrw
|
||||||
|
SjjBgllzlQjBZvlBBgcFbgJHsMhJqbMHPggJbM
|
||||||
|
hRLRVDdRRWnJqnnHTqMCnH
|
||||||
|
GRfLddRRpVhNVrWSjwQQzSzcGSBQSc
|
||||||
|
qMwNqqBdQdnTVBBVVhMVnVFzTHPggTPjGRDzvPTjjmvPDj
|
||||||
|
sbSrWJpStrtPtRPttzmmDD
|
||||||
|
pfbJJcbsrcLpWLllsnFmcqcwQncnQQqVNQ
|
||||||
|
RBTWCMwCwdZThPZcZZ
|
||||||
|
pVmVpHLFFFHHVgVmvNmHSQNvddlPPzZJMPcdhclhjczLdZMP
|
||||||
|
vnnNnFStGMRDwWnn
|
||||||
|
fWDdJTpDJzdBBBdmDSbSRHRwPqbPbHgSbz
|
||||||
|
slQtQvNsMVvrrgPRgRglnhwWPH
|
||||||
|
sGMMQFrsjvNMfWmdpfFDFZBf
|
||||||
|
vnMRMWCMJwWWwwWPjmSdVmLdzvVbLrhL
|
||||||
|
HsNfDHQlZpNqfQzbLbrqhjLmVdjd
|
||||||
|
dfDZQsNpstHHHptZDDtZWgngtgBMPMMRwCPtBBGW
|
||||||
|
HwQwwbwFNWHwHBVFQFLQzRznZnSzcjjjpPbcPpSP
|
||||||
|
vTfTJsCmsftJZmTSSdPvzdjRSvPdjd
|
||||||
|
TrGtTJfmGDfDhrhJJJsqrZhDBFLHHLLQWFwwlWBVBBVwgLFD
|
||||||
|
FFTJRLccQgmTbSsbGm
|
||||||
|
PBPPqCvCwqwhQQVhQngmVmSgglmGnHbnmb
|
||||||
|
zqthvtQPBfCCzPwQPtwQzPwNLfNRFNLdLRLFRFFNLFdFdW
|
||||||
|
nszjQnsPwjznzCCrhJqvjqhmBv
|
||||||
|
tFWdHGWFGtctlNNpZBBhmqTrrbWqvTBT
|
||||||
|
dlFtcpHDVVVHFdNGHGpGfQgsPDzSMsQwwPwgLLBQ
|
||||||
|
TzQqTJGvnnSzqrWTnvfbbcflQcVltfcCMPVM
|
||||||
|
jFjNZFFJLpFwmBwblcpptcVtfbbVlR
|
||||||
|
jmmJdBBLNdGDWDDrdzqn
|
||||||
|
pzddqQmGgbqgGpbJmmdnLZDCRZnZvFlLRZLSlLRT
|
||||||
|
rVwchcBBMwVBHhHTZCTSGSCRTZlTDr
|
||||||
|
HtccPfjfBhMtVBGHWpNqJdJdpjNJppWz
|
||||||
|
WThTWWhtPbZRvvWbbvRTSRMjVRLLgFssgLpVsfSF
|
||||||
|
JdwrlJcCwfzdqwwjsjzpLMgVsMFgML
|
||||||
|
lQrwHNGJHClvTmfhBmPQmt
|
||||||
|
lbRLhcLRpLJzgdGddF
|
||||||
|
qvhwqDDCVtBDVhfMVGFnzGGzTBnGzGGgFg
|
||||||
|
VjCwCWCMtjVDtChvQhtffcSmHpNWrrcHZHHZpplWbp
|
||||||
|
DJVDVdvpmZdPgrCbgbgCJC
|
||||||
|
lzczcWwwznGhBgPSvTlCrNgqNC
|
||||||
|
wGzzQhzGGsBBGRBcQwGwnwjmmRHpRfmmMpppMjjHDvLL
|
||||||
|
HJjJQWjFmmWtFmJTMchghhDwNMhVMWML
|
||||||
|
SznPSRfRSSPdrrPSShbDVhbLPwcwGGwVNh
|
||||||
|
ddRfzdRrCrRsZDSnFjspvFvqFqFqTvJt
|
||||||
|
lflfjQfjvljfbfMLTTDCmHNLNVbL
|
||||||
|
HSJnRrrJZJssnGRrnsrcqqRnDCLBMhVCTLVLhVNVJBBBhhBm
|
||||||
|
SsrGGqqnSsWSnnqWHSrPfzftvFdvWlwfQgQwWvzz
|
||||||
|
nQlsGnFGwwqNJWmJJjpplt
|
||||||
|
HMTLPTRdvsTCCThDCZdLdLDNNpJBWJbjJMpBmbtNptBWmm
|
||||||
|
DLCzPzTzZDdLdGSGfSGrsnQGzr
|
||||||
|
LNPPLHNPHQNQSBFDWDPgggFv
|
||||||
|
hszfWCWJhrBMsSSBgvFD
|
||||||
|
GGZjfmJTjmZfrJrZrZJRGwNQnlLNHWjLVjlwdVNHpV
|
||||||
|
BdNVdTcGVclmTwrTnwPwrHCr
|
||||||
|
zttBWzfLsCggHPwDrf
|
||||||
|
szsWSMbWzzbqBbzJjtjsvMzzvdmdVpGllpcRNZZhmRpZcGGc
|
||||||
|
CjdbMmmmZFnzzgHlttGBVqtBGtsldG
|
||||||
|
LvPPWNcFSSRslWhBsllT
|
||||||
|
ppccvLPpcSNwLLwrDNNpLvwJHCMDmbCJbFzgmZZmFgbgnM
|
||||||
|
TTNRwZqhcTTjsNTTsmrJlvrmmmqqHSrlJH
|
||||||
|
fLQCCdtcfCDDVbVVQdFbQbdJHMHrJHrHnMllHdMHPrMdln
|
||||||
|
WfQLQWWDbwRTWcRssN
|
||||||
|
HQGQWHPDHNjMNQGNWNTWCvZllzqFZqzvvzhCtvFj
|
||||||
|
DfgwdgfcFpchztvt
|
||||||
|
sRggdwwVdgmnSTnnDBPBNWLn
|
||||||
|
WbCZCfTVTTJjSwGdWNDGGw
|
||||||
|
MMRqggMsqhlmlhrssHgRnRmRvdzdczvdNGNLzScGDrNzrLNc
|
||||||
|
lRqsnRhmqqQnQpgQMlgDqRfBTJVFbJZQtBCbZQJVZFFb
|
||||||
|
JnhQcCnmLDsmgmgr
|
||||||
|
bbMZppRFGGRPfBMMRGMZssTTrLlLfsLlVLdsLsdn
|
||||||
|
GZGSpPGMZtGGPFFRGBCwhvwjjcnJctvQcvHq
|
||||||
|
vvrPrHZMGJNRMnqn
|
||||||
|
BVChWWcDVWsBwCWwGrJNhRLJJnJtLqnq
|
||||||
|
cjDfcfpWWsfWccBsHgPgrPTdpZbbgggv
|
||||||
|
GshtVtVtjSCVtVvVGtlVvFZLMvLRZmHmZwbLwZdLdZmR
|
||||||
|
JWzNDQzjcgJgQBJgzgMwLLHZZcdPwRLwRdHZ
|
||||||
|
QWTppBWfDrrNBTTfffhFCpVSjnhCGsFtsqSl
|
||||||
|
nmbCnzHHNzCjCJHJNSCWHLBLrvBrrSGRBDhrDRLrGL
|
||||||
|
TVtPllwcgdmTRhLQTQhT
|
||||||
|
fdFtccFcpPmggfdfNzHzCMsbCnWnJs
|
||||||
|
fMgddvjgRRvjvjVJVdTlZGGtGnrlnqTccNjl
|
||||||
|
HHSFSWSmmpbBpZlGncrNGbNtrn
|
||||||
|
WDWBDDBDBDCwPBWBDWNQDgzvVvLRvsVLRwvwdJVLwL
|
||||||
|
ZSmmvcpsmcJmJvqgBZgZqqtCtZjl
|
||||||
|
WhDwhFSDgtBFjnFg
|
||||||
|
rTrSTLWTTHNMNwNrMVddwNNhsmJGQcRsRcJGsJzQJsrzPsPm
|
||||||
|
GBtLmPsCQqsGqgghZHDzzgLbFz
|
||||||
|
zjjVTzTlRjRJfznrvrfpnNhFSghbbNFgHrbHZbDHbH
|
||||||
|
vpfcTJVpcVlfcQPMPCGzCBsd
|
||||||
|
HMhZNffcPZfNMrzjjFdGcJDjvJ
|
||||||
|
VSBVVLlSQQmTVSWpSQzDrHzTTvDvFjFdGGzT
|
||||||
|
mQSplVHWbHLSgWQnShNwsZMZPfbsNCRNCt
|
||||||
|
MMqvDzLwZzlMqQfdGWPfgPffPglH
|
||||||
|
ShTcJshsrRdnrdfrrfHp
|
||||||
|
VVRtFhsCJVJVvwQqDdbDQd
|
||||||
|
dmnNMlFNvmvljnbpMWNDFQvfQJJGvfPCfHGgQQgcJg
|
||||||
|
bRVzLBSSTRBRBBrwTrVtRwCfcGHcsJgJgzgGsggHCzcC
|
||||||
|
ZbtVTTrrqrSSVwhqqwBRwFWMDFNdjdZpWjdDDppjMW
|
||||||
|
MTzqtbLtwFzJgbHgfbdWWH
|
||||||
|
VMNBjNVjvNfhhhhfNPhP
|
||||||
|
jmGMvlDZZnVMtzlwzqqCpwFt
|
||||||
|
PpzGspGmpPsFLrTnTLzzBg
|
||||||
|
QCWvfjfWjRPFZgrvqrBvTg
|
||||||
|
wwNRCNQQVNRWjNWfQbHCCClHGDGJdGhpdhtPGhltDlJD
|
||||||
|
dhbpGzhllzGlPvnzNcvtNVnc
|
||||||
|
gcFMsTJDMMwrZqfjjqvvfnPtqJ
|
||||||
|
sWRWTRFwrTgLDDFWgMsTlpSlpbSCdWWdcbmpChGd
|
||||||
|
QccdFFFcFbcQPQPHMgpPMp
|
||||||
|
NJlNSSMLDfJfmlSqHZRNpRqNBRPRPq
|
||||||
|
LlMmJfvDVVTJSmVMscsCFtvwcjWjrjCj
|
||||||
|
NVVMGWFSMRVGWSthwhTJWzcJCcJsTs
|
||||||
|
jqRLqlfRZcmjcCzT
|
||||||
|
rlRRrdrflpdvPbHpflfPlfDBgBMQpGVQMgpVDGMggBDV
|
||||||
|
VwRhccRsnQStRhtGQVQVsmjgDgqJdggDjqLDgJlLzmLl
|
||||||
|
BWFZpWHBNCBCNBzBNvWBpzHZqqlMqgNdlllDdqDgJDLlfDdd
|
||||||
|
pFbTrrrBzbzTtSwStQnnsrVn
|
||||||
|
DRfFbFqzbddfPFtsJnJRsnClJRsn
|
||||||
|
cgjgQgWvSLVQgmWWgWVjVSSSBTltThLnqJssnTCZsTThntZT
|
||||||
|
qjwpSrmWgcSrGMfdFDFdwHFd
|
||||||
|
RWjDDWDjDNjjgDtSRRgjcjzFpnzwdFbFNdbFbpnldwFF
|
||||||
|
vQfPfTQJbZdThTzL
|
||||||
|
PrBQJQsfQqrrbfmPqMBfJbggjRVgWjttsHRSgRctDjSs
|
||||||
|
NgqNWqqWWdnJdqpBNFtCmJGCDHttDGDsHsHm
|
||||||
|
BjvzhRLTrTBQhTMQRjRRcjPGtmDCZZDZSCmmMSSZmVmSSt
|
||||||
|
vQzRvRzQcPcvfQzRnddppFgnFfWwBFlb
|
||||||
|
nnPvfvgrtPDHgvvGTRRRPZQGpGCLLV
|
||||||
|
FlBsBdbllFdfWpbGMCVMZLVbZQ
|
||||||
|
lhchNcqFsJBlBszztvwHjvzgrzmzffgH
|
||||||
|
zZhdjTpJJpjmmpPZhvqnnZHqZcggvgMbgv
|
||||||
|
tFpFQFSFtBGlFNwFfNMnHfbHcnvcvcfvcqrM
|
||||||
|
GBFlNLSNVGVSSGtQSLLBBlNtphDdzpmmPmTPhRmdzdVCCDdR
|
||||||
|
rpRCCDLpmnCdJCjn
|
||||||
|
vMhSFvgsMGLmnmWMmm
|
||||||
|
wVqFFvwvPPHhFhhgHPwHshpqrDDzqlfRbpftRLblrllr
|
||||||
|
CRNDzdJCVDWzVgDjdjzRJzWRMTbHsMNZNbZMMbsfhTtMTLMB
|
||||||
|
wSlwQcSpqPpcqcqFSqpwslsTfZtLhtlthtBHtTMZ
|
||||||
|
SPGFGFFmpcPGDrWDmjDJVffR
|
||||||
|
dsmdtJthJphWqHRPnRRsvvnnfR
|
||||||
|
cDBMDDDlBZglDZTMDfzVvNRrvNPVHzRRTV
|
||||||
|
PGMCCDClBDDbbFqmmhqQdpWGmmWp
|
||||||
|
BJjcGhcvCnBdGHsmHSzZDzSDMHmRMQ
|
||||||
|
qLWPLVrTwWlwwwrfrFfGDNmDQRMbQMzzmmbQLNMM
|
||||||
|
rVWrFlGqlqwVwVGgWGphnvgBBsnvsjdBnCBnBg
|
||||||
|
sNNsfBsmcGmgNTcHHSpnTWHnpV
|
||||||
|
QlrhlrlMglhDQrdFblvFtMdnDWwSHDWWwnTSjLwVDSwwwT
|
||||||
|
QtdMvltZhbFlPPZbQtQthZQdqCsJJGzBqqCBmCNCqgRCBsfP
|
||||||
|
SZnQnnHRWRQRVjHnqlJTQPfdlqfJftqG
|
||||||
|
pDzmbDBFbBLvvzttfdlTTl
|
||||||
|
gsDLLpcmsSZVwlnRsV
|
||||||
|
LHsWjwjWqCLsqCHcLsjdLqcdbpMGZPPtBhthbZBpBhMllwPG
|
||||||
|
VFnVbbvJSfbgphSpGlhRBBSP
|
||||||
|
JrrTgmFgzvNbrmNnmnvzgTLjCQWDLDCsTjssjqcHLc
|
||||||
|
QmwwqTqsrdqNNqgtvnVDVcGNNtvv
|
||||||
|
WBFBpzzjSJBJzJbfntgPzVzcvPnzDf
|
||||||
|
HcpbHZJBFpjpcSZrZsdRQZrCwrwd
|
||||||
|
JqmLmbtTWThBTWvWGVSrrVDsSGSG
|
||||||
|
wwzRzNjNNbsPVPds
|
||||||
|
jfgQRZwpQclQfffHgpRpwpfTcqtLLqCbbFFFLmbmTTBnFB
|
||||||
|
fGpcccNNqcctqGMprvMPmbbzFSflSRzPBBlBbS
|
||||||
|
JCjnjTZTTGPSGmTFPb
|
||||||
|
ZWHhJjHLDVDgHLLDGjnhctsstwqctNwWqNwwQrtv
|
||||||
|
sDwQhcwhBDDwrhGsQnRBQHHMHHMNJMZFCFRbCRftMM
|
||||||
|
zjjlmjqfdTqlWdzTqmLzlzVjNCHJNHNFMFtbJNZgVNMMCCtN
|
||||||
|
vPTfLmPTLWBsPDnSscnS
|
||||||
|
ngznwDPPTzhPPDCTQnTTDQBQqHNNrHFVppbbjRFFqFhHqRqr
|
||||||
|
tZJtcGsGtLLcctRqVBbbqrspbHNq
|
||||||
|
BmZSvGBMdWPzMPgnnz
|
||||||
|
MpNWPVNWWZWVVNZHVcvJjgBjJMStMJSjjg
|
||||||
|
rzdCzrCTTLRCslvJDSjjdScgDm
|
||||||
|
RLhCQzqTCssThRQzRzwGQrrCFffbfWppNpWNWVcHqZbHpVPp
|
||||||
|
zQzCVWdSSjCdjpchWcGftflGZcgG
|
||||||
|
RwnJTJwmvFHTBFmtBccZZfBGMstllM
|
||||||
|
wwvvHRwqDnHFrmqnrSbQVVQfSbqQjbqjbQ
|
||||||
|
ttDftStSlftPgSHmJbFwnMnFwzbrLHMMzz
|
||||||
|
GqTBqhBqBvppBvMMTznrCbCnLwfr
|
||||||
|
RBjjpZZvvZqGcNhjjpNmDPfDcsgfDfgScsQQQg
|
||||||
|
rsSFccvBHppHPsvQrSHSprFjnbLGdbzLfbGLLtLjjzLzvl
|
||||||
|
JWWJhmwwTDTGtnzlhdbtLG
|
||||||
|
CWNqWRNCwnCJVppQFFFFNrgHBB
|
||||||
|
MSRVnMjnVRVnPlcsrtMtschgDl
|
||||||
|
NWHBwJBwBBQCHHqwWQGBNgdrFFtsthcqdltdDsqttq
|
||||||
|
CCTTGCNCCBfNJNNWbGGnvVzDSRfDRSZvLPSzRn
|
||||||
|
MpRfjRjWpZzzzRzZSpjzZjTCQcGdHLWNGqdBdcBWWBLccn
|
||||||
|
lrbrsPQDPQglDtwggcLCqnCdNNdHBLsqNd
|
||||||
|
blwbJggvgbwlvQbvtgwmvVwRfTzfMMjFVfSFjZjMTSTSzj
|
||||||
|
ttSGjHWVrwWrWWvhzvhmhDfR
|
||||||
|
qMBdNNsccQgfDRzRmqlhRl
|
||||||
|
gQJdfJPdQBsMggMjPrTCLjrGrCrtVT
|
||||||
|
tGFdlwDwGFdNtStghWWdQFSnTVfCfZhrfVTVCVprnRRhVn
|
||||||
|
cLsBPQJsQPmbmPHTnRRnHprCVfns
|
||||||
|
MjmvPqqQjPbQzjLwwDWDSlzSlGSgwl
|
||||||
|
NSCpFgfbscbZZZwrtgPZJT
|
||||||
|
zGCQlVGmmQGVqqJwGtHZGrPHHRTH
|
||||||
|
qQvVmvzmqCdhhjzCQLjljLQMnMDSFWcSfnMfpbfnNcFFbFDN
|
||||||
|
zFgqjQBmWNlWlfHrHdLc
|
||||||
|
wnbCpSSZZTJSJSnmdrtHfGtftlcpltpH
|
||||||
|
ZSwhVPPJgNVmNFzs
|
||||||
|
WNVJthVHRRfLqpqN
|
||||||
|
gdCGcCgJBCrgScRLzbjQQLfRRR
|
||||||
|
SCFdGSFvlhTJsnvW
|
||||||
|
FFZwFZZwRmFFhHtNLNLGRtsqjLMt
|
||||||
|
gbDnnrMbMCffMPbPLNjGNlcppNtspp
|
||||||
|
rgbzrzDrgVgnrBzFWMWmWBwHWHShSB
|
||||||
|
zjRVjDqzRjvSBnBGGsfsrFsV
|
||||||
|
fLccLLZpJMctwJWWWJWpJGCwFwsgnngFBPsCnnTBPT
|
||||||
|
LbJlZNWMtpMlHRNHzdfSDfdj
|
||||||
|
VGbbnJGSTsVTssTTnVVWMtfBBmvftRHfHBMJJfZp
|
||||||
|
ghqtrzgPrjdzQCjmZMHfRHZHBmQmmB
|
||||||
|
gltFtDqFVlTVWlTl
|
||||||
|
HqNqZDTvNvVTLPSTvzfrfHfdndffwnbdnwrH
|
||||||
|
MpSJlFcMJmcpFlmClcMcRnWbWtthrnfwnCGrrWfrwC
|
||||||
|
RjcJJmSFMRQpMRFjMNVvTZjNPPvLTBPBBB
|
||||||
|
MzClDtlzJzFzNGGm
|
||||||
|
bjcLRHlTBsFJGmRm
|
||||||
|
HcPSSfTSpLZLbSwtrtvMnlDCDPCl
|
||||||
|
gWWgQJCsVhgRLCWsdjpmcBHvfvrrnvCvBB
|
||||||
|
TqDtztqtStlbNTPtllqZpvmcFHjNjvjNvHvmrrmj
|
||||||
|
ztPPGZqTPSbJgchGgwRQgQ
|
||||||
|
wVrdtTqtCCvbNgbNTTDN
|
||||||
|
mhGzWhGzMGWGrRmbFLBHZRNHNvZvgB
|
||||||
|
hhGhShpnsSrqVCVSSj
|
||||||
|
HnlbmGnlHZHnlBcjgwfDVfwLsGLGLDgR
|
||||||
|
WhWMWTvQPWPLDMFRCDMsVD
|
||||||
|
QdzJQPSPZqJnJRnZ
|
||||||
|
TTjTjFBcRBGjwsDTBLmrCftfRVrrCftCVNRP
|
||||||
|
WnqbJWnnQJhSqVfVPfDnggfrVN
|
||||||
|
hSlDMllvhbQqllZlSWQdSQTBjsFHBjTwGdHBTBszLzcc
|
||||||
|
rNWqWDLZWcqFqLLLgQQJnndnQdNzzJVMzd
|
||||||
|
cPtsPvChtRsGswHPGbwcPcdVnpzvnmBmVvJBJdJVJdzn
|
||||||
|
PfRfRGtsHsSRftbbbbHhwCCsjZgSTgSZWDTcgDZjLqgqFWLq
|
||||||
|
BNzPnPJNNMwHJRhBGRWRdjFQddFlFjWd
|
||||||
|
npbZrgnLSCSrWFjjdlZGlcDF
|
||||||
|
gqtmmngSbmgHJqfqzNBHBJ
|
||||||
|
stgzttBPRRRdpSVVpdpS
|
||||||
|
WJFcLQmJZHcCFLJmcZLMfbpGSWMNpGftSSpMrb
|
||||||
|
mcvvQvHmtLCJmHZQHZHCDHJJnjqPjjPzwvwhnwPqTjPBzPnB
|
||||||
|
DDmbbPqgFSbSQPtPQJttrltJ
|
||||||
|
CRfcnZWmRRhJNVtsVnQlsp
|
||||||
|
fcBvWvWzcZWCzTTCTTvccFMBHGDdSwGFFbqwFSGSmF
|
||||||
|
tCRBPCPRjzsJszBmtjmCvSpHcppJpvZdHHHcHZJG
|
||||||
|
qbrlLnWlQDQDNvmHHHHcrZZvdm
|
||||||
|
nmnWnnWmgQsCFzFCRVCg
|
||||||
|
sHMHCDZfcwMcRcLMcZDCRCHMPdJqgjvVdvqgdgfdJbQgvWQb
|
||||||
|
FFhTzmzGrnmtjTBjBBprrmFtqGgQqvVdPbbgqQQWJvvWJQqV
|
||||||
|
TrNjrnFSlwNZNlNL
|
||||||
|
JQGdsdzSzsdFQFSdssnndNlZjNPTJZNljVjTPhVPhT
|
||||||
|
GgGLfRmHGLhNVjjNTLhV
|
||||||
|
HvGvwpbHHRwpBrvBgSSzSFndtzndCrsFMd
|
||||||
|
DptFshMrhDhDwmPPhwSNhmmS
|
||||||
|
RLdcdRvBjnvRVcvlcLbCcbCwwpGBwSmfZqqPPPPwzmfqZq
|
||||||
|
VlRLvVjCJLnlpvvRdllLcJJWDHgMMHDDHtWFFDDQgH
|
||||||
|
SsSdrndpDlCdLftd
|
||||||
|
VGPVJgmQrVGHHZfwLlfCTmfwlDlT
|
||||||
|
PcJHcGgcWWbJpjRrphRbFpRn
|
||||||
|
PdPSMHMLzPPSShBdffMMzMRHQQrpppcqTCQQpCccTGTRCnCQ
|
||||||
|
vsbWmFbmJmZFFsmsbfpGVrGnWrrpVpnnVcTV
|
||||||
|
JZslstfZNNSSPdlSMwlM
|
||||||
|
bLLzRzZLbRqJJrDGGVZdwssDvGQw
|
||||||
|
FCtNJlTFtmPfldSvDvQFVVsjSv
|
||||||
|
PmCPHBhhPpWLWgzgHJ
|
||||||
|
qwmwFHCgPgPPqPwMCrHHFBVVRBttVRRffVfmsjVNNB
|
||||||
|
WSvcSnvbSWbhcbjlQbvlSQhlfBGcspVVsVGfVscpzpNcpBtN
|
||||||
|
hJSLhlvlTjPFHMLCCq
|
||||||
|
bggDpTggncGVVWbQcG
|
||||||
|
sRvSwwwFBSpFzvRvMFZqmPmMVqmcmPPVqhqqWq
|
||||||
|
SRBBrFZZwrddBFRjlptnLgDnTggdtd
|
||||||
|
PPfMcZMflbMQcMllPVfTVMwjWWmZvpWWpWhhjjpdWWww
|
||||||
|
sDQNnzsnQgDNsFzFqtGjGmWWSpWrGhdpvphdSW
|
||||||
|
nNQNqLBHLqzDnHgnVJfPJPCRBbfCcJlT
|
||||||
|
fppppWsjcSDPjjDpGhgwbfTgHTCbHJwbHbTR
|
||||||
|
rLBdQnvMNMmFPbLqHqTqgLHCgL
|
||||||
|
nrFznvMNMQdttrBcScsDstWcPGtWSc
|
||||||
|
lclnRSDnGZtvSwnZDZzhLffqdsCNwTBCBBdNsd
|
||||||
|
mPjmjmrFFpmQjMJQjlNdlhCsCLsTlNLs
|
||||||
|
ggmrHHVVQVPJpWrgpWScRvzZzGGRnZvlgzZn
|
||||||
|
GjGJGQJGcMTVfFDQzNVQzP
|
||||||
|
mHqdbmmdnJqVzVhRVNzPbR
|
||||||
|
wStmHJsJsLZLjTvM
|
||||||
|
QssMbVGdMQjZPjwVwHVZPZClllvgSgvlTgwwSSCgSCtC
|
||||||
|
WmmFBmJrcFRBFrJJBFchzWCStgCTgvhvTlfsNqfTlvTv
|
||||||
|
sFzzssDLzrBPjDVVddHMQD
|
||||||
|
fztDZSGrNrlnbnPTgFFpln
|
||||||
|
jvvQMMcLcjJmQwHdJvjQJnnbTbRFRphnnpsWgmFRPR
|
||||||
|
vTLHHCQLHBBjJCSZrVCZtSfSfrft
|
||||||
|
gHfHffHLjwHrRjLrLRZVMnTdTBsNTBwTVBsBnN
|
||||||
|
DWPhqhhDhvSGvWPzSzMBQBQVMMBBmvssvQvQ
|
||||||
|
CDGbqCDbChSbWGrHcHRgbcVcfrLJ
|
||||||
|
frlTLmtllbbbdpJS
|
||||||
|
qFjhzjThjHTFGHTjqhhjMzBhVpVpdbBnSJQRpBnVVdbRRQJd
|
||||||
|
vjWPWjWPPPWgwmfCrNvTvZ
|
34
2022/03/main.py
Normal file
34
2022/03/main.py
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
from itertools import chain, zip_longest
|
||||||
|
|
||||||
|
from utils.input import read_input_lines
|
||||||
|
|
||||||
|
|
||||||
|
def middle(iterable) -> int:
|
||||||
|
return int(len(iterable) / 2)
|
||||||
|
|
||||||
|
|
||||||
|
lines = read_input_lines()
|
||||||
|
compartments = ((set(line[middle(line):]), set(line[:middle(line)])) for line in lines)
|
||||||
|
misplaced_item_sets = (set.intersection(*compartment) for compartment in compartments)
|
||||||
|
misplaced_items = chain.from_iterable(misplaced_item_sets)
|
||||||
|
|
||||||
|
|
||||||
|
def get_priority(item: chr) -> int:
|
||||||
|
if 'a' <= item <= 'z':
|
||||||
|
return ord(item) - ord('a') + 1
|
||||||
|
elif 'A' <= item <= 'Z':
|
||||||
|
return ord(item) - ord('A') + 27
|
||||||
|
else:
|
||||||
|
raise ValueError(f"Invalid item: {item}")
|
||||||
|
|
||||||
|
|
||||||
|
total_misplaced_priority = sum(map(get_priority, misplaced_items))
|
||||||
|
print(f"Total misplaced item priority: {total_misplaced_priority}")
|
||||||
|
|
||||||
|
line_iterator = iter(lines)
|
||||||
|
rucksacks_per_group = zip_longest(line_iterator, line_iterator, line_iterator)
|
||||||
|
rucksack_items_per_group = (list(set(item) for item in rucksack) for rucksack in rucksacks_per_group)
|
||||||
|
common_items_per_group = (set.intersection(*rucksack_items) for rucksack_items in rucksack_items_per_group)
|
||||||
|
badges = chain.from_iterable(common_items_per_group)
|
||||||
|
total_badge_priority = sum(map(get_priority, badges))
|
||||||
|
print(f"Total badge priority: {total_badge_priority}")
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user