mirror of
https://github.com/chylex/Advent-of-Code.git
synced 2025-09-15 15:32:11 +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-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)
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
set(PROJECT_NAME AOC_2015_02)
|
||||
set(PROJECT_NAME 2015_02)
|
||||
|
||||
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)
|
||||
|
||||
|
@@ -1,6 +1,6 @@
|
||||
cmake_minimum_required(VERSION 3.20)
|
||||
|
||||
project(AOC)
|
||||
project(2015)
|
||||
|
||||
enable_language(ASM_NASM)
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
#ifndef ADVENTOFCODE_BENCHMARK_H
|
||||
#define ADVENTOFCODE_BENCHMARK_H
|
||||
#ifndef INC_2015_BENCHMARK_H
|
||||
#define INC_2015_BENCHMARK_H
|
||||
|
||||
#include "stdio.h"
|
||||
|
||||
@@ -64,4 +64,4 @@ void runBenchmark(const entryPointCallback ep, char* input) {
|
||||
|
||||
#undef BENCHMARK_RUNS
|
||||
|
||||
#endif //ADVENTOFCODE_BENCHMARK_H
|
||||
#endif //INC_2015_BENCHMARK_H
|
||||
|
@@ -1,5 +1,5 @@
|
||||
#ifndef ADVENTOFCODE_FILE_H
|
||||
#define ADVENTOFCODE_FILE_H
|
||||
#ifndef INC_2015_FILE_H
|
||||
#define INC_2015_FILE_H
|
||||
|
||||
#include "stdio.h"
|
||||
#include "stdlib.h"
|
||||
@@ -65,4 +65,4 @@ char* readFile(const char* filename) {
|
||||
return contents;
|
||||
}
|
||||
|
||||
#endif //ADVENTOFCODE_FILE_H
|
||||
#endif //INC_2015_FILE_H
|
||||
|
@@ -16,7 +16,7 @@ extern void print(const char *format, ...) {
|
||||
}
|
||||
|
||||
int main(void) {
|
||||
char *input = readFile("input/1.txt");
|
||||
char *input = readFile("input.txt");
|
||||
|
||||
if (input == NULL) {
|
||||
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/
|
||||
|
@@ -1,12 +1,13 @@
|
||||
<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="workingDirectory" value="file://$PROJECT_DIR$/2020/01" />
|
||||
<option name="workingDirectory" value="file://$PROJECT_DIR$/01" />
|
||||
<option name="channel" value="DEFAULT" />
|
||||
<option name="requiredFeatures" value="true" />
|
||||
<option name="allFeatures" value="false" />
|
||||
<option name="emulateTerminal" value="false" />
|
||||
<option name="withSudo" value="false" />
|
||||
<option name="buildTarget" value="REMOTE" />
|
||||
<option name="backtrace" value="SHORT" />
|
||||
<envs />
|
||||
<option name="isRedirectInput" value="false" />
|
@@ -1,12 +1,13 @@
|
||||
<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="workingDirectory" value="file://$PROJECT_DIR$/2020/02" />
|
||||
<option name="workingDirectory" value="file://$PROJECT_DIR$/02" />
|
||||
<option name="channel" value="DEFAULT" />
|
||||
<option name="requiredFeatures" value="true" />
|
||||
<option name="allFeatures" value="false" />
|
||||
<option name="emulateTerminal" value="false" />
|
||||
<option name="withSudo" value="false" />
|
||||
<option name="buildTarget" value="REMOTE" />
|
||||
<option name="backtrace" value="SHORT" />
|
||||
<envs />
|
||||
<option name="isRedirectInput" value="false" />
|
@@ -1,12 +1,13 @@
|
||||
<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="workingDirectory" value="file://$PROJECT_DIR$/2020/03" />
|
||||
<option name="workingDirectory" value="file://$PROJECT_DIR$/03" />
|
||||
<option name="channel" value="DEFAULT" />
|
||||
<option name="requiredFeatures" value="true" />
|
||||
<option name="allFeatures" value="false" />
|
||||
<option name="emulateTerminal" value="false" />
|
||||
<option name="withSudo" value="false" />
|
||||
<option name="buildTarget" value="REMOTE" />
|
||||
<option name="backtrace" value="SHORT" />
|
||||
<envs />
|
||||
<option name="isRedirectInput" value="false" />
|
@@ -1,12 +1,13 @@
|
||||
<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="workingDirectory" value="file://$PROJECT_DIR$/2020/04" />
|
||||
<option name="workingDirectory" value="file://$PROJECT_DIR$/04" />
|
||||
<option name="channel" value="DEFAULT" />
|
||||
<option name="requiredFeatures" value="true" />
|
||||
<option name="allFeatures" value="false" />
|
||||
<option name="emulateTerminal" value="false" />
|
||||
<option name="withSudo" value="false" />
|
||||
<option name="buildTarget" value="REMOTE" />
|
||||
<option name="backtrace" value="SHORT" />
|
||||
<envs />
|
||||
<option name="isRedirectInput" value="false" />
|
@@ -1,12 +1,13 @@
|
||||
<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="workingDirectory" value="file://$PROJECT_DIR$/2020/05" />
|
||||
<option name="workingDirectory" value="file://$PROJECT_DIR$/05" />
|
||||
<option name="channel" value="DEFAULT" />
|
||||
<option name="requiredFeatures" value="true" />
|
||||
<option name="allFeatures" value="false" />
|
||||
<option name="emulateTerminal" value="false" />
|
||||
<option name="withSudo" value="false" />
|
||||
<option name="buildTarget" value="REMOTE" />
|
||||
<option name="backtrace" value="SHORT" />
|
||||
<envs />
|
||||
<option name="isRedirectInput" value="false" />
|
@@ -1,12 +1,13 @@
|
||||
<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="workingDirectory" value="file://$PROJECT_DIR$/2020/06" />
|
||||
<option name="workingDirectory" value="file://$PROJECT_DIR$/06" />
|
||||
<option name="channel" value="DEFAULT" />
|
||||
<option name="requiredFeatures" value="true" />
|
||||
<option name="allFeatures" value="false" />
|
||||
<option name="emulateTerminal" value="false" />
|
||||
<option name="withSudo" value="false" />
|
||||
<option name="buildTarget" value="REMOTE" />
|
||||
<option name="backtrace" value="SHORT" />
|
||||
<envs />
|
||||
<option name="isRedirectInput" value="false" />
|
@@ -1,12 +1,13 @@
|
||||
<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="workingDirectory" value="file://$PROJECT_DIR$/2020/07" />
|
||||
<option name="workingDirectory" value="file://$PROJECT_DIR$/07" />
|
||||
<option name="channel" value="DEFAULT" />
|
||||
<option name="requiredFeatures" value="true" />
|
||||
<option name="allFeatures" value="false" />
|
||||
<option name="emulateTerminal" value="false" />
|
||||
<option name="withSudo" value="false" />
|
||||
<option name="buildTarget" value="REMOTE" />
|
||||
<option name="backtrace" value="SHORT" />
|
||||
<envs />
|
||||
<option name="isRedirectInput" value="false" />
|
@@ -1,12 +1,13 @@
|
||||
<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="workingDirectory" value="file://$PROJECT_DIR$/2020/08" />
|
||||
<option name="workingDirectory" value="file://$PROJECT_DIR$/08" />
|
||||
<option name="channel" value="DEFAULT" />
|
||||
<option name="requiredFeatures" value="true" />
|
||||
<option name="allFeatures" value="false" />
|
||||
<option name="emulateTerminal" value="false" />
|
||||
<option name="withSudo" value="false" />
|
||||
<option name="buildTarget" value="REMOTE" />
|
||||
<option name="backtrace" value="SHORT" />
|
||||
<envs />
|
||||
<option name="isRedirectInput" value="false" />
|
@@ -1,3 +1,5 @@
|
||||
#![allow(dead_code)]
|
||||
|
||||
use std::error::Error;
|
||||
use std::fmt::{Debug, Display, Formatter};
|
||||
use std::fs::File;
|
||||
@@ -6,11 +8,10 @@ use std::io::{BufRead, BufReader};
|
||||
use std::str::FromStr;
|
||||
|
||||
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();
|
||||
}
|
||||
|
||||
#[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>> {
|
||||
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
|
||||
|
||||
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 windowedIncreases = lines.windowed(3).map(List<Int>::sum).windowed(2).count { it[1] > it[0] }
|
||||
|
@@ -1,7 +1,7 @@
|
||||
import java.io.File
|
||||
|
||||
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() } }
|
||||
|
||||
println("Part 1:")
|
||||
|
@@ -1,7 +1,7 @@
|
||||
import java.io.File
|
||||
|
||||
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)
|
||||
part1(input)
|
||||
part2(input)
|
||||
|
@@ -3,7 +3,7 @@ import java.io.File
|
||||
const val SIZE = 5
|
||||
|
||||
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 boards = mutableListOf<Board>()
|
||||
|
||||
|
@@ -6,7 +6,7 @@ import kotlin.system.measureTimeMillis
|
||||
|
||||
fun main() {
|
||||
val lineRegex = Regex("^(\\d+),(\\d+) -> (\\d+),(\\d+)$")
|
||||
val lines = File("input/1.txt").readLines()
|
||||
val lines = File("input.txt").readLines()
|
||||
.mapNotNull(lineRegex::matchEntire)
|
||||
.map { it.groupValues.takeLast(4).map(String::toInt) }
|
||||
.map { Line(it[0], it[1], it[2], it[3]) }
|
||||
@@ -15,7 +15,7 @@ fun main() {
|
||||
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) {
|
||||
val minX = min(x1, x2)
|
||||
val minY = min(y1, y2)
|
||||
|
@@ -3,7 +3,7 @@ import java.math.BigInteger
|
||||
import kotlin.system.measureTimeMillis
|
||||
|
||||
fun main() {
|
||||
val initialConfiguration = File("input/1.txt").readLines()
|
||||
val initialConfiguration = File("input.txt").readLines()
|
||||
.single()
|
||||
.split(',')
|
||||
.map(String::toInt)
|
||||
|
@@ -2,7 +2,7 @@ import java.io.File
|
||||
import kotlin.math.abs
|
||||
|
||||
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 p2 = originalPositions.maxOrNull() ?: return
|
||||
|
@@ -9,7 +9,7 @@ import java.io.File
|
||||
import java.util.EnumSet
|
||||
|
||||
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]) }
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ fun main() {
|
||||
|
||||
fun part1(records: List<Record>) {
|
||||
@Suppress("ConvertLambdaToReference")
|
||||
val segmentCountToDigits = DIGITS
|
||||
val segmentCountToDigits = allDigits
|
||||
.map { it.value to it.positions.size }
|
||||
.groupBy { it.second }
|
||||
.mapValues { it.value.map { e -> e.first } }
|
||||
@@ -48,7 +48,7 @@ enum class Position {
|
||||
BOTTOM
|
||||
}
|
||||
|
||||
private val DIGITS = listOf(
|
||||
private val allDigits = listOf(
|
||||
Digit(0, EnumSet.of(TOP, TOP_LEFT, TOP_RIGHT, BOTTOM_LEFT, BOTTOM_RIGHT, BOTTOM)),
|
||||
Digit(1, EnumSet.of(TOP_RIGHT, BOTTOM_RIGHT)),
|
||||
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 ->
|
||||
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
|
||||
}
|
||||
|
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