init
This commit is contained in:
commit
ca9736d8ec
1
2015/day1/input.text
Normal file
1
2015/day1/input.text
Normal file
File diff suppressed because one or more lines are too long
11
2015/day1/p1/main.py
Normal file
11
2015/day1/p1/main.py
Normal file
@ -0,0 +1,11 @@
|
||||
with open('../input.text', 'r') as file:
|
||||
data = file.read()
|
||||
|
||||
floor = 0
|
||||
for char in data:
|
||||
if char == '(':
|
||||
floor += 1
|
||||
elif char == ')':
|
||||
floor -= 1
|
||||
|
||||
print(f'The instructions took Santa to floor {floor}')
|
||||
13
2015/day1/p2/main.py
Normal file
13
2015/day1/p2/main.py
Normal file
@ -0,0 +1,13 @@
|
||||
with open('../input.text', 'r') as file:
|
||||
data: str = file.read()
|
||||
|
||||
floor = 0
|
||||
for i, char in enumerate(data):
|
||||
if char == '(':
|
||||
floor += 1
|
||||
elif char == ')':
|
||||
floor -= 1
|
||||
|
||||
if floor == -1:
|
||||
print(f'The position of the character that causes Santa to first enter the basement is {i + 1}')
|
||||
exit(0)
|
||||
1000
2015/day2/input.text
Normal file
1000
2015/day2/input.text
Normal file
File diff suppressed because it is too large
Load Diff
19
2015/day2/p1.py
Normal file
19
2015/day2/p1.py
Normal file
@ -0,0 +1,19 @@
|
||||
with open('input.text', 'r') as file:
|
||||
data: list[str] = file.readlines()
|
||||
|
||||
total = 0
|
||||
for line in data:
|
||||
l, w, h = [int(s) for s in line.split('x')]
|
||||
|
||||
sides = [2*l*w, 2*w*h, 2*h*l]
|
||||
|
||||
area = 0
|
||||
lowest = float('inf')
|
||||
for side in sides:
|
||||
if side/2 < lowest:
|
||||
lowest = side/2
|
||||
area += side
|
||||
|
||||
total += area + lowest
|
||||
|
||||
print(f'The total square feet of wrapping paper needed is {int(total)} sq. ft.')
|
||||
14
2015/day2/p2.py
Normal file
14
2015/day2/p2.py
Normal file
@ -0,0 +1,14 @@
|
||||
with open('input.text', 'r') as file:
|
||||
data: list[str] = file.readlines()
|
||||
|
||||
total = 0
|
||||
for line in data:
|
||||
sides = [int(s) for s in line.split('x')]
|
||||
sides.sort()
|
||||
l, w, h = sides
|
||||
|
||||
ribbon = (l * 2 + w * 2) + (l*w*h)
|
||||
|
||||
total += ribbon
|
||||
|
||||
print(f'Total Ribbon: {total}')
|
||||
1
2015/day3/input.text
Normal file
1
2015/day3/input.text
Normal file
File diff suppressed because one or more lines are too long
20
2015/day3/p1.py
Normal file
20
2015/day3/p1.py
Normal file
@ -0,0 +1,20 @@
|
||||
with open('input.text', 'r') as file:
|
||||
data: str = file.read()
|
||||
|
||||
been = []
|
||||
pos = [0, 0]
|
||||
for char in data:
|
||||
match char:
|
||||
case '^':
|
||||
pos[1] += 1
|
||||
case 'v':
|
||||
pos[1] -= 1
|
||||
case '>':
|
||||
pos[0] += 1
|
||||
case '<':
|
||||
pos[0] -= 1
|
||||
|
||||
if not pos in been:
|
||||
been.append(pos.copy())
|
||||
|
||||
print(f'Santa has been to {len(been)} houses.')
|
||||
25
2015/day3/p2.py
Normal file
25
2015/day3/p2.py
Normal file
@ -0,0 +1,25 @@
|
||||
with open('input.text', 'r') as file:
|
||||
data: str = file.read()
|
||||
|
||||
been = []
|
||||
santas = [[0, 0], [0, 0]]
|
||||
robo_santa = False
|
||||
|
||||
for char in data:
|
||||
|
||||
match char:
|
||||
case '^':
|
||||
santas[robo_santa][1] += 1
|
||||
case 'v':
|
||||
santas[robo_santa][1] -= 1
|
||||
case '>':
|
||||
santas[robo_santa][0] += 1
|
||||
case '<':
|
||||
santas[robo_santa][0] -= 1
|
||||
|
||||
if not santas[robo_santa] in been:
|
||||
been.append(santas[robo_santa].copy())
|
||||
|
||||
robo_santa = not robo_santa
|
||||
|
||||
print(f'Santa has been to {len(been)} houses.')
|
||||
5
2022/README.md
Normal file
5
2022/README.md
Normal file
@ -0,0 +1,5 @@
|
||||
# AOC2022
|
||||
My Advent of Code 2022
|
||||
|
||||
All done in C.
|
||||
My goals with this were to write readible code that worked with varying inputs.
|
||||
43
2022/day1/p1/day1p1.c
Normal file
43
2022/day1/p1/day1p1.c
Normal file
@ -0,0 +1,43 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
|
||||
FILE *File;
|
||||
char *Line = malloc(256);
|
||||
|
||||
int CurrentCal, MaxCalories, ElfNum, ElfLargest = 0;
|
||||
|
||||
File = fopen("input.txt","r");
|
||||
|
||||
|
||||
while(fgets(Line, 10, File))
|
||||
{
|
||||
|
||||
if (atoi(Line) == 0)
|
||||
{
|
||||
|
||||
if (CurrentCal > MaxCalories)
|
||||
{
|
||||
MaxCalories = CurrentCal;
|
||||
ElfLargest = ElfNum;
|
||||
}
|
||||
|
||||
CurrentCal = 0;
|
||||
ElfNum++;
|
||||
|
||||
}
|
||||
else
|
||||
CurrentCal += atoi(Line);
|
||||
|
||||
|
||||
}
|
||||
|
||||
printf("Elf %d is carrying %d calories of food.", ElfLargest, MaxCalories);
|
||||
|
||||
fclose(File);
|
||||
|
||||
return 0;
|
||||
}
|
||||
2244
2022/day1/p1/input.txt
Normal file
2244
2022/day1/p1/input.txt
Normal file
File diff suppressed because it is too large
Load Diff
80
2022/day1/p2/day1p2.c
Normal file
80
2022/day1/p2/day1p2.c
Normal file
@ -0,0 +1,80 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
|
||||
int FindSmallest(int Array[3])
|
||||
{
|
||||
|
||||
int SmallestNumberPosition = 0;
|
||||
int SmallestNumber = Array[0];
|
||||
|
||||
for (int i = 1; i < 3; i++)
|
||||
{
|
||||
|
||||
if (Array[i] < SmallestNumber)
|
||||
{
|
||||
SmallestNumber = Array[i];
|
||||
SmallestNumberPosition = i;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return SmallestNumberPosition;
|
||||
}
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
|
||||
FILE *File;
|
||||
char *Line = malloc(256);
|
||||
|
||||
int TopThree[3] = {0,0,0};
|
||||
int CurrentCal = 0;
|
||||
|
||||
|
||||
File = fopen("input.txt","r");
|
||||
|
||||
while(fgets(Line, 10, File))
|
||||
{
|
||||
|
||||
if (atoi(Line) == 0)
|
||||
{
|
||||
|
||||
for (int i=0; i < 3; i++)
|
||||
{
|
||||
|
||||
bool ZeroCheck = false;
|
||||
|
||||
if (CurrentCal > TopThree[i])
|
||||
{
|
||||
int SmallestPos = FindSmallest(TopThree);
|
||||
TopThree[SmallestPos] = CurrentCal;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
CurrentCal = 0;
|
||||
|
||||
}
|
||||
else
|
||||
CurrentCal += atoi(Line);
|
||||
|
||||
}
|
||||
|
||||
int Total = 0;
|
||||
|
||||
|
||||
for (int i = 0; i < 3; i++)
|
||||
Total += TopThree[i];
|
||||
|
||||
|
||||
printf("Total of the top three elves: %d\n", Total);
|
||||
|
||||
fclose(File);
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
||||
2244
2022/day1/p2/input.txt
Normal file
2244
2022/day1/p2/input.txt
Normal file
File diff suppressed because it is too large
Load Diff
102
2022/day2/p1/day2p1.c
Normal file
102
2022/day2/p1/day2p1.c
Normal file
@ -0,0 +1,102 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
/*
|
||||
KEY
|
||||
|
||||
A, X R 1
|
||||
B, Y P 2
|
||||
C, Z S 3
|
||||
|
||||
win 6
|
||||
lose 0
|
||||
draw 3
|
||||
|
||||
3 6 You: Scissors; Them: Paper (win)
|
||||
3 3 You: Scissors; Them: Scissors (tie)
|
||||
2 0 You: Paper; Them: Scissors (lose)
|
||||
9+6+2
|
||||
*/
|
||||
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
|
||||
FILE *File;
|
||||
char Line[6];
|
||||
|
||||
int TotalScore = 0;
|
||||
|
||||
File = fopen("input.txt", "r");
|
||||
|
||||
while (fgets(Line, 6, File) != NULL)
|
||||
{
|
||||
|
||||
int Score = 0;
|
||||
|
||||
char Me = Line[2];
|
||||
char Opponent = Line[0];
|
||||
|
||||
printf("%c %c\n", Me, Opponent);
|
||||
|
||||
if (Me == 'X')
|
||||
{
|
||||
Score += 1;
|
||||
|
||||
printf("You played Rock! +1\n");
|
||||
|
||||
if (Opponent == 'C') // Scissors (win)
|
||||
{
|
||||
Score += 6;
|
||||
printf("You won! +6\n");
|
||||
}
|
||||
else if (Opponent == 'A') // Rock (tie)
|
||||
{
|
||||
Score += 3;
|
||||
printf("Tie! +3\n");
|
||||
}
|
||||
}
|
||||
else if (Me == 'Y')
|
||||
{
|
||||
Score += 2;
|
||||
|
||||
printf("You played Paper! +2\n");
|
||||
|
||||
if (Opponent == 'A') // Rock (win)
|
||||
{
|
||||
Score += 6;
|
||||
printf("You won! +6\n");
|
||||
}
|
||||
else if (Opponent == 'B') // Paper (tie)
|
||||
{
|
||||
Score += 3;
|
||||
printf("Tie! +3\n");
|
||||
}
|
||||
}
|
||||
else if (Me == 'Z')
|
||||
{
|
||||
Score += 3;
|
||||
|
||||
printf("You played Scissors! +3\n");
|
||||
|
||||
if (Opponent == 'B') // Paper (win)
|
||||
{
|
||||
Score += 6;
|
||||
printf("You won! +6\n");
|
||||
}
|
||||
else if (Opponent == 'C') // Scissors (tie)
|
||||
{
|
||||
Score += 3;
|
||||
printf("Tie! +3\n");
|
||||
}
|
||||
}
|
||||
TotalScore += Score;
|
||||
}
|
||||
|
||||
printf("Total score was %d\n",TotalScore);
|
||||
|
||||
fclose(File);
|
||||
|
||||
return 0;
|
||||
}
|
||||
2500
2022/day2/p1/input.txt
Normal file
2500
2022/day2/p1/input.txt
Normal file
File diff suppressed because it is too large
Load Diff
83
2022/day2/p2/day2p2.c
Normal file
83
2022/day2/p2/day2p2.c
Normal file
@ -0,0 +1,83 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
|
||||
FILE *File;
|
||||
char Line[6];
|
||||
|
||||
int TotalScore = 0;
|
||||
|
||||
File = fopen("input.txt", "r");
|
||||
|
||||
while (fgets(Line, 6, File) != NULL)
|
||||
{
|
||||
|
||||
int Score = 0;
|
||||
|
||||
char Me = Line[2];
|
||||
char Opponent = Line[0];
|
||||
|
||||
if (Me == 'X') // Lose
|
||||
{
|
||||
// O: Rock, Y: Scissors
|
||||
if (Opponent == 'A')
|
||||
Score += 3;
|
||||
|
||||
// O: Paper, Y: Rock
|
||||
else if (Opponent == 'B')
|
||||
Score += 1;
|
||||
|
||||
// O: Scissors, Y: Paper
|
||||
else if (Opponent == 'C')
|
||||
Score += 2;
|
||||
|
||||
}
|
||||
else if (Me == 'Y') // Draw
|
||||
{
|
||||
|
||||
Score += 3;
|
||||
|
||||
// O: Rock, Y: Rock
|
||||
if (Opponent == 'A')
|
||||
Score += 1;
|
||||
|
||||
// O: Paper, Y: Paper
|
||||
else if (Opponent == 'B')
|
||||
Score += 2;
|
||||
|
||||
// O: Scissors, Y: Scissors
|
||||
else if (Opponent == 'C')
|
||||
Score += 3;
|
||||
|
||||
}
|
||||
else if (Me == 'Z') // Win
|
||||
{
|
||||
|
||||
Score+=6;
|
||||
|
||||
// O: Rock, Y: Paper
|
||||
if (Opponent == 'A')
|
||||
Score += 2;
|
||||
|
||||
// O: Paper, Y: Scissors
|
||||
else if (Opponent == 'B')
|
||||
Score += 3;
|
||||
|
||||
// O: Scissors, Y: Rock
|
||||
else if (Opponent == 'C')
|
||||
Score += 1;
|
||||
|
||||
}
|
||||
|
||||
TotalScore += Score;
|
||||
}
|
||||
|
||||
|
||||
printf("Total score was %d\n",TotalScore);
|
||||
|
||||
fclose(File);
|
||||
|
||||
return 0;
|
||||
}
|
||||
2500
2022/day2/p2/input.txt
Normal file
2500
2022/day2/p2/input.txt
Normal file
File diff suppressed because it is too large
Load Diff
83
2022/day3/p1/day3p1.c
Normal file
83
2022/day3/p1/day3p1.c
Normal file
@ -0,0 +1,83 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
/*
|
||||
A-Z : 65-90 ; - 38
|
||||
a-z : 97-122 ; - 96
|
||||
*/
|
||||
|
||||
void PrintLine(char Line[], int Start, int End)
|
||||
{
|
||||
for (int i = Start; i < End; i++) {
|
||||
printf("%c", Line[i]);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
|
||||
FILE *File;
|
||||
char *Line = malloc(256);
|
||||
int Total = 0;
|
||||
int Priority = 0;
|
||||
|
||||
File = fopen("input.txt", "r");
|
||||
|
||||
while (fgets(Line, 256, File) != NULL)
|
||||
{
|
||||
|
||||
int Size = strlen(Line);
|
||||
int Compartment1End = Size/2; // compartment 1 end
|
||||
|
||||
char Shared = ' ';
|
||||
|
||||
|
||||
PrintLine(Line, 0, Compartment1End);
|
||||
PrintLine(Line, Compartment1End, Size);
|
||||
|
||||
|
||||
for (int i = 0; i < Compartment1End; i++)
|
||||
{
|
||||
char Current = Line[i];
|
||||
|
||||
for (int y = Compartment1End; y < Size; y++)
|
||||
{
|
||||
if (Current == Line[y])
|
||||
{
|
||||
Shared = Line[y];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (Shared != ' ')
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
printf("Shared Item: %c\n", Shared);
|
||||
printf("\n");
|
||||
|
||||
|
||||
int n = (int) Shared;
|
||||
|
||||
if (n >= 65 && n <= 90)
|
||||
Priority = n-38;
|
||||
|
||||
else if (n >= 97 && n <= 122)
|
||||
Priority = n-96;
|
||||
|
||||
|
||||
Total += Priority;
|
||||
|
||||
}
|
||||
|
||||
printf("Total priority is %d\n", Total);
|
||||
|
||||
fclose(File);
|
||||
|
||||
return 0;
|
||||
}
|
||||
300
2022/day3/p1/input.txt
Normal file
300
2022/day3/p1/input.txt
Normal file
@ -0,0 +1,300 @@
|
||||
dWlhclDHdFvDCCDfFq
|
||||
mGdZBZBwRGjZMFgvTvgtvv
|
||||
jwwJrzdzGdSbGGnNlzWczHzPHPhn
|
||||
cczcbMBszhzzDBTBPPPGjtvtlt
|
||||
LqJLfpwdLnvQLRGQjGtj
|
||||
gSgnSJJCGSGpGSrwgfhchmmmHzcrHDmbrmMm
|
||||
bVjstCsSstCLCrbSLnMpdMndcLddcqcpHR
|
||||
wPZJQJwtBfJZmgBwPTcpTdcnfHMppcGMdG
|
||||
gmFJzwPJJtszvNhCNC
|
||||
DmjZDMZWDqGRqqRpHmmRLTTNTPTfCQJQQLJHTClc
|
||||
FtzfvrfFwVgtzztgBLJNcNlTcTVNNQLN
|
||||
vgsdbzzrwtqWfWRpZDdZ
|
||||
rJhqRhLHhdcQqdHqfQGfPGstgGPlWttM
|
||||
DzCpDDmnNCmBZBZnVBmZzBGPfsbglfNPwgPGPMWsWWft
|
||||
BZFnlmpBpBzDzVZmhFHFrrrchhRqTdrc
|
||||
DWCCWFNqdGFdPVcb
|
||||
HllttQsTRlJlsblrHlhdmPLVcVcTccndLvPLmL
|
||||
HSlstHgJltghhRrzNBNDzSwMjNZwNb
|
||||
dzGSHCWSsGVVSdHVHHWWVVDCgJDpQqLTTRJpgmTLRmJTTpTR
|
||||
BvNjMPZMBtBBMvvNMNttlhLQqCJpLmhTRQqQJgRJLQQg
|
||||
llNncBlMCwwMnwPZrGsVHzcfFGdHGFGs
|
||||
JfZhphMMQmFzDTDjSdrQjQ
|
||||
sqHCbCwBVtbqbCqtrWdjzlSJTlrTSWBn
|
||||
bHcwbGCGRssNscwtHNbwvmRFvpFFJFvLZMmPLFfv
|
||||
qBCrzznVmDCmMMDNgrgcrvHHcgbQcW
|
||||
TTTsdJRTRhhlsgbvbdCFdbWvbQ
|
||||
JhGGlfRlJsnCMDMqjmfV
|
||||
rqLLvDLtStDLQhQDQrQhhNdsmWdmmjjnssPnTMnTzfTsWT
|
||||
ZRFFpgCgppcBcnjTsjTMTfPFMP
|
||||
GCZpGlwJwBgGHcJhSSHLDDrNqrMtNq
|
||||
FsPFqsDNZFNnZrcBmWfWWQ
|
||||
lSnRlRTvgrWtctTmft
|
||||
SMbGbbvnGlnSDwGqLwNCqNVD
|
||||
dPQDcBwJJDgDTPgGgQTBVjSsmLhLTrLmjSLpjSLh
|
||||
MvvZRHtMtbCNvCNCNtNvbRfBSMSrjmLpjnjmVhrVSLsnnmSh
|
||||
qHZtbBZfRztbHbCzNRHPQgJPJgGgglFPPFqdQD
|
||||
MsBsVDspRPfPlhMl
|
||||
zWnCFzHbSCwqNmPSjmGlsmfN
|
||||
FnHnFbFzsHHCCgzCzbBptVppgvvVgVrpBrJt
|
||||
pTLntptZjQLfVDjQTDlVJCSWNCPSCCsSNmFlNslm
|
||||
BBHbqGHHqgwSWSCCWwZWWZ
|
||||
qRzbhhbzzrHdRRHhRHvzZjfrVTrppVQttDfcQTfp
|
||||
DHsdHPHHsHMsRmhMZZQBtljgZGtC
|
||||
NFnCbFznLVJbVrjhQthjGBLZBjGL
|
||||
wNrfFJJbCpNnfbdwDSDHsvsHmsmH
|
||||
jLZRjnMMjJhJnvtQbdHfHZbvHQ
|
||||
mBzwptCWlcFCwsHSTpQfQHQfrpTb
|
||||
mNltzmsCNmFzGwCBllGRgRgqjgLMnGqjnPjV
|
||||
ZqqcqmVVtbcBMFfFMcQfgphJ
|
||||
HLWLDvWjjLwTWzzvGLThQQshQllgJDJgfbffJQ
|
||||
vHzLvrwwzGzTRGzzLLRPRwRdSVdnBBdSbBSVStbNmnrmZS
|
||||
TWVVvPSgwWSqcRgRwbRRcqshsfFzzzChTGNHzHhhhCsG
|
||||
njZrjMLlpmDmGfSGtrNttzCF
|
||||
ZQBmZdDBZRRPRSBgcb
|
||||
TpntvdpnZDptnbnTDGtSFSlFmzCzzmSFRjqlZj
|
||||
MWrNcWRMlgqzMjzq
|
||||
NPwsPNrBNcVHNNcJHBNBcJwwttDvGVnDptVRtbnTtGvVGtGG
|
||||
tsbbvvSfnqvzQLLBjfMLdd
|
||||
gJRmRNmJNchgmmrFJhFgWJQMwBnjwrMBVQwQTBdLdVQj
|
||||
GcGpGGRGJgqstvpbnCqb
|
||||
rsHcrbZHBTTtLtNSwwHLLJ
|
||||
mFqhWVsjsVCjQlNJGMwMlMMGMh
|
||||
QggzffQRCfgVFWzzCQffqfZpZDcRvTTBTvvZnsdnddcn
|
||||
bPFMFFBpMlFfMZMpHGNSrNctJcPSSchJchPt
|
||||
zCgwnmgzQDnQgdWWQRgqSrqLSqSgssLNJhgJ
|
||||
rQCQQTrRRmDBFfbHBFHZbT
|
||||
fzfPQsGrrMMjtHtBHs
|
||||
SwNNDqwhWpVTwbDGGDmwSVhZRZHdbCtgBjCRjMtbBHtRMd
|
||||
vVTGvVGNvPPvQvfncJ
|
||||
cwzMJbclHDPqfJQPfq
|
||||
rrqjjTBrqqBjRCgTjrRjNrsGPDhDFGCfWGfPFfFPGWfD
|
||||
BZTTSTZgjbSwVptvpq
|
||||
PPPPJpvpJsJwPHHPsJdTNZRZZZjTFFmRRRNjZd
|
||||
qbWVfChDCDnVVDGfnSFNNjRLmNfBNLQjLjmBRm
|
||||
DhFDhbnWCDhGcbJPPwrsrMwrvlvc
|
||||
lFSDTwHTSwlTNwFFlwNcFFpjLZvZqvnqLPnnWbgngbbncqbZ
|
||||
rzQfMzRGrRGJCffBMGdGsJZWWnqWVqdPPgNvvVZWPWWn
|
||||
RJrttBtNQCsNzTpShhHFDwFlth
|
||||
QNzQFjNFrQPNbmPpqTTDGswWmB
|
||||
ggHRcSlcCVCSzMVqDGwgqTWpsmqwqG
|
||||
cltzCZtLClHRRtMZZLQjfNvtrJfhvrddvNNd
|
||||
mcfWHffBFnQRQlTFdv
|
||||
wssSLVbbzDVbzbggzSzNshNMnvnljRdvQRlMBjvQdnCj
|
||||
bhDzVSSJDDJhDLBwtbDzzbbWppfpcmWGmprqqGtqprcHPp
|
||||
rpVFrZpgHWSZrFPqhzwcqPwmcVBD
|
||||
vMTnQJjQLCbljvvQzTMbTjPNdBLwwDhmhNNqPwmmhhBh
|
||||
jvGjjQJnrspGHgFz
|
||||
sjssjtZlcphZHwWvcrHTwWJH
|
||||
qDdzzrFNNNDGdFDzzVBVVvfWJPfgPmgWPgvwVH
|
||||
nqMQGDrnLGnqqLNqjtCZZjsMhZhCMbtl
|
||||
JJJsLFmzsrFlSpzPscjgHhnRnmvcjqRvvj
|
||||
fCMQbCbTjjqTGhjc
|
||||
bfdbWdCddfBbtCfbfbqVWQQpPlBrJLJJSSLwppFssFzLzp
|
||||
pdbbzlffWtJbgQwhcphQcCCg
|
||||
vHvLFvVLvSfFRLnRFRNHjPjggcssQcjjsnwhsPCC
|
||||
vGVGGFFVHLTvDRHDmBbTzfZWMdJZlfMm
|
||||
wjCbjQgjTQhNNzgWQCWrDFMZmZDZDCrrMDpLpL
|
||||
czGSPznnRGGJGGlVVRVBGGlBmDDcMDFDDZLqfffZFrrZqFpZ
|
||||
JPGlvBSJHVGnVsjvQjjzwdwjzd
|
||||
MFlWQHDTpnpsFNNQllWFWlhzjGgrgDzGGhGGjvmZDZrh
|
||||
PtTPcTLbBCVPTRVcvhjmmhVhSZGGgvZg
|
||||
JLPfCwPbTbBPJCfblplMpqWsMpMwWHQn
|
||||
QbHVBBzWtzHBNtBwQSgqhqSbFgRLjhmqqj
|
||||
ZnCnMcdsDnJTncggFJwRmSwgRFmL
|
||||
sTMZpGDvsZcMpcvTCPHwzrfzrpzHpWBrWz
|
||||
PMdJWwJWHFWJnNzbDlfbCfMvbl
|
||||
rZgttrFptFFcBtccbbCDvgfbGCGGgGDz
|
||||
QsZBmsrFscrVrjQJjJQRJWWLwq
|
||||
GwNNJwwRThwrWfhh
|
||||
SmQqmzsjHssQzCbvsmSSzsQTjWpFTTfFfThchhFTBBfppB
|
||||
mmbHbmtmCzzQZzQRdZJhNMdMlRMglh
|
||||
rrsPbncQvvgnnrTdGDVcCdpZHHZp
|
||||
RwwwhjLLqtJFwjzwtwmwwGpDZVdGDVdZBZDFHdHZCp
|
||||
zhzwLhhfffLtjNChgWbbrbnMvPrMrrfv
|
||||
tQMtQtTSBFtSmQSttMggMtbtnTnPrZvrnzNNTGZvrZZdLdnL
|
||||
HqhwDpDcwlHqpVrrFzvFGpZrrzrP
|
||||
RwlhhjwRCjVfjDbMtFWBWJMgWjWm
|
||||
WpWVlWzsGlBJpspNclNlhhhmgzrdtzQMQttzMmtt
|
||||
RfnPRLTPDHRdPbwvvntnSrFgmvnmtm
|
||||
CwqRDCCwqCwbCTqJcJBNcZqdVcBlpJ
|
||||
tpfnNBsGGNRppRCgfgRRCRQJGMPPWdwMJdWFFwjVzGPJ
|
||||
chLSchLTbLqvqcZLlvvLqbmldMzFFWdzVSFWFMzQVJwjQjdM
|
||||
rLqqcjDrcvhRsDfHDtNNnN
|
||||
DjZjvTTDqrtTZZSMcdRdmRJrcJNc
|
||||
HWgPGVhFPgnSVtnJcdMs
|
||||
FPLfBwCWGPfCwfLHCCDBZlbDpBjvqTtDzzDj
|
||||
FJNqNFgNFssqGGqBsTlMVcgVrCwLwlhcrw
|
||||
fRZzDmDZvvDdZbtdpDZmbrThrLMCvcChwwlSTrvMSr
|
||||
zmfZmtZmpDmbfWRDDZdqFljqnNQjGWnsjFqGsG
|
||||
rMdMWddmJmvdSdmWfWMddpVRqRFVHRRqMRRPQMRqRq
|
||||
tDGtGGhLjLLZNLjjNgNthGtqHTVqRVVpPDRpHHVRQVRPPR
|
||||
ZlLtzNjgsZZlssLgtjNpfWfJvlJrrvCJfBmBfn
|
||||
hqpWvFJsJFNHhqMWNhWvWRmmDcDMLcwZnjcwnjRnjn
|
||||
LdrlgCCrSSTrTnwRjmwRQZwdwG
|
||||
PVlfClrLlLlfggtBPzHHhHFbWzJNbvqJFNqF
|
||||
TbbQtnDtbGGjGlGsGHpJJmFWFJJrBWWFlWrS
|
||||
CZzzNzzhddNchhMhhRVjpCBwBrCvJvpmSCvrwJ
|
||||
fhZZhddRjRgZzMZRzPjPTsLGQtHLTHTbDPQTtqPT
|
||||
nHnWsQNQQWTWQshwjBJJJmHwFBwm
|
||||
VZZpfbffZVvbSbGfBhSwmtmmJlmjJFJJ
|
||||
bpphpMfMvMzDbMGZgQNrrngzdTsNqWdd
|
||||
VPNddVTPPmdnVcPVZcdTmcDbQTFjMpjtFzbMtFjzsFTssT
|
||||
lJCllWCrgvRlgwlJfRRvSzjSjQpbzMHpbwMQpszM
|
||||
fRhGBBJJCgrNLsNPNVVhNq
|
||||
pLrVDgbNbjVplpsltHBqWSqhSQcHDttH
|
||||
MCdCwCGTmnTmmmvTTCwCqNhHQhRWcwHWBRHSqSQH
|
||||
TNTFFPfffTvFTJvTPCPTFfGdzVjspVLZglJbsbZpVblrzjlb
|
||||
cdPzFrldgcdCrnlznPzrBNRssLLBbVNVZsLHRHdm
|
||||
wTQQwvvtqwqcGvTZmVHBbVLLBbRV
|
||||
GWJSGfJWcjQwhQQWjqJhhGfgpMnMzDnpMlPpMnDlMrzl
|
||||
pMhqTTsSpdBPpNBshsdMMTQFvFlQtQWCRQlCllVFqVqG
|
||||
dfcbnmrnjzRFvGQQGvfv
|
||||
mDrjLLLcJjLhpZSSJMdpph
|
||||
NGZNwqFqZhhcFSCfRzwdzRfCzVRw
|
||||
QTTmBTsWQWJPPCvzvpHPzdvVFR
|
||||
bsmWTBbQDbmbLQQMsWWQchgqLqhGGGGZLhSFjhqS
|
||||
HgmGlgsvBBDgBGCdHHvHwCGwhZJWhTjSdhTSFFFhJtSJTJhT
|
||||
RQfVrfQNszMQfpMzpNnfLbtjhtSbWJWFWtFFtFJtFSZq
|
||||
PNzLfnLnBCPHgsgC
|
||||
mTZGgCdNSNmCQLLpPnDhRlGhpV
|
||||
vWJHWFsfHMWBBFbBsjfjHrFfLRRLPPnpLthttRVPLSnhSPbS
|
||||
fzMrBjWfBrzsZCZmSTgQzcNN
|
||||
mgmCZCMgmnZmZgBZpgpJfbQfwSQPDTdfdwSDfwhn
|
||||
sHhcrWLcFlzHcHRNNFvNFcFPwDDTWdddDdqWbSTWDPTTQS
|
||||
RNsslsRrNcRNvNRFFNvVsghZBJtVCCtCtGghjhGBGG
|
||||
gchrcRRdnRwPPnvQ
|
||||
CVCCSrDjFHjVDbBLFGGBSvwnwNMnMsPPNsNPvwPQVM
|
||||
lHLCTHGDCbbjFTTzdWlpcqfgcrdzZg
|
||||
fRDPsDsqqJttttJSzPDgJWQCbQQbGMWCCnGGPVGVQQ
|
||||
rTTBvZhrvBnWWDWCbZWW
|
||||
cwLlTLpjTwBFLLhgfRRfmRqRDmRdjq
|
||||
sprGGPTrJTsGPzszqGzNtTtpfbQddQSQSDFDFvvbZvwFbbfN
|
||||
LWWCMVmwMmgWFQfFDDvZDgdF
|
||||
mlMmRVCWVMmmHRjVCmjHWRhMzpTtlrlPzrtzwlsGPrpwtrJp
|
||||
tsfwwfjfdfrtrClfvwvvLnTHNmvLHcNccRNcvNWH
|
||||
qQSqZqFQRBzghDFncHgmccHNmWcNmM
|
||||
SQJphFJzRDSsdpVlllrCrw
|
||||
vGQqLQFvBvLvdNnvjnvNDc
|
||||
TRJwmWmZWlCCmzznbNhhbDhRgj
|
||||
CCTtDTlmDTWTmDmZZlVLLsFfstfFFLsBLQfF
|
||||
cfWflMmWWlWfPWBhBlQtLmmvrrrvCLjvRTjLLwwr
|
||||
gSgbsbgHdsjzHbqbdVDLZLvTZwLTvSrZrFvZLw
|
||||
sdbJqDNdjJNdsJBpBWpJlMcfcB
|
||||
FHlMHPqDLlPctgHSnttCSC
|
||||
zhrmBrTwJTjBmQcSQvQqbtwGvg
|
||||
jBjmBmJjjjRZTBzhhrBJLDdZqfpDMdfWWlDDLMlV
|
||||
zPVdbsBzZdwqJGhrLTvNNJqH
|
||||
tmmCgCPCDDnptHDjNvGvhrDvLv
|
||||
pRWRlpSpPllClnpbQVQwFFVSQFVBZz
|
||||
nDrCvmvMnMSmsCvblBzzCZplbJlTbZ
|
||||
FNRtFWRfcGqFGQbzlZTQqQTBbd
|
||||
GRwFfNtwFRNFGMvBsnnwMMMBjn
|
||||
LVTBjjlJCDrnJzJNQR
|
||||
GsGGsggGpfhgpchgdqzbMzzhzQRnnMRrNzzR
|
||||
PwWFqFGpwWpdWgfsGggdmjCVHPHlCCCVZNCjVmVj
|
||||
qVTsCWwbCsPlCVfcbvfPDgLzbzDDhrzRrjgZghgr
|
||||
ntmHmNpSQNGtntNttmSdSdBdjrrDLQZQLLhRrFFFRDTFZhDF
|
||||
mtMtBNTSNBpNJStMGSdHppNcVWPsWvqVcsVJfwwqlqWqlc
|
||||
vvWzLvvdpZDvhTpcrLcTTLpdwSPnCfJwCMnQSMwSnCGJrnwr
|
||||
ttHVmVNNsHBBRsHbMMwwnjnjBfjJwCMP
|
||||
tsVllgNVqbRlfplldDvDWT
|
||||
mLjLsQqLQqsBRvvlRBLRlT
|
||||
bhgtDDhCtmptmTTS
|
||||
nfmdbggwGWrfsPzfWq
|
||||
JpWDcSGJpGzsHPSSlbbd
|
||||
wVRqVZwwRwPDwbDddH
|
||||
VtVVVLthLVtVgfQLRTNtqDcCcJBmmWMWWprpFrcBJWNp
|
||||
dhhhDtmLdttdPlslGlRFjfzBBpzzRpGJ
|
||||
QMrVMwbVrrbvVVCrvcnqQQrrSMBJfpjFSzfjJFMFRWSpjjFG
|
||||
cwvbHHbCqVchRDHgDsPTdt
|
||||
CgVNCtDsDtJGZZGqMMGhDq
|
||||
cLRnSHgWcRdLHWSSRLjQdlHBTTPcPwwhzqzTMBPTwhPPwP
|
||||
HnnnglnWWgdRjlmQNsNFmJCFJFvsJsNN
|
||||
hfccLbjhfSRbfDZjFRJzrlvlwwlnnFrWwzqr
|
||||
TCsPLNtQdpdQQVtVNvJNJWlzJzwlrvJl
|
||||
pHtPsPtPtCQfbRHHDHhMLh
|
||||
nWRWgLtWnfTcZNNsscfd
|
||||
JMGzMVJwMVTvzVQFGHMMmPdddsPsCjldlHPcScNPsP
|
||||
vGrMQQmmvTQzMJpghWRWgpbbBqLbLR
|
||||
WSbhFbPTpRfTfPdhpfbhSbfPQLzlQlzlHvtQsvlltlsgHdgQ
|
||||
pZcGJDZNGcVrJwrDrrnvtNvlNzsgtgzvvsgt
|
||||
qmJZZJcBqwrMJcVbWfSPPWpmpjmSCF
|
||||
jHVjjCcpNrDgjsfB
|
||||
ndqllRvJQtqlQQTRWllFNDrsMZBfDBLvNMNDfsbZ
|
||||
qTFnWJqdWRdqWRlnTRnQGnTmwwSHCzpcGNmHNcPVcHGmCz
|
||||
pZCpBhDfvgBVZQGMMVZVlq
|
||||
sLsLTTSssjPnTNbFGRGFPVHqMMRF
|
||||
TsNSccnjLdcsLjdmjWvWvBhfmvWpCGhGhD
|
||||
VWFFFPMpPVSMbTppHTnHTbRH
|
||||
DtvfNdBNddDNSLjsvDTTHnzzHwrTrwsrwqbT
|
||||
dgBLNffdgjjtfBQSvgNjNDlvMcQJmJJmZCMmVVVZFPFcPMGG
|
||||
VWsQLHMVVSNRShWLhNSNLjbbbddbpDZDddcbZdDRztpd
|
||||
FPlhhgPvThGFJndnnCCnJzzdCp
|
||||
qrTfmllGvfvGqwNMMMsffsQsNh
|
||||
NsmFqNlmnQRbCFsmJgSffpPcbvSfrVvpgS
|
||||
LhZGDZhhwtDHMwDdHGhDjDpTzzPdzgTvcPvpSSpPrdrv
|
||||
jgHMjBLhwtZMHMHmJNNJNFlBqlBJNn
|
||||
bznSQggscgMcSTTfJbSQzQFwClMhmCmthClvMwFLwhZL
|
||||
BRWBPBVVPjPNVHpVqlqrvtwFqmmLqltZmL
|
||||
WDVddNHNvRgccgsDsgbT
|
||||
sNgnQLtLLLPPnsPpqdqjBclpGWjcWjBG
|
||||
rVCChSZhVrrwqVDVHSHmMjldGfJGfHddJGJlfGjGJj
|
||||
CVZmDvZCmmhFVVrCgTNbbnQFgbsqNqNQ
|
||||
WmMmSSfJNRRPfJRMRMtllCgdStgbgttgCdDd
|
||||
QGBrvzwBczlgqCtDbvDq
|
||||
QQpBGFrLQjQzGVVRNjPmNNWMbW
|
||||
gGljnJhnJtllpNVCHWcccdTdjdmB
|
||||
bLfSQDSMSHmBnwCB
|
||||
LFMDrbFfFQZQRzLZnbgtlsRGtltpgNhgPpPG
|
||||
cRThZZchCThtgTRhZTRtjWFjWNwqCjGmwFjqqffC
|
||||
DPDPGzPMHDbrpqjfwrjqmjmp
|
||||
JVHHDdVdVbvGMdnVdQVdDbHcRZllhRtgStRLThRSTcBTvc
|
||||
lQWPSBrrPZGgPglGssDfHnWsfDFHHvHh
|
||||
TDCqpttptJNLtwNpbwTqzqHshsvsMMFnmHMNfssmvmvf
|
||||
JCjqVpDtrBjQjrlj
|
||||
wFGWGpFLvCczNSWWsz
|
||||
tlfgtftjlbtHHlDBsBzmQQnsQDQsCn
|
||||
gjfrsVqVgPlfqhvLdvdwZhGq
|
||||
pHpZHBSvRvRCBBZCTMngRnWndnRmWcgg
|
||||
jsfrfrjJFDwDDMMggMCGWGcfmG
|
||||
qbCszCjtCjQsQrtZVBHBHvBvqLZvlp
|
||||
scFzsPScNgNPNgQzpttlCBCwpLrMLCrDdljLwq
|
||||
TjfGZZjVwMZwMLwr
|
||||
vnGbWTvTmFRjQFQPsb
|
||||
bVLrzqrzJVgJbbtVrWJVgppcBCzBvdzwBCCBHDcBvc
|
||||
hflPQnMQmQSRlQMPNRTHwwHHHqpHpdfwdBCp
|
||||
hFhZMhqSNMNbrZgWWGWJjZ
|
||||
NJsgNjJlMHQrwnRgSRPwrP
|
||||
tqpQtTFpFvbGpzTTWSrnSbrhwChCnRfrCf
|
||||
GtcvGqQpttzcqdFzWppDsZMJjBBsBJcBNmBjMsLJ
|
||||
lGfZGZhFfhdSWqmFFWSS
|
||||
wDRDPLcDnjtWbSmqrSCSLC
|
||||
MPwmtVnVMjztznHPgQhQfJfvvHHGggQZ
|
||||
llTspLllCHmLHHndldqHdlLQQPSBQczZSFDDQZSNGcGG
|
||||
jMhwvVrRjbRhFBZNGPcGNN
|
||||
wVtrrtRwrfrwftjVjwWvMrRpsqsnsHsBglslCmTsdWdHTd
|
||||
vPvmTGgDPRvGpDPGPqGHQnWJQJMBBzJBlBQWlHWl
|
||||
bfbwNsmwFdLjbfrrLsSfLNQtMllznBzJQZMQtMlZZnnF
|
||||
frssSscssNfScCjfSCwjsDmRDpGmDRDvvvVcvRDvRp
|
||||
LtlPZPjBTbWsWJVJVzdT
|
||||
nnprqhrqmzfrSrphqfCChVVGVDJWgSHHWgWsRDVHWd
|
||||
nrmppNqhcCrfMchcMCncqbzPZvlvlwbBNjPjtNjZjL
|
||||
FPWsFdSspVbbbtWVvl
|
||||
CCHnnfHHvCwtVMhzlzDllC
|
||||
LrGnjGfgfvcwfgrLrBjrBLgwdBTSRBFsRZdRsSqFFSFSSPPp
|
||||
whGCLqsrjgGhhGFqrCCFGCGzTRTZJcNnzlLTnznNHcnzTH
|
||||
ddvVmbfvdvVbDVQdvvdSzpNcnJzlzSRHNJpnJcSc
|
||||
BPdvfQdWtPDDPfDvDQVVPmbhssCGGMqgFCFMqGMWgMjrRw
|
||||
PSLbGmWPSPLQbMTPWGFWltthdDdrmBDHhdDdczzDRh
|
||||
VfCngVfgsZwCftrZdhcZrdNDzz
|
||||
CjVJJJqnJwQhWPPLQlGj
|
||||
ntnnQmTQTQGVWGNGNNlClG
|
||||
jDffjMSvqjHzHHzwNVwNVcCddPVNdD
|
||||
ZszJsrrZMjsHqqvZJLRQCbTRQbJmThbt
|
||||
BgLHgFDsJNWgQgflWd
|
||||
mnVVcCHnCGRcVnZSjmlthftMQddlfhQctNfW
|
||||
qbSGqmHSTFprvpvTTL
|
||||
dvdTMvvpdLpTcSLvdLLMmhfFBftwCNhRwRNjtCTRCf
|
||||
lshQWgsgrHHqlFfRqFjRFfFwCB
|
||||
rsgHQbJbrsGHHlgQHgJrlHrPZdhdpMZGDSDpdPLcZhdvhZ
|
||||
6
2022/day3/p1/test.txt
Normal file
6
2022/day3/p1/test.txt
Normal file
@ -0,0 +1,6 @@
|
||||
vJrwpWtwJgWrhcsFMMfFFhFp
|
||||
jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL
|
||||
PmmdzqPrVvPwwTWBwg
|
||||
wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn
|
||||
ttgJtRGJQctTZtZT
|
||||
CrZsJsPPZsGzwwsLwLmpwMDw
|
||||
135
2022/day3/p2/day3p2.c
Normal file
135
2022/day3/p2/day3p2.c
Normal file
@ -0,0 +1,135 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
|
||||
|
||||
int CountLines(char *FileName)
|
||||
{
|
||||
char *Line = malloc(256);
|
||||
int LineCount = 0;
|
||||
|
||||
FILE *File;
|
||||
File = fopen(FileName, "r");
|
||||
|
||||
while (fgets(Line, 256, File) != NULL)
|
||||
{
|
||||
LineCount++;
|
||||
}
|
||||
|
||||
fclose(File);
|
||||
|
||||
return LineCount;
|
||||
}
|
||||
|
||||
|
||||
void GetLine(char *FileName, int LineNumber, char* Line)
|
||||
{
|
||||
int CurrentLineNumber = 1;
|
||||
|
||||
FILE *File;
|
||||
File = fopen(FileName, "r");
|
||||
|
||||
while (fgets(Line, 256, File) != NULL)
|
||||
{
|
||||
|
||||
if (CurrentLineNumber == LineNumber)
|
||||
break;
|
||||
|
||||
else
|
||||
CurrentLineNumber++;
|
||||
|
||||
}
|
||||
|
||||
fclose(File);
|
||||
|
||||
}
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
|
||||
char FileName[] = "input.txt";
|
||||
|
||||
int Total = 0;
|
||||
int Priority = 0;
|
||||
|
||||
int CurrentLine = 1;
|
||||
int CurrentGroup = 1;
|
||||
|
||||
|
||||
int LineCount = CountLines(FileName);
|
||||
|
||||
while (CurrentLine <= LineCount)
|
||||
{
|
||||
|
||||
char SharedItem = ' ';
|
||||
|
||||
char *Member1 = malloc(256);
|
||||
char *Member2 = malloc(256);
|
||||
char *Member3 = malloc(256);
|
||||
|
||||
GetLine(FileName, CurrentLine, Member1);
|
||||
GetLine(FileName, CurrentLine + 1, Member2);
|
||||
GetLine(FileName, CurrentLine + 2, Member3);
|
||||
|
||||
for (int a = 0; a < strlen(Member1); a++)
|
||||
{
|
||||
|
||||
char Item1 = Member1[a];
|
||||
|
||||
// Loop through each member looking for a shared character
|
||||
for (int b = 0; b < strlen(Member2); b++)
|
||||
{
|
||||
|
||||
char Item2 = Member2[b];
|
||||
|
||||
if (Item1 == Item2)
|
||||
{
|
||||
for (int c = 0; c < strlen(Member3); c++)
|
||||
{
|
||||
|
||||
char Item3 = Member3[c];
|
||||
|
||||
if ((Item1 == Item3) && (Item2 == Item3))
|
||||
{
|
||||
SharedItem = Item3;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Don't bother searching through the rest if a shared character is found
|
||||
if (SharedItem != ' ')
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
printf("Shared Item of Group %d was %c\n", CurrentGroup, SharedItem);
|
||||
|
||||
// Convert character to integer value
|
||||
int n = (int) SharedItem;
|
||||
|
||||
// A-Z ; - 38 to get values 27-52
|
||||
if (n >= 65 && n <= 90)
|
||||
Priority = n-38;
|
||||
|
||||
// a-z ; - 96 to get values 1-26
|
||||
else if (n >= 97 && n <= 122)
|
||||
Priority = n-96;
|
||||
|
||||
|
||||
Total += Priority;
|
||||
|
||||
// Each group is three lines, so iterate by three.
|
||||
CurrentLine += 3;
|
||||
CurrentGroup++;
|
||||
|
||||
}
|
||||
|
||||
printf("Total Group Item Priority: %d\n", Total);
|
||||
|
||||
return 0;
|
||||
}
|
||||
300
2022/day3/p2/input.txt
Normal file
300
2022/day3/p2/input.txt
Normal file
@ -0,0 +1,300 @@
|
||||
dWlhclDHdFvDCCDfFq
|
||||
mGdZBZBwRGjZMFgvTvgtvv
|
||||
jwwJrzdzGdSbGGnNlzWczHzPHPhn
|
||||
cczcbMBszhzzDBTBPPPGjtvtlt
|
||||
LqJLfpwdLnvQLRGQjGtj
|
||||
gSgnSJJCGSGpGSrwgfhchmmmHzcrHDmbrmMm
|
||||
bVjstCsSstCLCrbSLnMpdMndcLddcqcpHR
|
||||
wPZJQJwtBfJZmgBwPTcpTdcnfHMppcGMdG
|
||||
gmFJzwPJJtszvNhCNC
|
||||
DmjZDMZWDqGRqqRpHmmRLTTNTPTfCQJQQLJHTClc
|
||||
FtzfvrfFwVgtzztgBLJNcNlTcTVNNQLN
|
||||
vgsdbzzrwtqWfWRpZDdZ
|
||||
rJhqRhLHhdcQqdHqfQGfPGstgGPlWttM
|
||||
DzCpDDmnNCmBZBZnVBmZzBGPfsbglfNPwgPGPMWsWWft
|
||||
BZFnlmpBpBzDzVZmhFHFrrrchhRqTdrc
|
||||
DWCCWFNqdGFdPVcb
|
||||
HllttQsTRlJlsblrHlhdmPLVcVcTccndLvPLmL
|
||||
HSlstHgJltghhRrzNBNDzSwMjNZwNb
|
||||
dzGSHCWSsGVVSdHVHHWWVVDCgJDpQqLTTRJpgmTLRmJTTpTR
|
||||
BvNjMPZMBtBBMvvNMNttlhLQqCJpLmhTRQqQJgRJLQQg
|
||||
llNncBlMCwwMnwPZrGsVHzcfFGdHGFGs
|
||||
JfZhphMMQmFzDTDjSdrQjQ
|
||||
sqHCbCwBVtbqbCqtrWdjzlSJTlrTSWBn
|
||||
bHcwbGCGRssNscwtHNbwvmRFvpFFJFvLZMmPLFfv
|
||||
qBCrzznVmDCmMMDNgrgcrvHHcgbQcW
|
||||
TTTsdJRTRhhlsgbvbdCFdbWvbQ
|
||||
JhGGlfRlJsnCMDMqjmfV
|
||||
rqLLvDLtStDLQhQDQrQhhNdsmWdmmjjnssPnTMnTzfTsWT
|
||||
ZRFFpgCgppcBcnjTsjTMTfPFMP
|
||||
GCZpGlwJwBgGHcJhSSHLDDrNqrMtNq
|
||||
FsPFqsDNZFNnZrcBmWfWWQ
|
||||
lSnRlRTvgrWtctTmft
|
||||
SMbGbbvnGlnSDwGqLwNCqNVD
|
||||
dPQDcBwJJDgDTPgGgQTBVjSsmLhLTrLmjSLpjSLh
|
||||
MvvZRHtMtbCNvCNCNtNvbRfBSMSrjmLpjnjmVhrVSLsnnmSh
|
||||
qHZtbBZfRztbHbCzNRHPQgJPJgGgglFPPFqdQD
|
||||
MsBsVDspRPfPlhMl
|
||||
zWnCFzHbSCwqNmPSjmGlsmfN
|
||||
FnHnFbFzsHHCCgzCzbBptVppgvvVgVrpBrJt
|
||||
pTLntptZjQLfVDjQTDlVJCSWNCPSCCsSNmFlNslm
|
||||
BBHbqGHHqgwSWSCCWwZWWZ
|
||||
qRzbhhbzzrHdRRHhRHvzZjfrVTrppVQttDfcQTfp
|
||||
DHsdHPHHsHMsRmhMZZQBtljgZGtC
|
||||
NFnCbFznLVJbVrjhQthjGBLZBjGL
|
||||
wNrfFJJbCpNnfbdwDSDHsvsHmsmH
|
||||
jLZRjnMMjJhJnvtQbdHfHZbvHQ
|
||||
mBzwptCWlcFCwsHSTpQfQHQfrpTb
|
||||
mNltzmsCNmFzGwCBllGRgRgqjgLMnGqjnPjV
|
||||
ZqqcqmVVtbcBMFfFMcQfgphJ
|
||||
HLWLDvWjjLwTWzzvGLThQQshQllgJDJgfbffJQ
|
||||
vHzLvrwwzGzTRGzzLLRPRwRdSVdnBBdSbBSVStbNmnrmZS
|
||||
TWVVvPSgwWSqcRgRwbRRcqshsfFzzzChTGNHzHhhhCsG
|
||||
njZrjMLlpmDmGfSGtrNttzCF
|
||||
ZQBmZdDBZRRPRSBgcb
|
||||
TpntvdpnZDptnbnTDGtSFSlFmzCzzmSFRjqlZj
|
||||
MWrNcWRMlgqzMjzq
|
||||
NPwsPNrBNcVHNNcJHBNBcJwwttDvGVnDptVRtbnTtGvVGtGG
|
||||
tsbbvvSfnqvzQLLBjfMLdd
|
||||
gJRmRNmJNchgmmrFJhFgWJQMwBnjwrMBVQwQTBdLdVQj
|
||||
GcGpGGRGJgqstvpbnCqb
|
||||
rsHcrbZHBTTtLtNSwwHLLJ
|
||||
mFqhWVsjsVCjQlNJGMwMlMMGMh
|
||||
QggzffQRCfgVFWzzCQffqfZpZDcRvTTBTvvZnsdnddcn
|
||||
bPFMFFBpMlFfMZMpHGNSrNctJcPSSchJchPt
|
||||
zCgwnmgzQDnQgdWWQRgqSrqLSqSgssLNJhgJ
|
||||
rQCQQTrRRmDBFfbHBFHZbT
|
||||
fzfPQsGrrMMjtHtBHs
|
||||
SwNNDqwhWpVTwbDGGDmwSVhZRZHdbCtgBjCRjMtbBHtRMd
|
||||
vVTGvVGNvPPvQvfncJ
|
||||
cwzMJbclHDPqfJQPfq
|
||||
rrqjjTBrqqBjRCgTjrRjNrsGPDhDFGCfWGfPFfFPGWfD
|
||||
BZTTSTZgjbSwVptvpq
|
||||
PPPPJpvpJsJwPHHPsJdTNZRZZZjTFFmRRRNjZd
|
||||
qbWVfChDCDnVVDGfnSFNNjRLmNfBNLQjLjmBRm
|
||||
DhFDhbnWCDhGcbJPPwrsrMwrvlvc
|
||||
lFSDTwHTSwlTNwFFlwNcFFpjLZvZqvnqLPnnWbgngbbncqbZ
|
||||
rzQfMzRGrRGJCffBMGdGsJZWWnqWVqdPPgNvvVZWPWWn
|
||||
RJrttBtNQCsNzTpShhHFDwFlth
|
||||
QNzQFjNFrQPNbmPpqTTDGswWmB
|
||||
ggHRcSlcCVCSzMVqDGwgqTWpsmqwqG
|
||||
cltzCZtLClHRRtMZZLQjfNvtrJfhvrddvNNd
|
||||
mcfWHffBFnQRQlTFdv
|
||||
wssSLVbbzDVbzbggzSzNshNMnvnljRdvQRlMBjvQdnCj
|
||||
bhDzVSSJDDJhDLBwtbDzzbbWppfpcmWGmprqqGtqprcHPp
|
||||
rpVFrZpgHWSZrFPqhzwcqPwmcVBD
|
||||
vMTnQJjQLCbljvvQzTMbTjPNdBLwwDhmhNNqPwmmhhBh
|
||||
jvGjjQJnrspGHgFz
|
||||
sjssjtZlcphZHwWvcrHTwWJH
|
||||
qDdzzrFNNNDGdFDzzVBVVvfWJPfgPmgWPgvwVH
|
||||
nqMQGDrnLGnqqLNqjtCZZjsMhZhCMbtl
|
||||
JJJsLFmzsrFlSpzPscjgHhnRnmvcjqRvvj
|
||||
fCMQbCbTjjqTGhjc
|
||||
bfdbWdCddfBbtCfbfbqVWQQpPlBrJLJJSSLwppFssFzLzp
|
||||
pdbbzlffWtJbgQwhcphQcCCg
|
||||
vHvLFvVLvSfFRLnRFRNHjPjggcssQcjjsnwhsPCC
|
||||
vGVGGFFVHLTvDRHDmBbTzfZWMdJZlfMm
|
||||
wjCbjQgjTQhNNzgWQCWrDFMZmZDZDCrrMDpLpL
|
||||
czGSPznnRGGJGGlVVRVBGGlBmDDcMDFDDZLqfffZFrrZqFpZ
|
||||
JPGlvBSJHVGnVsjvQjjzwdwjzd
|
||||
MFlWQHDTpnpsFNNQllWFWlhzjGgrgDzGGhGGjvmZDZrh
|
||||
PtTPcTLbBCVPTRVcvhjmmhVhSZGGgvZg
|
||||
JLPfCwPbTbBPJCfblplMpqWsMpMwWHQn
|
||||
QbHVBBzWtzHBNtBwQSgqhqSbFgRLjhmqqj
|
||||
ZnCnMcdsDnJTncggFJwRmSwgRFmL
|
||||
sTMZpGDvsZcMpcvTCPHwzrfzrpzHpWBrWz
|
||||
PMdJWwJWHFWJnNzbDlfbCfMvbl
|
||||
rZgttrFptFFcBtccbbCDvgfbGCGGgGDz
|
||||
QsZBmsrFscrVrjQJjJQRJWWLwq
|
||||
GwNNJwwRThwrWfhh
|
||||
SmQqmzsjHssQzCbvsmSSzsQTjWpFTTfFfThchhFTBBfppB
|
||||
mmbHbmtmCzzQZzQRdZJhNMdMlRMglh
|
||||
rrsPbncQvvgnnrTdGDVcCdpZHHZp
|
||||
RwwwhjLLqtJFwjzwtwmwwGpDZVdGDVdZBZDFHdHZCp
|
||||
zhzwLhhfffLtjNChgWbbrbnMvPrMrrfv
|
||||
tQMtQtTSBFtSmQSttMggMtbtnTnPrZvrnzNNTGZvrZZdLdnL
|
||||
HqhwDpDcwlHqpVrrFzvFGpZrrzrP
|
||||
RwlhhjwRCjVfjDbMtFWBWJMgWjWm
|
||||
WpWVlWzsGlBJpspNclNlhhhmgzrdtzQMQttzMmtt
|
||||
RfnPRLTPDHRdPbwvvntnSrFgmvnmtm
|
||||
CwqRDCCwqCwbCTqJcJBNcZqdVcBlpJ
|
||||
tpfnNBsGGNRppRCgfgRRCRQJGMPPWdwMJdWFFwjVzGPJ
|
||||
chLSchLTbLqvqcZLlvvLqbmldMzFFWdzVSFWFMzQVJwjQjdM
|
||||
rLqqcjDrcvhRsDfHDtNNnN
|
||||
DjZjvTTDqrtTZZSMcdRdmRJrcJNc
|
||||
HWgPGVhFPgnSVtnJcdMs
|
||||
FPLfBwCWGPfCwfLHCCDBZlbDpBjvqTtDzzDj
|
||||
FJNqNFgNFssqGGqBsTlMVcgVrCwLwlhcrw
|
||||
fRZzDmDZvvDdZbtdpDZmbrThrLMCvcChwwlSTrvMSr
|
||||
zmfZmtZmpDmbfWRDDZdqFljqnNQjGWnsjFqGsG
|
||||
rMdMWddmJmvdSdmWfWMddpVRqRFVHRRqMRRPQMRqRq
|
||||
tDGtGGhLjLLZNLjjNgNthGtqHTVqRVVpPDRpHHVRQVRPPR
|
||||
ZlLtzNjgsZZlssLgtjNpfWfJvlJrrvCJfBmBfn
|
||||
hqpWvFJsJFNHhqMWNhWvWRmmDcDMLcwZnjcwnjRnjn
|
||||
LdrlgCCrSSTrTnwRjmwRQZwdwG
|
||||
PVlfClrLlLlfggtBPzHHhHFbWzJNbvqJFNqF
|
||||
TbbQtnDtbGGjGlGsGHpJJmFWFJJrBWWFlWrS
|
||||
CZzzNzzhddNchhMhhRVjpCBwBrCvJvpmSCvrwJ
|
||||
fhZZhddRjRgZzMZRzPjPTsLGQtHLTHTbDPQTtqPT
|
||||
nHnWsQNQQWTWQshwjBJJJmHwFBwm
|
||||
VZZpfbffZVvbSbGfBhSwmtmmJlmjJFJJ
|
||||
bpphpMfMvMzDbMGZgQNrrngzdTsNqWdd
|
||||
VPNddVTPPmdnVcPVZcdTmcDbQTFjMpjtFzbMtFjzsFTssT
|
||||
lJCllWCrgvRlgwlJfRRvSzjSjQpbzMHpbwMQpszM
|
||||
fRhGBBJJCgrNLsNPNVVhNq
|
||||
pLrVDgbNbjVplpsltHBqWSqhSQcHDttH
|
||||
MCdCwCGTmnTmmmvTTCwCqNhHQhRWcwHWBRHSqSQH
|
||||
TNTFFPfffTvFTJvTPCPTFfGdzVjspVLZglJbsbZpVblrzjlb
|
||||
cdPzFrldgcdCrnlznPzrBNRssLLBbVNVZsLHRHdm
|
||||
wTQQwvvtqwqcGvTZmVHBbVLLBbRV
|
||||
GWJSGfJWcjQwhQQWjqJhhGfgpMnMzDnpMlPpMnDlMrzl
|
||||
pMhqTTsSpdBPpNBshsdMMTQFvFlQtQWCRQlCllVFqVqG
|
||||
dfcbnmrnjzRFvGQQGvfv
|
||||
mDrjLLLcJjLhpZSSJMdpph
|
||||
NGZNwqFqZhhcFSCfRzwdzRfCzVRw
|
||||
QTTmBTsWQWJPPCvzvpHPzdvVFR
|
||||
bsmWTBbQDbmbLQQMsWWQchgqLqhGGGGZLhSFjhqS
|
||||
HgmGlgsvBBDgBGCdHHvHwCGwhZJWhTjSdhTSFFFhJtSJTJhT
|
||||
RQfVrfQNszMQfpMzpNnfLbtjhtSbWJWFWtFFtFJtFSZq
|
||||
PNzLfnLnBCPHgsgC
|
||||
mTZGgCdNSNmCQLLpPnDhRlGhpV
|
||||
vWJHWFsfHMWBBFbBsjfjHrFfLRRLPPnpLthttRVPLSnhSPbS
|
||||
fzMrBjWfBrzsZCZmSTgQzcNN
|
||||
mgmCZCMgmnZmZgBZpgpJfbQfwSQPDTdfdwSDfwhn
|
||||
sHhcrWLcFlzHcHRNNFvNFcFPwDDTWdddDdqWbSTWDPTTQS
|
||||
RNsslsRrNcRNvNRFFNvVsghZBJtVCCtCtGghjhGBGG
|
||||
gchrcRRdnRwPPnvQ
|
||||
CVCCSrDjFHjVDbBLFGGBSvwnwNMnMsPPNsNPvwPQVM
|
||||
lHLCTHGDCbbjFTTzdWlpcqfgcrdzZg
|
||||
fRDPsDsqqJttttJSzPDgJWQCbQQbGMWCCnGGPVGVQQ
|
||||
rTTBvZhrvBnWWDWCbZWW
|
||||
cwLlTLpjTwBFLLhgfRRfmRqRDmRdjq
|
||||
sprGGPTrJTsGPzszqGzNtTtpfbQddQSQSDFDFvvbZvwFbbfN
|
||||
LWWCMVmwMmgWFQfFDDvZDgdF
|
||||
mlMmRVCWVMmmHRjVCmjHWRhMzpTtlrlPzrtzwlsGPrpwtrJp
|
||||
tsfwwfjfdfrtrClfvwvvLnTHNmvLHcNccRNcvNWH
|
||||
qQSqZqFQRBzghDFncHgmccHNmWcNmM
|
||||
SQJphFJzRDSsdpVlllrCrw
|
||||
vGQqLQFvBvLvdNnvjnvNDc
|
||||
TRJwmWmZWlCCmzznbNhhbDhRgj
|
||||
CCTtDTlmDTWTmDmZZlVLLsFfstfFFLsBLQfF
|
||||
cfWflMmWWlWfPWBhBlQtLmmvrrrvCLjvRTjLLwwr
|
||||
gSgbsbgHdsjzHbqbdVDLZLvTZwLTvSrZrFvZLw
|
||||
sdbJqDNdjJNdsJBpBWpJlMcfcB
|
||||
FHlMHPqDLlPctgHSnttCSC
|
||||
zhrmBrTwJTjBmQcSQvQqbtwGvg
|
||||
jBjmBmJjjjRZTBzhhrBJLDdZqfpDMdfWWlDDLMlV
|
||||
zPVdbsBzZdwqJGhrLTvNNJqH
|
||||
tmmCgCPCDDnptHDjNvGvhrDvLv
|
||||
pRWRlpSpPllClnpbQVQwFFVSQFVBZz
|
||||
nDrCvmvMnMSmsCvblBzzCZplbJlTbZ
|
||||
FNRtFWRfcGqFGQbzlZTQqQTBbd
|
||||
GRwFfNtwFRNFGMvBsnnwMMMBjn
|
||||
LVTBjjlJCDrnJzJNQR
|
||||
GsGGsggGpfhgpchgdqzbMzzhzQRnnMRrNzzR
|
||||
PwWFqFGpwWpdWgfsGggdmjCVHPHlCCCVZNCjVmVj
|
||||
qVTsCWwbCsPlCVfcbvfPDgLzbzDDhrzRrjgZghgr
|
||||
ntmHmNpSQNGtntNttmSdSdBdjrrDLQZQLLhRrFFFRDTFZhDF
|
||||
mtMtBNTSNBpNJStMGSdHppNcVWPsWvqVcsVJfwwqlqWqlc
|
||||
vvWzLvvdpZDvhTpcrLcTTLpdwSPnCfJwCMnQSMwSnCGJrnwr
|
||||
ttHVmVNNsHBBRsHbMMwwnjnjBfjJwCMP
|
||||
tsVllgNVqbRlfplldDvDWT
|
||||
mLjLsQqLQqsBRvvlRBLRlT
|
||||
bhgtDDhCtmptmTTS
|
||||
nfmdbggwGWrfsPzfWq
|
||||
JpWDcSGJpGzsHPSSlbbd
|
||||
wVRqVZwwRwPDwbDddH
|
||||
VtVVVLthLVtVgfQLRTNtqDcCcJBmmWMWWprpFrcBJWNp
|
||||
dhhhDtmLdttdPlslGlRFjfzBBpzzRpGJ
|
||||
QMrVMwbVrrbvVVCrvcnqQQrrSMBJfpjFSzfjJFMFRWSpjjFG
|
||||
cwvbHHbCqVchRDHgDsPTdt
|
||||
CgVNCtDsDtJGZZGqMMGhDq
|
||||
cLRnSHgWcRdLHWSSRLjQdlHBTTPcPwwhzqzTMBPTwhPPwP
|
||||
HnnnglnWWgdRjlmQNsNFmJCFJFvsJsNN
|
||||
hfccLbjhfSRbfDZjFRJzrlvlwwlnnFrWwzqr
|
||||
TCsPLNtQdpdQQVtVNvJNJWlzJzwlrvJl
|
||||
pHtPsPtPtCQfbRHHDHhMLh
|
||||
nWRWgLtWnfTcZNNsscfd
|
||||
JMGzMVJwMVTvzVQFGHMMmPdddsPsCjldlHPcScNPsP
|
||||
vGrMQQmmvTQzMJpghWRWgpbbBqLbLR
|
||||
WSbhFbPTpRfTfPdhpfbhSbfPQLzlQlzlHvtQsvlltlsgHdgQ
|
||||
pZcGJDZNGcVrJwrDrrnvtNvlNzsgtgzvvsgt
|
||||
qmJZZJcBqwrMJcVbWfSPPWpmpjmSCF
|
||||
jHVjjCcpNrDgjsfB
|
||||
ndqllRvJQtqlQQTRWllFNDrsMZBfDBLvNMNDfsbZ
|
||||
qTFnWJqdWRdqWRlnTRnQGnTmwwSHCzpcGNmHNcPVcHGmCz
|
||||
pZCpBhDfvgBVZQGMMVZVlq
|
||||
sLsLTTSssjPnTNbFGRGFPVHqMMRF
|
||||
TsNSccnjLdcsLjdmjWvWvBhfmvWpCGhGhD
|
||||
VWFFFPMpPVSMbTppHTnHTbRH
|
||||
DtvfNdBNddDNSLjsvDTTHnzzHwrTrwsrwqbT
|
||||
dgBLNffdgjjtfBQSvgNjNDlvMcQJmJJmZCMmVVVZFPFcPMGG
|
||||
VWsQLHMVVSNRShWLhNSNLjbbbddbpDZDddcbZdDRztpd
|
||||
FPlhhgPvThGFJndnnCCnJzzdCp
|
||||
qrTfmllGvfvGqwNMMMsffsQsNh
|
||||
NsmFqNlmnQRbCFsmJgSffpPcbvSfrVvpgS
|
||||
LhZGDZhhwtDHMwDdHGhDjDpTzzPdzgTvcPvpSSpPrdrv
|
||||
jgHMjBLhwtZMHMHmJNNJNFlBqlBJNn
|
||||
bznSQggscgMcSTTfJbSQzQFwClMhmCmthClvMwFLwhZL
|
||||
BRWBPBVVPjPNVHpVqlqrvtwFqmmLqltZmL
|
||||
WDVddNHNvRgccgsDsgbT
|
||||
sNgnQLtLLLPPnsPpqdqjBclpGWjcWjBG
|
||||
rVCChSZhVrrwqVDVHSHmMjldGfJGfHddJGJlfGjGJj
|
||||
CVZmDvZCmmhFVVrCgTNbbnQFgbsqNqNQ
|
||||
WmMmSSfJNRRPfJRMRMtllCgdStgbgttgCdDd
|
||||
QGBrvzwBczlgqCtDbvDq
|
||||
QQpBGFrLQjQzGVVRNjPmNNWMbW
|
||||
gGljnJhnJtllpNVCHWcccdTdjdmB
|
||||
bLfSQDSMSHmBnwCB
|
||||
LFMDrbFfFQZQRzLZnbgtlsRGtltpgNhgPpPG
|
||||
cRThZZchCThtgTRhZTRtjWFjWNwqCjGmwFjqqffC
|
||||
DPDPGzPMHDbrpqjfwrjqmjmp
|
||||
JVHHDdVdVbvGMdnVdQVdDbHcRZllhRtgStRLThRSTcBTvc
|
||||
lQWPSBrrPZGgPglGssDfHnWsfDFHHvHh
|
||||
TDCqpttptJNLtwNpbwTqzqHshsvsMMFnmHMNfssmvmvf
|
||||
JCjqVpDtrBjQjrlj
|
||||
wFGWGpFLvCczNSWWsz
|
||||
tlfgtftjlbtHHlDBsBzmQQnsQDQsCn
|
||||
gjfrsVqVgPlfqhvLdvdwZhGq
|
||||
pHpZHBSvRvRCBBZCTMngRnWndnRmWcgg
|
||||
jsfrfrjJFDwDDMMggMCGWGcfmG
|
||||
qbCszCjtCjQsQrtZVBHBHvBvqLZvlp
|
||||
scFzsPScNgNPNgQzpttlCBCwpLrMLCrDdljLwq
|
||||
TjfGZZjVwMZwMLwr
|
||||
vnGbWTvTmFRjQFQPsb
|
||||
bVLrzqrzJVgJbbtVrWJVgppcBCzBvdzwBCCBHDcBvc
|
||||
hflPQnMQmQSRlQMPNRTHwwHHHqpHpdfwdBCp
|
||||
hFhZMhqSNMNbrZgWWGWJjZ
|
||||
NJsgNjJlMHQrwnRgSRPwrP
|
||||
tqpQtTFpFvbGpzTTWSrnSbrhwChCnRfrCf
|
||||
GtcvGqQpttzcqdFzWppDsZMJjBBsBJcBNmBjMsLJ
|
||||
lGfZGZhFfhdSWqmFFWSS
|
||||
wDRDPLcDnjtWbSmqrSCSLC
|
||||
MPwmtVnVMjztznHPgQhQfJfvvHHGggQZ
|
||||
llTspLllCHmLHHndldqHdlLQQPSBQczZSFDDQZSNGcGG
|
||||
jMhwvVrRjbRhFBZNGPcGNN
|
||||
wVtrrtRwrfrwftjVjwWvMrRpsqsnsHsBglslCmTsdWdHTd
|
||||
vPvmTGgDPRvGpDPGPqGHQnWJQJMBBzJBlBQWlHWl
|
||||
bfbwNsmwFdLjbfrrLsSfLNQtMllznBzJQZMQtMlZZnnF
|
||||
frssSscssNfScCjfSCwjsDmRDpGmDRDvvvVcvRDvRp
|
||||
LtlPZPjBTbWsWJVJVzdT
|
||||
nnprqhrqmzfrSrphqfCChVVGVDJWgSHHWgWsRDVHWd
|
||||
nrmppNqhcCrfMchcMCncqbzPZvlvlwbBNjPjtNjZjL
|
||||
FPWsFdSspVbbbtWVvl
|
||||
CCHnnfHHvCwtVMhzlzDllC
|
||||
LrGnjGfgfvcwfgrLrBjrBLgwdBTSRBFsRZdRsSqFFSFSSPPp
|
||||
whGCLqsrjgGhhGFqrCCFGCGzTRTZJcNnzlLTnznNHcnzTH
|
||||
ddvVmbfvdvVbDVQdvvdSzpNcnJzlzSRHNJpnJcSc
|
||||
BPdvfQdWtPDDPfDvDQVVPmbhssCGGMqgFCFMqGMWgMjrRw
|
||||
PSLbGmWPSPLQbMTPWGFWltthdDdrmBDHhdDdczzDRh
|
||||
VfCngVfgsZwCftrZdhcZrdNDzz
|
||||
CjVJJJqnJwQhWPPLQlGj
|
||||
ntnnQmTQTQGVWGNGNNlClG
|
||||
jDffjMSvqjHzHHzwNVwNVcCddPVNdD
|
||||
ZszJsrrZMjsHqqvZJLRQCbTRQbJmThbt
|
||||
BgLHgFDsJNWgQgflWd
|
||||
mnVVcCHnCGRcVnZSjmlthftMQddlfhQctNfW
|
||||
qbSGqmHSTFprvpvTTL
|
||||
dvdTMvvpdLpTcSLvdLLMmhfFBftwCNhRwRNjtCTRCf
|
||||
lshQWgsgrHHqlFfRqFjRFfFwCB
|
||||
rsgHQbJbrsGHHlgQHgJrlHrPZdhdpMZGDSDpdPLcZhdvhZ
|
||||
6
2022/day3/p2/test.txt
Normal file
6
2022/day3/p2/test.txt
Normal file
@ -0,0 +1,6 @@
|
||||
vJrwpWtwJgWrhcsFMMfFFhFp
|
||||
jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL
|
||||
PmmdzqPrVvPwwTWBwg
|
||||
wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn
|
||||
ttgJtRGJQctTZtZT
|
||||
CrZsJsPPZsGzwwsLwLmpwMDw
|
||||
95
2022/day4/p1/day4p1.c
Normal file
95
2022/day4/p1/day4p1.c
Normal file
@ -0,0 +1,95 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
|
||||
bool IntRangeInIntRange(int * a, int * b, int * c, int * d)
|
||||
{
|
||||
if (c <= a && d >= b)
|
||||
return true;
|
||||
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
|
||||
FILE * File;
|
||||
|
||||
File = fopen("input.text", "r");
|
||||
|
||||
|
||||
char * Line = malloc(256);
|
||||
|
||||
int Total = 0;
|
||||
|
||||
|
||||
char ** Elves;
|
||||
|
||||
Elves = malloc(2);
|
||||
|
||||
int * ElfRanges[4];
|
||||
|
||||
while(fgets(Line, 256, File) != NULL)
|
||||
{
|
||||
|
||||
for (int i = 0; i < 4; i++)
|
||||
ElfRanges[i] = NULL;
|
||||
|
||||
|
||||
// Splits the line by the comma in the middle of the line to get each elf's range
|
||||
Elves[0] = strtok(Line, ",");
|
||||
Elves[1] = strtok(NULL, ",");
|
||||
|
||||
|
||||
// Loop through both elves
|
||||
for (int a = 0; a < 2; a++)
|
||||
{
|
||||
|
||||
printf(Elves[a]);
|
||||
printf(" ");
|
||||
|
||||
char *Task = strtok(Elves[a], "-");
|
||||
|
||||
while (Task != NULL)
|
||||
{
|
||||
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
if (ElfRanges[i] == NULL)
|
||||
{
|
||||
ElfRanges[i] = (int *) strtol(Task, NULL, 10);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Task = strtok(NULL, "-");
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
printf("Elf Pair Ranges: ");
|
||||
for (int i = 0; i < 4; i++)
|
||||
printf("%d ", ElfRanges[i]);
|
||||
|
||||
|
||||
printf("\n\n");
|
||||
|
||||
|
||||
if (IntRangeInIntRange(ElfRanges[0], ElfRanges[1], ElfRanges[2], ElfRanges[3]) || IntRangeInIntRange(ElfRanges[2], ElfRanges[3], ElfRanges[0], ElfRanges[1]))
|
||||
Total++;
|
||||
|
||||
}
|
||||
|
||||
printf("Total Pairs Fully Contained in Other: %d\n", Total);
|
||||
|
||||
fclose(File);
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
||||
1000
2022/day4/p1/input.text
Normal file
1000
2022/day4/p1/input.text
Normal file
File diff suppressed because it is too large
Load Diff
6
2022/day4/p1/test.text
Normal file
6
2022/day4/p1/test.text
Normal file
@ -0,0 +1,6 @@
|
||||
2-4,6-8
|
||||
2-3,4-5
|
||||
5-7,7-9
|
||||
2-8,3-7
|
||||
6-6,4-6
|
||||
2-6,4-8
|
||||
99
2022/day4/p2/day4p2.c
Normal file
99
2022/day4/p2/day4p2.c
Normal file
@ -0,0 +1,99 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
|
||||
bool Overlap(int * Ranges[4])
|
||||
{
|
||||
|
||||
for (int * x = Ranges[0]; x <= Ranges[1]; x++)
|
||||
{
|
||||
for (int * y = Ranges[2]; y <= Ranges[3]; y++)
|
||||
{
|
||||
if (x == y)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
|
||||
FILE * File;
|
||||
|
||||
File = fopen("input.text", "r");
|
||||
|
||||
|
||||
char * Line = malloc(256);
|
||||
|
||||
int Total = 0;
|
||||
|
||||
|
||||
char ** Elves;
|
||||
|
||||
Elves = malloc(2);
|
||||
|
||||
int * ElfRanges[4];
|
||||
//exit(1);
|
||||
while(fgets(Line, 256, File) != NULL)
|
||||
{
|
||||
|
||||
for (int i = 0; i < 4; i++)
|
||||
ElfRanges[i] = NULL;
|
||||
|
||||
|
||||
// Splits the line by the comma in the middle of the line to get each elf's range
|
||||
Elves[0] = strtok(Line, ",");
|
||||
Elves[1] = strtok(NULL, ",");
|
||||
|
||||
|
||||
// Loop through both elves
|
||||
for (int a = 0; a < 2; a++)
|
||||
{
|
||||
|
||||
printf(Elves[a]);
|
||||
printf(" ");
|
||||
|
||||
char *Task = strtok(Elves[a], "-");
|
||||
|
||||
while (Task != NULL)
|
||||
{
|
||||
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
if (ElfRanges[i] == NULL)
|
||||
{
|
||||
ElfRanges[i] = (int *) strtol(Task, NULL, 10);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Task = strtok(NULL, "-");
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
printf("Elf Pair Ranges: ");
|
||||
for (int i = 0; i < 4; i++)
|
||||
printf("%d ", ElfRanges[i]);
|
||||
|
||||
printf("\n\n");
|
||||
|
||||
|
||||
if (Overlap(ElfRanges))
|
||||
Total++;
|
||||
|
||||
}
|
||||
|
||||
printf("Total Overlaps: %d\n", Total);
|
||||
|
||||
fclose(File);
|
||||
}
|
||||
1000
2022/day4/p2/input.text
Normal file
1000
2022/day4/p2/input.text
Normal file
File diff suppressed because it is too large
Load Diff
6
2022/day4/p2/test.text
Normal file
6
2022/day4/p2/test.text
Normal file
@ -0,0 +1,6 @@
|
||||
2-4,6-8
|
||||
2-3,4-5
|
||||
5-7,7-9
|
||||
2-8,3-7
|
||||
6-6,4-6
|
||||
2-6,4-8
|
||||
272
2022/day5/p1/day5p1.c
Normal file
272
2022/day5/p1/day5p1.c
Normal file
@ -0,0 +1,272 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
|
||||
struct Node {
|
||||
char Letter;
|
||||
struct Node * Next;
|
||||
};
|
||||
|
||||
|
||||
int CountLines(char *FileName)
|
||||
{
|
||||
char *Line = malloc(256);
|
||||
int LineCount = 0;
|
||||
|
||||
FILE *File;
|
||||
File = fopen(FileName, "r");
|
||||
|
||||
while (fgets(Line, 256, File) != NULL)
|
||||
{
|
||||
LineCount++;
|
||||
}
|
||||
|
||||
fclose(File);
|
||||
|
||||
return LineCount;
|
||||
}
|
||||
|
||||
|
||||
void GetLine(char *FileName, int LineNumber, char* Line)
|
||||
{
|
||||
|
||||
int CurrentLineNumber = 1;
|
||||
|
||||
FILE *File;
|
||||
File = fopen(FileName, "r");
|
||||
|
||||
while (fgets(Line, 256, File) != NULL)
|
||||
{
|
||||
|
||||
if (CurrentLineNumber == LineNumber)
|
||||
break;
|
||||
|
||||
else
|
||||
CurrentLineNumber++;
|
||||
|
||||
}
|
||||
|
||||
fclose(File);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
|
||||
char FileName[] = "input.text";
|
||||
|
||||
int CollumnNumberLine;
|
||||
|
||||
int Collumns;
|
||||
|
||||
int CurrentLine = 1;
|
||||
char * Line = malloc(256);
|
||||
|
||||
do
|
||||
{
|
||||
|
||||
GetLine(FileName, CurrentLine, Line);
|
||||
|
||||
|
||||
if (isdigit(Line[1]))
|
||||
{
|
||||
CollumnNumberLine = CurrentLine;
|
||||
break;
|
||||
}
|
||||
else
|
||||
CurrentLine++;
|
||||
|
||||
}
|
||||
while (Line != NULL);
|
||||
|
||||
|
||||
|
||||
Collumns = strlen(Line) / 4;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Parsing the starting positions
|
||||
struct Node * Stacks[Collumns];
|
||||
|
||||
for (int i = 0; i < Collumns; i++)
|
||||
{
|
||||
struct Node * TempNode = malloc(sizeof(char) + sizeof(void *));
|
||||
TempNode->Letter = '0';
|
||||
TempNode->Next = NULL;
|
||||
|
||||
Stacks[i] = TempNode;
|
||||
}
|
||||
|
||||
|
||||
int CurrentCollumn = 0; // Actual Collumn Number is this +1
|
||||
int Place;
|
||||
// char * CollumnContent;
|
||||
char ContainerLetter;
|
||||
|
||||
while (CurrentCollumn < Collumns)
|
||||
{
|
||||
CurrentLine = CollumnNumberLine-1;
|
||||
Place = (CurrentCollumn * 4) + 1;
|
||||
|
||||
while (CurrentLine > 0)
|
||||
{
|
||||
GetLine(FileName, CurrentLine, Line);
|
||||
|
||||
ContainerLetter = Line[Place];
|
||||
|
||||
if (ContainerLetter == ' ')
|
||||
break;
|
||||
|
||||
struct Node * Current = Stacks[CurrentCollumn];
|
||||
|
||||
while (Current->Next != NULL)
|
||||
Current = Current->Next;
|
||||
|
||||
|
||||
if (Current->Letter == '0')
|
||||
{
|
||||
Current->Letter = ContainerLetter;
|
||||
}
|
||||
else if (Current->Letter != ContainerLetter)
|
||||
{
|
||||
struct Node * TempNode = malloc(sizeof(char) + sizeof(void *));
|
||||
TempNode->Letter = ContainerLetter;
|
||||
TempNode->Next = NULL;
|
||||
|
||||
Current->Next = TempNode;
|
||||
}
|
||||
|
||||
CurrentLine--;
|
||||
}
|
||||
|
||||
|
||||
CurrentCollumn++;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Parsing the movements
|
||||
CurrentLine = CollumnNumberLine + 2; // Line where movements start
|
||||
|
||||
int Lines = CountLines(FileName);
|
||||
|
||||
// Move the crates
|
||||
while (CurrentLine <= Lines)
|
||||
{
|
||||
GetLine(FileName, CurrentLine, Line);
|
||||
|
||||
int CurrentToken = 0; // Delimiter Token
|
||||
|
||||
// The numbers in the movement line, move x number of crates from a to b
|
||||
int Number; // Number of containers to move
|
||||
int Src; // Source
|
||||
int Dest; // Destination
|
||||
|
||||
char * Token = strtok(Line, " ");
|
||||
|
||||
while (Token != NULL)
|
||||
{
|
||||
if (CurrentToken == 1)
|
||||
Number = atoi(Token);
|
||||
|
||||
else if (CurrentToken == 3)
|
||||
Src = atoi(Token) - 1;
|
||||
|
||||
else if (CurrentToken == 5)
|
||||
Dest = atoi(Token) - 1;
|
||||
|
||||
Token = strtok(NULL, " ");
|
||||
|
||||
CurrentToken++;
|
||||
}
|
||||
|
||||
// Containers that are being moved
|
||||
char TempContainers[Number];
|
||||
|
||||
// Take x off of a and put into letters TempContainers
|
||||
for (int i = 0; i < Number; i++)
|
||||
{
|
||||
struct Node * Current = Stacks[Src];
|
||||
|
||||
while (Current != NULL)
|
||||
{
|
||||
if (Current->Next == NULL)
|
||||
{
|
||||
TempContainers[i] = Current->Letter;
|
||||
Stacks[Src] = NULL;
|
||||
break;
|
||||
}
|
||||
else if (Current->Next->Next == NULL)
|
||||
{
|
||||
TempContainers[i] = Current->Next->Letter;
|
||||
Current->Next = NULL;
|
||||
break;
|
||||
}
|
||||
|
||||
Current = Current->Next;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Take the letters from TempContainers and put them in b
|
||||
for (int i = 0; i < Number; i++)
|
||||
{
|
||||
struct Node * Current = Stacks[Dest];
|
||||
|
||||
while (1)
|
||||
{
|
||||
if (Current == NULL)
|
||||
{
|
||||
struct Node * TempNode = malloc(sizeof(char) + sizeof(void *));
|
||||
TempNode->Letter = TempContainers[i];
|
||||
TempNode->Next = NULL;
|
||||
|
||||
Stacks[Dest] = TempNode;
|
||||
break;
|
||||
}
|
||||
else if (Current->Next == NULL)
|
||||
{
|
||||
struct Node * TempNode = malloc(sizeof(char) + sizeof(void *));
|
||||
TempNode->Letter = TempContainers[i];
|
||||
TempNode->Next = NULL;
|
||||
|
||||
Current->Next = TempNode;
|
||||
break;
|
||||
}
|
||||
|
||||
Current = Current->Next;
|
||||
}
|
||||
}
|
||||
|
||||
CurrentLine++;
|
||||
}
|
||||
|
||||
|
||||
printf("\nTop containers of each stack: ");
|
||||
|
||||
for (int i = 0; i < Collumns; i++)
|
||||
{
|
||||
struct Node * Current = Stacks[i];
|
||||
|
||||
while (Current->Next != NULL)
|
||||
{
|
||||
Current = Current->Next;
|
||||
}
|
||||
|
||||
printf("%c", Current->Letter);
|
||||
}
|
||||
printf("\n");
|
||||
|
||||
|
||||
// Should print out the stacks with the top character CMZ
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
||||
512
2022/day5/p1/input.text
Normal file
512
2022/day5/p1/input.text
Normal file
@ -0,0 +1,512 @@
|
||||
[H] [D] [P]
|
||||
[W] [B] [C] [Z] [D]
|
||||
[T] [J] [T] [J] [D] [J]
|
||||
[H] [Z] [H] [H] [W] [S] [M]
|
||||
[P] [F] [R] [P] [Z] [F] [W] [F]
|
||||
[J] [V] [T] [N] [F] [G] [Z] [S] [S]
|
||||
[C] [R] [P] [S] [V] [M] [V] [D] [Z]
|
||||
[F] [G] [H] [Z] [N] [P] [M] [N] [D]
|
||||
1 2 3 4 5 6 7 8 9
|
||||
|
||||
move 2 from 8 to 2
|
||||
move 3 from 9 to 2
|
||||
move 1 from 3 to 8
|
||||
move 5 from 1 to 7
|
||||
move 2 from 9 to 2
|
||||
move 8 from 2 to 4
|
||||
move 6 from 7 to 2
|
||||
move 2 from 1 to 7
|
||||
move 4 from 5 to 9
|
||||
move 4 from 5 to 6
|
||||
move 1 from 8 to 3
|
||||
move 1 from 8 to 5
|
||||
move 2 from 9 to 8
|
||||
move 8 from 6 to 4
|
||||
move 4 from 3 to 6
|
||||
move 10 from 2 to 3
|
||||
move 1 from 5 to 1
|
||||
move 1 from 7 to 4
|
||||
move 2 from 9 to 8
|
||||
move 18 from 4 to 8
|
||||
move 1 from 1 to 6
|
||||
move 4 from 7 to 3
|
||||
move 12 from 8 to 4
|
||||
move 4 from 7 to 9
|
||||
move 5 from 6 to 9
|
||||
move 2 from 2 to 7
|
||||
move 3 from 9 to 5
|
||||
move 3 from 5 to 9
|
||||
move 1 from 2 to 8
|
||||
move 10 from 3 to 1
|
||||
move 2 from 7 to 8
|
||||
move 10 from 1 to 9
|
||||
move 1 from 3 to 5
|
||||
move 16 from 9 to 8
|
||||
move 1 from 3 to 2
|
||||
move 3 from 8 to 3
|
||||
move 1 from 5 to 9
|
||||
move 3 from 6 to 7
|
||||
move 2 from 7 to 2
|
||||
move 1 from 3 to 8
|
||||
move 5 from 4 to 1
|
||||
move 4 from 9 to 5
|
||||
move 2 from 2 to 5
|
||||
move 2 from 1 to 9
|
||||
move 23 from 8 to 4
|
||||
move 6 from 5 to 2
|
||||
move 5 from 2 to 6
|
||||
move 1 from 9 to 6
|
||||
move 2 from 2 to 4
|
||||
move 35 from 4 to 9
|
||||
move 1 from 6 to 1
|
||||
move 2 from 8 to 7
|
||||
move 1 from 6 to 8
|
||||
move 3 from 1 to 7
|
||||
move 1 from 7 to 1
|
||||
move 3 from 6 to 2
|
||||
move 4 from 3 to 7
|
||||
move 6 from 7 to 9
|
||||
move 1 from 6 to 9
|
||||
move 1 from 8 to 1
|
||||
move 2 from 2 to 9
|
||||
move 2 from 8 to 2
|
||||
move 3 from 7 to 3
|
||||
move 2 from 1 to 9
|
||||
move 5 from 9 to 3
|
||||
move 1 from 4 to 2
|
||||
move 1 from 1 to 4
|
||||
move 7 from 3 to 9
|
||||
move 1 from 3 to 4
|
||||
move 2 from 4 to 7
|
||||
move 24 from 9 to 4
|
||||
move 12 from 9 to 3
|
||||
move 1 from 3 to 1
|
||||
move 1 from 1 to 2
|
||||
move 2 from 2 to 6
|
||||
move 1 from 6 to 5
|
||||
move 1 from 6 to 8
|
||||
move 3 from 2 to 4
|
||||
move 1 from 7 to 4
|
||||
move 1 from 5 to 3
|
||||
move 1 from 9 to 8
|
||||
move 23 from 4 to 8
|
||||
move 17 from 8 to 5
|
||||
move 12 from 9 to 8
|
||||
move 10 from 8 to 7
|
||||
move 1 from 8 to 6
|
||||
move 5 from 4 to 3
|
||||
move 3 from 5 to 1
|
||||
move 3 from 1 to 6
|
||||
move 6 from 5 to 4
|
||||
move 10 from 3 to 1
|
||||
move 9 from 1 to 7
|
||||
move 2 from 4 to 9
|
||||
move 1 from 1 to 6
|
||||
move 4 from 8 to 1
|
||||
move 4 from 3 to 7
|
||||
move 4 from 6 to 5
|
||||
move 1 from 9 to 6
|
||||
move 1 from 9 to 2
|
||||
move 1 from 1 to 7
|
||||
move 1 from 2 to 7
|
||||
move 3 from 1 to 7
|
||||
move 9 from 5 to 9
|
||||
move 7 from 9 to 7
|
||||
move 2 from 9 to 1
|
||||
move 3 from 5 to 9
|
||||
move 3 from 4 to 8
|
||||
move 1 from 1 to 2
|
||||
move 1 from 2 to 6
|
||||
move 1 from 1 to 6
|
||||
move 5 from 8 to 7
|
||||
move 1 from 8 to 1
|
||||
move 1 from 3 to 9
|
||||
move 1 from 1 to 6
|
||||
move 2 from 9 to 5
|
||||
move 2 from 3 to 9
|
||||
move 4 from 6 to 3
|
||||
move 1 from 9 to 4
|
||||
move 2 from 4 to 8
|
||||
move 1 from 4 to 8
|
||||
move 1 from 9 to 5
|
||||
move 1 from 6 to 8
|
||||
move 23 from 7 to 8
|
||||
move 27 from 8 to 2
|
||||
move 2 from 8 to 1
|
||||
move 23 from 2 to 6
|
||||
move 3 from 5 to 3
|
||||
move 4 from 2 to 5
|
||||
move 2 from 3 to 1
|
||||
move 2 from 9 to 3
|
||||
move 4 from 1 to 4
|
||||
move 13 from 7 to 9
|
||||
move 1 from 5 to 6
|
||||
move 2 from 5 to 9
|
||||
move 1 from 5 to 3
|
||||
move 3 from 9 to 3
|
||||
move 5 from 9 to 5
|
||||
move 2 from 4 to 2
|
||||
move 1 from 4 to 9
|
||||
move 11 from 6 to 9
|
||||
move 9 from 6 to 1
|
||||
move 17 from 9 to 5
|
||||
move 3 from 7 to 4
|
||||
move 3 from 6 to 3
|
||||
move 14 from 5 to 2
|
||||
move 5 from 3 to 1
|
||||
move 2 from 9 to 4
|
||||
move 2 from 3 to 8
|
||||
move 5 from 5 to 9
|
||||
move 2 from 5 to 4
|
||||
move 7 from 1 to 8
|
||||
move 2 from 9 to 5
|
||||
move 3 from 9 to 8
|
||||
move 8 from 4 to 2
|
||||
move 2 from 7 to 8
|
||||
move 10 from 2 to 9
|
||||
move 10 from 2 to 6
|
||||
move 8 from 9 to 7
|
||||
move 2 from 3 to 9
|
||||
move 3 from 9 to 8
|
||||
move 5 from 3 to 9
|
||||
move 7 from 7 to 9
|
||||
move 3 from 2 to 9
|
||||
move 10 from 8 to 5
|
||||
move 1 from 7 to 6
|
||||
move 1 from 2 to 3
|
||||
move 4 from 1 to 6
|
||||
move 2 from 8 to 4
|
||||
move 1 from 4 to 6
|
||||
move 2 from 6 to 3
|
||||
move 2 from 3 to 1
|
||||
move 1 from 4 to 9
|
||||
move 4 from 1 to 5
|
||||
move 2 from 5 to 2
|
||||
move 2 from 8 to 4
|
||||
move 1 from 3 to 5
|
||||
move 3 from 5 to 7
|
||||
move 2 from 2 to 9
|
||||
move 3 from 7 to 6
|
||||
move 3 from 8 to 5
|
||||
move 10 from 5 to 7
|
||||
move 3 from 6 to 4
|
||||
move 11 from 6 to 1
|
||||
move 3 from 6 to 2
|
||||
move 12 from 1 to 3
|
||||
move 1 from 7 to 5
|
||||
move 9 from 7 to 3
|
||||
move 5 from 5 to 1
|
||||
move 4 from 4 to 6
|
||||
move 2 from 1 to 7
|
||||
move 1 from 2 to 6
|
||||
move 2 from 7 to 8
|
||||
move 1 from 2 to 4
|
||||
move 1 from 9 to 5
|
||||
move 3 from 6 to 7
|
||||
move 1 from 5 to 2
|
||||
move 9 from 9 to 5
|
||||
move 1 from 2 to 8
|
||||
move 1 from 4 to 8
|
||||
move 1 from 1 to 8
|
||||
move 1 from 4 to 2
|
||||
move 1 from 7 to 2
|
||||
move 1 from 6 to 2
|
||||
move 1 from 6 to 8
|
||||
move 6 from 9 to 6
|
||||
move 1 from 3 to 4
|
||||
move 9 from 3 to 5
|
||||
move 1 from 1 to 3
|
||||
move 2 from 2 to 6
|
||||
move 1 from 3 to 5
|
||||
move 14 from 5 to 1
|
||||
move 1 from 2 to 6
|
||||
move 5 from 6 to 4
|
||||
move 3 from 8 to 2
|
||||
move 5 from 6 to 1
|
||||
move 5 from 4 to 6
|
||||
move 1 from 7 to 1
|
||||
move 3 from 9 to 3
|
||||
move 7 from 5 to 7
|
||||
move 1 from 4 to 6
|
||||
move 2 from 7 to 5
|
||||
move 3 from 6 to 1
|
||||
move 3 from 8 to 1
|
||||
move 14 from 3 to 4
|
||||
move 8 from 4 to 2
|
||||
move 1 from 6 to 1
|
||||
move 15 from 1 to 6
|
||||
move 7 from 1 to 6
|
||||
move 6 from 1 to 3
|
||||
move 3 from 3 to 1
|
||||
move 2 from 4 to 5
|
||||
move 1 from 4 to 2
|
||||
move 19 from 6 to 8
|
||||
move 2 from 1 to 8
|
||||
move 4 from 5 to 4
|
||||
move 7 from 8 to 2
|
||||
move 2 from 3 to 1
|
||||
move 13 from 8 to 6
|
||||
move 4 from 4 to 9
|
||||
move 2 from 4 to 8
|
||||
move 2 from 1 to 6
|
||||
move 1 from 3 to 5
|
||||
move 19 from 2 to 3
|
||||
move 13 from 3 to 1
|
||||
move 1 from 4 to 9
|
||||
move 1 from 2 to 8
|
||||
move 3 from 7 to 1
|
||||
move 14 from 6 to 9
|
||||
move 2 from 6 to 4
|
||||
move 18 from 9 to 4
|
||||
move 3 from 7 to 2
|
||||
move 15 from 1 to 4
|
||||
move 2 from 1 to 8
|
||||
move 5 from 3 to 1
|
||||
move 1 from 3 to 6
|
||||
move 5 from 8 to 9
|
||||
move 3 from 9 to 5
|
||||
move 1 from 9 to 5
|
||||
move 1 from 8 to 9
|
||||
move 1 from 6 to 2
|
||||
move 3 from 9 to 4
|
||||
move 2 from 6 to 7
|
||||
move 30 from 4 to 6
|
||||
move 22 from 6 to 9
|
||||
move 6 from 9 to 4
|
||||
move 4 from 6 to 7
|
||||
move 1 from 1 to 6
|
||||
move 1 from 9 to 8
|
||||
move 1 from 7 to 6
|
||||
move 3 from 5 to 3
|
||||
move 5 from 6 to 5
|
||||
move 2 from 7 to 9
|
||||
move 4 from 1 to 5
|
||||
move 1 from 6 to 4
|
||||
move 1 from 8 to 7
|
||||
move 2 from 6 to 4
|
||||
move 17 from 9 to 8
|
||||
move 2 from 2 to 7
|
||||
move 2 from 3 to 1
|
||||
move 8 from 4 to 8
|
||||
move 1 from 3 to 8
|
||||
move 8 from 4 to 2
|
||||
move 2 from 1 to 2
|
||||
move 1 from 4 to 6
|
||||
move 4 from 7 to 1
|
||||
move 1 from 6 to 8
|
||||
move 19 from 8 to 3
|
||||
move 5 from 5 to 1
|
||||
move 5 from 5 to 9
|
||||
move 2 from 9 to 3
|
||||
move 6 from 1 to 9
|
||||
move 1 from 7 to 5
|
||||
move 1 from 7 to 4
|
||||
move 2 from 5 to 7
|
||||
move 2 from 2 to 4
|
||||
move 4 from 9 to 8
|
||||
move 12 from 8 to 7
|
||||
move 2 from 1 to 9
|
||||
move 1 from 7 to 4
|
||||
move 4 from 4 to 5
|
||||
move 3 from 9 to 3
|
||||
move 9 from 2 to 6
|
||||
move 2 from 7 to 5
|
||||
move 1 from 1 to 9
|
||||
move 5 from 9 to 7
|
||||
move 9 from 6 to 2
|
||||
move 6 from 2 to 8
|
||||
move 21 from 3 to 2
|
||||
move 12 from 2 to 9
|
||||
move 3 from 5 to 9
|
||||
move 3 from 3 to 8
|
||||
move 5 from 9 to 6
|
||||
move 13 from 2 to 3
|
||||
move 3 from 6 to 2
|
||||
move 10 from 9 to 8
|
||||
move 6 from 3 to 1
|
||||
move 3 from 2 to 9
|
||||
move 2 from 6 to 7
|
||||
move 5 from 3 to 9
|
||||
move 4 from 1 to 9
|
||||
move 3 from 8 to 5
|
||||
move 1 from 1 to 7
|
||||
move 6 from 5 to 7
|
||||
move 12 from 9 to 7
|
||||
move 1 from 1 to 8
|
||||
move 11 from 8 to 5
|
||||
move 9 from 5 to 7
|
||||
move 1 from 3 to 1
|
||||
move 4 from 8 to 7
|
||||
move 1 from 1 to 7
|
||||
move 2 from 8 to 3
|
||||
move 42 from 7 to 4
|
||||
move 3 from 7 to 9
|
||||
move 4 from 7 to 5
|
||||
move 1 from 7 to 8
|
||||
move 1 from 8 to 5
|
||||
move 1 from 7 to 5
|
||||
move 1 from 3 to 4
|
||||
move 1 from 3 to 9
|
||||
move 1 from 9 to 6
|
||||
move 1 from 6 to 4
|
||||
move 1 from 3 to 5
|
||||
move 3 from 9 to 2
|
||||
move 16 from 4 to 8
|
||||
move 3 from 2 to 4
|
||||
move 1 from 5 to 4
|
||||
move 30 from 4 to 6
|
||||
move 15 from 8 to 3
|
||||
move 2 from 4 to 5
|
||||
move 1 from 8 to 7
|
||||
move 13 from 3 to 6
|
||||
move 1 from 7 to 8
|
||||
move 1 from 3 to 8
|
||||
move 1 from 3 to 8
|
||||
move 4 from 5 to 2
|
||||
move 6 from 5 to 2
|
||||
move 2 from 8 to 6
|
||||
move 43 from 6 to 2
|
||||
move 1 from 6 to 1
|
||||
move 18 from 2 to 4
|
||||
move 24 from 2 to 6
|
||||
move 19 from 6 to 3
|
||||
move 4 from 6 to 3
|
||||
move 2 from 6 to 3
|
||||
move 3 from 3 to 2
|
||||
move 1 from 1 to 3
|
||||
move 23 from 3 to 6
|
||||
move 12 from 4 to 3
|
||||
move 7 from 3 to 9
|
||||
move 13 from 2 to 9
|
||||
move 1 from 8 to 4
|
||||
move 4 from 3 to 8
|
||||
move 6 from 4 to 2
|
||||
move 10 from 9 to 3
|
||||
move 6 from 2 to 9
|
||||
move 8 from 3 to 5
|
||||
move 3 from 5 to 3
|
||||
move 13 from 6 to 5
|
||||
move 4 from 3 to 9
|
||||
move 1 from 4 to 2
|
||||
move 4 from 8 to 3
|
||||
move 1 from 2 to 5
|
||||
move 14 from 9 to 5
|
||||
move 2 from 5 to 4
|
||||
move 2 from 4 to 3
|
||||
move 1 from 9 to 5
|
||||
move 4 from 6 to 1
|
||||
move 1 from 6 to 2
|
||||
move 6 from 3 to 2
|
||||
move 5 from 6 to 8
|
||||
move 2 from 3 to 7
|
||||
move 1 from 8 to 1
|
||||
move 25 from 5 to 7
|
||||
move 3 from 7 to 9
|
||||
move 5 from 2 to 9
|
||||
move 12 from 9 to 8
|
||||
move 3 from 1 to 6
|
||||
move 16 from 8 to 2
|
||||
move 1 from 9 to 2
|
||||
move 1 from 6 to 2
|
||||
move 1 from 1 to 3
|
||||
move 21 from 7 to 3
|
||||
move 2 from 7 to 1
|
||||
move 1 from 7 to 8
|
||||
move 2 from 2 to 1
|
||||
move 2 from 6 to 3
|
||||
move 18 from 2 to 9
|
||||
move 2 from 5 to 1
|
||||
move 1 from 2 to 1
|
||||
move 3 from 5 to 2
|
||||
move 13 from 9 to 1
|
||||
move 3 from 9 to 2
|
||||
move 1 from 8 to 7
|
||||
move 3 from 2 to 6
|
||||
move 2 from 5 to 1
|
||||
move 17 from 3 to 8
|
||||
move 3 from 3 to 8
|
||||
move 2 from 9 to 1
|
||||
move 1 from 7 to 5
|
||||
move 1 from 5 to 3
|
||||
move 2 from 6 to 4
|
||||
move 1 from 6 to 1
|
||||
move 15 from 8 to 2
|
||||
move 2 from 3 to 6
|
||||
move 1 from 8 to 5
|
||||
move 2 from 6 to 8
|
||||
move 13 from 2 to 9
|
||||
move 4 from 9 to 8
|
||||
move 9 from 8 to 9
|
||||
move 3 from 3 to 4
|
||||
move 4 from 9 to 7
|
||||
move 1 from 8 to 6
|
||||
move 1 from 7 to 5
|
||||
move 2 from 5 to 1
|
||||
move 1 from 6 to 3
|
||||
move 4 from 4 to 5
|
||||
move 1 from 4 to 6
|
||||
move 1 from 3 to 7
|
||||
move 1 from 5 to 6
|
||||
move 2 from 7 to 2
|
||||
move 4 from 2 to 3
|
||||
move 3 from 2 to 7
|
||||
move 1 from 3 to 6
|
||||
move 1 from 9 to 6
|
||||
move 2 from 5 to 2
|
||||
move 3 from 9 to 5
|
||||
move 1 from 6 to 1
|
||||
move 3 from 5 to 4
|
||||
move 12 from 1 to 2
|
||||
move 2 from 2 to 4
|
||||
move 2 from 7 to 8
|
||||
move 2 from 3 to 9
|
||||
move 1 from 4 to 7
|
||||
move 1 from 5 to 2
|
||||
move 1 from 8 to 3
|
||||
move 2 from 3 to 6
|
||||
move 7 from 2 to 8
|
||||
move 3 from 4 to 1
|
||||
move 7 from 8 to 5
|
||||
move 7 from 9 to 2
|
||||
move 1 from 4 to 5
|
||||
move 3 from 7 to 6
|
||||
move 5 from 6 to 9
|
||||
move 6 from 9 to 5
|
||||
move 4 from 9 to 6
|
||||
move 1 from 8 to 5
|
||||
move 1 from 7 to 4
|
||||
move 1 from 4 to 2
|
||||
move 2 from 2 to 9
|
||||
move 2 from 9 to 2
|
||||
move 11 from 5 to 3
|
||||
move 2 from 5 to 2
|
||||
move 1 from 2 to 9
|
||||
move 4 from 6 to 9
|
||||
move 1 from 2 to 9
|
||||
move 4 from 3 to 7
|
||||
move 3 from 6 to 4
|
||||
move 1 from 5 to 7
|
||||
move 18 from 1 to 3
|
||||
move 11 from 3 to 2
|
||||
move 1 from 7 to 9
|
||||
move 1 from 5 to 9
|
||||
move 14 from 3 to 6
|
||||
move 15 from 2 to 4
|
||||
move 5 from 2 to 5
|
||||
move 1 from 2 to 5
|
||||
move 1 from 1 to 9
|
||||
move 8 from 4 to 1
|
||||
move 5 from 5 to 9
|
||||
move 9 from 4 to 9
|
||||
move 4 from 7 to 4
|
||||
move 5 from 4 to 8
|
||||
move 2 from 9 to 6
|
||||
move 8 from 1 to 8
|
||||
move 1 from 5 to 3
|
||||
move 1 from 3 to 4
|
||||
move 1 from 1 to 8
|
||||
move 13 from 6 to 3
|
||||
move 9 from 9 to 5
|
||||
move 1 from 2 to 8
|
||||
move 8 from 5 to 1
|
||||
move 1 from 2 to 7
|
||||
9
2022/day5/p1/test.text
Normal file
9
2022/day5/p1/test.text
Normal file
@ -0,0 +1,9 @@
|
||||
[D]
|
||||
[N] [C]
|
||||
[Z] [M] [P]
|
||||
1 2 3
|
||||
|
||||
move 1 from 2 to 1
|
||||
move 3 from 1 to 3
|
||||
move 2 from 2 to 1
|
||||
move 1 from 1 to 2
|
||||
281
2022/day5/p2/day5p2.c
Normal file
281
2022/day5/p2/day5p2.c
Normal file
@ -0,0 +1,281 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
|
||||
|
||||
/*
|
||||
The second part of day 5's problem is that when moving them the order does not change.
|
||||
My solution to this is to use the exact same code except I reverse the order of them as I put them into my TempContainers array,
|
||||
so that they are put into each stack in the correct order.
|
||||
*/
|
||||
|
||||
|
||||
struct Node {
|
||||
char Letter;
|
||||
struct Node * Next;
|
||||
};
|
||||
|
||||
|
||||
int CountLines(char *FileName)
|
||||
{
|
||||
char *Line = malloc(256);
|
||||
int LineCount = 0;
|
||||
|
||||
FILE *File;
|
||||
File = fopen(FileName, "r");
|
||||
|
||||
while (fgets(Line, 256, File) != NULL)
|
||||
{
|
||||
LineCount++;
|
||||
}
|
||||
|
||||
fclose(File);
|
||||
|
||||
return LineCount;
|
||||
}
|
||||
|
||||
|
||||
void GetLine(char *FileName, int LineNumber, char* Line)
|
||||
{
|
||||
|
||||
int CurrentLineNumber = 1;
|
||||
|
||||
FILE *File;
|
||||
File = fopen(FileName, "r");
|
||||
|
||||
while (fgets(Line, 256, File) != NULL)
|
||||
{
|
||||
|
||||
if (CurrentLineNumber == LineNumber)
|
||||
break;
|
||||
|
||||
else
|
||||
CurrentLineNumber++;
|
||||
|
||||
}
|
||||
|
||||
fclose(File);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
|
||||
char FileName[] = "input.text";
|
||||
|
||||
int CollumnNumberLine;
|
||||
|
||||
int Collumns;
|
||||
|
||||
int CurrentLine = 1;
|
||||
char * Line = malloc(256);
|
||||
|
||||
do
|
||||
{
|
||||
|
||||
GetLine(FileName, CurrentLine, Line);
|
||||
|
||||
printf("%s", Line);
|
||||
|
||||
if (isdigit(Line[1]))
|
||||
{
|
||||
CollumnNumberLine = CurrentLine;
|
||||
break;
|
||||
}
|
||||
else
|
||||
CurrentLine++;
|
||||
|
||||
}
|
||||
while (Line != NULL);
|
||||
|
||||
printf("Collumn Number Line : %d\n", CollumnNumberLine);
|
||||
|
||||
Collumns = strlen(Line) / 4;
|
||||
printf("Collumns : %d\n\n", Collumns);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Parsing the starting positions
|
||||
struct Node * Stacks[Collumns];
|
||||
|
||||
for (int i = 0; i < Collumns; i++)
|
||||
{
|
||||
struct Node * TempNode = malloc(sizeof(char) + sizeof(void *));
|
||||
TempNode->Letter = '0';
|
||||
TempNode->Next = NULL;
|
||||
|
||||
Stacks[i] = TempNode;
|
||||
}
|
||||
|
||||
|
||||
int CurrentCollumn = 0; // Actual Collumn Number is this +1
|
||||
int Place;
|
||||
// char * CollumnContent;
|
||||
char ContainerLetter;
|
||||
|
||||
while (CurrentCollumn < Collumns)
|
||||
{
|
||||
CurrentLine = CollumnNumberLine-1;
|
||||
Place = (CurrentCollumn * 4) + 1;
|
||||
|
||||
while (CurrentLine > 0)
|
||||
{
|
||||
GetLine(FileName, CurrentLine, Line);
|
||||
|
||||
ContainerLetter = Line[Place];
|
||||
|
||||
if (ContainerLetter == ' ')
|
||||
break;
|
||||
|
||||
struct Node * Current = Stacks[CurrentCollumn];
|
||||
|
||||
while (Current->Next != NULL)
|
||||
Current = Current->Next;
|
||||
|
||||
|
||||
if (Current->Letter == '0')
|
||||
{
|
||||
Current->Letter = ContainerLetter;
|
||||
}
|
||||
else if (Current->Letter != ContainerLetter)
|
||||
{
|
||||
struct Node * TempNode = malloc(sizeof(char) + sizeof(void *));
|
||||
TempNode->Letter = ContainerLetter;
|
||||
TempNode->Next = NULL;
|
||||
|
||||
Current->Next = TempNode;
|
||||
}
|
||||
|
||||
CurrentLine--;
|
||||
}
|
||||
|
||||
|
||||
CurrentCollumn++;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Parsing the movements
|
||||
CurrentLine = CollumnNumberLine + 2; // Line where movements start
|
||||
|
||||
int Lines = CountLines(FileName);
|
||||
|
||||
// Move the crates
|
||||
while (CurrentLine <= Lines)
|
||||
{
|
||||
GetLine(FileName, CurrentLine, Line);
|
||||
|
||||
int CurrentToken = 0; // Delimiter Token
|
||||
|
||||
// The numbers in the movement line, move x number of crates from a to b
|
||||
int Number; // Number of containers to move
|
||||
int Src; // Source
|
||||
int Dest; // Destination
|
||||
|
||||
char * Token = strtok(Line, " ");
|
||||
|
||||
while (Token != NULL)
|
||||
{
|
||||
if (CurrentToken == 1)
|
||||
Number = atoi(Token);
|
||||
|
||||
else if (CurrentToken == 3)
|
||||
Src = atoi(Token) - 1;
|
||||
|
||||
else if (CurrentToken == 5)
|
||||
Dest = atoi(Token) - 1;
|
||||
|
||||
Token = strtok(NULL, " ");
|
||||
|
||||
CurrentToken++;
|
||||
}
|
||||
|
||||
// Containers that are being moved
|
||||
char TempContainers[Number];
|
||||
|
||||
// Take x off of a and put into letters TempContainers
|
||||
for (int i = 0; i < Number; i++)
|
||||
{
|
||||
struct Node * Current = Stacks[Src];
|
||||
|
||||
while (Current != NULL)
|
||||
{
|
||||
if (Current->Next == NULL)
|
||||
{
|
||||
TempContainers[i] = Current->Letter;
|
||||
Stacks[Src] = NULL;
|
||||
break;
|
||||
}
|
||||
else if (Current->Next->Next == NULL)
|
||||
{
|
||||
TempContainers[i] = Current->Next->Letter;
|
||||
Current->Next = NULL;
|
||||
break;
|
||||
}
|
||||
|
||||
Current = Current->Next;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Take the letters from TempContainers and put them in b
|
||||
for (int i = Number-1; i >= 0; i--)
|
||||
{
|
||||
struct Node * Current = Stacks[Dest];
|
||||
|
||||
while (1)
|
||||
{
|
||||
if (Current == NULL)
|
||||
{
|
||||
struct Node * TempNode = malloc(sizeof(char) + sizeof(void *));
|
||||
TempNode->Letter = TempContainers[i];
|
||||
TempNode->Next = NULL;
|
||||
|
||||
Stacks[Dest] = TempNode;
|
||||
break;
|
||||
}
|
||||
else if (Current->Next == NULL)
|
||||
{
|
||||
struct Node * TempNode = malloc(sizeof(char) + sizeof(void *));
|
||||
TempNode->Letter = TempContainers[i];
|
||||
TempNode->Next = NULL;
|
||||
|
||||
Current->Next = TempNode;
|
||||
break;
|
||||
}
|
||||
|
||||
Current = Current->Next;
|
||||
}
|
||||
}
|
||||
|
||||
CurrentLine++;
|
||||
}
|
||||
|
||||
|
||||
printf("\nTop containers of each stack: ");
|
||||
|
||||
for (int i = 0; i < Collumns; i++)
|
||||
{
|
||||
struct Node * Current = Stacks[i];
|
||||
|
||||
while (Current->Next != NULL)
|
||||
{
|
||||
Current = Current->Next;
|
||||
}
|
||||
|
||||
printf("%c", Current->Letter);
|
||||
}
|
||||
printf("\n");
|
||||
|
||||
|
||||
// Should print out the stacks with the top character CMZ
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
||||
512
2022/day5/p2/input.text
Normal file
512
2022/day5/p2/input.text
Normal file
@ -0,0 +1,512 @@
|
||||
[H] [D] [P]
|
||||
[W] [B] [C] [Z] [D]
|
||||
[T] [J] [T] [J] [D] [J]
|
||||
[H] [Z] [H] [H] [W] [S] [M]
|
||||
[P] [F] [R] [P] [Z] [F] [W] [F]
|
||||
[J] [V] [T] [N] [F] [G] [Z] [S] [S]
|
||||
[C] [R] [P] [S] [V] [M] [V] [D] [Z]
|
||||
[F] [G] [H] [Z] [N] [P] [M] [N] [D]
|
||||
1 2 3 4 5 6 7 8 9
|
||||
|
||||
move 2 from 8 to 2
|
||||
move 3 from 9 to 2
|
||||
move 1 from 3 to 8
|
||||
move 5 from 1 to 7
|
||||
move 2 from 9 to 2
|
||||
move 8 from 2 to 4
|
||||
move 6 from 7 to 2
|
||||
move 2 from 1 to 7
|
||||
move 4 from 5 to 9
|
||||
move 4 from 5 to 6
|
||||
move 1 from 8 to 3
|
||||
move 1 from 8 to 5
|
||||
move 2 from 9 to 8
|
||||
move 8 from 6 to 4
|
||||
move 4 from 3 to 6
|
||||
move 10 from 2 to 3
|
||||
move 1 from 5 to 1
|
||||
move 1 from 7 to 4
|
||||
move 2 from 9 to 8
|
||||
move 18 from 4 to 8
|
||||
move 1 from 1 to 6
|
||||
move 4 from 7 to 3
|
||||
move 12 from 8 to 4
|
||||
move 4 from 7 to 9
|
||||
move 5 from 6 to 9
|
||||
move 2 from 2 to 7
|
||||
move 3 from 9 to 5
|
||||
move 3 from 5 to 9
|
||||
move 1 from 2 to 8
|
||||
move 10 from 3 to 1
|
||||
move 2 from 7 to 8
|
||||
move 10 from 1 to 9
|
||||
move 1 from 3 to 5
|
||||
move 16 from 9 to 8
|
||||
move 1 from 3 to 2
|
||||
move 3 from 8 to 3
|
||||
move 1 from 5 to 9
|
||||
move 3 from 6 to 7
|
||||
move 2 from 7 to 2
|
||||
move 1 from 3 to 8
|
||||
move 5 from 4 to 1
|
||||
move 4 from 9 to 5
|
||||
move 2 from 2 to 5
|
||||
move 2 from 1 to 9
|
||||
move 23 from 8 to 4
|
||||
move 6 from 5 to 2
|
||||
move 5 from 2 to 6
|
||||
move 1 from 9 to 6
|
||||
move 2 from 2 to 4
|
||||
move 35 from 4 to 9
|
||||
move 1 from 6 to 1
|
||||
move 2 from 8 to 7
|
||||
move 1 from 6 to 8
|
||||
move 3 from 1 to 7
|
||||
move 1 from 7 to 1
|
||||
move 3 from 6 to 2
|
||||
move 4 from 3 to 7
|
||||
move 6 from 7 to 9
|
||||
move 1 from 6 to 9
|
||||
move 1 from 8 to 1
|
||||
move 2 from 2 to 9
|
||||
move 2 from 8 to 2
|
||||
move 3 from 7 to 3
|
||||
move 2 from 1 to 9
|
||||
move 5 from 9 to 3
|
||||
move 1 from 4 to 2
|
||||
move 1 from 1 to 4
|
||||
move 7 from 3 to 9
|
||||
move 1 from 3 to 4
|
||||
move 2 from 4 to 7
|
||||
move 24 from 9 to 4
|
||||
move 12 from 9 to 3
|
||||
move 1 from 3 to 1
|
||||
move 1 from 1 to 2
|
||||
move 2 from 2 to 6
|
||||
move 1 from 6 to 5
|
||||
move 1 from 6 to 8
|
||||
move 3 from 2 to 4
|
||||
move 1 from 7 to 4
|
||||
move 1 from 5 to 3
|
||||
move 1 from 9 to 8
|
||||
move 23 from 4 to 8
|
||||
move 17 from 8 to 5
|
||||
move 12 from 9 to 8
|
||||
move 10 from 8 to 7
|
||||
move 1 from 8 to 6
|
||||
move 5 from 4 to 3
|
||||
move 3 from 5 to 1
|
||||
move 3 from 1 to 6
|
||||
move 6 from 5 to 4
|
||||
move 10 from 3 to 1
|
||||
move 9 from 1 to 7
|
||||
move 2 from 4 to 9
|
||||
move 1 from 1 to 6
|
||||
move 4 from 8 to 1
|
||||
move 4 from 3 to 7
|
||||
move 4 from 6 to 5
|
||||
move 1 from 9 to 6
|
||||
move 1 from 9 to 2
|
||||
move 1 from 1 to 7
|
||||
move 1 from 2 to 7
|
||||
move 3 from 1 to 7
|
||||
move 9 from 5 to 9
|
||||
move 7 from 9 to 7
|
||||
move 2 from 9 to 1
|
||||
move 3 from 5 to 9
|
||||
move 3 from 4 to 8
|
||||
move 1 from 1 to 2
|
||||
move 1 from 2 to 6
|
||||
move 1 from 1 to 6
|
||||
move 5 from 8 to 7
|
||||
move 1 from 8 to 1
|
||||
move 1 from 3 to 9
|
||||
move 1 from 1 to 6
|
||||
move 2 from 9 to 5
|
||||
move 2 from 3 to 9
|
||||
move 4 from 6 to 3
|
||||
move 1 from 9 to 4
|
||||
move 2 from 4 to 8
|
||||
move 1 from 4 to 8
|
||||
move 1 from 9 to 5
|
||||
move 1 from 6 to 8
|
||||
move 23 from 7 to 8
|
||||
move 27 from 8 to 2
|
||||
move 2 from 8 to 1
|
||||
move 23 from 2 to 6
|
||||
move 3 from 5 to 3
|
||||
move 4 from 2 to 5
|
||||
move 2 from 3 to 1
|
||||
move 2 from 9 to 3
|
||||
move 4 from 1 to 4
|
||||
move 13 from 7 to 9
|
||||
move 1 from 5 to 6
|
||||
move 2 from 5 to 9
|
||||
move 1 from 5 to 3
|
||||
move 3 from 9 to 3
|
||||
move 5 from 9 to 5
|
||||
move 2 from 4 to 2
|
||||
move 1 from 4 to 9
|
||||
move 11 from 6 to 9
|
||||
move 9 from 6 to 1
|
||||
move 17 from 9 to 5
|
||||
move 3 from 7 to 4
|
||||
move 3 from 6 to 3
|
||||
move 14 from 5 to 2
|
||||
move 5 from 3 to 1
|
||||
move 2 from 9 to 4
|
||||
move 2 from 3 to 8
|
||||
move 5 from 5 to 9
|
||||
move 2 from 5 to 4
|
||||
move 7 from 1 to 8
|
||||
move 2 from 9 to 5
|
||||
move 3 from 9 to 8
|
||||
move 8 from 4 to 2
|
||||
move 2 from 7 to 8
|
||||
move 10 from 2 to 9
|
||||
move 10 from 2 to 6
|
||||
move 8 from 9 to 7
|
||||
move 2 from 3 to 9
|
||||
move 3 from 9 to 8
|
||||
move 5 from 3 to 9
|
||||
move 7 from 7 to 9
|
||||
move 3 from 2 to 9
|
||||
move 10 from 8 to 5
|
||||
move 1 from 7 to 6
|
||||
move 1 from 2 to 3
|
||||
move 4 from 1 to 6
|
||||
move 2 from 8 to 4
|
||||
move 1 from 4 to 6
|
||||
move 2 from 6 to 3
|
||||
move 2 from 3 to 1
|
||||
move 1 from 4 to 9
|
||||
move 4 from 1 to 5
|
||||
move 2 from 5 to 2
|
||||
move 2 from 8 to 4
|
||||
move 1 from 3 to 5
|
||||
move 3 from 5 to 7
|
||||
move 2 from 2 to 9
|
||||
move 3 from 7 to 6
|
||||
move 3 from 8 to 5
|
||||
move 10 from 5 to 7
|
||||
move 3 from 6 to 4
|
||||
move 11 from 6 to 1
|
||||
move 3 from 6 to 2
|
||||
move 12 from 1 to 3
|
||||
move 1 from 7 to 5
|
||||
move 9 from 7 to 3
|
||||
move 5 from 5 to 1
|
||||
move 4 from 4 to 6
|
||||
move 2 from 1 to 7
|
||||
move 1 from 2 to 6
|
||||
move 2 from 7 to 8
|
||||
move 1 from 2 to 4
|
||||
move 1 from 9 to 5
|
||||
move 3 from 6 to 7
|
||||
move 1 from 5 to 2
|
||||
move 9 from 9 to 5
|
||||
move 1 from 2 to 8
|
||||
move 1 from 4 to 8
|
||||
move 1 from 1 to 8
|
||||
move 1 from 4 to 2
|
||||
move 1 from 7 to 2
|
||||
move 1 from 6 to 2
|
||||
move 1 from 6 to 8
|
||||
move 6 from 9 to 6
|
||||
move 1 from 3 to 4
|
||||
move 9 from 3 to 5
|
||||
move 1 from 1 to 3
|
||||
move 2 from 2 to 6
|
||||
move 1 from 3 to 5
|
||||
move 14 from 5 to 1
|
||||
move 1 from 2 to 6
|
||||
move 5 from 6 to 4
|
||||
move 3 from 8 to 2
|
||||
move 5 from 6 to 1
|
||||
move 5 from 4 to 6
|
||||
move 1 from 7 to 1
|
||||
move 3 from 9 to 3
|
||||
move 7 from 5 to 7
|
||||
move 1 from 4 to 6
|
||||
move 2 from 7 to 5
|
||||
move 3 from 6 to 1
|
||||
move 3 from 8 to 1
|
||||
move 14 from 3 to 4
|
||||
move 8 from 4 to 2
|
||||
move 1 from 6 to 1
|
||||
move 15 from 1 to 6
|
||||
move 7 from 1 to 6
|
||||
move 6 from 1 to 3
|
||||
move 3 from 3 to 1
|
||||
move 2 from 4 to 5
|
||||
move 1 from 4 to 2
|
||||
move 19 from 6 to 8
|
||||
move 2 from 1 to 8
|
||||
move 4 from 5 to 4
|
||||
move 7 from 8 to 2
|
||||
move 2 from 3 to 1
|
||||
move 13 from 8 to 6
|
||||
move 4 from 4 to 9
|
||||
move 2 from 4 to 8
|
||||
move 2 from 1 to 6
|
||||
move 1 from 3 to 5
|
||||
move 19 from 2 to 3
|
||||
move 13 from 3 to 1
|
||||
move 1 from 4 to 9
|
||||
move 1 from 2 to 8
|
||||
move 3 from 7 to 1
|
||||
move 14 from 6 to 9
|
||||
move 2 from 6 to 4
|
||||
move 18 from 9 to 4
|
||||
move 3 from 7 to 2
|
||||
move 15 from 1 to 4
|
||||
move 2 from 1 to 8
|
||||
move 5 from 3 to 1
|
||||
move 1 from 3 to 6
|
||||
move 5 from 8 to 9
|
||||
move 3 from 9 to 5
|
||||
move 1 from 9 to 5
|
||||
move 1 from 8 to 9
|
||||
move 1 from 6 to 2
|
||||
move 3 from 9 to 4
|
||||
move 2 from 6 to 7
|
||||
move 30 from 4 to 6
|
||||
move 22 from 6 to 9
|
||||
move 6 from 9 to 4
|
||||
move 4 from 6 to 7
|
||||
move 1 from 1 to 6
|
||||
move 1 from 9 to 8
|
||||
move 1 from 7 to 6
|
||||
move 3 from 5 to 3
|
||||
move 5 from 6 to 5
|
||||
move 2 from 7 to 9
|
||||
move 4 from 1 to 5
|
||||
move 1 from 6 to 4
|
||||
move 1 from 8 to 7
|
||||
move 2 from 6 to 4
|
||||
move 17 from 9 to 8
|
||||
move 2 from 2 to 7
|
||||
move 2 from 3 to 1
|
||||
move 8 from 4 to 8
|
||||
move 1 from 3 to 8
|
||||
move 8 from 4 to 2
|
||||
move 2 from 1 to 2
|
||||
move 1 from 4 to 6
|
||||
move 4 from 7 to 1
|
||||
move 1 from 6 to 8
|
||||
move 19 from 8 to 3
|
||||
move 5 from 5 to 1
|
||||
move 5 from 5 to 9
|
||||
move 2 from 9 to 3
|
||||
move 6 from 1 to 9
|
||||
move 1 from 7 to 5
|
||||
move 1 from 7 to 4
|
||||
move 2 from 5 to 7
|
||||
move 2 from 2 to 4
|
||||
move 4 from 9 to 8
|
||||
move 12 from 8 to 7
|
||||
move 2 from 1 to 9
|
||||
move 1 from 7 to 4
|
||||
move 4 from 4 to 5
|
||||
move 3 from 9 to 3
|
||||
move 9 from 2 to 6
|
||||
move 2 from 7 to 5
|
||||
move 1 from 1 to 9
|
||||
move 5 from 9 to 7
|
||||
move 9 from 6 to 2
|
||||
move 6 from 2 to 8
|
||||
move 21 from 3 to 2
|
||||
move 12 from 2 to 9
|
||||
move 3 from 5 to 9
|
||||
move 3 from 3 to 8
|
||||
move 5 from 9 to 6
|
||||
move 13 from 2 to 3
|
||||
move 3 from 6 to 2
|
||||
move 10 from 9 to 8
|
||||
move 6 from 3 to 1
|
||||
move 3 from 2 to 9
|
||||
move 2 from 6 to 7
|
||||
move 5 from 3 to 9
|
||||
move 4 from 1 to 9
|
||||
move 3 from 8 to 5
|
||||
move 1 from 1 to 7
|
||||
move 6 from 5 to 7
|
||||
move 12 from 9 to 7
|
||||
move 1 from 1 to 8
|
||||
move 11 from 8 to 5
|
||||
move 9 from 5 to 7
|
||||
move 1 from 3 to 1
|
||||
move 4 from 8 to 7
|
||||
move 1 from 1 to 7
|
||||
move 2 from 8 to 3
|
||||
move 42 from 7 to 4
|
||||
move 3 from 7 to 9
|
||||
move 4 from 7 to 5
|
||||
move 1 from 7 to 8
|
||||
move 1 from 8 to 5
|
||||
move 1 from 7 to 5
|
||||
move 1 from 3 to 4
|
||||
move 1 from 3 to 9
|
||||
move 1 from 9 to 6
|
||||
move 1 from 6 to 4
|
||||
move 1 from 3 to 5
|
||||
move 3 from 9 to 2
|
||||
move 16 from 4 to 8
|
||||
move 3 from 2 to 4
|
||||
move 1 from 5 to 4
|
||||
move 30 from 4 to 6
|
||||
move 15 from 8 to 3
|
||||
move 2 from 4 to 5
|
||||
move 1 from 8 to 7
|
||||
move 13 from 3 to 6
|
||||
move 1 from 7 to 8
|
||||
move 1 from 3 to 8
|
||||
move 1 from 3 to 8
|
||||
move 4 from 5 to 2
|
||||
move 6 from 5 to 2
|
||||
move 2 from 8 to 6
|
||||
move 43 from 6 to 2
|
||||
move 1 from 6 to 1
|
||||
move 18 from 2 to 4
|
||||
move 24 from 2 to 6
|
||||
move 19 from 6 to 3
|
||||
move 4 from 6 to 3
|
||||
move 2 from 6 to 3
|
||||
move 3 from 3 to 2
|
||||
move 1 from 1 to 3
|
||||
move 23 from 3 to 6
|
||||
move 12 from 4 to 3
|
||||
move 7 from 3 to 9
|
||||
move 13 from 2 to 9
|
||||
move 1 from 8 to 4
|
||||
move 4 from 3 to 8
|
||||
move 6 from 4 to 2
|
||||
move 10 from 9 to 3
|
||||
move 6 from 2 to 9
|
||||
move 8 from 3 to 5
|
||||
move 3 from 5 to 3
|
||||
move 13 from 6 to 5
|
||||
move 4 from 3 to 9
|
||||
move 1 from 4 to 2
|
||||
move 4 from 8 to 3
|
||||
move 1 from 2 to 5
|
||||
move 14 from 9 to 5
|
||||
move 2 from 5 to 4
|
||||
move 2 from 4 to 3
|
||||
move 1 from 9 to 5
|
||||
move 4 from 6 to 1
|
||||
move 1 from 6 to 2
|
||||
move 6 from 3 to 2
|
||||
move 5 from 6 to 8
|
||||
move 2 from 3 to 7
|
||||
move 1 from 8 to 1
|
||||
move 25 from 5 to 7
|
||||
move 3 from 7 to 9
|
||||
move 5 from 2 to 9
|
||||
move 12 from 9 to 8
|
||||
move 3 from 1 to 6
|
||||
move 16 from 8 to 2
|
||||
move 1 from 9 to 2
|
||||
move 1 from 6 to 2
|
||||
move 1 from 1 to 3
|
||||
move 21 from 7 to 3
|
||||
move 2 from 7 to 1
|
||||
move 1 from 7 to 8
|
||||
move 2 from 2 to 1
|
||||
move 2 from 6 to 3
|
||||
move 18 from 2 to 9
|
||||
move 2 from 5 to 1
|
||||
move 1 from 2 to 1
|
||||
move 3 from 5 to 2
|
||||
move 13 from 9 to 1
|
||||
move 3 from 9 to 2
|
||||
move 1 from 8 to 7
|
||||
move 3 from 2 to 6
|
||||
move 2 from 5 to 1
|
||||
move 17 from 3 to 8
|
||||
move 3 from 3 to 8
|
||||
move 2 from 9 to 1
|
||||
move 1 from 7 to 5
|
||||
move 1 from 5 to 3
|
||||
move 2 from 6 to 4
|
||||
move 1 from 6 to 1
|
||||
move 15 from 8 to 2
|
||||
move 2 from 3 to 6
|
||||
move 1 from 8 to 5
|
||||
move 2 from 6 to 8
|
||||
move 13 from 2 to 9
|
||||
move 4 from 9 to 8
|
||||
move 9 from 8 to 9
|
||||
move 3 from 3 to 4
|
||||
move 4 from 9 to 7
|
||||
move 1 from 8 to 6
|
||||
move 1 from 7 to 5
|
||||
move 2 from 5 to 1
|
||||
move 1 from 6 to 3
|
||||
move 4 from 4 to 5
|
||||
move 1 from 4 to 6
|
||||
move 1 from 3 to 7
|
||||
move 1 from 5 to 6
|
||||
move 2 from 7 to 2
|
||||
move 4 from 2 to 3
|
||||
move 3 from 2 to 7
|
||||
move 1 from 3 to 6
|
||||
move 1 from 9 to 6
|
||||
move 2 from 5 to 2
|
||||
move 3 from 9 to 5
|
||||
move 1 from 6 to 1
|
||||
move 3 from 5 to 4
|
||||
move 12 from 1 to 2
|
||||
move 2 from 2 to 4
|
||||
move 2 from 7 to 8
|
||||
move 2 from 3 to 9
|
||||
move 1 from 4 to 7
|
||||
move 1 from 5 to 2
|
||||
move 1 from 8 to 3
|
||||
move 2 from 3 to 6
|
||||
move 7 from 2 to 8
|
||||
move 3 from 4 to 1
|
||||
move 7 from 8 to 5
|
||||
move 7 from 9 to 2
|
||||
move 1 from 4 to 5
|
||||
move 3 from 7 to 6
|
||||
move 5 from 6 to 9
|
||||
move 6 from 9 to 5
|
||||
move 4 from 9 to 6
|
||||
move 1 from 8 to 5
|
||||
move 1 from 7 to 4
|
||||
move 1 from 4 to 2
|
||||
move 2 from 2 to 9
|
||||
move 2 from 9 to 2
|
||||
move 11 from 5 to 3
|
||||
move 2 from 5 to 2
|
||||
move 1 from 2 to 9
|
||||
move 4 from 6 to 9
|
||||
move 1 from 2 to 9
|
||||
move 4 from 3 to 7
|
||||
move 3 from 6 to 4
|
||||
move 1 from 5 to 7
|
||||
move 18 from 1 to 3
|
||||
move 11 from 3 to 2
|
||||
move 1 from 7 to 9
|
||||
move 1 from 5 to 9
|
||||
move 14 from 3 to 6
|
||||
move 15 from 2 to 4
|
||||
move 5 from 2 to 5
|
||||
move 1 from 2 to 5
|
||||
move 1 from 1 to 9
|
||||
move 8 from 4 to 1
|
||||
move 5 from 5 to 9
|
||||
move 9 from 4 to 9
|
||||
move 4 from 7 to 4
|
||||
move 5 from 4 to 8
|
||||
move 2 from 9 to 6
|
||||
move 8 from 1 to 8
|
||||
move 1 from 5 to 3
|
||||
move 1 from 3 to 4
|
||||
move 1 from 1 to 8
|
||||
move 13 from 6 to 3
|
||||
move 9 from 9 to 5
|
||||
move 1 from 2 to 8
|
||||
move 8 from 5 to 1
|
||||
move 1 from 2 to 7
|
||||
9
2022/day5/p2/test.text
Normal file
9
2022/day5/p2/test.text
Normal file
@ -0,0 +1,9 @@
|
||||
[D]
|
||||
[N] [C]
|
||||
[Z] [M] [P]
|
||||
1 2 3
|
||||
|
||||
move 1 from 2 to 1
|
||||
move 3 from 1 to 3
|
||||
move 2 from 2 to 1
|
||||
move 1 from 1 to 2
|
||||
121
2022/day6/p1/day6p1.c
Normal file
121
2022/day6/p1/day6p1.c
Normal file
@ -0,0 +1,121 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
int MARKER_LENGTH = 4;
|
||||
int MAX_LENGTH = 4095;
|
||||
|
||||
int CountLines(char * FileName)
|
||||
{
|
||||
char *Line = malloc(MAX_LENGTH);
|
||||
int LineCount = 0;
|
||||
|
||||
FILE *File;
|
||||
File = fopen(FileName, "r");
|
||||
|
||||
while (fgets(Line, MAX_LENGTH, File) != NULL)
|
||||
{
|
||||
LineCount++;
|
||||
}
|
||||
|
||||
fclose(File);
|
||||
|
||||
return LineCount;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void GetLine(char * FileName, int LineNumber, char * Line)
|
||||
{
|
||||
|
||||
int CurrentLineNumber = 1;
|
||||
|
||||
FILE * File;
|
||||
File = fopen(FileName, "r");
|
||||
|
||||
while (fgets(Line, MAX_LENGTH, File) != NULL)
|
||||
{
|
||||
if (CurrentLineNumber == LineNumber)
|
||||
break;
|
||||
|
||||
else
|
||||
CurrentLineNumber++;
|
||||
|
||||
}
|
||||
|
||||
fclose(File);
|
||||
}
|
||||
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
char Marker[MARKER_LENGTH];
|
||||
|
||||
char FileName[] = "input.text";
|
||||
int LineCount = CountLines(FileName);
|
||||
int CurrentLine = 1;
|
||||
char * Line = malloc(MAX_LENGTH);
|
||||
|
||||
do
|
||||
{
|
||||
// Clear Marker for new line
|
||||
for (int i = 0; i < MARKER_LENGTH; i++)
|
||||
Marker[i] = '\0';
|
||||
|
||||
GetLine(FileName, CurrentLine, Line);
|
||||
|
||||
for (int i = 0; i < strlen(Line); i++)
|
||||
{
|
||||
if (i < MARKER_LENGTH)
|
||||
{
|
||||
if (!Marker[i])
|
||||
{
|
||||
Marker[i] = Line[i];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
bool Repeat = false;
|
||||
|
||||
for (int a = 0; a < MARKER_LENGTH; a++)
|
||||
{
|
||||
for (int b = 0; b < MARKER_LENGTH; b++)
|
||||
{
|
||||
if (Marker[a] == Marker[b] && a != b)
|
||||
{
|
||||
Repeat = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!Repeat)
|
||||
{
|
||||
printf("Marker starts at character %d\n", i);
|
||||
for (int x = 0; x < MARKER_LENGTH; x++)
|
||||
printf("%c", Marker[x]);
|
||||
printf("\n");
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Shift everything in Marker to the left by one
|
||||
Marker[0] = '\0';
|
||||
|
||||
for (int x = 1; x < MARKER_LENGTH; x++)
|
||||
Marker[x-1] = Marker[x];
|
||||
|
||||
Marker[3] = Line[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CurrentLine++;
|
||||
|
||||
}
|
||||
while (CurrentLine <= LineCount);
|
||||
|
||||
return 1;
|
||||
}
|
||||
1
2022/day6/p1/input.text
Normal file
1
2022/day6/p1/input.text
Normal file
@ -0,0 +1 @@
|
||||
bhzhtzzsczszsjjjzddfzdfzfjfzfbbnntnzznwzzvfvrrqmrmmdzzfqfhqhsqqpwpgwpppbtbnnstthmhrrsmmvsmmhjmjfmfsfjfnfnjjvcjjszjszjsszbznzbnzndzzmlldsdgdcddmqmfqqlcllbvllztzctzczdzttlmtlthtmhtmhmmszsllvzvdzzzsqzqbqccvfvcffzsfslfsllcglclwlvwvzzdsslggtzzgzdzmzddjljvvztttsgscsstztjztjztzvzwwthtftppnmpmmcpmmjlmjjjsfjsjppgcgwcggzffzwzbbmbrbprpqqpccfncfnffvcffsqqtzqzqwzwvzwwwbjbfbcbfblltnlnhhcthtvvzzfcfgfddlggbbshsggplglqqbrbggsvvzdvvlfvlvpvhhmggbrrnppjfjhffttfpffbdfbfvfqvvtcvvbvnnhbhhglgjgzzghhwrrtntrtwwfdfdmmcmtctftpptllzqllzflfrrgqgvgdvdfdbddprrrgccqvqnnmtmvmffpzzqggfbfnfwwqdqldqqlnqnttnbttrffnmmzwzjjtrjtrtmmqsmqmffqmfqfhhbthbhdhvdhvdvmvdmdhdshsqslldzztvvmzzdcccmbbhfhshrrrpsrrqqmdmmgdmmwdmdjdqqmcmttpgtgwgpwpprbrprhrsrllhsllprlplhppfzpffbhbccwdwbbrpbpvpqqmsspjssmbbmfmrmnrnwwgbwwbpwpjwwhqqgcqcvqccgffzpfftcffqlqjjznnlflhhlcczhzvhzhmzhmhfhnnqznntstwtggqjgjhggsvslltjlttfjjgffjzjwzzqzrrhlhzhbhphmhlmlzmzsmzmccvllgrrpbrbfbjfjttqjttdrdhhggqgddppqgpqgpgtptjptpllwccmwcmcpmcppdrrtstqqczqzvvlsltlddnvdvggcqqblqqsjqjttzhtzzszllqsqfqddqdbqddwqddfzzlczcscfsfpfdpdrpddsggcqchcfcpcssstwstwtggghvhqhzzqssjddwjwbjjsnjnfnwwglwwfnfhnnscsggzgjzzhzmmqfqsqwqrwqqqdtdcttzvvnbngbbcdbdggddnmddgzghhzgghwwbjbttlwlcctlccwwdhhrqrvrjjlglssgttpllwclwwtptwptwtvthtbhbzhbzhhrsrwwwnrwrfwfnwnhhnqqdjqjpqqwdwttzhttcdttvztzltzlzmzddrsdsfdsfftdfffmwffrjrffqrfqfsfqqqgqjggwzzrnnqfnqffdbfbtbbrpbrpbptpwttjmjjzrrhhqppdzdtdjttqwwtddjdzzmgzzhwwwdsdgssprsrgsgbbphhdpdwppnfppdqqwzzpbzzqwqpqsqhqdhqqtwwjnnmvmwvmmwwgjgzjjvcjcvcjcnjcncmmphmmvmwmwpwbbtbffhnhshgssgvgvrrbwbtbddqmqfqvvfqvqdvvdbvdbdcdfdlflmffrwwgmmttrztrrfrqrpqrrzjrjpjdpjprrnhhbhcbbcwwqlwwcssbddfrfjrfjfrjfjvvdmdtdzzlvzlzhzmhmhphchnnfqnffvccfpfbfpfqpprrmttzrzzjzmjmzjmmfvmmrzrqqdllgjlglcchssgllsbllrbrlrjlrrhhfwwsqwsstpssznzcznzqzssvtvtrrqwqvvtssgfsfhssljjnwjnjddjdggclcrrfsfhsstgtdtctfttvvsbvvbtbttcgcssjlslhlpljpppwzwnwdnngmgjjbzznwwdllrrfppshhvdhhldhdbbdbjbdjjrnjjzhzfhhsqqbqgmsbvnjsptlrsszlqfmgprvscphmqztbgtlrqvcgdzcptcqjncrdtfqnghnbmwwmcjgtjlbvqqzslgbbntrdfnvfjvfgcgngndjcspgwmpnsrqzzvzljbzlzzrwflrqqqmhsvqwbmdftnhwwzgqrlhddbbtwvbphljmstcjzvpjqwcnhlvpqvqdgvntgqzqwrlwbwvngwtqgrhznlzcvbwqmwncccjctrdzrmzjsvrmcfpjjcczhbvdfwhqvczggfmrspvprvvthvtqnsphpcsdmbrtbdqljvssdrhwjsrrlzprstpgqcbpmnpdgzgjttwcfrgjnsghmszlclgvmlsjrqfvflbnhwwphtvrnrbhdvdglcvgpzfsjpwwhtlvvdzthsrldfzhnlrblzsjjnwclqsqzgdbflhvpwcrtfbfbjcjttbjpvfgvfcswnqqwshbmqlscdzzwshfqwsvwnwzltbnrmzzhzvtwpzqcgwshpvzgtcmwrtrwctnpzbznnwqphnrgwljtrcwlqmvlndwrdrctztnmswslqmbjcmtlrmcpjvzccqszrnflqnqzttbhqlrhbmqdpscqvfgtdbnwjdcljwcbgbgjfzgrgpwqzqgbnrtpntfthhdbqmswvhnmwmszpghgjjzrbnbbfjblpstdfslmmmqfdcrhblqjqfphnldrvvfpnfrcvprjnqbzbspfpjtgqhnjbhnrwzcjvdbshhqpgrmzqpmjfmqwqvvdbddbsldwzzsrhnhsjjnvljrbwcnjrnjpmrrvfthftgptgtlpbgqffthflgftwcrqcqwqwrmrcmfrcqgmrnqjbscdcgrqlhjzthvzdgjbvpswflqcgsnlmgmvcsttsgmnqdtvwdvrndvfdcvrcwmqlmlhtrvthsndsrmnsfmdmfnpfmfhzjqmtcjzcrnsjdztztvgdtlrmbdmmstbfgpmmzthcslpvgrpgfljfgqlqhldfwvvvdvbzjtdtppbtrnqwsqztjrsjhtfrgmvsdngvsdzjgpwrldqpzdpvhljzpjvttwltdwcrhcbrgrvdrmpwvdwjchqsjfprbgtjtzggvgrgmlvvwqrjfprbbgjjqrtdfnrdffwbswbvqtqtfsrhsgrjhftqldhmcnmsnfflmdrzqdjmbqqgqsttdmtrrvfsjnccnhcpcvqtrzdjzrpwswmjvvgsgwvnmdgqwlctrlhqnsmczbwsjhmtgvdcgsndzlstcwchcztqqbtdwfvlljdvdlzljslgnzpmqvzfcvqhdzvgchffqgfwrnmwqzwgbzblpmvddlvnhglrhdnwzqwztzgjczjpwcjwmpnrnrhncfjfggrbphrjztwtfqmfjlwfhnqfftfghbnvtwgtmdzzrdrtmfrwhrrbhzmcllsgqzwzzqtgdggvzptvtdcpzmtmsfcfbjtzlbdrwhdbtdhhrgggmddnzsvjwgcdcqfppqwphfvlhmgqsznlhmgpnjvcvrwwppnphchgsrhjwjcpjggsrcwrvnllfgrmjltfzwhmbqwpwwzmrtlqcprrqztcgnghcbvzrbfptjmhtdcfhhffdbrswqpnpppnpqwtflrrmqgjzctmmvvvwzllbsfdvpqjtmvpjcpmjztscsgbdznfgcmtjzdqzwqrsvstnnvddcstzqjtnbsnlptpmbmfqmhppgnjrffqrtchgptbmwlwbwbcqqfngpbwtwdmlmdstmqwcwjtbwbbbhghgptmvhfmvqfvpwqzwnbjdhpwlgjgvprdjbnlzhnllssbpvzfzspwsscfpqtpdvtzvqncfrfrgddsdglqvpblmpcczlqfdmwzmgvrljhqtcglcvfhbdwhbttqqrjbqwhsrhrbjwmtqwqddvdggdwfsmnpbpvvgsqnvvrqntwmbzdnqpmmqtbnlsbmslpfmqjtgvbddhwvlvjtlrhqdpfnjwtbhwjwdrpgctbbrdqvbbnvgqwngrhqfvwzmlqtmhfqphnmczlbdpnbmpvwrsjbcnjnvcfgnsvlhpzdgdzgvfbgwdcrswznrggnghzssdwqvvlwftqhbnwdvghhvjlqqmcnqmvbwhrrnsswlwmwbsmpcpdzzgmcmqnzpvjpzqbwcsgdhqtqhcpbtqftvscmntsbdcbrndvlfhprpblzbjcpqhfljtvnvtgvrcgqbsgl
|
||||
4
2022/day6/p1/test.text
Normal file
4
2022/day6/p1/test.text
Normal file
@ -0,0 +1,4 @@
|
||||
bvwbjplbgvbhsrlpgdmjqwftvncz
|
||||
nppdvjthqldpwncqszvftbrmjlhg
|
||||
nznrnfrfntjfmvfwmzdfjlvtqnbhcprsg
|
||||
zcfzfwzzqfrljwzlrfnpqdbhtmscgvjw
|
||||
121
2022/day6/p2/day6p2.c
Normal file
121
2022/day6/p2/day6p2.c
Normal file
@ -0,0 +1,121 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
int MARKER_LENGTH = 14;
|
||||
int MAX_LENGTH = 4095;
|
||||
|
||||
int CountLines(char * FileName)
|
||||
{
|
||||
char *Line = malloc(MAX_LENGTH);
|
||||
int LineCount = 0;
|
||||
|
||||
FILE *File;
|
||||
File = fopen(FileName, "r");
|
||||
|
||||
while (fgets(Line, MAX_LENGTH, File) != NULL)
|
||||
{
|
||||
LineCount++;
|
||||
}
|
||||
|
||||
fclose(File);
|
||||
|
||||
return LineCount;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void GetLine(char * FileName, int LineNumber, char * Line)
|
||||
{
|
||||
|
||||
int CurrentLineNumber = 1;
|
||||
|
||||
FILE * File;
|
||||
File = fopen(FileName, "r");
|
||||
|
||||
while (fgets(Line, MAX_LENGTH, File) != NULL)
|
||||
{
|
||||
if (CurrentLineNumber == LineNumber)
|
||||
break;
|
||||
|
||||
else
|
||||
CurrentLineNumber++;
|
||||
|
||||
}
|
||||
|
||||
fclose(File);
|
||||
}
|
||||
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
char Marker[MARKER_LENGTH];
|
||||
|
||||
char FileName[] = "input.text";
|
||||
int LineCount = CountLines(FileName);
|
||||
int CurrentLine = 1;
|
||||
char * Line = malloc(MAX_LENGTH);
|
||||
|
||||
do
|
||||
{
|
||||
// Clear Marker for new line
|
||||
for (int i = 0; i < MARKER_LENGTH; i++)
|
||||
Marker[i] = '\0';
|
||||
|
||||
GetLine(FileName, CurrentLine, Line);
|
||||
|
||||
for (int i = 0; i < strlen(Line); i++)
|
||||
{
|
||||
if (i < MARKER_LENGTH)
|
||||
{
|
||||
if (!Marker[i])
|
||||
{
|
||||
Marker[i] = Line[i];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
bool Repeat = false;
|
||||
|
||||
for (int a = 0; a < MARKER_LENGTH; a++)
|
||||
{
|
||||
for (int b = 0; b < MARKER_LENGTH; b++)
|
||||
{
|
||||
if (Marker[a] == Marker[b] && a != b)
|
||||
{
|
||||
Repeat = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!Repeat)
|
||||
{
|
||||
printf("Marker starts at character %d\n", i);
|
||||
for (int x = 0; x < MARKER_LENGTH; x++)
|
||||
printf("%c", Marker[x]);
|
||||
printf("\n");
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Shift everything in Marker to the left by one
|
||||
Marker[0] = '\0';
|
||||
|
||||
for (int x = 1; x < MARKER_LENGTH; x++)
|
||||
Marker[x-1] = Marker[x];
|
||||
|
||||
Marker[MARKER_LENGTH-1] = Line[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CurrentLine++;
|
||||
|
||||
}
|
||||
while (CurrentLine <= LineCount);
|
||||
|
||||
return 1;
|
||||
}
|
||||
1
2022/day6/p2/input.text
Normal file
1
2022/day6/p2/input.text
Normal file
@ -0,0 +1 @@
|
||||
bhzhtzzsczszsjjjzddfzdfzfjfzfbbnntnzznwzzvfvrrqmrmmdzzfqfhqhsqqpwpgwpppbtbnnstthmhrrsmmvsmmhjmjfmfsfjfnfnjjvcjjszjszjsszbznzbnzndzzmlldsdgdcddmqmfqqlcllbvllztzctzczdzttlmtlthtmhtmhmmszsllvzvdzzzsqzqbqccvfvcffzsfslfsllcglclwlvwvzzdsslggtzzgzdzmzddjljvvztttsgscsstztjztjztzvzwwthtftppnmpmmcpmmjlmjjjsfjsjppgcgwcggzffzwzbbmbrbprpqqpccfncfnffvcffsqqtzqzqwzwvzwwwbjbfbcbfblltnlnhhcthtvvzzfcfgfddlggbbshsggplglqqbrbggsvvzdvvlfvlvpvhhmggbrrnppjfjhffttfpffbdfbfvfqvvtcvvbvnnhbhhglgjgzzghhwrrtntrtwwfdfdmmcmtctftpptllzqllzflfrrgqgvgdvdfdbddprrrgccqvqnnmtmvmffpzzqggfbfnfwwqdqldqqlnqnttnbttrffnmmzwzjjtrjtrtmmqsmqmffqmfqfhhbthbhdhvdhvdvmvdmdhdshsqslldzztvvmzzdcccmbbhfhshrrrpsrrqqmdmmgdmmwdmdjdqqmcmttpgtgwgpwpprbrprhrsrllhsllprlplhppfzpffbhbccwdwbbrpbpvpqqmsspjssmbbmfmrmnrnwwgbwwbpwpjwwhqqgcqcvqccgffzpfftcffqlqjjznnlflhhlcczhzvhzhmzhmhfhnnqznntstwtggqjgjhggsvslltjlttfjjgffjzjwzzqzrrhlhzhbhphmhlmlzmzsmzmccvllgrrpbrbfbjfjttqjttdrdhhggqgddppqgpqgpgtptjptpllwccmwcmcpmcppdrrtstqqczqzvvlsltlddnvdvggcqqblqqsjqjttzhtzzszllqsqfqddqdbqddwqddfzzlczcscfsfpfdpdrpddsggcqchcfcpcssstwstwtggghvhqhzzqssjddwjwbjjsnjnfnwwglwwfnfhnnscsggzgjzzhzmmqfqsqwqrwqqqdtdcttzvvnbngbbcdbdggddnmddgzghhzgghwwbjbttlwlcctlccwwdhhrqrvrjjlglssgttpllwclwwtptwptwtvthtbhbzhbzhhrsrwwwnrwrfwfnwnhhnqqdjqjpqqwdwttzhttcdttvztzltzlzmzddrsdsfdsfftdfffmwffrjrffqrfqfsfqqqgqjggwzzrnnqfnqffdbfbtbbrpbrpbptpwttjmjjzrrhhqppdzdtdjttqwwtddjdzzmgzzhwwwdsdgssprsrgsgbbphhdpdwppnfppdqqwzzpbzzqwqpqsqhqdhqqtwwjnnmvmwvmmwwgjgzjjvcjcvcjcnjcncmmphmmvmwmwpwbbtbffhnhshgssgvgvrrbwbtbddqmqfqvvfqvqdvvdbvdbdcdfdlflmffrwwgmmttrztrrfrqrpqrrzjrjpjdpjprrnhhbhcbbcwwqlwwcssbddfrfjrfjfrjfjvvdmdtdzzlvzlzhzmhmhphchnnfqnffvccfpfbfpfqpprrmttzrzzjzmjmzjmmfvmmrzrqqdllgjlglcchssgllsbllrbrlrjlrrhhfwwsqwsstpssznzcznzqzssvtvtrrqwqvvtssgfsfhssljjnwjnjddjdggclcrrfsfhsstgtdtctfttvvsbvvbtbttcgcssjlslhlpljpppwzwnwdnngmgjjbzznwwdllrrfppshhvdhhldhdbbdbjbdjjrnjjzhzfhhsqqbqgmsbvnjsptlrsszlqfmgprvscphmqztbgtlrqvcgdzcptcqjncrdtfqnghnbmwwmcjgtjlbvqqzslgbbntrdfnvfjvfgcgngndjcspgwmpnsrqzzvzljbzlzzrwflrqqqmhsvqwbmdftnhwwzgqrlhddbbtwvbphljmstcjzvpjqwcnhlvpqvqdgvntgqzqwrlwbwvngwtqgrhznlzcvbwqmwncccjctrdzrmzjsvrmcfpjjcczhbvdfwhqvczggfmrspvprvvthvtqnsphpcsdmbrtbdqljvssdrhwjsrrlzprstpgqcbpmnpdgzgjttwcfrgjnsghmszlclgvmlsjrqfvflbnhwwphtvrnrbhdvdglcvgpzfsjpwwhtlvvdzthsrldfzhnlrblzsjjnwclqsqzgdbflhvpwcrtfbfbjcjttbjpvfgvfcswnqqwshbmqlscdzzwshfqwsvwnwzltbnrmzzhzvtwpzqcgwshpvzgtcmwrtrwctnpzbznnwqphnrgwljtrcwlqmvlndwrdrctztnmswslqmbjcmtlrmcpjvzccqszrnflqnqzttbhqlrhbmqdpscqvfgtdbnwjdcljwcbgbgjfzgrgpwqzqgbnrtpntfthhdbqmswvhnmwmszpghgjjzrbnbbfjblpstdfslmmmqfdcrhblqjqfphnldrvvfpnfrcvprjnqbzbspfpjtgqhnjbhnrwzcjvdbshhqpgrmzqpmjfmqwqvvdbddbsldwzzsrhnhsjjnvljrbwcnjrnjpmrrvfthftgptgtlpbgqffthflgftwcrqcqwqwrmrcmfrcqgmrnqjbscdcgrqlhjzthvzdgjbvpswflqcgsnlmgmvcsttsgmnqdtvwdvrndvfdcvrcwmqlmlhtrvthsndsrmnsfmdmfnpfmfhzjqmtcjzcrnsjdztztvgdtlrmbdmmstbfgpmmzthcslpvgrpgfljfgqlqhldfwvvvdvbzjtdtppbtrnqwsqztjrsjhtfrgmvsdngvsdzjgpwrldqpzdpvhljzpjvttwltdwcrhcbrgrvdrmpwvdwjchqsjfprbgtjtzggvgrgmlvvwqrjfprbbgjjqrtdfnrdffwbswbvqtqtfsrhsgrjhftqldhmcnmsnfflmdrzqdjmbqqgqsttdmtrrvfsjnccnhcpcvqtrzdjzrpwswmjvvgsgwvnmdgqwlctrlhqnsmczbwsjhmtgvdcgsndzlstcwchcztqqbtdwfvlljdvdlzljslgnzpmqvzfcvqhdzvgchffqgfwrnmwqzwgbzblpmvddlvnhglrhdnwzqwztzgjczjpwcjwmpnrnrhncfjfggrbphrjztwtfqmfjlwfhnqfftfghbnvtwgtmdzzrdrtmfrwhrrbhzmcllsgqzwzzqtgdggvzptvtdcpzmtmsfcfbjtzlbdrwhdbtdhhrgggmddnzsvjwgcdcqfppqwphfvlhmgqsznlhmgpnjvcvrwwppnphchgsrhjwjcpjggsrcwrvnllfgrmjltfzwhmbqwpwwzmrtlqcprrqztcgnghcbvzrbfptjmhtdcfhhffdbrswqpnpppnpqwtflrrmqgjzctmmvvvwzllbsfdvpqjtmvpjcpmjztscsgbdznfgcmtjzdqzwqrsvstnnvddcstzqjtnbsnlptpmbmfqmhppgnjrffqrtchgptbmwlwbwbcqqfngpbwtwdmlmdstmqwcwjtbwbbbhghgptmvhfmvqfvpwqzwnbjdhpwlgjgvprdjbnlzhnllssbpvzfzspwsscfpqtpdvtzvqncfrfrgddsdglqvpblmpcczlqfdmwzmgvrljhqtcglcvfhbdwhbttqqrjbqwhsrhrbjwmtqwqddvdggdwfsmnpbpvvgsqnvvrqntwmbzdnqpmmqtbnlsbmslpfmqjtgvbddhwvlvjtlrhqdpfnjwtbhwjwdrpgctbbrdqvbbnvgqwngrhqfvwzmlqtmhfqphnmczlbdpnbmpvwrsjbcnjnvcfgnsvlhpzdgdzgvfbgwdcrswznrggnghzssdwqvvlwftqhbnwdvghhvjlqqmcnqmvbwhrrnsswlwmwbsmpcpdzzgmcmqnzpvjpzqbwcsgdhqtqhcpbtqftvscmntsbdcbrndvlfhprpblzbjcpqhfljtvnvtgvrcgqbsgl
|
||||
5
2022/day6/p2/test.text
Normal file
5
2022/day6/p2/test.text
Normal file
@ -0,0 +1,5 @@
|
||||
mjqjpqmgbljsphdztnvjfqwrcgsmlb
|
||||
bvwbjplbgvbhsrlpgdmjqwftvncz
|
||||
nppdvjthqldpwncqszvftbrmjlhg
|
||||
nznrnfrfntjfmvfwmzdfjlvtqnbhcprsg
|
||||
zcfzfwzzqfrljwzlrfnpqdbhtmscgvjw
|
||||
222
2022/day7/p1/day7p1.c
Normal file
222
2022/day7/p1/day7p1.c
Normal file
@ -0,0 +1,222 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdbool.h>
|
||||
#include <ctype.h>
|
||||
#include <string.h>
|
||||
|
||||
struct File {
|
||||
char * Name;
|
||||
int size;
|
||||
};
|
||||
|
||||
struct Dir {
|
||||
char * Name;
|
||||
int size;
|
||||
struct Dir * Parent;
|
||||
int ChildrenAmount;
|
||||
struct Dir ** Children;
|
||||
int FileCount;
|
||||
struct File ** Files;
|
||||
};
|
||||
|
||||
struct Dir * FindDir(struct Dir * CurrentDir, char * target_name)
|
||||
{
|
||||
for (int index = 0; index < CurrentDir->ChildrenAmount; index++)
|
||||
{
|
||||
char * current_child_name = CurrentDir->Children[index]->Name;
|
||||
if (strcmp(current_child_name, target_name) == 0)
|
||||
return CurrentDir->Children[index];
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
char * RemoveLastChar(char * Str)
|
||||
{
|
||||
size_t length = strlen(Str);
|
||||
char * NewString = malloc(length * sizeof(char));
|
||||
for (int index = 0; index < length - 1; index++)
|
||||
NewString[index] = Str[index];
|
||||
return NewString;
|
||||
}
|
||||
|
||||
int CountLines(char * FileName)
|
||||
{
|
||||
char *Line = malloc(256);
|
||||
int LineCount = 0;
|
||||
|
||||
FILE *File;
|
||||
File = fopen(FileName, "r");
|
||||
|
||||
while (fgets(Line, 256, File) != NULL)
|
||||
{
|
||||
LineCount++;
|
||||
}
|
||||
|
||||
fclose(File);
|
||||
|
||||
return LineCount;
|
||||
}
|
||||
|
||||
void GetLine(char * FileName, int LineNumber, char * Line)
|
||||
{
|
||||
|
||||
int CurrentLineNumber = 1;
|
||||
|
||||
FILE *File;
|
||||
File = fopen(FileName, "r");
|
||||
|
||||
while (fgets(Line, 256, File) != NULL)
|
||||
{
|
||||
|
||||
if (CurrentLineNumber == LineNumber)
|
||||
break;
|
||||
|
||||
else
|
||||
CurrentLineNumber++;
|
||||
|
||||
}
|
||||
|
||||
fclose(File);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
void PrintDir(struct Dir * Current)
|
||||
{
|
||||
printf("Name: %s, ", Current->Name);
|
||||
printf("Children: %d, ", Current->ChildrenAmount);
|
||||
printf("Size: %d, ", Current->size);
|
||||
|
||||
if (Current->Parent)
|
||||
printf("Parent: %s", Current->Parent->Name);
|
||||
|
||||
printf("\n");
|
||||
|
||||
for (int i = 0; i < Current->ChildrenAmount; i++)
|
||||
{
|
||||
PrintDir(Current->Children[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
struct Dir Root;
|
||||
Root.Name = "Root";
|
||||
Root.size = 0;
|
||||
Root.Parent = NULL;
|
||||
Root.ChildrenAmount = 0;
|
||||
Root.FileCount = 0;
|
||||
struct Dir * CurrentDirectory = &Root;
|
||||
|
||||
char FileName[] = "test.text";
|
||||
int LineCount = CountLines(FileName);
|
||||
int CurrentLine = 2; // Skipping line one
|
||||
char * Line = malloc(256);
|
||||
char * Command = malloc(256);
|
||||
|
||||
while (CurrentLine <= LineCount)
|
||||
{
|
||||
GetLine(FileName, CurrentLine, Line);
|
||||
|
||||
if (Line[0] == '$')
|
||||
{
|
||||
Command = strtok(Line, " ");
|
||||
Command = strtok(NULL, " ");
|
||||
|
||||
while (Command != NULL)
|
||||
{
|
||||
if (strcmp(Command, "cd") == 0)
|
||||
{
|
||||
char * target_dir_name = strtok(NULL, " ");
|
||||
CurrentDirectory = FindDir(CurrentDirectory, target_dir_name);
|
||||
Command = strtok(NULL, " ");
|
||||
}
|
||||
else if (strcmp(Command, "ls\n") == 0)
|
||||
{
|
||||
// Find how many items we need to put into an array
|
||||
int Directories = 0;
|
||||
int LineOffset = 1;
|
||||
|
||||
do
|
||||
{
|
||||
printf("get line %d\n", CurrentLine+LineOffset);
|
||||
GetLine(FileName, CurrentLine + LineOffset, Line);
|
||||
|
||||
if (Line[0] == '$')
|
||||
break;
|
||||
|
||||
char * FirstWord = strtok(Line, " ");
|
||||
|
||||
if (strcmp(FirstWord, "dir") == 0)
|
||||
Directories++;
|
||||
|
||||
else if (isdigit(Line[0]))
|
||||
{
|
||||
int add = atoi(FirstWord);
|
||||
printf("Adding size %d to %s\n", add, CurrentDirectory->Name);
|
||||
CurrentDirectory->size += add;
|
||||
printf("CurrentDirectory Size is %d\n", CurrentDirectory->size);
|
||||
}
|
||||
|
||||
LineOffset++;
|
||||
}
|
||||
while (1);
|
||||
|
||||
printf("%d Directories found\n", Directories);
|
||||
|
||||
// CurrentLine += LineOffset;
|
||||
|
||||
printf("Getting directories...\n");
|
||||
if (Directories > 0)
|
||||
{
|
||||
LineOffset = 1;
|
||||
|
||||
struct Dir ** TempChildren = malloc(sizeof(struct Dir) * Directories);
|
||||
|
||||
for (int i = 0; i < Directories; i++)
|
||||
{
|
||||
while (1)
|
||||
{
|
||||
GetLine(FileName, CurrentLine + LineOffset, Line);
|
||||
printf("get line %d\n", CurrentLine + LineOffset);
|
||||
|
||||
char * FirstWord = malloc(256);
|
||||
FirstWord = strtok(Line, " ");
|
||||
|
||||
LineOffset++;
|
||||
if (strcmp(FirstWord, "dir") == 0)
|
||||
{
|
||||
FirstWord = strtok(NULL, " ");
|
||||
|
||||
struct Dir * TempDirectory = malloc(sizeof(struct Dir));
|
||||
|
||||
TempDirectory->Name = RemoveLastChar(FirstWord);
|
||||
TempDirectory->Parent = CurrentDirectory;
|
||||
|
||||
TempChildren[i] = TempDirectory;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CurrentDirectory->Children = TempChildren;
|
||||
CurrentDirectory->ChildrenAmount = Directories;
|
||||
}
|
||||
}
|
||||
|
||||
Command = strtok(NULL, " ");
|
||||
}
|
||||
}
|
||||
|
||||
if (CurrentLine == 13)
|
||||
break;
|
||||
|
||||
CurrentLine++;
|
||||
}
|
||||
|
||||
PrintDir(&Root);
|
||||
}
|
||||
1105
2022/day7/p1/input.text
Normal file
1105
2022/day7/p1/input.text
Normal file
File diff suppressed because it is too large
Load Diff
3
2022/day7/p1/run.bash
Normal file
3
2022/day7/p1/run.bash
Normal file
@ -0,0 +1,3 @@
|
||||
set -e
|
||||
gcc day7p1.c -o day7p1.exe
|
||||
./day7p1.exe
|
||||
23
2022/day7/p1/test.text
Normal file
23
2022/day7/p1/test.text
Normal file
@ -0,0 +1,23 @@
|
||||
$ cd /
|
||||
$ ls
|
||||
dir a
|
||||
14848514 b.txt
|
||||
8504156 c.dat
|
||||
dir d
|
||||
$ cd a
|
||||
$ ls
|
||||
dir e
|
||||
29116 f
|
||||
2557 g
|
||||
62596 h.lst
|
||||
$ cd e
|
||||
$ ls
|
||||
584 i
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd d
|
||||
$ ls
|
||||
4060174 j
|
||||
8033020 d.log
|
||||
5626152 d.ext
|
||||
7214296 k
|
||||
1000
2023/day1/p1/input.text
Normal file
1000
2023/day1/p1/input.text
Normal file
File diff suppressed because it is too large
Load Diff
41
2023/day1/p1/main.rs
Normal file
41
2023/day1/p1/main.rs
Normal file
@ -0,0 +1,41 @@
|
||||
use std::fs;
|
||||
|
||||
fn main()
|
||||
{
|
||||
let file_path: &str = "./input.text";
|
||||
|
||||
let contents = fs::read_to_string(file_path)
|
||||
.unwrap();
|
||||
|
||||
let mut sum:i32 = 0;
|
||||
|
||||
for line in contents.lines()
|
||||
{
|
||||
println!("{line}");
|
||||
|
||||
let mut first: u32 = 10;
|
||||
let mut last: u32 = 0;
|
||||
|
||||
for character in line.chars()
|
||||
{
|
||||
if character.is_ascii_digit()
|
||||
{
|
||||
let value = character.to_digit(10).unwrap();
|
||||
if first == 10
|
||||
{
|
||||
first = value;
|
||||
}
|
||||
last = value;
|
||||
}
|
||||
}
|
||||
|
||||
let result = first.to_string() + &last.to_string();
|
||||
|
||||
println!("Sum of line {result}.");
|
||||
|
||||
sum += result.parse::<i32>().unwrap();
|
||||
|
||||
}
|
||||
|
||||
println!("Sum: {sum}");
|
||||
}
|
||||
4
2023/day1/p1/test.text
Normal file
4
2023/day1/p1/test.text
Normal file
@ -0,0 +1,4 @@
|
||||
1abc2
|
||||
pqr3stu8vwx
|
||||
a1b2c3d4e5f
|
||||
treb7uchet
|
||||
1000
2023/day1/p2/input.text
Normal file
1000
2023/day1/p2/input.text
Normal file
File diff suppressed because it is too large
Load Diff
112
2023/day1/p2/main.rs
Normal file
112
2023/day1/p2/main.rs
Normal file
@ -0,0 +1,112 @@
|
||||
use std::fs;
|
||||
|
||||
fn find_first(line: &str) -> (u32, usize)
|
||||
{
|
||||
let mut value = 0;
|
||||
|
||||
let mut lowest_index = usize::MAX;
|
||||
|
||||
let numbers = vec!["one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
|
||||
let numbers_values = vec![1, 2, 3, 4, 5, 6, 7, 8, 9];
|
||||
|
||||
for i in 0..numbers.len()
|
||||
{
|
||||
let found_index = line.find(numbers[i]);
|
||||
let found_index_value = match found_index {
|
||||
None => continue,
|
||||
Some(found_index) => found_index
|
||||
};
|
||||
|
||||
if found_index_value <= lowest_index
|
||||
{
|
||||
value = numbers_values[i];
|
||||
lowest_index = found_index_value;
|
||||
}
|
||||
}
|
||||
|
||||
return (value, lowest_index);
|
||||
}
|
||||
|
||||
fn find_last(line: &str) -> (u32, usize)
|
||||
{
|
||||
let mut value = 0;
|
||||
|
||||
let mut lowest_index = usize::MIN;
|
||||
|
||||
let numbers = vec!["one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
|
||||
let numbers_values = vec![1, 2, 3, 4, 5, 6, 7, 8, 9];
|
||||
|
||||
for i in 0..numbers.len()
|
||||
{
|
||||
let found_index = line.rfind(numbers[i]);
|
||||
let found_index_value = match found_index {
|
||||
None => continue,
|
||||
Some(found_index) => found_index
|
||||
};
|
||||
|
||||
if found_index_value >= lowest_index
|
||||
{
|
||||
value = numbers_values[i];
|
||||
lowest_index = found_index_value;
|
||||
}
|
||||
}
|
||||
|
||||
return (value, lowest_index);
|
||||
}
|
||||
|
||||
fn main()
|
||||
{
|
||||
let file_path: &str = "./input.text";
|
||||
|
||||
let contents = fs::read_to_string(file_path)
|
||||
.unwrap();
|
||||
|
||||
let mut sum:i32 = 0;
|
||||
|
||||
for line in contents.lines()
|
||||
{
|
||||
println!("{line}");
|
||||
|
||||
let mut first: u32 = 10;
|
||||
let mut first_index: usize = usize::MAX;
|
||||
let mut last: u32 = 0;
|
||||
let mut last_index: usize = usize::MIN;
|
||||
|
||||
let mut index: usize = 0;
|
||||
for character in line.chars()
|
||||
{
|
||||
if character.is_ascii_digit()
|
||||
{
|
||||
let value = character.to_digit(10).unwrap();
|
||||
if first == 10
|
||||
{
|
||||
first = value;
|
||||
first_index = index;
|
||||
}
|
||||
last = value;
|
||||
last_index = index;
|
||||
}
|
||||
index += 1;
|
||||
}
|
||||
|
||||
let (l_value, l_index) = find_last(line);
|
||||
if l_index > last_index
|
||||
{
|
||||
last = l_value;
|
||||
}
|
||||
let (f_value, f_index) = find_first(line);
|
||||
if f_index < first_index
|
||||
{
|
||||
first = f_value;
|
||||
}
|
||||
|
||||
let result = first.to_string() + &last.to_string();
|
||||
|
||||
println!("Sum of line {result}.");
|
||||
|
||||
sum += result.parse::<i32>().unwrap();
|
||||
|
||||
}
|
||||
|
||||
println!("Sum: {sum}");
|
||||
}
|
||||
7
2023/day1/p2/test.text
Normal file
7
2023/day1/p2/test.text
Normal file
@ -0,0 +1,7 @@
|
||||
two1nine
|
||||
eightwothree
|
||||
abcone2threexyz
|
||||
xtwone3four
|
||||
4nineeightseven2
|
||||
zoneight234
|
||||
7pqrstsixteen
|
||||
140
2023/day10/p1/input.text
Normal file
140
2023/day10/p1/input.text
Normal file
@ -0,0 +1,140 @@
|
||||
F---7-FJ.7--FJ7.-.7-|7F.|7FJ77F7J-|--.FLF|.F-7-F7.F.J77|--|7--|7|-J-F--7-F7.F7-F7F7F-|-|-F777L7|-.FLF|-77F7-FJF|JF--F.77J-L7-FF--7.FFF7FF7.7
|
||||
|J.F|7F|F7J.J-L-|-|.L7F7JF7-7-LJ|LJ.F7.L|.F|F7FJ7.F7.|F|L7.L7L|-F-|7|L|JFF.F||F777L|-77L-|JF7FJJJLF7LL7|.L77|L7LLLJ.|..LLL7|L7-.-JFFLL-7L-FF
|
||||
F7L7JLLJL-7FL7|F7-J7.-J.7L7J|.|-JF|FLFF7L-JLL|-F7-F|77|.|L7FJ7JJFJL7JJJFF.FJ||||JFF|LL7F-JF|.LJ7F.|F7F|J7LLL-7||||LFFFF77|-L7LL7F7-JL7|FF7L|
|
||||
JFL7FJ7.--JJ7L||.LF|7JJFLFLF7.|.LFF7-FJ|-J-77|-F.|J|LLFF-|-7JL7-J7L|JLF7-7F7|LJL-7|L7F7J-FJ|F|7|77|J-F..FJL.|F77-7F|-FJ|J7J.--7.7J.7-|-||LF|
|
||||
.|LLFJLF--J.FL|-J.F77F-77.L|L7F77F7.F|FJ7.FJ7JF7F7|F-J..7JL|..FF---|J-F|JF|||F--7|-FL7.J-J.|LFFJ-7.L7J|.7-|LJJF7L77LL||.FL--JJ|-L-F|7F-JJ|.|
|
||||
FL77J|LJFJFF7JJ|J7LJ.|.LF.LL7|||7||-FJL---7.LFJL7J7|FLF7J|F77-J|JJFJ-F-7FFJLJL-7LJ7LLLJ7JLL-7||J|||L-7|---L.FFLLFF---|F--J.|.|L.||FJ7.LLL|-J
|
||||
|L-J-JJ-F-F-J7F--7.F7F7F7FF-JLJ|FJ|JL7F-7FJ7-L7FJF-7F7||7FFF7JL7.-JLF|FJFJF7F7FJFFL-|.L-7J|FJFJ-JJ7.L|7.|7J-|J.||||LFLJ-F|F7-7|FF-L7|7-.|L7|
|
||||
7|LF|JLL|.F.F-FJF-7|||LJL7L-7F-JL7L7FJL7LJF77F|||L7||||L-7F||.7F7FLFFJL-JFJLJLJ-F|J.F-FL7.LJ||.|L.F7|.F7.7|FJ||-J|J-J7.7-7---|-LJF|7F|-77-L-
|
||||
|J.7|LF7JF|F7|L.L7|||L7F-J-F||F7FJFJ|F-JF7||F7||-F|||||F-JFJ|7J|L|F-L-7F7L-7F777.|JF77J-F7FFF777LFFF-F-7-7--LJL|-L|.FF-F.JL|.LFJ-77-F|7F77FJ
|
||||
JJ--JLJL-J|J.FLF-J|||L||F77FJ||||FJFJ|F7|||LJLJ|JFJ||||L77L7|F--7F7-F7LJ|F7|||F7F7.L|.F-JL7FJL7F---7JL7L7F7.L|F--7L-L7.J-.-7JJ|L-7L.|JFJLJF|
|
||||
|JFLJF|-77F-7.FL-7LJL-J|||FJFJ|||L7|FJ|LJ|L---7L7|FJ|LJFJ7FJLJF-J||.||F-J|LJ|LJLJ|7-J7L-7FJL7FJ|F--J--L7|||7FFF-FJ|JLL|FLFLJ.-L7FLL-|L|.7.FF
|
||||
L-77LJJ|FJ|7J.--LL----7|||L7|FJ||FJ||FJF-JF7|FJFJ|L7L7FJF7|F7FJ-FJL-J||F7L-7L7F--J.7|F-7||F7||FJL7L|-F-JLJL-7-|FJLJ77.|7.L7JF|L|7.|---|F--.F
|
||||
7JFF7||FJJJJL7J7.F-7F-JLJL-JLJFJ||7|LJFJF7|L7L7L7L7|-|L7|LJ|LJJ.L---7|LJL7FJ|||F-77LLL7||LJLJLJF-J-|LL---7F-J|||..JJF-.F7.F-7|L|7F77JFJ-L|FJ
|
||||
|-|LLJF-7LJ|LL|--L7|L7F--7F--7L-JL7L7FJFJ||FJF|FJFJ|FJFJL-7L-7F-7LF7|L7F7|L7FJ||FJF7FFJLJF-----JF-7F7F-7FJL--777-7L-|JF|77LLLL7JFJ|F-JJ.L|7|
|
||||
77LJ7F--7J7L7L|.F-J|FJ|F-J|F-JF-7FJFJL7|FJ|L7FJL-JFJ|FJF7|L7FJL7|F|||FJ|LJFJL7||L7|L7L--7L7F-7F7|FJ||L7||F---JL|-L7J.-77J-F.||JF|.L--J.--L7|
|
||||
L77--L-7J-|7LFF7L-7|L-JL-7||F7|FJL7|F-J|L-JFJL-7F7|FJL7||F-J|F-J|FJLJL7|F7L7-||L7LJFJJF7|FJL7LJLJL7||FJ||L--7F-7-|7.F.|7JL-L7J-7JFFL--JFFL.L
|
||||
..FFJL7L7-LLF7|L--JL-7F--J|LJ||L7FJ|L7F|F--JF7-LJ|||F-J||L-7LJF-JL--7FJLJ|FJFJL7|F-JF7||||F7|F----J||L7LJF--JL7|F--7LFLJ--||||FLLF7-J.FF-.F|
|
||||
F-J|7L|-77|-J7|F7F--7|L---JF-JL7|L-JFJFJL-7FJL7F7|||L7|||F7|F-JF7.F7||F7FJL7L7FJ||.FJ||LJ||LJL-7-F7||JL7FJF7F7||L-7|-FJ-7LL77-F7-F|J.F7||F-7
|
||||
LL7L77L-7-7-LLLJLJF-JL-----JF--JL--7L-JF7FJL7FJ||||L7L7|LJLJ|F7|L7||||||L-7L7||FJL-JFJL-7||F---JFJLJ|F-J|FJLJLJ|F7|L7JF7.7JL7|LF-7.F-FF77JJ.
|
||||
FF--.7.LJLL7|.|FF-JF--------JF7F7F7|F--J||F-JL-JLJ|FJFJL7F--J|LJFJ|||||L7|L7LJ||F---JF--JLJL--7JL7F-JL7FJ|F----J|||FJFJ|7JF-J-7|JL||LLLJL7-F
|
||||
7|..L-FFJJFL7FFLL-7|F---77F7FJLJLJ||L7F7LJL--7F---JL7|F7||F--JF-JFJ||||FJF7L7FJ||F--7L---7F---JF-JL7F7|L-JL7F--7|||L-JFJF7L7F7JJ.FJF-7L7J|7|
|
||||
F7.L7LJJ.FJL|F7L|7LJL7F7L-J|L----7|L7LJL7F7FFJL7F-7||||LJLJF--JF7L7||LJL7|L-JL7|LJF7|F7F-JL-7F7L7F-J|||F---J|F7||LJF--J||L7JLJ.LFLJ|LJ--7JL|
|
||||
J7-FJ.|7.|J-F7L7LF7F-J||F-7|F7FF-JL7|F--J||FJF-J|FJFJ||F7F7L--7||FJLJF-7|L---7||F-JLJ||L--7FJ|L7|L7FJLJL7F-7LJ|LJF-JF7F7L7L7||--|..|F7|LJ|F|
|
||||
|F7LF77J.LF-LJJ.FJLJF7|||FJLJL7L--7LJL7F7|||FJF7||FJFJLJ||L---J||L--7|FLJJF--J||L-7F7||FF-JL7|FJL7|L-7F-J|FJF7L-7L7FJLJL7|FJ7|F7|F.|--7-LL|7
|
||||
|L||F---F.F7LJ-FL---J||||L--7FJF7L|F--J|||||L7||||L7L-7FJL-7F-7||F7FJL7F-7L--7LJF-J|||L7L7F-J|L7FJL-7|L-7|L7||F7|FJ|F---J||F---77-|J|7L-F.L7
|
||||
-7F77JJF-|7JJ.F-F--77||LJF--JL-JL-J|F7J||||L7|||||FJF7|L7F-JL7|||||L7FJ|FJF-7L7FJF-J||FJFJL7FJFJL7F-J|F-J|FJ|||||L7|L7F7FJ||F--JJ7|.L7|F|.LJ
|
||||
.L.|L|.F-L|7|FFLL-7L7LJF7L--------7LJL-JLJ|FJ||LJ|L7|LJFJ|F7FJLJ||L-J|.||FJFJFJL-JF-J||FJF-JL7|F-JL7FJ|F7||FJLJLJFJ|FJ||L7LJ|F-7JF777.LFFJL|
|
||||
J..L.LL|J-J-|7J.LLL7L-7|L---------JF--7F7FJL7|L-7L-JL77L7LJLJF--JL7F-JFJ|L7|FJF---JF7|LJFJF7FJ|L-7FJL7||||||F----JFJL7|L-JF-J|FJ-LF77.|L||.F
|
||||
.F-.L7.|7.F7.F-7.FLL7FJL----------7L-7LJLJF7|L7FJF-7FJF7|F--7L--7FJL77L7L7|LJFJ|F7FJ|L-7|FJ|L7L--J||FJLJ||LJ|F7F7FJF-JL7F-JF7||F77.JJ-L-|-LJ
|
||||
FF|-.FFF-JJLLJL|FF--JL7F77F7F7F--7|F-JF7F7|||FJL-JFJL-JLJL-7L---JL7FJF7L7|L-7L7FJ||FJF-J||FJ7L---7L7|F--JL-7LJLJLJFJF-7||F-JLJLJ|-J7|-|F7-L7
|
||||
|L-JLLJL-J7F||.J|L---7LJL-JLJLJF7LJL7-|||||LJL7-F7|F7F---7FJF7F-7FJL7||FJ|F7|FJL7||L7L-7|||F7F7F7|FJ||F7F7FJF----7L-JFJ|||F---7FJFL7.FFJJ|F7
|
||||
..|.|F7L77LL77J|F-7F7L--------7|L--7L-JLJ|L--7|FJ||||L7F7LJ|||L7LJF-J||L7LJ||L--J||FJF-JLJ||LJLJ||L7|LJ|||L7L-7F7L--7L-JLJL7F7LJ-7F|-7.|7FLJ
|
||||
F.L|-|J.F7.|L|-LL7LJL----7F-7FJ|F-7L7F---JF7FJLJFJLJ|FJ|L--7||FJF-JF7||JL-7LJF7F-J|L7L--7FJL7F--J|FJ|F-J||FJF-J|L--7L7F7F--J|L7L|F-J|F|JLJ|J
|
||||
|F-L.|.-JL7|JF-L|L------7|L7LJFJL7|FJ|F--7||L--7|F7FJL7|F--J||L7|F-J|||F7-L-7|LJF7|FJF7FJ|F7||F7FJL-J|F7|||FJLFJF--J-|||L---JFJ.-JF|JLJ|J.JJ
|
||||
7-LJFJ7|J.F-.J77FF------JL-JF-J..||L7||F-J||FF7||||L7FJ||F7L||F||L-7|||||F7F||F7|||||||L7|||||||L7F--J||||||F7|FJF77FJ||F-7F7|F7-|FL-F.7-7J|
|
||||
F7-|7.FF-FJ-|JF7FL--7F7F7F--JF7-FJL-J|||F7||FJ|||||FJ|FJLJ|FJ|FJL7FJ||||||L7|LJLJ|||FJ|FJ||||||L7||F-7|LJLJLJLJL-JL7L7||L7||LJ|L--7J7|FL-|-F
|
||||
LJ--F7L---JFLJL-JJ-LLJLJLJF--JL7L7F77||LJLJ||JLJ||LJL|L-7.||FJL-7|||LJ||LJFJL7F--J|LJFJL7LJ||||FJ|||L||F----------7L7||L7|||F-JF--JJ-F7LLJ-J
|
||||
|.LF-JF-F|.|J7.L77|.F--7F7L---7L-J|L7|L7F--JL-7F||LF-JF7L7LJL7F-JLJF--J|F-JF-JL7F7L77L--JJFJ|||L7|LJFJ|L---------7L7||L7|||LJF7L7|7|F|L..L7J
|
||||
|7F-J7.FFLLJ|F..F7F-JF7LJL---7L---JFJL-JL--7F-JFJL7L7FJL7L-7FJL---7|F-7||F7L7F7LJ|FJF7LF--JFJ||FJL77|FJF---------J|LJL-JLJL7FJL7L--7J-J-7...
|
||||
.-J|||-|7L|7FJF7||L-7|L-7F--7|FF7F7L--7F7F-JL7FJF7|FJL-7L7FJL7F7F-J||FJ|||L7LJ|F-J|FJL7L7F7L7LJL-7|FJ|FJF--7F7F--7F-----7FFJ|JFJF--J-7.FF--F
|
||||
J7|FLJF-L7|LF7|LJL7|LJF7LJF-JL-JLJL---J||L7F7|L7|||L7F7|FJL7-LJ|L77LJ|FJ||FJF-J|F7LJF7L7|||FJ|F--J|L7|L-JF7LJLJF7LJF7F-7|FJFJ|L7|JLJF7-FJ7||
|
||||
||L7.FL|LL-L.LL7F7L7LFJ|F7L------------JL7||||-LJ|L7||||L-7L--7L7L7JFJL7LJL7L7FJ|L7FJL-J||||F7L---JJ||F--JL----SL--JLJJLJ|FJF--J|7FL-.F77.F|
|
||||
J.||F--7.J7J|-LLJL7L7L7||L---------------JLJ|L--7L7|LJ|L-7L7F-JJL7L7L7FJF--JFJL7L7|L-7F7LJLJ|L-----7LJL7F----------7F7F7|LJ7L---J777.L7LJ--|
|
||||
L-|-|..L7-|LF.LJ-LL7L7||L--------7F--7F7F77FJF-7L7||F-JF7L7|L-7.FJFJFJ|-L-7FJF-JFJ|F7LJL7F7FJF-7F-7L7F7LJF7F-7F----J|||L7.LJJFLL-7|F7JJ.||.|
|
||||
L7F-JF-F|7.F77J|-F7L7LJL7-F---7F7LJF7LJLJL7L7|-L7|||L-7|L-J|F-JFJFJFJFJF--J|LL-7|J|||F--J|||FJFJL7L7LJL--JLJFJL-----JLJFJF|..|LL7JJ-LJ-F7FJ-
|
||||
.F.|FFFF--7||F7LFJL7L7F7|FJF-7LJL7F|L-----JFJL7J||LJF-JL-7FJL7.|FJFL-JLL7F7L-7.|L7|||L---J||L7L7FJ7L7F7F-7F7L----------JJF7-.|L-.||LJ.FLJJ|.
|
||||
FJF|--JL-7||||L7L-7L7LJ||L-JFL7F7L-JFF7F7F7L-7L7|L7.L-7F7||F7L7|L-7|F---J||F-JFJFJ||L7F---JL-JFJL7F7LJLJJLJL-----7LF7F7F7|||.F-J7LJ7.7|J.L|-
|
||||
|7JL|..L||LJLJFJF7L7L7|||7F7F-J|L7F--JLJLJL-7L-J|FJF--J||||||FJ|F7|FJF7F7|||FFJFJFJ|FJL---7F--JF-J||F7-F7F------7|FJLJLJLJL-77LLF7L7-L77L.|7
|
||||
-J7.F----|F7F7L-JL7L7L-JL-JLJF7L7LJF-------7L--7|L7L7F7|||||LJL|||||FJ||||LJFJFJ7L7|L--7F-J|F7FJF-JLJL-JLJF7F--7LJL7F-------J..|JF.77LJ-J-||
|
||||
L-FFF77|-LJLJL---7|JL-7F7F7F7||FJF7L------7|F7FJ|FJ-LJ||||||7F-J||||L7LJ|L7FJFJ|F7LJLF-JL7-||LJ7L----7F---JLJF7|JF7|||F-----7.F7FF7FJ-|...||
|
||||
|7|FJL-7-F-7F7F7FJL7F-J|||||LJLJFJL-------JLJ|L7LJLF7FJ|||||FJF7|LJ|FJF-JFJL7L-7|L--7L7F7L7LJF------7|L7F----J|L-JLJL-JF-7F-J-|L-J|JL-J7.F-7
|
||||
---L7F-J7|FJ||||L-7|L--JLJ||F7F7L7F---------7L-J|F-JLJFJ||||L7|||F-J|FJF7|F-JF7|L--7L-J||FJF7|F----7|L-JL--7F7L--7F7F7FJ.|L-7-|F--J7J|LF-J-F
|
||||
L7LFJ|F7-|L-JLJL--JL7F7|F7LJ|||L7LJF----7F-7L---7L7F7FJ|||||L||||L-7|L-J||L-7|||F--JF7FJ||FJ|||F---JL------J||LF7LJLJLJF7L7FJFJL-7LF-7LL7FF7
|
||||
FL-L7|||F|F7F-7F7F-7LJL-J|7FJ||FJF7L---7|L7|F7F-J.|||L-7|||L7|||L7FJL-7FJ|F-J|||L7F7|LJFJLJFJLJL7F7F--7F----JL-JL----7L|L7LJFJF--J7|FJ.LLLLJ
|
||||
LLF-JLJL-J|LJFJ|||FL-7F-7L7L7LJL-JL----JL7|LJLJF-7LJL7FJ|||FJ||L-J|F--J|FJL7FJ|L7||||F-JF7FJLFF7LJLJF7||F------------JFJFJF7L7|JFLFF|J.L|7L|
|
||||
F-L---7F7FJF7L7|||F--JL7L7L-JF-7F7F--7F7FJL---7|FJF7FJ||LJ|L7LJJF7|L--7||7F|L7L7||||||F7|||F7FJL-7JFJLJ|L-----7F7LF7F7L7L7|L7|L77FF7|LF.F--|
|
||||
L77LJLLJ||FJL-J||||F---J||F-7|FLJLJF-J||L7F--7LJL-J|L7|F-7|FJF--JLJF7FJ|L7FJFJFJ|LJ|||||||LJ||F-7L-JF-7|LF7F7FJ|L-JLJL7|FJ|FJ|FJFLF7F7|L.FL|
|
||||
F-LJFLLFJ|L-7F7|||LJF----JL7||F----JF7|L7|L-7|F---7L7|LJFJ|L7|F7F--J||-L7|L7L7|FJF-J|||LJ|F-JLJ||F-7L7||FJLJLJJ|F--7F-J|L-JL-J|F7F|LJL7FFLJJ
|
||||
||LFJ-LL7L7FJ|||LJFFJF7F7F7||||F-7F7|||FJL-7||L--7L-JL--J.L-J|||L--7|L-7|L7|FJLJJ|F7|||F-JL7F---J|FJFJLJL------JL7FJL--JF----7LJL-JF7FJJJJJ|
|
||||
F7|JFF|.L-JL7|LJ7F7L-J||LJ||LJLJFLJLJLJ|FF7LJL---JF-----77L-FJ|L7F7||F7|L7|||JFF-J|||LJ|F--JL----JL7L7LF7F7F-7F7FJL-----J.F-7L-7F7FJLJJJ..|J
|
||||
|L--|FFF---7||F--JL---J|F-J|F-7F7F-----JFJL7F--7F7|F---7L7|||FJFLJ||||LJ|LJLJ77L-7|LJF7LJF--7LF7F77L-JFJLJLJ.LJLJF7F-7F--7|FJF7LJLJJ|J-7-7..
|
||||
J|LF-7.L--7LJ||F7F7F-7FJL--JL7|||L---7F7|F-J|F7LJLJ|F7LL7L7-||.J|LLJLJ7.-JJLFF---J|F-JL--JF7L-J|||F--7L----7F7F--JLJFJ|F-J|L-JL-7JJJ|JF7JFJ7
|
||||
|F-JF-JL|FJF-J||LJLJFJL7.F7F-JLJL-7F7LJLJ|F7||L---7LJL7JL-J7LJ7.FF|-J--7LF-7-L-7F7|L--7F7FJL7F7LJ|L7FJJF---J|LJF7F7FJF|L--JF---7L77FF7JJFFJJ
|
||||
LL7.LJ|FFJFJF-J|F---JF7|FJ|L-7F7F7LJL---7LJ||L---7L--7L---7-..F-F|.LJ7LL.7J||LLLJ|L--7||LJF7LJ|F7L-JL--JF---JF7||||L--JF--7L-7|L7L-7||J.J.77
|
||||
J..F|.|LL7|JL-7|L----JLJ|FJF-J|||L-----7L7FJ|F---JF-7|F---J-F|..L|L.|L..F|-||F7F-JF7FJLJF-JL-7LJL--7F---JF---JLJLJL7F7FJF7L-7L-7|F7LJ|JL.7L-
|
||||
.FF-J.|FJ||J.F||F-----7L||FJF-JLJF--7F7L7|L-JL----JFJ|L-77JL7J--J|FFF7|.L|-|-F-|F-J||F-7L---7|JF7F7LJF7F7L-----7F7-||LJ7|L-7|F-JLJ|F-J|.FL-J
|
||||
FF|-7.-JFLJ.FLLJL----7L-JLJFJ|F-7L-7LJL-J|F-7F-7F7FJ-L-7L-7J|...F7F7|FL7-JJL7J|LJJ|LJL7L-7F7||FJLJL--JLJL-----7LJL7|L---JF-J|L--7||L7J7--JJ|
|
||||
L-7--JLLJL|.J.F77F7F-JF7F--JF-JFJF7L----7|L7LJFJ|LJF7F7L--J-L.|.FJ|L77..7J.FF.FLJ.J7.|L-7LJLJ|L7F7F--7F------7|F--J|F-7F7L-7L---J-L-JJ|-7.F7
|
||||
FL77L||.F--J-FJL-JLJF7|||F--JF7L-JL-----J|FJF7L-JF-J||L-7J.LL7L-JL..L-J7..JFLF-|FJ.|.F7FJF7F7L7LJ||F-J|F--7F-JLJF7LLJFJ||F7L7F7||7||.L--7.-7
|
||||
JJL7-77.JJLJ.L7F---7|LJLJL---JL---------7|L-JL7-FJF-J|F-J.|.|L-|FL--77|7F7F7||.|7F-F-J|L-JLJL7|F7LJL-7||F7LJF7F7||F-7|FJ||L7LJL-7-7-7-L7J-L|
|
||||
|.-7L||-J--JFFLJF--J|F--------------7F--JL7F-7L7|FJF7||F-7F-77FJ7J|7JF7JJFL-7J-7F77|F7L------JLJL7JF7LJLJL--JLJLJLJFJLJ-LJFJF7F-J.|||..L-..F
|
||||
77|J.LF-J|.|LFF7L--7|L---7F7F-7F7F-7LJF7F7LJFL7LJL7|||LJFJ|FJF7|L777JFJ|FL7F|7..L|-LJL-7F------7FJFJL7F-7F-7F------JF7F--7L-J|L7J77F7-|.||FJ
|
||||
LFL-77|.F7-FF7||JF7LJ7F77LJLJLLJLJ|L--JLJL7F-7L---J|||F-JFJL-J|J.JLJJ|||F|JLJF-JLJ7L7|FLJ7F----JL-JF-JL7LJJLJ|F7F---JLJF-JJF7L-J-7-7F7FL7.FL
|
||||
FF|7|FL|--F-JLJ|FJL---J|F7F7.F------------J|FJ.F--7||||F7L7F--J7F7F7F-L-77FFJJJJFLL7|JFF-7L-7F7F7F7L-77L-7F7F7|LJF-----JF7FJL7F-77J|-F|7|FJJ
|
||||
||L|--.JJ|L---7LJF7F--7LJLJL7L---------7FF7|L7FJF-J||||||.|L--77.|LL7-J-7--|||-F|||-.L|L7|F7LJLJ|||F7L-77LJLJLJF7|7F7-F7|||F-J|FJF7LF-|F7J7.
|
||||
-LJ||.LL7F|JLLL--JLJ7FJF-7F7L7F--------JFJLJFJL7|JFJLJLJL-JF--JJ7L-7J-|-FJ..|7.-|F|77|F-J|||F7F-J||||F7L7F--7F7||L-JL-JLJLJL--JL-JL7|LJ-J.L7
|
||||
|F-|-J.FF7L7F||F7F---JFJFLJ|FJL7F--7F7F7|F--JF7|L-JF--7F7F-JJJL-JF|--.7L|.7FL--.L|FF-7L-7LJLJ|L--JLJLJL7|L-7|||||F--------7F----7F-J-FLJ-7-|
|
||||
F7||-F-F-JJF7-FJLJF--7L7F--JL7JLJF7LJLJ|||-F7|LJF-7L-7|||L-7.7JFLFJ-7FJ7|7L7--LF7F7L7L-7L---7|F7F--7F--JL--JLJLJLJF---7LF7LJF7F7||F77JF-7-F7
|
||||
7JF|.L--7J7F7-L--7|F-JFJL--7FJF7F||F---J|L7|LJF-JFL--JLJL--JF7.|J|.|F7F7JFJL|.F||||-|F-J|F--JLJ||F7|L--7F---7F7F7FL-7FJFJL--JLJ|LJ||F7FL7JJ|
|
||||
..F--77JJFFFJJ|.LLJL--JF---JL-JL-JLJF7F-JFJ|F7L--------7F7F7|L7JFLFLJL7L-F--LF-J|||FJL-7FJF7F-7|LJ||F7JLJF--J|LJL7F-JL-JF7F7F-7L--JLJL7FJJF-
|
||||
L7|L|LJ.77F77LF7F---7F7L--7F7F-7F---J||F7|J||L-------7FJ|LJLJFJFF-L7JF7FL|.LLL-7LJ|L--7|L-JLJL||F7||||F--JF7FJF7FJ|F---7|||LJF|F-7F--7|-J.LJ
|
||||
.F|7|L-F--|L7FJ|L--7||L--7LJLJ7LJF---J||LJFJL-------7LJFJF7F-J.L77LJ.-77-LJ..|7L7FJF--JL-7F7JFJLJLJ|||L---JLJFJLJ-||F-7|||L--7LJ-LJJLLJJF7-F
|
||||
FF.JJ7|LJ-L7|L7|F7FJ||F-7L-------JF7|FJL--JF-7F--7F7L7FJFJLJJF7JJL|J77.F7JFFF-7FJL7L----7LJL7L----7||L-------J|F7FJLJFJLJL7F7|.F7F7|.||.---J
|
||||
FJ-|7F-7F|L|L-J|||L7|LJFJF7F7F7F-7|L-JF7F-7|FJL-7LJL-JL7L7F--JL-7.77F7-|J|FJ|FJL7FJF---7L--7L-7F7FJLJF-7F7F-7F7|||F--JF--7LJ|L-JLJL7-777-|-7
|
||||
|J-77|J|F7JL7F7LJL-JL7.L-JLJLJLJJLJF--JLJ|LJL7F7L7F7-F-JFJL7F---JF7FJL--7F7FJ|F7|L7L--7|F7FJF7LJLJF-7|FJ|||FJ||||||.F7L7FJF7L7F7F7FJ.J..F||F
|
||||
|LFJFJ7LF--FJ||F7F-7FJF7F7F-7F-----JF7F7F-7F7||L7LJL7L7FJF7|L-7F7|LJF7F-J||L7LJLJFJF7J|LJLJFJ|F7F7|.LJL-JLJL-JLJLJL-JL7|L-JL7LJ||LJLF.FF7LL|
|
||||
|-7F|JF.LL.L7|LJLJFJL-JLJ|L7|L------JLJ|L7LJ|LJLL---JFJL7|||F-J|||F-JLJF7||LL--7FJFJL7|F7F7L7||||LJF7F7F7F7F7F-7F7F7F7LJF7F7L7FJL7F--7-.|7|F
|
||||
J||FF7..-7FLLJF---JF----7L-JL----------JFJF7L------7FL7FJ||||F7|LJL-7F7||||F7F-JL7L7FJLJLJ|FJLJLJ.FJLJLJLJLJ||F|||||||F7|LJ|FJL-7LJF-JFF7JF-
|
||||
J-|L--|7LL7J|-L----JF--7L------------7F-JFJL7F-7F--JF7|L7|LJ||||F---J|||LJ|||L7F7L7|L-7F7|LJF-----JF-7F----7|L7LJ||LJ|||L-7||F-7|F7|7.LJJ7||
|
||||
||JLJ7|F.|J.F-F-----JF7L-------------J|F-JF7LJJ||F-7|||FJ|F-J|||L7F-7||L7FJ||-||L7||F-J||F7JL-7F7F7|FJ|LF--JL7L-7|L-7LJ|F-J|LJFJ|||L-7.FJJ7L
|
||||
FF7-7|F7FF77.FL--7F7FJL7F------7F--7F7|L--JL--7||L7|||||F|L7FJ||FJ|FJ|L-J|FJL7||FJ||L-7|LJL--7LJLJLJL7L7L-7F7L--JL--JF7LJF7L7FJL|||F-J-F|FFJ
|
||||
F-J-7-7||-L7-F--7LJ|L-7||F-----J|F7LJLJF--7F--J||FJ||||L7|FJL7LJL7|L-JF--JL7FJLJL7LJF-JL---7FJLF-7F--JFJF-J|L--------JL--JL7|L-7LJLJJJJLL-7|
|
||||
77F.|LFJJL-|JL-7|F7L--J||L------J||F7F7L-7LJF77||L7||LJFJ||F7|F--J|F--JF-7||L--77L-7L7F-7F7||F-JFJL--7L7L--JF--------------JL--J-|JJ|-FJJ.FJ
|
||||
|L-.LF-J7JF7-F-JLJ|F--7LJF--7F7|FJLJ|||F7L7-|L7LJFJLJF7|FJ||LJL---JL--7L7|FJF--JF--JFJL7LJ||||F-J|F-7L-JF---JF7F----7|F7LF--7.F7F|J.|7L77-L7
|
||||
J-J7.LJL--F--JF--7|L7FJF7L-7|||FJF-7LJLJL7L7|FJF7|F--J||L7||F---------JFJ|L7|LF7L--7|F7L-7LJ||L--7L7L-7|L----JLJF---JFJL-JF-JFJL7--F7|LJL77|
|
||||
L-J777-F|LL---JF-J|FJL7||F-JLJLJFJ.L----7L-J|L7|LJL--7LJJ||||F--7F7.F7FL7|FJL7||F7FJLJ|F-JF7|L-7FJFJF7L----7F---JF7JFJF-7FJF7L7FJLFJ|7JLFFFL
|
||||
FFJFFJ7-F.|FF--JF7|L7FJ||L---7F7|F7F----JJF7L7|L7F---JF-7||||L7FJ|L7||F7|||F-J|LJ|L-7FJL--J||F7||JL-JL----7|L----JL7|FJ|LJ7||FJL-7L7|--77FJ.
|
||||
FJ-LL.L7F--7|F--J||FJ|.|L----J|LJ|LJ|F7-F7||FJ|FJL-7F7L7LJLJL7|L7L7LJ||||||L-7|F7|F7||F7F--J||||L7F-7F7F7FJL7F--7F7LJL77F-7|||F--J-||J-JF7L.
|
||||
|F-F7FFLL7|F||F--J|L7L7L-----7L7FJF--JL7|||LJFJL7F-J|L7L7F-7FJL7|FJF-J|LJLJF-JLJ||||||||L7F7||||FJL7LJLJLJF-JL7.|||F-7L7L7LJLJ|F7F7||J|FL7J7
|
||||
F7J.L7|-JLLLLJL7F7L-JFJF7F7F-JFJL-JF---J|||F7L--J|F7|FJ|LJFJ|7FJ||FJF-JF---JF-7FJ||||LJ|FLJ|||LJL7FJF7F--7L--7L7LJLJ.L7L7|F---J||||||F-7.7J|
|
||||
LJ-F-FJJ--J-L|LLJL7F7L-J||||F7|F---JF7F7||LJL-7F7||||L7-F7L7L7L7|||J|F-J-F7FJFJL7|||L7FJF7FJ||F--JL-JLJF7L--7L7L-----7L7LJL-7F7|||||||FJ7L7.
|
||||
LFFF7JF-7J|-FJ-F--J||F-7LJ|LJLJL----JLJLJ|F7F7||LJ|LJFJFJ|.L7L7||||FJL7F7|||FJF-J||L7|L7||L7LJ|.F-7-F--JL---JFJF-7F--J|L7F--J|||LJLJLJL-7L||
|
||||
.|J.77|F7F-.|--L-7FJLJJL-7|F7F7F--------7||LJ|||F7L7FJ-|FJF7L7LJ|||L-7LJ|||||FL-7||FJ|FJ||-L-7L7L7L7L----7.F7L-J7LJLF7-FJL---JLJF7F-7F7FJ.L-
|
||||
F.|7|-F|F--|.L|F-J|F7F-7FJLJLJLJF---7F-7LJL-7||LJ|FJ|F7||FJL7L-7|||F-JF-J|||L7F7|||L7|L7||F7FJFJFJFJLF--7L-JL-------JL7L-7F---7FJLJ.LJLJ|FF|
|
||||
|7L-J.LJ7J||-FFJF-J||L7|L-7F7F7FJF--J|FJF7F7|||F-J|FJ||||L7FJF7||||L7FJF7||L7||||||FJL7|||||L7|LL7|F7L7FJF-------7F7F7L7-||F-7LJF-7F77LL|7-F
|
||||
FFL7|FFJLF|.|L|FJF-JL-JL--J||||||L--7||FJ|||||||F-J|FJ||L7|L7|LJLJL7|L7|||L7|||||||L7FJ||||L7||F7||||FJ|FJF----7.LJ||L-JFJLJFJ|FJFJ||7LL|J.7
|
||||
F|L|-|7J-J|FL7LJ7L--------7|LJLJF7F7|||L7||||||||F-J|-||FJL7|L-7F--J|FJ|LJFJ||||||L7||FJ|||FJ|LJ|||||L7|L-JF--7L--7|L7F7|F-7L--JFJL|L7F-LJ-F
|
||||
F--..L7...F7L|J.FF---7F7F-J|F---JLJLJ||FJ||LJ|||||F7L7LJL7FJ|F7|L7F7|L7L7LL-J||||L7|LJ|FJ||L7L-7LJ|||FJ|F-7L-7L---JL7LJ|||FJF7F7L7||FJ-7|7.|
|
||||
7J|F7JL77-FJJ|.-JL--7LJLJF7|L------7FJ|L7|L7FJ|LJ||L7L-7F|L7||||FJ|||FJFJF--7LJ|L7|L-7|L7||FJF7L7L|||L7|L7L-7L-----7|F7|||L7|LJL7L-J|J-L.F-F
|
||||
7-J-7-FF-7LJ.F-F7JF-JF7F7|LJ-F-7F7FJL7L7||FJL7L77LJFJF7L7L7|LJ|||FJLJL7L-JF7L7FJFJL7FJ|FJ||L7||FJFJ|L7||FJF-JF7F---JLJLJ|L7|L--7L7F7L-7-FJFF
|
||||
L|.|LFFJ|F|JF|LLF-JF7|||LJLF7L7LJLJF7L7LJLJF7|FJF--JFJ|FJFJL-7||||F---JF-7||FJL7L-7||FJL7||FJ|||-L7L7LJ||7|F-J||LF7F7F7J|FJL7F-JF||L--J7F7..
|
||||
FL|F-J.FF-||-77JL-7|LJLJ7F-J|FJF7F7|L7L---7|||L7L7F7L7||FJF-7|||LJL7F7FJFJ|||F7|F-JLJ|F7|||L-JLJF-JFJF-JL7LJF-JL-JLJ||L7LJF7|L--7|L-77-7|.F7
|
||||
7J.FLF--JLL|F7-F-7LJF7-F7L-7LJFJLJLJFJF7F7LJ|L7L7LJ|FJ||L7L7LJ||7F-J||L7|FJ|LJ||L---7||LJ|L-7F--JF7L7L-7FJF-JF--7F-7LJFJF7||L---JL7FJ7|||-||
|
||||
|FLL7J||L|FJ7|.L7L--JL-JL-7|F7L7F--7L7||||F7L7|FJF-JL7LJ7L7L7FJL7|F7||FJ|L7|F7|L7F7FJLJF-JF-JL7F7||FJ7FJL7|F-JF-J|7|F-J7|LJL---7JLLJ..FLL--L
|
||||
JJ|.|F|FFL|FLL-LL--------7|LJL7LJF-J-LJ||||L7||L7L7F7L-7F7|FJL7FJLJ|||||L7||||L7||LJF7LL--JF7-||LJ|L-7L7FJ|L-7|F7L7||F--JF-7F7FJJ|J-F7--J777
|
||||
FLJ.LLJJ7L|7.LF7F7F------JL---JF7L-7|F-J|LJF|||FJFJ||F7||LJL7FJ|F--J||L-7LJLJ|FJ|L--JL7F---J|FJL-7|F7|-LJFJF7||||FJ|LJF7FJ||||L7FL-F|L|F7L-L
|
||||
LJL|.FL.|LL.FF|LJLJF7F7F7F---7FJL-7|FJF7L--7|||L7|FJ||LJ|F7FJL7|L--7||F7L7F--JL7L7F-7FJL7F-7LJF--J|||L--7L7|LJ|||L7|F7||L-7LJL-J-||FJFJL-JLL
|
||||
|J-|JJ|-F7|LFFJF7F7|||||||F7F|L--7|||FJ|F--J||L7||L7|L7FJ|||.FJ|F--J||||FJL--7FJFJL7LJ.FJL7|F7L--7||L7F-JL|L-7||L7||||||F7L----7|L|.F||F7||J
|
||||
|.|F7JL7|FFJFJFJLJLJ||LJLJ|L-JF7FJLJ||F|L--7||FJ|L7||FJ|FJ|L7|FJL--7|LJ||F7F7||JL-7L-7FJF-J||L7F-J||F|L--7|F7|||FJ|||LJ|||F---7|J.-7.F7.F7|.
|
||||
F7-LL.LJLJL7L-JF7F--J|F---JF7FJ||F7-LJFJF-7||||FJFLJ||-|L7L7|LJF---JL-7|||LJLJL7F7|F7||FJ.FJL7|L7FJ|FJF--JLJ||||L7||L-7LJ|L--7LJJ7LL7L7FFJ-J
|
||||
.|JJL7.7|FFLF--JLJF7FJL-7F-J||L||||F--JFJJ||||||F---JL7L7L7||F7|F-7F7FJ||L-7F7FJ||LJLJ||F-JF-JL7||FJL7L----7||||FJ||F-JF-JF-7L-7.|7.|-|FJ.L.
|
||||
|..FFLLJF7JJ|F-7F-J|L7F-J|F-JL7LJ|LJF7FJF-J|LJ||L7F7F7L7L-JLJ|LJ|FJ||L7|L7LLJ|L-JL7F-7|||F7|F--J|LJF7L7F7F-J||LJL7||L-7|F7L7|F-J7LF.|.|7|J|L
|
||||
|J77L-JL|L|7LJLLJFFJFJL--JL7F7L7FJF7||L7|F7L-7LJ-||||L7L---7JL7FJL7|L7||FJF--JF--7LJFJLJLJ||L--7L-7|L-J||L-7|L-7FJ|L7FJLJ|FJ|L-77JJF7JL7|-7|
|
||||
7.FL7J|...J7.J-LL-L7|JLFF--J||FJL7|||L-J||L7FJ7F-J||L7L-7F-JF-JL7.||FJ|||FJF-7L-7|F7L-7-F-J|F--JF-J|F7FJ|F-J|F-JL7L7||F|||L7L-7|--FFJLF|7LL|
|
||||
L-L7L-JJ7.LFJ|.LJFLLJJJFJF7FJ|L7FLJ|L7F-JL7|L-7L7FJL-JFFJL7FJF-7L7|||FJ||L7|-L7FJLJL-7L7|F7|L--7L-7|||L7LJF7LJJ|L|FJLJ-L-L7L7.LJJF.||F|F77FJ
|
||||
7|||L|-||..||-.77LF-F--JFJ|L7L7|F--JFJL--7|L7FJFJL-7F--JF-JL7|7L-JLJ||LLJFJ|F-JL----7|FJLJ||F--JF7|||L7L--J|FJJ-LLJJJ|.L--L7|J.LJF-7FJJLL7||
|
||||
.-JLFJF7L7.F|7|-7|LFJF-7|FJFJ-LJL7F7L7.F7LJFLJFJF7FJL7F7L--7LJ77LF--JL-7FJFJL-7F7F7FJ|L-7FJ||F7FJ|||L7L7F--JJ|.FLJ-JF--.LJFLJ|.LF-L|JLL|FJJ-
|
||||
FJ7F7JL|JL-LJ-L7FF-L7|FJ|L7|J-|F-J|L7L-JL7L|7.|FJ||F-J|L7F7L-7JFFJF-7F7||FJJF-J||||L7|F-J|FJLJ|L7||L7|FJL7|J7L77.|LF|JF-7F|JL7JFL7||F|F.L-|.
|
||||
F-|JJ7.JJ-|F77-LLJJ-LJL-JLLJJJFJF7|FJF---J-||7LJ-LJ|F7L7LJ|F7|F-JFJFJ|||||F-JF7|||L7||L7-||-F-JFJLJ-|||F-J-77|L--L-L|.|-F|.LLJL|.7FF7L7J--F7
|
||||
LF-.|FL-F-F|7.LFJ-|.|7|L|7J77|L7|LJL7L---7-7|FJJJ.FLJ|FJ.LLJ||L7FJLL7|||||L-7|LJLJ.||L-J-LJ-L--J7|J-||LJJL7|LF7||.LLL7J-F|-J.7-F--FJL7|F7JLF
|
||||
F-.F||..LFJLL7FJ.F|-7-77FL.JFFLLJ-F7|F---J.||7J|.F7.LLJ-7-L7LJ-|L7-LLJLJ|||F|L----7LJ7F7JLL.LJ.LFJ|.LJJL--.|-F7-77.F7J|FL|JF7JF|LJLJFJL-F.FF
|
||||
F-F||-7-FLF7JFLJ7F|-JJ.LJJJ|-JJ|JF|LJ|F7LJ-JL77-F7JFJLL7FJ.F7.LL-J7LJJJL||F-JF7F-7L---J|LFJ-.J7JJ7L||..LL-JJ7J|F||FFF.LF.|.|L-LF-JFFLJ-FJ-J|
|
||||
L7J||.L-JLLJ--7.FL-7||.F|-L7.|.|-FJF7LJ|..7-LFJ.|L7L-||L|7-|-L.|.|L|.FF7LJL7FJLJJ|F----J.|7L|--7.|.LJ-7..|JF7|L-L-7F--L|FJ7|FLL|FJ7|-7.|-|JL
|
||||
FL7F||.||7L-F--|JF-.-F-JLF7J||L..L7||F-J7J.-.|.FL|J-FLF.|J7JFL-|-7.--F|L---JL7LF-JL--7|JF-7L7.L-FJ7|LJ7F77JJ.|JL|.-LL.|L-L-|-7.||.L7-F-7.|JL
|
||||
L|7-FLJ--F77|-LJ.|--JJJL.|JLJFJF7-LJLJ-F|7L.FJ-77J..F-|-|J|F7.|LLL-7|LL--7F7FJ.L-7F--J7F7F7-JJ.LJ--FJL|FF-7LF|7.L7FFJ-J|.L.|.LFL7.LJFJFF-|..
|
||||
.|..|.|7L.L|J.LL-L-7F7-LFJ|.FF.F7.J.|L--|7.|--7|F7FJJ.|L|-L7|--JF|.|-7F|LLJ|L77LFLJ-J.J-.JJ.|||FJF|J..|-LJF-L|7L|-7L|7L7J-JJ.L-J-||-|-LJ|LLF
|
||||
LJ-F---J.F7|77JFL-||-F7||-J-LJ-FJLJF-7|F|F-JFFJ|.F--7-LJ|LFL|-7||JFF-|LF.JL|FJ7FFJL7J-|7L77F|FFJJ|7..LL-J.777F7F|JF-77J|LFFF77FL|LL-|-.LJJJ|
|
||||
.|JF|-L|.J7LJJ77|F7|7F--|-|JL7-L7LFFJ-77-J|F-JFJ7JF|J|7|F-|7|-L|||F7.|L7-F|LJJ7-|7.|FLLF7LL-FFJ|.-L--7.LF||F-J.L|F7.L7F7.F7LLJ7J|F|-|J|L|L77
|
||||
F-7|L77L..F-J7F---7J7||.|-F.LL7.|F7.JL|F7LF|-FF-LF7|-7-|.L--|...FL|L-JFF-J-.|.7F||JF||.FL7L.7||L7JJ-7FF-7|F|-|-LF--J7L7LL7JL||LF|F--LJ|-FJ|7
|
||||
L|L--JJJ-LLJ-FF.JJLLJ7-L7-JLJJ|-.F7..-|LJ.FJ.|J..L7J.L-.--JL|.-FJ-L-LL.|.JJ-FJ.F|JLLJF-7J7JJJ|7JLJ..FL--JJ-77L7.|JLL-JL-L.LL-|7-L|J.LLL-L-|.
|
||||
118
2023/day10/p1/main.py
Normal file
118
2023/day10/p1/main.py
Normal file
@ -0,0 +1,118 @@
|
||||
import math
|
||||
INPUT_FILE = "input.text"
|
||||
|
||||
|
||||
class Point:
|
||||
x: int
|
||||
y: int
|
||||
|
||||
def __init__(self, x: int , y: int):
|
||||
self.x = x
|
||||
self.y = y
|
||||
|
||||
def add(self, other):
|
||||
return Point(self.x + other.x, self.y + other.y)
|
||||
|
||||
def __str__(self) -> str:
|
||||
return f'P({self.x}, {self.y})'
|
||||
|
||||
def __eq__(self, other) -> bool:
|
||||
return self.x == other.x and self.y == other.y
|
||||
|
||||
class PipeMap:
|
||||
pipe_map: list[str]
|
||||
start_position: Point
|
||||
bounds: Point
|
||||
|
||||
def __init__(self, map_path: str):
|
||||
|
||||
with open(map_path, 'r') as file:
|
||||
self.pipe_map = file.readlines()
|
||||
|
||||
for i in range(0, len(self.pipe_map)):
|
||||
self.pipe_map[i] = self.pipe_map[i][:-1]
|
||||
|
||||
max_y = len(self.pipe_map)
|
||||
for row in range(0, max_y):
|
||||
max_x = len(self.pipe_map[row])
|
||||
col = self.pipe_map[row].find('S')
|
||||
|
||||
if col != -1:
|
||||
self.bounds = Point(max_x, max_y)
|
||||
self.start_position = Point(row, col)
|
||||
|
||||
def in_bounds(self, p: Point) -> bool:
|
||||
return (p.y < self.bounds.x and p.x < self.bounds.y and p.x >= 0 and p.y >= 0)
|
||||
|
||||
|
||||
directions = {
|
||||
8 : Point(-1, 0),
|
||||
9 : Point(-1, 1),
|
||||
6 : Point(0, 1),
|
||||
3 : Point(1, 1),
|
||||
2 : Point(1, 0),
|
||||
1 : Point(1, -1),
|
||||
4 : Point(0, -1),
|
||||
7 : Point(-1, -1)
|
||||
}
|
||||
|
||||
pipe_directions = {
|
||||
'|' : [Point(-1, 0), Point(1, 0)],
|
||||
'-' : [Point(0, -1), Point(0, 1)],
|
||||
'L' : [Point(-1, 0), Point(0, 1)],
|
||||
'J' : [Point(-1, 0), Point(0, -1)],
|
||||
'7' : [Point(0, -1), Point(1, 0)],
|
||||
'F' : [Point(0, 1), Point(1, 0)],
|
||||
'.' : [],
|
||||
'S' : True
|
||||
}
|
||||
|
||||
def main():
|
||||
|
||||
pipe_map = PipeMap(INPUT_FILE)
|
||||
|
||||
# Check around start
|
||||
next_directions = None
|
||||
current_pos: Point = pipe_map.start_position
|
||||
last_pos: Point = current_pos
|
||||
|
||||
for d in directions:
|
||||
new_pos = pipe_map.start_position.add(directions[d])
|
||||
|
||||
if pipe_map.in_bounds(new_pos):
|
||||
if char := pipe_directions[pipe_map.pipe_map[new_pos.x][new_pos.y]]:
|
||||
|
||||
# Check if this pipe connects to start somehow
|
||||
good = False
|
||||
for d2 in char:
|
||||
if new_pos.add(d2) == current_pos:
|
||||
good = True
|
||||
break
|
||||
|
||||
if good:
|
||||
current_pos = new_pos
|
||||
next_directions = char
|
||||
break
|
||||
|
||||
steps = 1 # Because current pos isn't at start rn
|
||||
while current_pos != pipe_map.start_position:
|
||||
|
||||
for direction in next_directions:
|
||||
potential_pos: Point = current_pos.add(direction)
|
||||
potential_directions: list[Point] = pipe_directions[pipe_map.pipe_map[potential_pos.x][potential_pos.y]]
|
||||
|
||||
if pipe_map.in_bounds(potential_pos) and potential_pos != last_pos and potential_directions:
|
||||
last_pos = current_pos
|
||||
current_pos = potential_pos
|
||||
next_directions = potential_directions
|
||||
steps += 1
|
||||
break
|
||||
|
||||
|
||||
print(f'Loop finished, start found in {steps} steps')
|
||||
print(f'Critter is at {math.ceil(steps/2)}')
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
5
2023/day10/p1/test.text
Normal file
5
2023/day10/p1/test.text
Normal file
@ -0,0 +1,5 @@
|
||||
..F7.
|
||||
.FJ|.
|
||||
SJ.L7
|
||||
|F--J
|
||||
LJ...
|
||||
140
2023/day10/p2/input.text
Normal file
140
2023/day10/p2/input.text
Normal file
@ -0,0 +1,140 @@
|
||||
F---7-FJ.7--FJ7.-.7-|7F.|7FJ77F7J-|--.FLF|.F-7-F7.F.J77|--|7--|7|-J-F--7-F7.F7-F7F7F-|-|-F777L7|-.FLF|-77F7-FJF|JF--F.77J-L7-FF--7.FFF7FF7.7
|
||||
|J.F|7F|F7J.J-L-|-|.L7F7JF7-7-LJ|LJ.F7.L|.F|F7FJ7.F7.|F|L7.L7L|-F-|7|L|JFF.F||F777L|-77L-|JF7FJJJLF7LL7|.L77|L7LLLJ.|..LLL7|L7-.-JFFLL-7L-FF
|
||||
F7L7JLLJL-7FL7|F7-J7.-J.7L7J|.|-JF|FLFF7L-JLL|-F7-F|77|.|L7FJ7JJFJL7JJJFF.FJ||||JFF|LL7F-JF|.LJ7F.|F7F|J7LLL-7||||LFFFF77|-L7LL7F7-JL7|FF7L|
|
||||
JFL7FJ7.--JJ7L||.LF|7JJFLFLF7.|.LFF7-FJ|-J-77|-F.|J|LLFF-|-7JL7-J7L|JLF7-7F7|LJL-7|L7F7J-FJ|F|7|77|J-F..FJL.|F77-7F|-FJ|J7J.--7.7J.7-|-||LF|
|
||||
.|LLFJLF--J.FL|-J.F77F-77.L|L7F77F7.F|FJ7.FJ7JF7F7|F-J..7JL|..FF---|J-F|JF|||F--7|-FL7.J-J.|LFFJ-7.L7J|.7-|LJJF7L77LL||.FL--JJ|-L-F|7F-JJ|.|
|
||||
FL77J|LJFJFF7JJ|J7LJ.|.LF.LL7|||7||-FJL---7.LFJL7J7|FLF7J|F77-J|JJFJ-F-7FFJLJL-7LJ7LLLJ7JLL-7||J|||L-7|---L.FFLLFF---|F--J.|.|L.||FJ7.LLL|-J
|
||||
|L-J-JJ-F-F-J7F--7.F7F7F7FF-JLJ|FJ|JL7F-7FJ7-L7FJF-7F7||7FFF7JL7.-JLF|FJFJF7F7FJFFL-|.L-7J|FJFJ-JJ7.L|7.|7J-|J.||||LFLJ-F|F7-7|FF-L7|7-.|L7|
|
||||
7|LF|JLL|.F.F-FJF-7|||LJL7L-7F-JL7L7FJL7LJF77F|||L7||||L-7F||.7F7FLFFJL-JFJLJLJ-F|J.F-FL7.LJ||.|L.F7|.F7.7|FJ||-J|J-J7.7-7---|-LJF|7F|-77-L-
|
||||
|J.7|LF7JF|F7|L.L7|||L7F-J-F||F7FJFJ|F-JF7||F7||-F|||||F-JFJ|7J|L|F-L-7F7L-7F777.|JF77J-F7FFF777LFFF-F-7-7--LJL|-L|.FF-F.JL|.LFJ-77-F|7F77FJ
|
||||
JJ--JLJL-J|J.FLF-J|||L||F77FJ||||FJFJ|F7|||LJLJ|JFJ||||L77L7|F--7F7-F7LJ|F7|||F7F7.L|.F-JL7FJL7F---7JL7L7F7.L|F--7L-L7.J-.-7JJ|L-7L.|JFJLJF|
|
||||
|JFLJF|-77F-7.FL-7LJL-J|||FJFJ|||L7|FJ|LJ|L---7L7|FJ|LJFJ7FJLJF-J||.||F-J|LJ|LJLJ|7-J7L-7FJL7FJ|F--J--L7|||7FFF-FJ|JLL|FLFLJ.-L7FLL-|L|.7.FF
|
||||
L-77LJJ|FJ|7J.--LL----7|||L7|FJ||FJ||FJF-JF7|FJFJ|L7L7FJF7|F7FJ-FJL-J||F7L-7L7F--J.7|F-7||F7||FJL7L|-F-JLJL-7-|FJLJ77.|7.L7JF|L|7.|---|F--.F
|
||||
7JFF7||FJJJJL7J7.F-7F-JLJL-JLJFJ||7|LJFJF7|L7L7L7L7|-|L7|LJ|LJJ.L---7|LJL7FJ|||F-77LLL7||LJLJLJF-J-|LL---7F-J|||..JJF-.F7.F-7|L|7F77JFJ-L|FJ
|
||||
|-|LLJF-7LJ|LL|--L7|L7F--7F--7L-JL7L7FJFJ||FJF|FJFJ|FJFJL-7L-7F-7LF7|L7F7|L7FJ||FJF7FFJLJF-----JF-7F7F-7FJL--777-7L-|JF|77LLLL7JFJ|F-JJ.L|7|
|
||||
77LJ7F--7J7L7L|.F-J|FJ|F-J|F-JF-7FJFJL7|FJ|L7FJL-JFJ|FJF7|L7FJL7|F|||FJ|LJFJL7||L7|L7L--7L7F-7F7|FJ||L7||F---JL|-L7J.-77J-F.||JF|.L--J.--L7|
|
||||
L77--L-7J-|7LFF7L-7|L-JL-7||F7|FJL7|F-J|L-JFJL-7F7|FJL7||F-J|F-J|FJLJL7|F7L7-||L7LJFJJF7|FJL7LJLJL7||FJ||L--7F-7-|7.F.|7JL-L7J-7JFFL--JFFL.L
|
||||
..FFJL7L7-LLF7|L--JL-7F--J|LJ||L7FJ|L7F|F--JF7-LJ|||F-J||L-7LJF-JL--7FJLJ|FJFJL7|F-JF7||||F7|F----J||L7LJF--JL7|F--7LFLJ--||||FLLF7-J.FF-.F|
|
||||
F-J|7L|-77|-J7|F7F--7|L---JF-JL7|L-JFJFJL-7FJL7F7|||L7|||F7|F-JF7.F7||F7FJL7L7FJ||.FJ||LJ||LJL-7-F7||JL7FJF7F7||L-7|-FJ-7LL77-F7-F|J.F7||F-7
|
||||
LL7L77L-7-7-LLLJLJF-JL-----JF--JL--7L-JF7FJL7FJ||||L7L7|LJLJ|F7|L7||||||L-7L7||FJL-JFJL-7||F---JFJLJ|F-J|FJLJLJ|F7|L7JF7.7JL7|LF-7.F-FF77JJ.
|
||||
FF--.7.LJLL7|.|FF-JF--------JF7F7F7|F--J||F-JL-JLJ|FJFJL7F--J|LJFJ|||||L7|L7LJ||F---JF--JLJL--7JL7F-JL7FJ|F----J|||FJFJ|7JF-J-7|JL||LLLJL7-F
|
||||
7|..L-FFJJFL7FFLL-7|F---77F7FJLJLJ||L7F7LJL--7F---JL7|F7||F--JF-JFJ||||FJF7L7FJ||F--7L---7F---JF-JL7F7|L-JL7F--7|||L-JFJF7L7F7JJ.FJF-7L7J|7|
|
||||
F7.L7LJJ.FJL|F7L|7LJL7F7L-J|L----7|L7LJL7F7FFJL7F-7||||LJLJF--JF7L7||LJL7|L-JL7|LJF7|F7F-JL-7F7L7F-J|||F---J|F7||LJF--J||L7JLJ.LFLJ|LJ--7JL|
|
||||
J7-FJ.|7.|J-F7L7LF7F-J||F-7|F7FF-JL7|F--J||FJF-J|FJFJ||F7F7L--7||FJLJF-7|L---7||F-JLJ||L--7FJ|L7|L7FJLJL7F-7LJ|LJF-JF7F7L7L7||--|..|F7|LJ|F|
|
||||
|F7LF77J.LF-LJJ.FJLJF7|||FJLJL7L--7LJL7F7|||FJF7||FJFJLJ||L---J||L--7|FLJJF--J||L-7F7||FF-JL7|FJL7|L-7F-J|FJF7L-7L7FJLJL7|FJ7|F7|F.|--7-LL|7
|
||||
|L||F---F.F7LJ-FL---J||||L--7FJF7L|F--J|||||L7||||L7L-7FJL-7F-7||F7FJL7F-7L--7LJF-J|||L7L7F-J|L7FJL-7|L-7|L7||F7|FJ|F---J||F---77-|J|7L-F.L7
|
||||
-7F77JJF-|7JJ.F-F--77||LJF--JL-JL-J|F7J||||L7|||||FJF7|L7F-JL7|||||L7FJ|FJF-7L7FJF-J||FJFJL7FJFJL7F-J|F-J|FJ|||||L7|L7F7FJ||F--JJ7|.L7|F|.LJ
|
||||
.L.|L|.F-L|7|FFLL-7L7LJF7L--------7LJL-JLJ|FJ||LJ|L7|LJFJ|F7FJLJ||L-J|.||FJFJFJL-JF-J||FJF-JL7|F-JL7FJ|F7||FJLJLJFJ|FJ||L7LJ|F-7JF777.LFFJL|
|
||||
J..L.LL|J-J-|7J.LLL7L-7|L---------JF--7F7FJL7|L-7L-JL77L7LJLJF--JL7F-JFJ|L7|FJF---JF7|LJFJF7FJ|L-7FJL7||||||F----JFJL7|L-JF-J|FJ-LF77.|L||.F
|
||||
.F-.L7.|7.F7.F-7.FLL7FJL----------7L-7LJLJF7|L7FJF-7FJF7|F--7L--7FJL77L7L7|LJFJ|F7FJ|L-7|FJ|L7L--J||FJLJ||LJ|F7F7FJF-JL7F-JF7||F77.JJ-L-|-LJ
|
||||
FF|-.FFF-JJLLJL|FF--JL7F77F7F7F--7|F-JF7F7|||FJL-JFJL-JLJL-7L---JL7FJF7L7|L-7L7FJ||FJF-J||FJ7L---7L7|F--JL-7LJLJLJFJF-7||F-JLJLJ|-J7|-|F7-L7
|
||||
|L-JLLJL-J7F||.J|L---7LJL-JLJLJF7LJL7-|||||LJL7-F7|F7F---7FJF7F-7FJL7||FJ|F7|FJL7||L7L-7|||F7F7F7|FJ||F7F7FJF----7L-JFJ|||F---7FJFL7.FFJJ|F7
|
||||
..|.|F7L77LL77J|F-7F7L--------7|L--7L-JLJ|L--7|FJ||||L7F7LJ|||L7LJF-J||L7LJ||L--J||FJF-JLJ||LJLJ||L7|LJ|||L7L-7F7L--7L-JLJL7F7LJ-7F|-7.|7FLJ
|
||||
F.L|-|J.F7.|L|-LL7LJL----7F-7FJ|F-7L7F---JF7FJLJFJLJ|FJ|L--7||FJF-JF7||JL-7LJF7F-J|L7L--7FJL7F--J|FJ|F-J||FJF-J|L--7L7F7F--J|L7L|F-J|F|JLJ|J
|
||||
|F-L.|.-JL7|JF-L|L------7|L7LJFJL7|FJ|F--7||L--7|F7FJL7|F--J||L7|F-J|||F7-L-7|LJF7|FJF7FJ|F7||F7FJL-J|F7|||FJLFJF--J-|||L---JFJ.-JF|JLJ|J.JJ
|
||||
7-LJFJ7|J.F-.J77FF------JL-JF-J..||L7||F-J||FF7||||L7FJ||F7L||F||L-7|||||F7F||F7|||||||L7|||||||L7F--J||||||F7|FJF77FJ||F-7F7|F7-|FL-F.7-7J|
|
||||
F7-|7.FF-FJ-|JF7FL--7F7F7F--JF7-FJL-J|||F7||FJ|||||FJ|FJLJ|FJ|FJL7FJ||||||L7|LJLJ|||FJ|FJ||||||L7||F-7|LJLJLJLJL-JL7L7||L7||LJ|L--7J7|FL-|-F
|
||||
LJ--F7L---JFLJL-JJ-LLJLJLJF--JL7L7F77||LJLJ||JLJ||LJL|L-7.||FJL-7|||LJ||LJFJL7F--J|LJFJL7LJ||||FJ|||L||F----------7L7||L7|||F-JF--JJ-F7LLJ-J
|
||||
|.LF-JF-F|.|J7.L77|.F--7F7L---7L-J|L7|L7F--JL-7F||LF-JF7L7LJL7F-JLJF--J|F-JF-JL7F7L77L--JJFJ|||L7|LJFJ|L---------7L7||L7|||LJF7L7|7|F|L..L7J
|
||||
|7F-J7.FFLLJ|F..F7F-JF7LJL---7L---JFJL-JL--7F-JFJL7L7FJL7L-7FJL---7|F-7||F7L7F7LJ|FJF7LF--JFJ||FJL77|FJF---------J|LJL-JLJL7FJL7L--7J-J-7...
|
||||
.-J|||-|7L|7FJF7||L-7|L-7F--7|FF7F7L--7F7F-JL7FJF7|FJL-7L7FJL7F7F-J||FJ|||L7LJ|F-J|FJL7L7F7L7LJL-7|FJ|FJF--7F7F--7F-----7FFJ|JFJF--J-7.FF--F
|
||||
J7|FLJF-L7|LF7|LJL7|LJF7LJF-JL-JLJL---J||L7F7|L7|||L7F7|FJL7-LJ|L77LJ|FJ||FJF-J|F7LJF7L7|||FJ|F--J|L7|L-JF7LJLJF7LJF7F-7|FJFJ|L7|JLJF7-FJ7||
|
||||
||L7.FL|LL-L.LL7F7L7LFJ|F7L------------JL7||||-LJ|L7||||L-7L--7L7L7JFJL7LJL7L7FJ|L7FJL-J||||F7L---JJ||F--JL----SL--JLJJLJ|FJF--J|7FL-.F77.F|
|
||||
J.||F--7.J7J|-LLJL7L7L7||L---------------JLJ|L--7L7|LJ|L-7L7F-JJL7L7L7FJF--JFJL7L7|L-7F7LJLJ|L-----7LJL7F----------7F7F7|LJ7L---J777.L7LJ--|
|
||||
L-|-|..L7-|LF.LJ-LL7L7||L--------7F--7F7F77FJF-7L7||F-JF7L7|L-7.FJFJFJ|-L-7FJF-JFJ|F7LJL7F7FJF-7F-7L7F7LJF7F-7F----J|||L7.LJJFLL-7|F7JJ.||.|
|
||||
L7F-JF-F|7.F77J|-F7L7LJL7-F---7F7LJF7LJLJL7L7|-L7|||L-7|L-J|F-JFJFJFJFJF--J|LL-7|J|||F--J|||FJFJL7L7LJL--JLJFJL-----JLJFJF|..|LL7JJ-LJ-F7FJ-
|
||||
.F.|FFFF--7||F7LFJL7L7F7|FJF-7LJL7F|L-----JFJL7J||LJF-JL-7FJL7.|FJFL-JLL7F7L-7.|L7|||L---J||L7L7FJ7L7F7F-7F7L----------JJF7-.|L-.||LJ.FLJJ|.
|
||||
FJF|--JL-7||||L7L-7L7LJ||L-JFL7F7L-JFF7F7F7L-7L7|L7.L-7F7||F7L7|L-7|F---J||F-JFJFJ||L7F---JL-JFJL7F7LJLJJLJL-----7LF7F7F7|||.F-J7LJ7.7|J.L|-
|
||||
|7JL|..L||LJLJFJF7L7L7|||7F7F-J|L7F--JLJLJL-7L-J|FJF--J||||||FJ|F7|FJF7F7|||FFJFJFJ|FJL---7F--JF-J||F7-F7F------7|FJLJLJLJL-77LLF7L7-L77L.|7
|
||||
-J7.F----|F7F7L-JL7L7L-JL-JLJF7L7LJF-------7L--7|L7L7F7|||||LJL|||||FJ||||LJFJFJ7L7|L--7F-J|F7FJF-JLJL-JLJF7F--7LJL7F-------J..|JF.77LJ-J-||
|
||||
L-FFF77|-LJLJL---7|JL-7F7F7F7||FJF7L------7|F7FJ|FJ-LJ||||||7F-J||||L7LJ|L7FJFJ|F7LJLF-JL7-||LJ7L----7F---JLJF7|JF7|||F-----7.F7FF7FJ-|...||
|
||||
|7|FJL-7-F-7F7F7FJL7F-J|||||LJLJFJL-------JLJ|L7LJLF7FJ|||||FJF7|LJ|FJF-JFJL7L-7|L--7L7F7L7LJF------7|L7F----J|L-JLJL-JF-7F-J-|L-J|JL-J7.F-7
|
||||
---L7F-J7|FJ||||L-7|L--JLJ||F7F7L7F---------7L-J|F-JLJFJ||||L7|||F-J|FJF7|F-JF7|L--7L-J||FJF7|F----7|L-JL--7F7L--7F7F7FJ.|L-7-|F--J7J|LF-J-F
|
||||
L7LFJ|F7-|L-JLJL--JL7F7|F7LJ|||L7LJF----7F-7L---7L7F7FJ|||||L||||L-7|L-J||L-7|||F--JF7FJ||FJ|||F---JL------J||LF7LJLJLJF7L7FJFJL-7LF-7LL7FF7
|
||||
FL-L7|||F|F7F-7F7F-7LJL-J|7FJ||FJF7L---7|L7|F7F-J.|||L-7|||L7|||L7FJL-7FJ|F-J|||L7F7|LJFJLJFJLJL7F7F--7F----JL-JL----7L|L7LJFJF--J7|FJ.LLLLJ
|
||||
LLF-JLJL-J|LJFJ|||FL-7F-7L7L7LJL-JL----JL7|LJLJF-7LJL7FJ|||FJ||L-J|F--J|FJL7FJ|L7||||F-JF7FJLFF7LJLJF7||F------------JFJFJF7L7|JFLFF|J.L|7L|
|
||||
F-L---7F7FJF7L7|||F--JL7L7L-JF-7F7F--7F7FJL---7|FJF7FJ||LJ|L7LJJF7|L--7||7F|L7L7||||||F7|||F7FJL-7JFJLJ|L-----7F7LF7F7L7L7|L7|L77FF7|LF.F--|
|
||||
L77LJLLJ||FJL-J||||F---J||F-7|FLJLJF-J||L7F--7LJL-J|L7|F-7|FJF--JLJF7FJ|L7FJFJFJ|LJ|||||||LJ||F-7L-JF-7|LF7F7FJ|L-JLJL7|FJ|FJ|FJFLF7F7|L.FL|
|
||||
F-LJFLLFJ|L-7F7|||LJF----JL7||F----JF7|L7|L-7|F---7L7|LJFJ|L7|F7F--J||-L7|L7L7|FJF-J|||LJ|F-JLJ||F-7L7||FJLJLJJ|F--7F-J|L-JL-J|F7F|LJL7FFLJJ
|
||||
||LFJ-LL7L7FJ|||LJFFJF7F7F7||||F-7F7|||FJL-7||L--7L-JL--J.L-J|||L--7|L-7|L7|FJLJJ|F7|||F-JL7F---J|FJFJLJL------JL7FJL--JF----7LJL-JF7FJJJJJ|
|
||||
F7|JFF|.L-JL7|LJ7F7L-J||LJ||LJLJFLJLJLJ|FF7LJL---JF-----77L-FJ|L7F7||F7|L7|||JFF-J|||LJ|F--JL----JL7L7LF7F7F-7F7FJL-----J.F-7L-7F7FJLJJJ..|J
|
||||
|L--|FFF---7||F--JL---J|F-J|F-7F7F-----JFJL7F--7F7|F---7L7|||FJFLJ||||LJ|LJLJ77L-7|LJF7LJF--7LF7F77L-JFJLJLJ.LJLJF7F-7F--7|FJF7LJLJJ|J-7-7..
|
||||
J|LF-7.L--7LJ||F7F7F-7FJL--JL7|||L---7F7|F-J|F7LJLJ|F7LL7L7-||.J|LLJLJ7.-JJLFF---J|F-JL--JF7L-J|||F--7L----7F7F--JLJFJ|F-J|L-JL-7JJJ|JF7JFJ7
|
||||
|F-JF-JL|FJF-J||LJLJFJL7.F7F-JLJL-7F7LJLJ|F7||L---7LJL7JL-J7LJ7.FF|-J--7LF-7-L-7F7|L--7F7FJL7F7LJ|L7FJJF---J|LJF7F7FJF|L--JF---7L77FF7JJFFJJ
|
||||
LL7.LJ|FFJFJF-J|F---JF7|FJ|L-7F7F7LJL---7LJ||L---7L--7L---7-..F-F|.LJ7LL.7J||LLLJ|L--7||LJF7LJ|F7L-JL--JF---JF7||||L--JF--7L-7|L7L-7||J.J.77
|
||||
J..F|.|LL7|JL-7|L----JLJ|FJF-J|||L-----7L7FJ|F---JF-7|F---J-F|..L|L.|L..F|-||F7F-JF7FJLJF-JL-7LJL--7F---JF---JLJLJL7F7FJF7L-7L-7|F7LJ|JL.7L-
|
||||
.FF-J.|FJ||J.F||F-----7L||FJF-JLJF--7F7L7|L-JL----JFJ|L-77JL7J--J|FFF7|.L|-|-F-|F-J||F-7L---7|JF7F7LJF7F7L-----7F7-||LJ7|L-7|F-JLJ|F-J|.FL-J
|
||||
FF|-7.-JFLJ.FLLJL----7L-JLJFJ|F-7L-7LJL-J|F-7F-7F7FJ-L-7L-7J|...F7F7|FL7-JJL7J|LJJ|LJL7L-7F7||FJLJL--JLJL-----7LJL7|L---JF-J|L--7||L7J7--JJ|
|
||||
L-7--JLLJL|.J.F77F7F-JF7F--JF-JFJF7L----7|L7LJFJ|LJF7F7L--J-L.|.FJ|L77..7J.FF.FLJ.J7.|L-7LJLJ|L7F7F--7F------7|F--J|F-7F7L-7L---J-L-JJ|-7.F7
|
||||
FL77L||.F--J-FJL-JLJF7|||F--JF7L-JL-----J|FJF7L-JF-J||L-7J.LL7L-JL..L-J7..JFLF-|FJ.|.F7FJF7F7L7LJ||F-J|F--7F-JLJF7LLJFJ||F7L7F7||7||.L--7.-7
|
||||
JJL7-77.JJLJ.L7F---7|LJLJL---JL---------7|L-JL7-FJF-J|F-J.|.|L-|FL--77|7F7F7||.|7F-F-J|L-JLJL7|F7LJL-7||F7LJF7F7||F-7|FJ||L7LJL-7-7-7-L7J-L|
|
||||
|.-7L||-J--JFFLJF--J|F--------------7F--JL7F-7L7|FJF7||F-7F-77FJ7J|7JF7JJFL-7J-7F77|F7L------JLJL7JF7LJLJL--JLJLJLJFJLJ-LJFJF7F-J.|||..L-..F
|
||||
77|J.LF-J|.|LFF7L--7|L---7F7F-7F7F-7LJF7F7LJFL7LJL7|||LJFJ|FJF7|L777JFJ|FL7F|7..L|-LJL-7F------7FJFJL7F-7F-7F------JF7F--7L-J|L7J77F7-|.||FJ
|
||||
LFL-77|.F7-FF7||JF7LJ7F77LJLJLLJLJ|L--JLJL7F-7L---J|||F-JFJL-J|J.JLJJ|||F|JLJF-JLJ7L7|FLJ7F----JL-JF-JL7LJJLJ|F7F---JLJF-JJF7L-J-7-7F7FL7.FL
|
||||
FF|7|FL|--F-JLJ|FJL---J|F7F7.F------------J|FJ.F--7||||F7L7F--J7F7F7F-L-77FFJJJJFLL7|JFF-7L-7F7F7F7L-77L-7F7F7|LJF-----JF7FJL7F-77J|-F|7|FJJ
|
||||
||L|--.JJ|L---7LJF7F--7LJLJL7L---------7FF7|L7FJF-J||||||.|L--77.|LL7-J-7--|||-F|||-.L|L7|F7LJLJ|||F7L-77LJLJLJF7|7F7-F7|||F-J|FJF7LF-|F7J7.
|
||||
-LJ||.LL7F|JLLL--JLJ7FJF-7F7L7F--------JFJLJFJL7|JFJLJLJL-JF--JJ7L-7J-|-FJ..|7.-|F|77|F-J|||F7F-J||||F7L7F--7F7||L-JL-JLJLJL--JL-JL7|LJ-J.L7
|
||||
|F-|-J.FF7L7F||F7F---JFJFLJ|FJL7F--7F7F7|F--JF7|L-JF--7F7F-JJJL-JF|--.7L|.7FL--.L|FF-7L-7LJLJ|L--JLJLJL7|L-7|||||F--------7F----7F-J-FLJ-7-|
|
||||
F7||-F-F-JJF7-FJLJF--7L7F--JL7JLJF7LJLJ|||-F7|LJF-7L-7|||L-7.7JFLFJ-7FJ7|7L7--LF7F7L7L-7L---7|F7F--7F--JL--JLJLJLJF---7LF7LJF7F7||F77JF-7-F7
|
||||
7JF|.L--7J7F7-L--7|F-JFJL--7FJF7F||F---J|L7|LJF-JFL--JLJL--JF7.|J|.|F7F7JFJL|.F||||-|F-J|F--JLJ||F7|L--7F---7F7F7FL-7FJFJL--JLJ|LJ||F7FL7JJ|
|
||||
..F--77JJFFFJJ|.LLJL--JF---JL-JL-JLJF7F-JFJ|F7L--------7F7F7|L7JFLFLJL7L-F--LF-J|||FJL-7FJF7F-7|LJ||F7JLJF--J|LJL7F-JL-JF7F7F-7L--JLJL7FJJF-
|
||||
L7|L|LJ.77F77LF7F---7F7L--7F7F-7F---J||F7|J||L-------7FJ|LJLJFJFF-L7JF7FL|.LLL-7LJ|L--7|L-JLJL||F7||||F--JF7FJF7FJ|F---7|||LJF|F-7F--7|-J.LJ
|
||||
.F|7|L-F--|L7FJ|L--7||L--7LJLJ7LJF---J||LJFJL-------7LJFJF7F-J.L77LJ.-77-LJ..|7L7FJF--JL-7F7JFJLJLJ|||L---JLJFJLJ-||F-7|||L--7LJ-LJJLLJJF7-F
|
||||
FF.JJ7|LJ-L7|L7|F7FJ||F-7L-------JF7|FJL--JF-7F--7F7L7FJFJLJJF7JJL|J77.F7JFFF-7FJL7L----7LJL7L----7||L-------J|F7FJLJFJLJL7F7|.F7F7|.||.---J
|
||||
FJ-|7F-7F|L|L-J|||L7|LJFJF7F7F7F-7|L-JF7F-7|FJL-7LJL-JL7L7F--JL-7.77F7-|J|FJ|FJL7FJF---7L--7L-7F7FJLJF-7F7F-7F7|||F--JF--7LJ|L-JLJL7-777-|-7
|
||||
|J-77|J|F7JL7F7LJL-JL7.L-JLJLJLJJLJF--JLJ|LJL7F7L7F7-F-JFJL7F---JF7FJL--7F7FJ|F7|L7L--7|F7FJF7LJLJF-7|FJ|||FJ||||||.F7L7FJF7L7F7F7FJ.J..F||F
|
||||
|LFJFJ7LF--FJ||F7F-7FJF7F7F-7F-----JF7F7F-7F7||L7LJL7L7FJF7|L-7F7|LJF7F-J||L7LJLJFJF7J|LJLJFJ|F7F7|.LJL-JLJL-JLJLJL-JL7|L-JL7LJ||LJLF.FF7LL|
|
||||
|-7F|JF.LL.L7|LJLJFJL-JLJ|L7|L------JLJ|L7LJ|LJLL---JFJL7|||F-J|||F-JLJF7||LL--7FJFJL7|F7F7L7||||LJF7F7F7F7F7F-7F7F7F7LJF7F7L7FJL7F--7-.|7|F
|
||||
J||FF7..-7FLLJF---JF----7L-JL----------JFJF7L------7FL7FJ||||F7|LJL-7F7||||F7F-JL7L7FJLJLJ|FJLJLJ.FJLJLJLJLJ||F|||||||F7|LJ|FJL-7LJF-JFF7JF-
|
||||
J-|L--|7LL7J|-L----JF--7L------------7F-JFJL7F-7F--JF7|L7|LJ||||F---J|||LJ|||L7F7L7|L-7F7|LJF-----JF-7F----7|L7LJ||LJ|||L-7||F-7|F7|7.LJJ7||
|
||||
||JLJ7|F.|J.F-F-----JF7L-------------J|F-JF7LJJ||F-7|||FJ|F-J|||L7F-7||L7FJ||-||L7||F-J||F7JL-7F7F7|FJ|LF--JL7L-7|L-7LJ|F-J|LJFJ|||L-7.FJJ7L
|
||||
FF7-7|F7FF77.FL--7F7FJL7F------7F--7F7|L--JL--7||L7|||||F|L7FJ||FJ|FJ|L-J|FJL7||FJ||L-7|LJL--7LJLJLJL7L7L-7F7L--JL--JF7LJF7L7FJL|||F-J-F|FFJ
|
||||
F-J-7-7||-L7-F--7LJ|L-7||F-----J|F7LJLJF--7F--J||FJ||||L7|FJL7LJL7|L-JF--JL7FJLJL7LJF-JL---7FJLF-7F--JFJF-J|L--------JL--JL7|L-7LJLJJJJLL-7|
|
||||
77F.|LFJJL-|JL-7|F7L--J||L------J||F7F7L-7LJF77||L7||LJFJ||F7|F--J|F--JF-7||L--77L-7L7F-7F7||F-JFJL--7L7L--JF--------------JL--J-|JJ|-FJJ.FJ
|
||||
|L-.LF-J7JF7-F-JLJ|F--7LJF--7F7|FJLJ|||F7L7-|L7LJFJLJF7|FJ||LJL---JL--7L7|FJF--JF--JFJL7LJ||||F-J|F-7L-JF---JF7F----7|F7LF--7.F7F|J.|7L77-L7
|
||||
J-J7.LJL--F--JF--7|L7FJF7L-7|||FJF-7LJLJL7L7|FJF7|F--J||L7||F---------JFJ|L7|LF7L--7|F7L-7LJ||L--7L7L-7|L----JLJF---JFJL-JF-JFJL7--F7|LJL77|
|
||||
L-J777-F|LL---JF-J|FJL7||F-JLJLJFJ.L----7L-J|L7|LJL--7LJJ||||F--7F7.F7FL7|FJL7||F7FJLJ|F-JF7|L-7FJFJF7L----7F---JF7JFJF-7FJF7L7FJLFJ|7JLFFFL
|
||||
FFJFFJ7-F.|FF--JF7|L7FJ||L---7F7|F7F----JJF7L7|L7F---JF-7||||L7FJ|L7||F7|||F-J|LJ|L-7FJL--J||F7||JL-JL----7|L----JL7|FJ|LJ7||FJL-7L7|--77FJ.
|
||||
FJ-LL.L7F--7|F--J||FJ|.|L----J|LJ|LJ|F7-F7||FJ|FJL-7F7L7LJLJL7|L7L7LJ||||||L-7|F7|F7||F7F--J||||L7F-7F7F7FJL7F--7F7LJL77F-7|||F--J-||J-JF7L.
|
||||
|F-F7FFLL7|F||F--J|L7L7L-----7L7FJF--JL7|||LJFJL7F-J|L7L7F-7FJL7|FJF-J|LJLJF-JLJ||||||||L7F7||||FJL7LJLJLJF-JL7.|||F-7L7L7LJLJ|F7F7||J|FL7J7
|
||||
F7J.L7|-JLLLLJL7F7L-JFJF7F7F-JFJL-JF---J|||F7L--J|F7|FJ|LJFJ|7FJ||FJF-JF---JF-7FJ||||LJ|FLJ|||LJL7FJF7F--7L--7L7LJLJ.L7L7|F---J||||||F-7.7J|
|
||||
LJ-F-FJJ--J-L|LLJL7F7L-J||||F7|F---JF7F7||LJL-7F7||||L7-F7L7L7L7|||J|F-J-F7FJFJL7|||L7FJF7FJ||F--JL-JLJF7L--7L7L-----7L7LJL-7F7|||||||FJ7L7.
|
||||
LFFF7JF-7J|-FJ-F--J||F-7LJ|LJLJL----JLJLJ|F7F7||LJ|LJFJFJ|.L7L7||||FJL7F7|||FJF-J||L7|L7||L7LJ|.F-7-F--JL---JFJF-7F--J|L7F--J|||LJLJLJL-7L||
|
||||
.|J.77|F7F-.|--L-7FJLJJL-7|F7F7F--------7||LJ|||F7L7FJ-|FJF7L7LJ|||L-7LJ|||||FL-7||FJ|FJ||-L-7L7L7L7L----7.F7L-J7LJLF7-FJL---JLJF7F-7F7FJ.L-
|
||||
F.|7|-F|F--|.L|F-J|F7F-7FJLJLJLJF---7F-7LJL-7||LJ|FJ|F7||FJL7L-7|||F-JF-J|||L7F7|||L7|L7||F7FJFJFJFJLF--7L-JL-------JL7L-7F---7FJLJ.LJLJ|FF|
|
||||
|7L-J.LJ7J||-FFJF-J||L7|L-7F7F7FJF--J|FJF7F7|||F-J|FJ||||L7FJF7||||L7FJF7||L7||||||FJL7|||||L7|LL7|F7L7FJF-------7F7F7L7-||F-7LJF-7F77LL|7-F
|
||||
FFL7|FFJLF|.|L|FJF-JL-JL--J||||||L--7||FJ|||||||F-J|FJ||L7|L7|LJLJL7|L7|||L7|||||||L7FJ||||L7||F7||||FJ|FJF----7.LJ||L-JFJLJFJ|FJFJ||7LL|J.7
|
||||
F|L|-|7J-J|FL7LJ7L--------7|LJLJF7F7|||L7||||||||F-J|-||FJL7|L-7F--J|FJ|LJFJ||||||L7||FJ|||FJ|LJ|||||L7|L-JF--7L--7|L7F7|F-7L--JFJL|L7F-LJ-F
|
||||
F--..L7...F7L|J.FF---7F7F-J|F---JLJLJ||FJ||LJ|||||F7L7LJL7FJ|F7|L7F7|L7L7LL-J||||L7|LJ|FJ||L7L-7LJ|||FJ|F-7L-7L---JL7LJ|||FJF7F7L7||FJ-7|7.|
|
||||
7J|F7JL77-FJJ|.-JL--7LJLJF7|L------7FJ|L7|L7FJ|LJ||L7L-7F|L7||||FJ|||FJFJF--7LJ|L7|L-7|L7||FJF7L7L|||L7|L7L-7L-----7|F7|||L7|LJL7L-J|J-L.F-F
|
||||
7-J-7-FF-7LJ.F-F7JF-JF7F7|LJ-F-7F7FJL7L7||FJL7L77LJFJF7L7L7|LJ|||FJLJL7L-JF7L7FJFJL7FJ|FJ||L7||FJFJ|L7||FJF-JF7F---JLJLJ|L7|L--7L7F7L-7-FJFF
|
||||
L|.|LFFJ|F|JF|LLF-JF7|||LJLF7L7LJLJF7L7LJLJF7|FJF--JFJ|FJFJL-7||||F---JF-7||FJL7L-7||FJL7||FJ|||-L7L7LJ||7|F-J||LF7F7F7J|FJL7F-JF||L--J7F7..
|
||||
FL|F-J.FF-||-77JL-7|LJLJ7F-J|FJF7F7|L7L---7|||L7L7F7L7||FJF-7|||LJL7F7FJFJ|||F7|F-JLJ|F7|||L-JLJF-JFJF-JL7LJF-JL-JLJ||L7LJF7|L--7|L-77-7|.F7
|
||||
7J.FLF--JLL|F7-F-7LJF7-F7L-7LJFJLJLJFJF7F7LJ|L7L7LJ|FJ||L7L7LJ||7F-J||L7|FJ|LJ||L---7||LJ|L-7F--JF7L7L-7FJF-JF--7F-7LJFJF7||L---JL7FJ7|||-||
|
||||
|FLL7J||L|FJ7|.L7L--JL-JL-7|F7L7F--7L7||||F7L7|FJF-JL7LJ7L7L7FJL7|F7||FJ|L7|F7|L7F7FJLJF-JF-JL7F7||FJ7FJL7|F-JF-J|7|F-J7|LJL---7JLLJ..FLL--L
|
||||
JJ|.|F|FFL|FLL-LL--------7|LJL7LJF-J-LJ||||L7||L7L7F7L-7F7|FJL7FJLJ|||||L7||||L7||LJF7LL--JF7-||LJ|L-7L7FJ|L-7|F7L7||F--JF-7F7FJJ|J-F7--J777
|
||||
FLJ.LLJJ7L|7.LF7F7F------JL---JF7L-7|F-J|LJF|||FJFJ||F7||LJL7FJ|F--J||L-7LJLJ|FJ|L--JL7F---J|FJL-7|F7|-LJFJF7||||FJ|LJF7FJ||||L7FL-F|L|F7L-L
|
||||
LJL|.FL.|LL.FF|LJLJF7F7F7F---7FJL-7|FJF7L--7|||L7|FJ||LJ|F7FJL7|L--7||F7L7F--JL7L7F-7FJL7F-7LJF--J|||L--7L7|LJ|||L7|F7||L-7LJL-J-||FJFJL-JLL
|
||||
|J-|JJ|-F7|LFFJF7F7|||||||F7F|L--7|||FJ|F--J||L7||L7|L7FJ|||.FJ|F--J||||FJL--7FJFJL7LJ.FJL7|F7L--7||L7F-JL|L-7||L7||||||F7L----7|L|.F||F7||J
|
||||
|.|F7JL7|FFJFJFJLJLJ||LJLJ|L-JF7FJLJ||F|L--7||FJ|L7||FJ|FJ|L7|FJL--7|LJ||F7F7||JL-7L-7FJF-J||L7F-J||F|L--7|F7|||FJ|||LJ|||F---7|J.-7.F7.F7|.
|
||||
F7-LL.LJLJL7L-JF7F--J|F---JF7FJ||F7-LJFJF-7||||FJFLJ||-|L7L7|LJF---JL-7|||LJLJL7F7|F7||FJ.FJL7|L7FJ|FJF--JLJ||||L7||L-7LJ|L--7LJJ7LL7L7FFJ-J
|
||||
.|JJL7.7|FFLF--JLJF7FJL-7F-J||L||||F--JFJJ||||||F---JL7L7L7||F7|F-7F7FJ||L-7F7FJ||LJLJ||F-JF-JL7||FJL7L----7||||FJ||F-JF-JF-7L-7.|7.|-|FJ.L.
|
||||
|..FFLLJF7JJ|F-7F-J|L7F-J|F-JL7LJ|LJF7FJF-J|LJ||L7F7F7L7L-JLJ|LJ|FJ||L7|L7LLJ|L-JL7F-7|||F7|F--J|LJF7L7F7F-J||LJL7||L-7|F7L7|F-J7LF.|.|7|J|L
|
||||
|J77L-JL|L|7LJLLJFFJFJL--JL7F7L7FJF7||L7|F7L-7LJ-||||L7L---7JL7FJL7|L7||FJF--JF--7LJFJLJLJ||L--7L-7|L-J||L-7|L-7FJ|L7FJLJ|FJ|L-77JJF7JL7|-7|
|
||||
7.FL7J|...J7.J-LL-L7|JLFF--J||FJL7|||L-J||L7FJ7F-J||L7L-7F-JF-JL7.||FJ|||FJF-7L-7|F7L-7-F-J|F--JF-J|F7FJ|F-J|F-JL7L7||F|||L7L-7|--FFJLF|7LL|
|
||||
L-L7L-JJ7.LFJ|.LJFLLJJJFJF7FJ|L7FLJ|L7F-JL7|L-7L7FJL-JFFJL7FJF-7L7|||FJ||L7|-L7FJLJL-7L7|F7|L--7L-7|||L7LJF7LJJ|L|FJLJ-L-L7L7.LJJF.||F|F77FJ
|
||||
7|||L|-||..||-.77LF-F--JFJ|L7L7|F--JFJL--7|L7FJFJL-7F--JF-JL7|7L-JLJ||LLJFJ|F-JL----7|FJLJ||F--JF7|||L7L--J|FJJ-LLJJJ|.L--L7|J.LJF-7FJJLL7||
|
||||
.-JLFJF7L7.F|7|-7|LFJF-7|FJFJ-LJL7F7L7.F7LJFLJFJF7FJL7F7L--7LJ77LF--JL-7FJFJL-7F7F7FJ|L-7FJ||F7FJ|||L7L7F--JJ|.FLJ-JF--.LJFLJ|.LF-L|JLL|FJJ-
|
||||
FJ7F7JL|JL-LJ-L7FF-L7|FJ|L7|J-|F-J|L7L-JL7L|7.|FJ||F-J|L7F7L-7JFFJF-7F7||FJJF-J||||L7|F-J|FJLJ|L7||L7|FJL7|J7L77.|LF|JF-7F|JL7JFL7||F|F.L-|.
|
||||
F-|JJ7.JJ-|F77-LLJJ-LJL-JLLJJJFJF7|FJF---J-||7LJ-LJ|F7L7LJ|F7|F-JFJFJ|||||F-JF7|||L7||L7-||-F-JFJLJ-|||F-J-77|L--L-L|.|-F|.LLJL|.7FF7L7J--F7
|
||||
LF-.|FL-F-F|7.LFJ-|.|7|L|7J77|L7|LJL7L---7-7|FJJJ.FLJ|FJ.LLJ||L7FJLL7|||||L-7|LJLJ.||L-J-LJ-L--J7|J-||LJJL7|LF7||.LLL7J-F|-J.7-F--FJL7|F7JLF
|
||||
F-.F||..LFJLL7FJ.F|-7-77FL.JFFLLJ-F7|F---J.||7J|.F7.LLJ-7-L7LJ-|L7-LLJLJ|||F|L----7LJ7F7JLL.LJ.LFJ|.LJJL--.|-F7-77.F7J|FL|JF7JF|LJLJFJL-F.FF
|
||||
F-F||-7-FLF7JFLJ7F|-JJ.LJJJ|-JJ|JF|LJ|F7LJ-JL77-F7JFJLL7FJ.F7.LL-J7LJJJL||F-JF7F-7L---J|LFJ-.J7JJ7L||..LL-JJ7J|F||FFF.LF.|.|L-LF-JFFLJ-FJ-J|
|
||||
L7J||.L-JLLJ--7.FL-7||.F|-L7.|.|-FJF7LJ|..7-LFJ.|L7L-||L|7-|-L.|.|L|.FF7LJL7FJLJJ|F----J.|7L|--7.|.LJ-7..|JF7|L-L-7F--L|FJ7|FLL|FJ7|-7.|-|JL
|
||||
FL7F||.||7L-F--|JF-.-F-JLF7J||L..L7||F-J7J.-.|.FL|J-FLF.|J7JFL-|-7.--F|L---JL7LF-JL--7|JF-7L7.L-FJ7|LJ7F77JJ.|JL|.-LL.|L-L-|-7.||.L7-F-7.|JL
|
||||
L|7-FLJ--F77|-LJ.|--JJJL.|JLJFJF7-LJLJ-F|7L.FJ-77J..F-|-|J|F7.|LLL-7|LL--7F7FJ.L-7F--J7F7F7-JJ.LJ--FJL|FF-7LF|7.L7FFJ-J|.L.|.LFL7.LJFJFF-|..
|
||||
.|..|.|7L.L|J.LL-L-7F7-LFJ|.FF.F7.J.|L--|7.|--7|F7FJJ.|L|-L7|--JF|.|-7F|LLJ|L77LFLJ-J.J-.JJ.|||FJF|J..|-LJF-L|7L|-7L|7L7J-JJ.L-J-||-|-LJ|LLF
|
||||
LJ-F---J.F7|77JFL-||-F7||-J-LJ-FJLJF-7|F|F-JFFJ|.F--7-LJ|LFL|-7||JFF-|LF.JL|FJ7FFJL7J-|7L77F|FFJJ|7..LL-J.777F7F|JF-77J|LFFF77FL|LL-|-.LJJJ|
|
||||
.|JF|-L|.J7LJJ77|F7|7F--|-|JL7-L7LFFJ-77-J|F-JFJ7JF|J|7|F-|7|-L|||F7.|L7-F|LJJ7-|7.|FLLF7LL-FFJ|.-L--7.LF||F-J.L|F7.L7F7.F7LLJ7J|F|-|J|L|L77
|
||||
F-7|L77L..F-J7F---7J7||.|-F.LL7.|F7.JL|F7LF|-FF-LF7|-7-|.L--|...FL|L-JFF-J-.|.7F||JF||.FL7L.7||L7JJ-7FF-7|F|-|-LF--J7L7LL7JL||LF|F--LJ|-FJ|7
|
||||
L|L--JJJ-LLJ-FF.JJLLJ7-L7-JLJJ|-.F7..-|LJ.FJ.|J..L7J.L-.--JL|.-FJ-L-LL.|.JJ-FJ.F|JLLJF-7J7JJJ|7JLJ..FL--JJ-77L7.|JLL-JL-L.LL-|7-L|J.LLL-L-|.
|
||||
160
2023/day10/p2/main.py
Normal file
160
2023/day10/p2/main.py
Normal file
@ -0,0 +1,160 @@
|
||||
import math
|
||||
INPUT_FILE = "input.text"
|
||||
|
||||
|
||||
class Point:
|
||||
x: int
|
||||
y: int
|
||||
|
||||
def __init__(self, x: int , y: int):
|
||||
self.x = x
|
||||
self.y = y
|
||||
|
||||
def add(self, other):
|
||||
return Point(self.x + other.x, self.y + other.y)
|
||||
|
||||
def to_tuple(self) -> tuple:
|
||||
return (self.x, self.y)
|
||||
|
||||
def __str__(self) -> str:
|
||||
return f'P({self.x}, {self.y})'
|
||||
|
||||
def __eq__(self, other) -> bool:
|
||||
return self.x == other.x and self.y == other.y
|
||||
|
||||
class PipeMap:
|
||||
pipe_map: list[str]
|
||||
start_position: Point
|
||||
bounds: Point
|
||||
|
||||
def __init__(self, map_path: str):
|
||||
|
||||
with open(map_path, 'r') as file:
|
||||
self.pipe_map = file.readlines()
|
||||
|
||||
for i in range(0, len(self.pipe_map)):
|
||||
self.pipe_map[i] = self.pipe_map[i][:-1]
|
||||
|
||||
max_y = len(self.pipe_map)
|
||||
for row in range(0, max_y):
|
||||
max_x = len(self.pipe_map[row])
|
||||
col = self.pipe_map[row].find('S')
|
||||
|
||||
if col != -1:
|
||||
self.bounds = Point(max_x, max_y)
|
||||
self.start_position = Point(row, col)
|
||||
|
||||
def in_bounds(self, p: Point) -> bool:
|
||||
return (p.y < self.bounds.x and p.x < self.bounds.y and p.x >= 0 and p.y >= 0)
|
||||
|
||||
|
||||
directions = {
|
||||
8 : Point(-1, 0),
|
||||
9 : Point(-1, 1),
|
||||
6 : Point(0, 1),
|
||||
3 : Point(1, 1),
|
||||
2 : Point(1, 0),
|
||||
1 : Point(1, -1),
|
||||
4 : Point(0, -1),
|
||||
7 : Point(-1, -1)
|
||||
}
|
||||
|
||||
pipe_directions = {
|
||||
'|' : [Point(-1, 0), Point(1, 0)],
|
||||
'-' : [Point(0, -1), Point(0, 1)],
|
||||
'L' : [Point(-1, 0), Point(0, 1)],
|
||||
'J' : [Point(-1, 0), Point(0, -1)],
|
||||
'7' : [Point(0, -1), Point(1, 0)],
|
||||
'F' : [Point(0, 1), Point(1, 0)],
|
||||
'.' : [],
|
||||
'S' : True
|
||||
}
|
||||
|
||||
def shoelace(points: list[Point]) -> int:
|
||||
A = 0
|
||||
|
||||
n = len(points)
|
||||
for i in range(0, n):
|
||||
x1, y1 = points[i].to_tuple()
|
||||
|
||||
if not i + 1 >= n:
|
||||
x2, y2 = points[i + 1].to_tuple()
|
||||
|
||||
else:
|
||||
x2, y2 = points[0].to_tuple()
|
||||
|
||||
A += (x1 * y2) - (x2 * y1)
|
||||
|
||||
A *= 0.5
|
||||
|
||||
return abs(A)
|
||||
|
||||
def main():
|
||||
|
||||
pipe_map = PipeMap(INPUT_FILE)
|
||||
|
||||
# Check around start
|
||||
next_directions = None
|
||||
current_pos: Point = pipe_map.start_position
|
||||
last_pos: Point = current_pos
|
||||
|
||||
boundaries: list[Point] = [current_pos]
|
||||
|
||||
for d in directions:
|
||||
new_pos = pipe_map.start_position.add(directions[d])
|
||||
|
||||
if pipe_map.in_bounds(new_pos):
|
||||
if char := pipe_directions[pipe_map.pipe_map[new_pos.x][new_pos.y]]:
|
||||
|
||||
# Check if this pipe connects to start somehow
|
||||
good = False
|
||||
for d2 in char:
|
||||
if new_pos.add(d2) == current_pos:
|
||||
good = True
|
||||
break
|
||||
|
||||
if good:
|
||||
current_pos = new_pos
|
||||
next_directions = char
|
||||
break
|
||||
|
||||
steps = 1 # Because current pos isn't at start rn
|
||||
while current_pos != pipe_map.start_position:
|
||||
|
||||
for direction in next_directions:
|
||||
potential_pos: Point = current_pos.add(direction)
|
||||
potential_directions: list[Point] = pipe_directions[pipe_map.pipe_map[potential_pos.x][potential_pos.y]]
|
||||
|
||||
if pipe_map.in_bounds(potential_pos) and potential_pos != last_pos and potential_directions:
|
||||
boundaries.append(current_pos)
|
||||
last_pos = current_pos
|
||||
current_pos = potential_pos
|
||||
next_directions = potential_directions
|
||||
steps += 1
|
||||
break
|
||||
|
||||
"""
|
||||
I did actually look at the internet for this one. I found 'how to find area of polygon'
|
||||
and came up with Pick's theorem & the Shoelace formula
|
||||
|
||||
So basically I find the area with the Shoelace formula (A) and then using Pick's theorem find the number
|
||||
of interior points (i) with
|
||||
|
||||
i = A - b/2 - 1
|
||||
|
||||
where b is boundary points
|
||||
"""
|
||||
|
||||
A = shoelace(boundaries)
|
||||
|
||||
print(f'Area: {A}')
|
||||
interior = A - (len(boundaries) / 2) + 1
|
||||
|
||||
print(f'Interior Points: {interior}')
|
||||
print(f'Loop finished, start found in {steps} steps')
|
||||
print(f'Critter is at {math.ceil(steps/2)}')
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
10
2023/day10/p2/test.text
Normal file
10
2023/day10/p2/test.text
Normal file
@ -0,0 +1,10 @@
|
||||
FF7FSF7F7F7F7F7F---7
|
||||
L|LJ||||||||||||F--J
|
||||
FL-7LJLJ||||||LJL-77
|
||||
F--JF--7||LJLJ7F7FJ-
|
||||
L---JF-JLJ.||-FJLJJ7
|
||||
|F|F-JF---7F7-L7L|7|
|
||||
|FFJF7L7F-JF7|JL---7
|
||||
7-L-JL7||F7|L7F-7F7|
|
||||
L.L7LFJ|||||FJL7||LJ
|
||||
L7JLJL-JLJLJL--JLJ.L
|
||||
140
2023/day11/p1/input.text
Normal file
140
2023/day11/p1/input.text
Normal file
@ -0,0 +1,140 @@
|
||||
.......#.....#.....................#.............#.................#.........................#..............................................
|
||||
#.....................#.......#.................................................................................#.......#...................
|
||||
.......................................................................#.........................#..................................#.......
|
||||
................................................................#..............#..............................................#.............
|
||||
.........................................#............................................................#....................................#
|
||||
.................#..................................................#.......................................................................
|
||||
...........................#...............................................................................#................................
|
||||
....#.......#...........................................#..........................#.............................#..........................
|
||||
....................#.............#........#................................................................................................
|
||||
...................................................#...................................................#...................#................
|
||||
.........................#........................................#..................................................#......................
|
||||
......#..........#...........................................#...........#............#.....................................................
|
||||
......................................#..........................................#.........................#.....................#..........
|
||||
.#...................#..................................#.......................................#...........................................
|
||||
............#.................................#.....................#.......................................................................
|
||||
............................................................................................................................................
|
||||
..............................#.....................................................................................#..................#....
|
||||
....................................................................................#........#......#.......................................
|
||||
.........................#.........................#............#...........................................#...............................
|
||||
.#......#.....#.......................#.................#........................................................#.....#....................
|
||||
...........................................................................#.................................................#..............
|
||||
...............................................#.......................................#...............#..........................#.........
|
||||
......................#..................#..................................................................................................
|
||||
..........................................................................................................................#.................
|
||||
......#...........................#.........................................................#........................#......................
|
||||
..............................................................................................................................#.............
|
||||
..#.......................#.................#............................................................................................#..
|
||||
..................#....................................................#................#...................................................
|
||||
....................................................#.....#....................#............................................................
|
||||
...............................#............................................................................................................
|
||||
..............................................#...............#..........................................................#...........#......
|
||||
.#.........#........................#..................................................................#....................................
|
||||
..........................................................................#.......................#........................................#
|
||||
...................#......................................................................#.................................................
|
||||
.............................................................................................................................#..............
|
||||
.....#......................................................................................................................................
|
||||
........................................................#........................#..........................................................
|
||||
.............................#...............#.....................#.....#............#..................#..............................#...
|
||||
............................................................................................#......#...........#............................
|
||||
.........................#........#...................................................................................#.....................
|
||||
...........................................................................................................................................#
|
||||
.....................................................#.....#.................................................................#..............
|
||||
#.........................................................................................................#.......................#.........
|
||||
................#...........................................................#.....................#.........................................
|
||||
..............................#..............#...................................#.......#...........................#......................
|
||||
........#................#.........#............................#............................................#.............#.........#......
|
||||
............................................................................................................................................
|
||||
.......................................................#...............#.............................#...........................#..........
|
||||
.............#.................................#............................................................................................
|
||||
............................................................................................................................................
|
||||
..#.............................................................................#...........................................#...........#...
|
||||
............................................................................................................................................
|
||||
......................................#..........................................................#................#.........................
|
||||
............................#................#......#......................#...........#....................................................
|
||||
............................................................................................................................................
|
||||
....................................................................................................#................#..........#...........
|
||||
.#............#...................#...............................#........................................#.............................#..
|
||||
.........#...............................................................#..................................................................
|
||||
.......................#....................#........#...........................................#..........................................
|
||||
............................................................#.....................................................#.........................
|
||||
..............................#.......................................................................#...................#.......#.........
|
||||
............#.......................#...................#............................#......................................................
|
||||
...................................................#......................................#..............................................#..
|
||||
.#................#...................................................#........................#............................................
|
||||
......#....................................................................#................................#...............................
|
||||
...............................#....................................................................................#.......................
|
||||
.........................#.....................#......#.............................................#.................................#.....
|
||||
............................................................................................................................................
|
||||
...............#.....................#....................................................#.................................................
|
||||
..................................................................................................................#.........................
|
||||
....#......#.....................................#..............................#............................#............#.....#...........
|
||||
....................#.............................................#....................#.........#.......................................#..
|
||||
.........................................................#..............#.............................#.....................................
|
||||
............................#...........#...........................................................................#.......................
|
||||
............................................................................................................................................
|
||||
#..................................#...............................................................#..........#.............................
|
||||
.......#......................................................................................#.................................#.......#...
|
||||
.....................#....................#...............................#.....#......................................#....................
|
||||
................................#..........................#......#....................#..........................#.........................
|
||||
..............#...................................#........................................................................#...............#
|
||||
....#....................................................................................................#..................................
|
||||
.......................#....................................................................................................................
|
||||
......................................#................................#..................#.................................................
|
||||
.....................................................#............................................#...............................#.........
|
||||
............................................................................................................................................
|
||||
............................................................................................................................................
|
||||
....#.................#..................................#.........................#..........................#.............................
|
||||
.............#........................................................................................#..................#..................
|
||||
......................................#............................................................................#........................
|
||||
.........#....................................................#.........#............................................................#......
|
||||
.............................................................................................#..............................................
|
||||
.............................#...........#............................................................................#.....................
|
||||
#..................#................................................#....................#.......................................#.........#
|
||||
...................................................................................................#......#.................................
|
||||
...........#.............................................#...........................#......................................................
|
||||
....................................#.......................................................................................................
|
||||
..................................................#..........#.........#......................#.....................#.......................
|
||||
.#......#....................................#..............................................................#...............................
|
||||
.............................#.............................................#................................................................
|
||||
.......................#...............................................................................#....................#...............
|
||||
....................................................#.....................................#...........................................#.....
|
||||
................#.....................#..................#.................................................................................#
|
||||
...#.....#..........................................................#................#......................................................
|
||||
.............................................#...............#................................#......#......................................
|
||||
...............................#...............................................#............................................................
|
||||
.............................................................................................................................#.........#....
|
||||
.....................#................................................#.................................................#...................
|
||||
...............#.........................#.......................#..................#.......................................................
|
||||
.....#......................................................................................................#.......................#.......
|
||||
....................................#.................#.........................#..................#........................................
|
||||
........................................................................................................................................#...
|
||||
.........#..............#.....................................#........................................#.....................#..............
|
||||
...............................................#...................#........................................................................
|
||||
......................................#.............#..................................#.....#.......................#......................
|
||||
............#.....#...............................................................................#.........................................
|
||||
...#...................................................................................................................................#....
|
||||
.......................#.........................#..........................................................................................
|
||||
.........................................................#...........#.........................#........#..........#.............#..........
|
||||
............................#..............#....................#........................................................#..................
|
||||
.......#.................................................................#................#.................................................
|
||||
.................#..................................................................................#........................#...........#..
|
||||
...................................................#.......#................................................................................
|
||||
.........................................#......................................#......................................#....................
|
||||
....................................#...........................................................................#...........................
|
||||
..............................#.............................................................#...........#.......................#......#....
|
||||
.........#...............................................#..............#...................................................................
|
||||
........................#....................#.....................................#........................................................
|
||||
#...........................................................................................................................................
|
||||
............................#......................................................................#.......#................................
|
||||
......................................#.....................................................................................................
|
||||
.....#............#.........................................#..........................#..........................................#.........
|
||||
...........................................#......................#..............................................#..........................
|
||||
..............#..............................................................................#............................#.............#...
|
||||
..#......#...........................................#..............................#..................#.....#..............................
|
||||
....................#..........#.....#...............................#......................................................................
|
||||
............................................................................................................................................
|
||||
.................................................#..........................................................................................
|
||||
.............#..........#...............................#...............#.............#..........#.........#........#.......................
|
||||
............................................#................#.................#............................................................
|
||||
....................................#....................................................................................#.............#....
|
||||
147
2023/day11/p1/main.py
Normal file
147
2023/day11/p1/main.py
Normal file
@ -0,0 +1,147 @@
|
||||
import math
|
||||
import copy
|
||||
INPUT_FILE = "test.text"
|
||||
|
||||
class Point:
|
||||
x: int
|
||||
y: int
|
||||
|
||||
def __init__(self, x: int , y: int):
|
||||
self.x = x
|
||||
self.y = y
|
||||
|
||||
def add(self, other):
|
||||
return Point(self.x + other.x, self.y + other.y)
|
||||
|
||||
def __add__(self, other):
|
||||
return Point(self.x + other.x, self.y + other.y)
|
||||
|
||||
def __sub__(self, other):
|
||||
return Point(self.x - other.x, self.y - other.x)
|
||||
|
||||
def __str__(self) -> str:
|
||||
return f'P({self.x}, {self.y})'
|
||||
|
||||
def __eq__(self, other) -> bool:
|
||||
return self.x == other.x and self.y == other.y
|
||||
|
||||
def _length(self) -> float:
|
||||
return math.sqrt(self.x ** 2 + self.y ** 2)
|
||||
|
||||
def normalise(self) -> None:
|
||||
self.x /= self._length()
|
||||
self.y /= self._length()
|
||||
|
||||
def distance(p1: Point, p2: Point) -> int:
|
||||
return math.sqrt((p2.x - p1.x) ** 2 + (p2.y - p1.y) ** 2)
|
||||
|
||||
def main():
|
||||
|
||||
with open(INPUT_FILE, 'r') as file:
|
||||
universe = file.readlines()
|
||||
|
||||
# Shave off the newlines
|
||||
for i in range(0, len(universe)):
|
||||
# print(universe[i])
|
||||
universe[i] = universe[i][:-1]
|
||||
# print(universe[i])
|
||||
|
||||
expanded_universe: list[str] = universe.copy()
|
||||
added_rows = 0
|
||||
# Expand it!
|
||||
for y in range(0, len(universe)):
|
||||
row: str = universe[y]
|
||||
|
||||
# If no galaxies found in row
|
||||
if row.find('#') == -1:
|
||||
expanded_universe.insert(y + added_rows, row)
|
||||
added_rows += 1
|
||||
|
||||
# for r in expanded_universe:
|
||||
# print(r)
|
||||
|
||||
# print()
|
||||
|
||||
row_n = len(expanded_universe)
|
||||
added_cols = 0
|
||||
for column_i in range(0, len(expanded_universe[0])):
|
||||
no_galaxy = True
|
||||
|
||||
for y in range(0, row_n):
|
||||
if expanded_universe[y][column_i + added_cols] == '#':
|
||||
no_galaxy = False
|
||||
break
|
||||
|
||||
if no_galaxy:
|
||||
for y in range(0, row_n):
|
||||
l = list(expanded_universe[y])
|
||||
l.insert(column_i + added_cols, '.')
|
||||
expanded_universe[y] = ''.join(l)
|
||||
added_cols += 1
|
||||
|
||||
|
||||
# for r in expanded_universe:
|
||||
# print(r)
|
||||
|
||||
# now find lengths or something
|
||||
|
||||
# oh but first find galaxies
|
||||
galaxies: list[Point] = []
|
||||
universe = expanded_universe
|
||||
n_y = len(universe)
|
||||
|
||||
for y in range(0, n_y):
|
||||
row = universe[y]
|
||||
|
||||
for x in range(0, len(row)):
|
||||
if row[x] == '#':
|
||||
galaxies.append(Point(x, y))
|
||||
|
||||
for p in galaxies:
|
||||
print(p)
|
||||
|
||||
# ok now find lengths or something
|
||||
total = 0
|
||||
g1_i = 0
|
||||
for g1 in galaxies:
|
||||
|
||||
# print(g1)
|
||||
|
||||
g2_i = 0
|
||||
for g2 in galaxies:
|
||||
steps = 0
|
||||
|
||||
t = copy.copy(g1)
|
||||
# Get steps
|
||||
while t != g2:
|
||||
if t.x < g2.x:
|
||||
t.x += 1
|
||||
steps += 1
|
||||
elif t.x > g2.x:
|
||||
t.x -= 1
|
||||
steps += 1
|
||||
if t.y < g2.y:
|
||||
t.y += 1
|
||||
steps += 1
|
||||
elif t.y > g2.y:
|
||||
t.y -= 1
|
||||
steps += 1
|
||||
|
||||
# if g1 == Point(5, 11):
|
||||
# print(f't {t} g2 {g2}')
|
||||
|
||||
total += steps
|
||||
# print(f'{steps} from g{g1} to g{g2}')
|
||||
g2_i += 1
|
||||
g1_i += 1
|
||||
|
||||
|
||||
|
||||
print(f'Sum is {total/2}')
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
10
2023/day11/p1/test.text
Normal file
10
2023/day11/p1/test.text
Normal file
@ -0,0 +1,10 @@
|
||||
...#......
|
||||
.......#..
|
||||
#.........
|
||||
..........
|
||||
......#...
|
||||
.#........
|
||||
.........#
|
||||
..........
|
||||
.......#..
|
||||
#...#.....
|
||||
140
2023/day11/p2/input.text
Normal file
140
2023/day11/p2/input.text
Normal file
@ -0,0 +1,140 @@
|
||||
.......#.....#.....................#.............#.................#.........................#..............................................
|
||||
#.....................#.......#.................................................................................#.......#...................
|
||||
.......................................................................#.........................#..................................#.......
|
||||
................................................................#..............#..............................................#.............
|
||||
.........................................#............................................................#....................................#
|
||||
.................#..................................................#.......................................................................
|
||||
...........................#...............................................................................#................................
|
||||
....#.......#...........................................#..........................#.............................#..........................
|
||||
....................#.............#........#................................................................................................
|
||||
...................................................#...................................................#...................#................
|
||||
.........................#........................................#..................................................#......................
|
||||
......#..........#...........................................#...........#............#.....................................................
|
||||
......................................#..........................................#.........................#.....................#..........
|
||||
.#...................#..................................#.......................................#...........................................
|
||||
............#.................................#.....................#.......................................................................
|
||||
............................................................................................................................................
|
||||
..............................#.....................................................................................#..................#....
|
||||
....................................................................................#........#......#.......................................
|
||||
.........................#.........................#............#...........................................#...............................
|
||||
.#......#.....#.......................#.................#........................................................#.....#....................
|
||||
...........................................................................#.................................................#..............
|
||||
...............................................#.......................................#...............#..........................#.........
|
||||
......................#..................#..................................................................................................
|
||||
..........................................................................................................................#.................
|
||||
......#...........................#.........................................................#........................#......................
|
||||
..............................................................................................................................#.............
|
||||
..#.......................#.................#............................................................................................#..
|
||||
..................#....................................................#................#...................................................
|
||||
....................................................#.....#....................#............................................................
|
||||
...............................#............................................................................................................
|
||||
..............................................#...............#..........................................................#...........#......
|
||||
.#.........#........................#..................................................................#....................................
|
||||
..........................................................................#.......................#........................................#
|
||||
...................#......................................................................#.................................................
|
||||
.............................................................................................................................#..............
|
||||
.....#......................................................................................................................................
|
||||
........................................................#........................#..........................................................
|
||||
.............................#...............#.....................#.....#............#..................#..............................#...
|
||||
............................................................................................#......#...........#............................
|
||||
.........................#........#...................................................................................#.....................
|
||||
...........................................................................................................................................#
|
||||
.....................................................#.....#.................................................................#..............
|
||||
#.........................................................................................................#.......................#.........
|
||||
................#...........................................................#.....................#.........................................
|
||||
..............................#..............#...................................#.......#...........................#......................
|
||||
........#................#.........#............................#............................................#.............#.........#......
|
||||
............................................................................................................................................
|
||||
.......................................................#...............#.............................#...........................#..........
|
||||
.............#.................................#............................................................................................
|
||||
............................................................................................................................................
|
||||
..#.............................................................................#...........................................#...........#...
|
||||
............................................................................................................................................
|
||||
......................................#..........................................................#................#.........................
|
||||
............................#................#......#......................#...........#....................................................
|
||||
............................................................................................................................................
|
||||
....................................................................................................#................#..........#...........
|
||||
.#............#...................#...............................#........................................#.............................#..
|
||||
.........#...............................................................#..................................................................
|
||||
.......................#....................#........#...........................................#..........................................
|
||||
............................................................#.....................................................#.........................
|
||||
..............................#.......................................................................#...................#.......#.........
|
||||
............#.......................#...................#............................#......................................................
|
||||
...................................................#......................................#..............................................#..
|
||||
.#................#...................................................#........................#............................................
|
||||
......#....................................................................#................................#...............................
|
||||
...............................#....................................................................................#.......................
|
||||
.........................#.....................#......#.............................................#.................................#.....
|
||||
............................................................................................................................................
|
||||
...............#.....................#....................................................#.................................................
|
||||
..................................................................................................................#.........................
|
||||
....#......#.....................................#..............................#............................#............#.....#...........
|
||||
....................#.............................................#....................#.........#.......................................#..
|
||||
.........................................................#..............#.............................#.....................................
|
||||
............................#...........#...........................................................................#.......................
|
||||
............................................................................................................................................
|
||||
#..................................#...............................................................#..........#.............................
|
||||
.......#......................................................................................#.................................#.......#...
|
||||
.....................#....................#...............................#.....#......................................#....................
|
||||
................................#..........................#......#....................#..........................#.........................
|
||||
..............#...................................#........................................................................#...............#
|
||||
....#....................................................................................................#..................................
|
||||
.......................#....................................................................................................................
|
||||
......................................#................................#..................#.................................................
|
||||
.....................................................#............................................#...............................#.........
|
||||
............................................................................................................................................
|
||||
............................................................................................................................................
|
||||
....#.................#..................................#.........................#..........................#.............................
|
||||
.............#........................................................................................#..................#..................
|
||||
......................................#............................................................................#........................
|
||||
.........#....................................................#.........#............................................................#......
|
||||
.............................................................................................#..............................................
|
||||
.............................#...........#............................................................................#.....................
|
||||
#..................#................................................#....................#.......................................#.........#
|
||||
...................................................................................................#......#.................................
|
||||
...........#.............................................#...........................#......................................................
|
||||
....................................#.......................................................................................................
|
||||
..................................................#..........#.........#......................#.....................#.......................
|
||||
.#......#....................................#..............................................................#...............................
|
||||
.............................#.............................................#................................................................
|
||||
.......................#...............................................................................#....................#...............
|
||||
....................................................#.....................................#...........................................#.....
|
||||
................#.....................#..................#.................................................................................#
|
||||
...#.....#..........................................................#................#......................................................
|
||||
.............................................#...............#................................#......#......................................
|
||||
...............................#...............................................#............................................................
|
||||
.............................................................................................................................#.........#....
|
||||
.....................#................................................#.................................................#...................
|
||||
...............#.........................#.......................#..................#.......................................................
|
||||
.....#......................................................................................................#.......................#.......
|
||||
....................................#.................#.........................#..................#........................................
|
||||
........................................................................................................................................#...
|
||||
.........#..............#.....................................#........................................#.....................#..............
|
||||
...............................................#...................#........................................................................
|
||||
......................................#.............#..................................#.....#.......................#......................
|
||||
............#.....#...............................................................................#.........................................
|
||||
...#...................................................................................................................................#....
|
||||
.......................#.........................#..........................................................................................
|
||||
.........................................................#...........#.........................#........#..........#.............#..........
|
||||
............................#..............#....................#........................................................#..................
|
||||
.......#.................................................................#................#.................................................
|
||||
.................#..................................................................................#........................#...........#..
|
||||
...................................................#.......#................................................................................
|
||||
.........................................#......................................#......................................#....................
|
||||
....................................#...........................................................................#...........................
|
||||
..............................#.............................................................#...........#.......................#......#....
|
||||
.........#...............................................#..............#...................................................................
|
||||
........................#....................#.....................................#........................................................
|
||||
#...........................................................................................................................................
|
||||
............................#......................................................................#.......#................................
|
||||
......................................#.....................................................................................................
|
||||
.....#............#.........................................#..........................#..........................................#.........
|
||||
...........................................#......................#..............................................#..........................
|
||||
..............#..............................................................................#............................#.............#...
|
||||
..#......#...........................................#..............................#..................#.....#..............................
|
||||
....................#..........#.....#...............................#......................................................................
|
||||
............................................................................................................................................
|
||||
.................................................#..........................................................................................
|
||||
.............#..........#...............................#...............#.............#..........#.........#........#.......................
|
||||
............................................#................#.................#............................................................
|
||||
....................................#....................................................................................#.............#....
|
||||
116
2023/day11/p2/main.py
Normal file
116
2023/day11/p2/main.py
Normal file
@ -0,0 +1,116 @@
|
||||
import math
|
||||
INPUT_FILE = "input.text"
|
||||
|
||||
I = 1000000
|
||||
if I != 1:
|
||||
I -= 1
|
||||
|
||||
class Point:
|
||||
x: int
|
||||
y: int
|
||||
|
||||
def __init__(self, x: int , y: int):
|
||||
self.x = x
|
||||
self.y = y
|
||||
|
||||
def add(self, other):
|
||||
return Point(self.x + other.x, self.y + other.y)
|
||||
|
||||
def __add__(self, other):
|
||||
return Point(self.x + other.x, self.y + other.y)
|
||||
|
||||
def __sub__(self, other):
|
||||
return Point(self.x - other.x, self.y - other.x)
|
||||
|
||||
def __str__(self) -> str:
|
||||
return f'P({self.x}, {self.y})'
|
||||
|
||||
def __eq__(self, other) -> bool:
|
||||
return self.x == other.x and self.y == other.y
|
||||
|
||||
def _length(self) -> float:
|
||||
return math.sqrt(self.x ** 2 + self.y ** 2)
|
||||
|
||||
def normalise(self) -> None:
|
||||
self.x /= self._length()
|
||||
self.y /= self._length()
|
||||
|
||||
def _abs(self) -> None:
|
||||
self.x = abs(self.x)
|
||||
self.y = abs(self.y)
|
||||
|
||||
def main():
|
||||
|
||||
with open(INPUT_FILE, 'r') as file:
|
||||
universe = file.readlines()
|
||||
|
||||
# Shave off the newlines
|
||||
for i in range(0, len(universe)):
|
||||
universe[i] = universe[i][:-1]
|
||||
|
||||
# oh but first find galaxies
|
||||
galaxies: list[Point] = []
|
||||
n_y = len(universe)
|
||||
|
||||
for y in range(0, n_y):
|
||||
row = universe[y]
|
||||
|
||||
for x in range(0, len(row)):
|
||||
if row[x] == '#':
|
||||
galaxies.append(Point(x, y))
|
||||
|
||||
# Check for expansion (y direction)
|
||||
expansions = 0
|
||||
for y in range(0, len(universe)):
|
||||
row: str = universe[y]
|
||||
|
||||
if row.find('#') == -1:
|
||||
for g in galaxies:
|
||||
if g.y > y + (expansions * I):
|
||||
g.y += I
|
||||
expansions += 1
|
||||
|
||||
# Check for expansions (x direction)
|
||||
expansions = 0
|
||||
for x in range(0, len(universe[0])):
|
||||
|
||||
no_galaxy = True
|
||||
|
||||
for y in range(0, len(universe)):
|
||||
if universe[y][x] == '#':
|
||||
no_galaxy = False
|
||||
break
|
||||
|
||||
if no_galaxy:
|
||||
for g in galaxies:
|
||||
if g.x > x + (expansions * I):
|
||||
g.x += I
|
||||
expansions += 1
|
||||
|
||||
# ok now find lengths or something
|
||||
total = 0
|
||||
for g1 in galaxies:
|
||||
for g2 in galaxies:
|
||||
|
||||
if g2.y > g1.y:
|
||||
dy = g2.y - g1.y
|
||||
else:
|
||||
dy = g1.y - g2.y
|
||||
|
||||
if g2.x > g1.x:
|
||||
dx = g2.x - g1.x
|
||||
else:
|
||||
dx = g1.x - g2.x
|
||||
|
||||
total += dx + dy
|
||||
|
||||
|
||||
|
||||
print(f'Sum is {int(total/2)}')
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
10
2023/day11/p2/test.text
Normal file
10
2023/day11/p2/test.text
Normal file
@ -0,0 +1,10 @@
|
||||
...#......
|
||||
.......#..
|
||||
#.........
|
||||
..........
|
||||
......#...
|
||||
.#........
|
||||
.........#
|
||||
..........
|
||||
.......#..
|
||||
#...#.....
|
||||
25
2023/day12/p1/main.py
Normal file
25
2023/day12/p1/main.py
Normal file
@ -0,0 +1,25 @@
|
||||
INPUT_FILE = "test.text"
|
||||
|
||||
|
||||
def main():
|
||||
with open(INPUT_FILE, 'r') as file:
|
||||
data: list[str] = file.readlines()
|
||||
|
||||
for line in data:
|
||||
record, groups = line.split()
|
||||
|
||||
groups: list[int] = [int(g) for g in groups.split(',')]
|
||||
|
||||
# for group in groups:
|
||||
|
||||
# # if '#' * group in record:
|
||||
# # groups.remove(group)
|
||||
# # record = record.replace('#' * group, '')
|
||||
|
||||
print(f'{record} {groups}')
|
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
6
2023/day12/p1/test.text
Normal file
6
2023/day12/p1/test.text
Normal file
@ -0,0 +1,6 @@
|
||||
???.### 1,1,3
|
||||
.??..??...?##. 1,1,3
|
||||
?#?#?#?#?#?#?#? 1,3,1,6
|
||||
????.#...#... 4,1,1
|
||||
????.######..#####. 1,6,5
|
||||
?###???????? 3,2,1
|
||||
100
2023/day2/p1/input.text
Normal file
100
2023/day2/p1/input.text
Normal file
@ -0,0 +1,100 @@
|
||||
Game 1: 7 green, 14 red, 5 blue; 8 red, 4 green; 6 green, 18 red, 9 blue
|
||||
Game 2: 3 blue, 15 red, 5 green; 1 blue, 14 red, 5 green; 11 red; 4 green, 1 blue, 3 red; 4 green, 1 blue; 10 red, 1 green
|
||||
Game 3: 11 green, 3 red; 4 green, 15 blue; 14 blue, 2 red, 10 green; 1 red, 3 green, 10 blue
|
||||
Game 4: 1 green, 6 red, 11 blue; 3 blue, 12 red; 1 green, 14 red, 8 blue; 3 blue, 7 red; 8 blue, 5 red; 7 red, 1 green
|
||||
Game 5: 14 green, 3 red, 3 blue; 2 red, 1 green, 1 blue; 8 green, 3 blue, 1 red; 15 green, 8 blue, 1 red
|
||||
Game 6: 4 blue, 8 green, 5 red; 9 green, 10 blue, 7 red; 11 blue, 10 red, 7 green; 8 red, 6 blue, 9 green
|
||||
Game 7: 5 green, 11 blue, 9 red; 2 green, 6 red, 12 blue; 8 red, 4 blue, 3 green; 7 green, 8 red, 9 blue; 8 green, 5 red
|
||||
Game 8: 7 red, 12 green; 9 blue, 15 red, 8 green; 3 blue, 11 green, 6 red; 8 blue, 12 red, 5 green
|
||||
Game 9: 8 blue, 6 red, 7 green; 2 blue, 3 red, 10 green; 10 blue, 6 red, 7 green; 11 red, 7 blue, 5 green; 10 red, 11 green
|
||||
Game 10: 5 red, 14 green; 2 red, 6 blue, 15 green; 3 red, 4 blue, 7 green; 6 red, 1 green, 4 blue
|
||||
Game 11: 4 blue, 11 green, 6 red; 12 red, 1 blue, 5 green; 7 red, 1 blue; 11 red, 2 green, 3 blue; 2 blue, 6 red, 7 green
|
||||
Game 12: 1 green, 8 red, 3 blue; 3 green, 2 red; 2 blue, 5 red, 1 green
|
||||
Game 13: 2 green; 8 green, 1 blue, 12 red; 1 blue, 14 green, 2 red; 1 blue, 6 red, 6 green; 7 green, 10 red
|
||||
Game 14: 9 green, 4 red, 1 blue; 5 red, 2 green; 17 green, 1 red; 6 red, 10 green; 4 green, 3 red, 1 blue
|
||||
Game 15: 7 green, 13 blue, 4 red; 1 blue, 7 green, 9 red; 13 blue, 13 red, 7 green; 8 red, 9 blue; 9 red, 14 blue; 2 green, 7 red, 9 blue
|
||||
Game 16: 6 green, 18 blue, 6 red; 5 green, 2 blue, 2 red; 6 green, 2 red, 17 blue; 2 red, 2 green, 8 blue; 2 red, 10 blue
|
||||
Game 17: 17 red, 8 green; 4 blue, 10 green, 3 red; 8 red, 5 green, 3 blue; 12 green, 3 red
|
||||
Game 18: 6 red, 1 green, 14 blue; 1 red, 10 blue, 1 green; 1 red, 17 blue, 1 green; 5 red, 1 blue; 5 red, 18 blue; 2 red, 3 blue
|
||||
Game 19: 5 blue, 12 red; 6 blue, 3 red, 6 green; 8 blue, 6 red, 6 green; 8 green, 8 blue, 2 red; 4 green, 6 red, 6 blue; 1 green, 3 red, 13 blue
|
||||
Game 20: 7 green, 2 blue; 4 blue, 12 red, 2 green; 7 red, 2 green, 6 blue
|
||||
Game 21: 8 green, 1 red; 1 red, 9 green; 1 red, 6 green, 4 blue; 1 red, 3 green, 5 blue; 2 red, 6 green
|
||||
Game 22: 11 green, 12 red, 5 blue; 5 blue, 9 red, 11 green; 8 green, 4 red, 5 blue; 7 green, 1 blue, 1 red
|
||||
Game 23: 11 blue, 9 red, 5 green; 3 green, 3 blue; 11 blue, 9 red, 1 green; 2 red, 7 green; 4 green, 3 blue, 1 red; 5 green, 4 blue
|
||||
Game 24: 1 green, 4 blue, 9 red; 1 green, 2 blue, 11 red; 1 green, 13 red; 1 green, 2 blue, 3 red
|
||||
Game 25: 1 red, 7 green, 4 blue; 2 red, 1 green, 3 blue; 10 blue, 1 red; 7 blue, 2 red, 6 green; 7 green, 15 blue, 2 red; 14 green, 13 blue
|
||||
Game 26: 5 red, 2 blue; 9 red, 2 green, 12 blue; 15 red, 1 green, 5 blue; 1 green, 16 blue, 17 red
|
||||
Game 27: 2 green, 4 red; 4 red, 1 green; 1 blue, 3 red; 2 red
|
||||
Game 28: 3 green; 8 green, 9 red; 9 red, 3 blue, 10 green; 16 green, 4 blue, 4 red
|
||||
Game 29: 3 green, 1 red, 7 blue; 5 blue, 5 green, 2 red; 5 blue, 6 green, 2 red; 2 green, 2 red, 4 blue; 1 green, 3 red, 8 blue
|
||||
Game 30: 7 red, 3 green, 7 blue; 3 green, 10 red; 5 red, 5 blue, 1 green; 9 blue, 2 green, 7 red; 1 red, 10 blue; 10 blue, 2 red, 4 green
|
||||
Game 31: 9 green, 1 red; 9 blue, 6 red, 9 green; 17 blue, 4 green, 10 red; 19 blue, 11 green
|
||||
Game 32: 1 red, 1 blue, 6 green; 10 blue, 4 green; 1 red, 5 blue; 9 blue, 3 green
|
||||
Game 33: 4 red; 3 red; 2 red, 1 green, 1 blue; 1 green; 1 blue, 1 red
|
||||
Game 34: 2 green, 9 blue, 1 red; 5 blue, 7 green, 1 red; 2 green, 1 red, 16 blue; 1 blue, 5 green, 6 red
|
||||
Game 35: 11 red, 10 blue; 2 blue, 12 green, 12 red; 3 green, 6 red, 6 blue; 14 blue, 10 green, 1 red
|
||||
Game 36: 2 blue, 3 red, 15 green; 2 blue, 6 green, 2 red; 14 blue, 4 red, 7 green; 13 blue, 12 green, 2 red
|
||||
Game 37: 6 green, 14 blue, 7 red; 7 blue, 2 red, 6 green; 1 blue, 2 green, 6 red
|
||||
Game 38: 2 green, 15 red, 2 blue; 14 red, 1 blue; 14 red, 2 green, 12 blue
|
||||
Game 39: 5 green, 1 blue, 10 red; 4 red, 3 blue, 7 green; 2 red, 2 green, 4 blue; 10 blue, 5 green
|
||||
Game 40: 7 red, 10 green, 2 blue; 7 green, 3 red, 2 blue; 10 red, 9 blue, 7 green; 3 green, 5 blue, 10 red
|
||||
Game 41: 5 blue, 2 green, 11 red; 2 green, 18 red, 3 blue; 8 green, 10 red, 1 blue; 16 red, 13 green; 17 green, 2 blue, 17 red; 1 green, 1 blue, 9 red
|
||||
Game 42: 5 red, 2 green, 1 blue; 6 red, 2 blue; 3 red, 1 blue; 9 red, 5 blue; 1 green, 8 red, 1 blue
|
||||
Game 43: 1 red, 2 green; 12 red, 4 green, 5 blue; 4 blue, 9 red; 4 green, 10 red, 2 blue
|
||||
Game 44: 2 blue, 9 green, 3 red; 6 red, 4 blue, 4 green; 3 red, 4 blue; 5 red, 2 green, 1 blue; 4 blue, 1 green; 8 green, 1 red, 4 blue
|
||||
Game 45: 7 blue, 1 red; 2 red, 4 green, 9 blue; 3 red, 15 blue; 4 red, 4 green, 12 blue; 1 red, 18 blue
|
||||
Game 46: 4 red, 14 blue, 11 green; 5 blue, 6 red, 17 green; 10 red, 8 green, 17 blue; 7 red, 10 blue, 19 green
|
||||
Game 47: 7 blue, 3 red; 7 blue, 1 green, 2 red; 2 red, 6 blue; 1 green, 9 blue, 2 red; 3 red; 2 green, 1 blue
|
||||
Game 48: 12 red, 6 blue, 6 green; 9 green, 19 red, 1 blue; 2 blue, 12 green, 8 red
|
||||
Game 49: 1 green, 11 red, 11 blue; 10 red, 10 blue, 11 green; 4 red, 19 green, 6 blue; 11 blue, 19 green, 13 red; 9 green, 9 blue
|
||||
Game 50: 1 blue, 12 green, 4 red; 1 blue, 18 green, 1 red; 1 blue, 12 green, 3 red; 1 blue, 4 green
|
||||
Game 51: 10 red, 5 blue, 1 green; 10 red, 4 blue; 6 red, 8 blue
|
||||
Game 52: 1 blue; 5 green, 9 red; 2 blue, 1 green, 11 red; 2 blue, 13 red, 5 green; 6 green, 1 blue, 9 red
|
||||
Game 53: 8 blue, 15 red; 2 green, 4 red, 12 blue; 6 blue, 1 green, 15 red; 20 red, 12 blue; 6 red, 1 green, 2 blue
|
||||
Game 54: 5 red, 16 blue; 5 green, 3 red, 17 blue; 5 red, 3 blue, 5 green; 4 green, 6 blue, 9 red; 2 blue, 6 green, 2 red
|
||||
Game 55: 1 blue, 1 red; 1 green, 1 red, 3 blue; 4 blue, 1 green, 1 red; 5 blue; 2 blue
|
||||
Game 56: 4 red, 4 blue; 7 blue, 11 red; 1 red, 2 green, 9 blue; 4 blue, 16 red, 2 green; 1 red; 2 green, 5 blue, 1 red
|
||||
Game 57: 1 green, 8 blue; 1 red; 10 blue, 5 green; 3 blue, 4 green; 11 blue, 1 red; 4 blue, 3 green, 1 red
|
||||
Game 58: 8 green, 5 blue; 9 blue, 8 red, 5 green; 6 red, 6 blue, 9 green; 1 green, 5 blue, 2 red; 3 red, 3 green, 2 blue; 2 green, 1 red, 1 blue
|
||||
Game 59: 15 red, 4 blue, 8 green; 12 red, 6 green; 3 red
|
||||
Game 60: 14 blue, 11 red; 12 blue, 6 red; 11 blue, 6 red; 5 red, 13 blue; 15 blue; 1 green, 1 blue, 16 red
|
||||
Game 61: 5 red, 1 green; 4 red, 9 green; 1 blue, 6 green, 14 red
|
||||
Game 62: 19 red, 1 green; 1 blue, 3 red; 15 red, 1 blue; 1 blue, 3 red; 5 red, 1 green, 1 blue
|
||||
Game 63: 1 red, 3 green, 10 blue; 2 green, 1 red, 14 blue; 1 green, 5 blue, 1 red; 6 blue, 4 green, 1 red
|
||||
Game 64: 5 red, 2 green; 5 green, 2 red, 2 blue; 3 red, 3 blue, 1 green; 3 blue, 3 green, 3 red; 1 green, 3 red
|
||||
Game 65: 13 red, 2 green, 3 blue; 1 red, 2 blue, 1 green; 1 blue; 2 green, 1 red
|
||||
Game 66: 7 red, 12 blue, 6 green; 2 red, 5 green, 11 blue; 3 green, 2 blue, 2 red; 9 blue, 1 red, 2 green
|
||||
Game 67: 4 red, 3 green, 7 blue; 8 blue, 3 red; 2 red; 9 blue, 5 red, 2 green
|
||||
Game 68: 12 blue; 10 green, 5 blue; 8 blue; 9 blue, 7 red, 18 green; 5 red, 12 blue, 8 green; 8 green, 13 red, 10 blue
|
||||
Game 69: 1 green, 1 red; 2 red, 1 green, 3 blue; 1 red, 1 green, 4 blue; 1 green, 8 red
|
||||
Game 70: 12 green, 1 blue, 4 red; 8 green, 1 red; 1 blue, 8 green; 2 green, 3 red; 5 green, 4 red; 2 blue, 12 green, 1 red
|
||||
Game 71: 10 blue, 4 red, 14 green; 6 green, 7 red, 8 blue; 1 red, 1 blue, 13 green; 10 red, 6 blue, 3 green; 8 blue, 7 green, 4 red
|
||||
Game 72: 1 green; 1 blue, 12 green, 14 red; 3 blue, 7 green, 8 red; 12 red, 18 green; 13 green, 11 red, 1 blue; 2 blue, 6 green, 6 red
|
||||
Game 73: 17 red, 3 green, 15 blue; 15 blue, 2 red; 15 red, 7 blue, 4 green; 9 blue, 1 green, 18 red
|
||||
Game 74: 10 red, 2 blue; 1 blue, 7 red; 5 blue, 2 green, 2 red; 3 blue, 15 red, 3 green; 4 blue, 3 green, 13 red
|
||||
Game 75: 6 blue, 10 red; 2 green, 2 blue, 10 red; 10 green, 1 blue, 10 red; 4 blue, 6 red, 11 green
|
||||
Game 76: 10 blue, 1 red, 2 green; 6 blue, 2 green, 10 red; 3 red, 15 green, 1 blue
|
||||
Game 77: 5 green, 1 red; 2 blue, 1 green; 13 green, 2 red, 5 blue; 12 green, 1 blue, 2 red; 3 blue, 2 green, 2 red
|
||||
Game 78: 1 green, 16 red; 6 red, 1 blue, 1 green; 13 red; 12 red, 3 green; 1 blue, 7 red
|
||||
Game 79: 3 green, 7 blue; 1 red, 8 blue, 5 green; 1 red, 6 green, 7 blue; 11 green, 1 red, 7 blue; 1 blue
|
||||
Game 80: 3 green, 13 red, 8 blue; 17 red, 9 blue; 7 blue, 1 green, 2 red; 8 red, 6 blue, 3 green; 1 red, 2 blue; 2 green, 4 blue, 10 red
|
||||
Game 81: 3 red, 1 green, 7 blue; 2 green, 2 blue, 3 red; 3 red, 1 blue, 7 green; 6 green, 12 blue
|
||||
Game 82: 11 red, 3 green, 2 blue; 3 red, 1 green, 1 blue; 16 red, 1 green
|
||||
Game 83: 8 green, 3 blue, 2 red; 1 blue, 13 green, 6 red; 4 blue, 5 red, 1 green; 12 green, 4 red, 12 blue; 17 green, 7 blue, 3 red
|
||||
Game 84: 2 blue, 13 red, 5 green; 3 green, 3 blue, 19 red; 2 red, 11 green, 5 blue; 3 green, 3 blue, 15 red; 7 green, 4 blue, 11 red; 1 red, 10 green
|
||||
Game 85: 1 red, 3 blue, 4 green; 2 red, 11 green, 2 blue; 2 blue, 7 green, 1 red
|
||||
Game 86: 3 blue, 4 green, 8 red; 4 green, 2 red; 9 red, 4 blue, 1 green; 18 red, 1 blue
|
||||
Game 87: 3 red, 14 blue, 1 green; 10 blue, 1 green; 1 green, 4 red, 14 blue; 8 blue, 7 green, 4 red; 2 green, 7 red, 7 blue; 2 green, 10 blue
|
||||
Game 88: 12 green, 6 red; 6 red, 3 blue, 2 green; 4 red, 4 blue, 9 green; 3 red, 4 green, 8 blue; 1 blue, 3 red
|
||||
Game 89: 3 green, 3 red, 2 blue; 3 red, 2 green, 1 blue; 6 green, 4 blue, 12 red; 13 red, 14 blue, 1 green; 5 red; 10 red, 8 blue, 7 green
|
||||
Game 90: 7 green, 10 blue; 6 green, 1 red, 2 blue; 6 blue; 5 green, 9 blue, 1 red; 10 blue, 1 red, 6 green
|
||||
Game 91: 6 red, 2 blue; 3 blue, 3 red, 1 green; 19 blue, 7 red
|
||||
Game 92: 9 green, 3 blue; 1 red, 5 green; 13 green, 3 blue, 2 red; 1 red, 3 blue, 7 green
|
||||
Game 93: 11 red, 3 green, 11 blue; 7 green, 3 red, 10 blue; 11 green, 4 blue, 8 red; 14 green, 8 blue
|
||||
Game 94: 7 blue; 1 green, 11 blue, 2 red; 1 green, 1 red, 19 blue; 7 green, 2 red, 10 blue
|
||||
Game 95: 15 blue, 1 red, 9 green; 5 green, 1 red, 4 blue; 6 green, 17 blue; 9 blue, 11 green; 10 blue, 9 green; 9 blue, 7 green
|
||||
Game 96: 7 red, 13 blue; 6 blue, 15 red, 3 green; 1 green, 1 red, 1 blue; 9 red, 2 green, 8 blue; 5 green, 8 red, 1 blue; 6 blue, 3 green, 13 red
|
||||
Game 97: 19 blue, 10 red, 4 green; 8 red, 17 blue; 8 blue
|
||||
Game 98: 2 blue, 2 red, 4 green; 5 green, 3 blue, 2 red; 5 green, 15 blue; 15 blue, 5 green, 1 red
|
||||
Game 99: 1 blue, 2 green, 8 red; 1 blue, 7 red, 1 green; 11 red, 2 green; 1 red, 1 blue
|
||||
Game 100: 8 green; 2 red, 20 green; 12 green, 1 red, 1 blue; 4 red, 1 blue; 1 blue, 6 red
|
||||
54
2023/day2/p1/main.go
Normal file
54
2023/day2/p1/main.go
Normal file
@ -0,0 +1,54 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"fmt"
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func main() {
|
||||
file, _ := os.Open("./input.text")
|
||||
defer file.Close()
|
||||
|
||||
scanner := bufio.NewScanner(file)
|
||||
|
||||
sum := 0
|
||||
|
||||
for scanner.Scan() {
|
||||
line := strings.Split(scanner.Text(), ":")
|
||||
|
||||
game_num, _ := strconv.Atoi(strings.Split(line[0], " ")[1])
|
||||
|
||||
draws := strings.Split(line[1], ";")
|
||||
|
||||
add := true
|
||||
|
||||
for _, draw := range draws {
|
||||
|
||||
cubes := strings.Split(draw, ",")
|
||||
for _, cube := range cubes {
|
||||
v := strings.Fields(cube)
|
||||
value, _ := strconv.Atoi(v[0])
|
||||
color := v[1]
|
||||
|
||||
if color == "red" && value > 12 {
|
||||
add = false
|
||||
}
|
||||
if color == "green" && value > 13 {
|
||||
add = false
|
||||
}
|
||||
if color == "blue" && value > 14 {
|
||||
add = false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if add {
|
||||
sum += game_num
|
||||
}
|
||||
}
|
||||
|
||||
fmt.Println("Sum of games with possible # of cubes:", sum)
|
||||
}
|
||||
5
2023/day2/p1/test.text
Normal file
5
2023/day2/p1/test.text
Normal file
@ -0,0 +1,5 @@
|
||||
Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green
|
||||
Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue
|
||||
Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red
|
||||
Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red
|
||||
Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green
|
||||
100
2023/day2/p2/input.text
Normal file
100
2023/day2/p2/input.text
Normal file
@ -0,0 +1,100 @@
|
||||
Game 1: 7 green, 14 red, 5 blue; 8 red, 4 green; 6 green, 18 red, 9 blue
|
||||
Game 2: 3 blue, 15 red, 5 green; 1 blue, 14 red, 5 green; 11 red; 4 green, 1 blue, 3 red; 4 green, 1 blue; 10 red, 1 green
|
||||
Game 3: 11 green, 3 red; 4 green, 15 blue; 14 blue, 2 red, 10 green; 1 red, 3 green, 10 blue
|
||||
Game 4: 1 green, 6 red, 11 blue; 3 blue, 12 red; 1 green, 14 red, 8 blue; 3 blue, 7 red; 8 blue, 5 red; 7 red, 1 green
|
||||
Game 5: 14 green, 3 red, 3 blue; 2 red, 1 green, 1 blue; 8 green, 3 blue, 1 red; 15 green, 8 blue, 1 red
|
||||
Game 6: 4 blue, 8 green, 5 red; 9 green, 10 blue, 7 red; 11 blue, 10 red, 7 green; 8 red, 6 blue, 9 green
|
||||
Game 7: 5 green, 11 blue, 9 red; 2 green, 6 red, 12 blue; 8 red, 4 blue, 3 green; 7 green, 8 red, 9 blue; 8 green, 5 red
|
||||
Game 8: 7 red, 12 green; 9 blue, 15 red, 8 green; 3 blue, 11 green, 6 red; 8 blue, 12 red, 5 green
|
||||
Game 9: 8 blue, 6 red, 7 green; 2 blue, 3 red, 10 green; 10 blue, 6 red, 7 green; 11 red, 7 blue, 5 green; 10 red, 11 green
|
||||
Game 10: 5 red, 14 green; 2 red, 6 blue, 15 green; 3 red, 4 blue, 7 green; 6 red, 1 green, 4 blue
|
||||
Game 11: 4 blue, 11 green, 6 red; 12 red, 1 blue, 5 green; 7 red, 1 blue; 11 red, 2 green, 3 blue; 2 blue, 6 red, 7 green
|
||||
Game 12: 1 green, 8 red, 3 blue; 3 green, 2 red; 2 blue, 5 red, 1 green
|
||||
Game 13: 2 green; 8 green, 1 blue, 12 red; 1 blue, 14 green, 2 red; 1 blue, 6 red, 6 green; 7 green, 10 red
|
||||
Game 14: 9 green, 4 red, 1 blue; 5 red, 2 green; 17 green, 1 red; 6 red, 10 green; 4 green, 3 red, 1 blue
|
||||
Game 15: 7 green, 13 blue, 4 red; 1 blue, 7 green, 9 red; 13 blue, 13 red, 7 green; 8 red, 9 blue; 9 red, 14 blue; 2 green, 7 red, 9 blue
|
||||
Game 16: 6 green, 18 blue, 6 red; 5 green, 2 blue, 2 red; 6 green, 2 red, 17 blue; 2 red, 2 green, 8 blue; 2 red, 10 blue
|
||||
Game 17: 17 red, 8 green; 4 blue, 10 green, 3 red; 8 red, 5 green, 3 blue; 12 green, 3 red
|
||||
Game 18: 6 red, 1 green, 14 blue; 1 red, 10 blue, 1 green; 1 red, 17 blue, 1 green; 5 red, 1 blue; 5 red, 18 blue; 2 red, 3 blue
|
||||
Game 19: 5 blue, 12 red; 6 blue, 3 red, 6 green; 8 blue, 6 red, 6 green; 8 green, 8 blue, 2 red; 4 green, 6 red, 6 blue; 1 green, 3 red, 13 blue
|
||||
Game 20: 7 green, 2 blue; 4 blue, 12 red, 2 green; 7 red, 2 green, 6 blue
|
||||
Game 21: 8 green, 1 red; 1 red, 9 green; 1 red, 6 green, 4 blue; 1 red, 3 green, 5 blue; 2 red, 6 green
|
||||
Game 22: 11 green, 12 red, 5 blue; 5 blue, 9 red, 11 green; 8 green, 4 red, 5 blue; 7 green, 1 blue, 1 red
|
||||
Game 23: 11 blue, 9 red, 5 green; 3 green, 3 blue; 11 blue, 9 red, 1 green; 2 red, 7 green; 4 green, 3 blue, 1 red; 5 green, 4 blue
|
||||
Game 24: 1 green, 4 blue, 9 red; 1 green, 2 blue, 11 red; 1 green, 13 red; 1 green, 2 blue, 3 red
|
||||
Game 25: 1 red, 7 green, 4 blue; 2 red, 1 green, 3 blue; 10 blue, 1 red; 7 blue, 2 red, 6 green; 7 green, 15 blue, 2 red; 14 green, 13 blue
|
||||
Game 26: 5 red, 2 blue; 9 red, 2 green, 12 blue; 15 red, 1 green, 5 blue; 1 green, 16 blue, 17 red
|
||||
Game 27: 2 green, 4 red; 4 red, 1 green; 1 blue, 3 red; 2 red
|
||||
Game 28: 3 green; 8 green, 9 red; 9 red, 3 blue, 10 green; 16 green, 4 blue, 4 red
|
||||
Game 29: 3 green, 1 red, 7 blue; 5 blue, 5 green, 2 red; 5 blue, 6 green, 2 red; 2 green, 2 red, 4 blue; 1 green, 3 red, 8 blue
|
||||
Game 30: 7 red, 3 green, 7 blue; 3 green, 10 red; 5 red, 5 blue, 1 green; 9 blue, 2 green, 7 red; 1 red, 10 blue; 10 blue, 2 red, 4 green
|
||||
Game 31: 9 green, 1 red; 9 blue, 6 red, 9 green; 17 blue, 4 green, 10 red; 19 blue, 11 green
|
||||
Game 32: 1 red, 1 blue, 6 green; 10 blue, 4 green; 1 red, 5 blue; 9 blue, 3 green
|
||||
Game 33: 4 red; 3 red; 2 red, 1 green, 1 blue; 1 green; 1 blue, 1 red
|
||||
Game 34: 2 green, 9 blue, 1 red; 5 blue, 7 green, 1 red; 2 green, 1 red, 16 blue; 1 blue, 5 green, 6 red
|
||||
Game 35: 11 red, 10 blue; 2 blue, 12 green, 12 red; 3 green, 6 red, 6 blue; 14 blue, 10 green, 1 red
|
||||
Game 36: 2 blue, 3 red, 15 green; 2 blue, 6 green, 2 red; 14 blue, 4 red, 7 green; 13 blue, 12 green, 2 red
|
||||
Game 37: 6 green, 14 blue, 7 red; 7 blue, 2 red, 6 green; 1 blue, 2 green, 6 red
|
||||
Game 38: 2 green, 15 red, 2 blue; 14 red, 1 blue; 14 red, 2 green, 12 blue
|
||||
Game 39: 5 green, 1 blue, 10 red; 4 red, 3 blue, 7 green; 2 red, 2 green, 4 blue; 10 blue, 5 green
|
||||
Game 40: 7 red, 10 green, 2 blue; 7 green, 3 red, 2 blue; 10 red, 9 blue, 7 green; 3 green, 5 blue, 10 red
|
||||
Game 41: 5 blue, 2 green, 11 red; 2 green, 18 red, 3 blue; 8 green, 10 red, 1 blue; 16 red, 13 green; 17 green, 2 blue, 17 red; 1 green, 1 blue, 9 red
|
||||
Game 42: 5 red, 2 green, 1 blue; 6 red, 2 blue; 3 red, 1 blue; 9 red, 5 blue; 1 green, 8 red, 1 blue
|
||||
Game 43: 1 red, 2 green; 12 red, 4 green, 5 blue; 4 blue, 9 red; 4 green, 10 red, 2 blue
|
||||
Game 44: 2 blue, 9 green, 3 red; 6 red, 4 blue, 4 green; 3 red, 4 blue; 5 red, 2 green, 1 blue; 4 blue, 1 green; 8 green, 1 red, 4 blue
|
||||
Game 45: 7 blue, 1 red; 2 red, 4 green, 9 blue; 3 red, 15 blue; 4 red, 4 green, 12 blue; 1 red, 18 blue
|
||||
Game 46: 4 red, 14 blue, 11 green; 5 blue, 6 red, 17 green; 10 red, 8 green, 17 blue; 7 red, 10 blue, 19 green
|
||||
Game 47: 7 blue, 3 red; 7 blue, 1 green, 2 red; 2 red, 6 blue; 1 green, 9 blue, 2 red; 3 red; 2 green, 1 blue
|
||||
Game 48: 12 red, 6 blue, 6 green; 9 green, 19 red, 1 blue; 2 blue, 12 green, 8 red
|
||||
Game 49: 1 green, 11 red, 11 blue; 10 red, 10 blue, 11 green; 4 red, 19 green, 6 blue; 11 blue, 19 green, 13 red; 9 green, 9 blue
|
||||
Game 50: 1 blue, 12 green, 4 red; 1 blue, 18 green, 1 red; 1 blue, 12 green, 3 red; 1 blue, 4 green
|
||||
Game 51: 10 red, 5 blue, 1 green; 10 red, 4 blue; 6 red, 8 blue
|
||||
Game 52: 1 blue; 5 green, 9 red; 2 blue, 1 green, 11 red; 2 blue, 13 red, 5 green; 6 green, 1 blue, 9 red
|
||||
Game 53: 8 blue, 15 red; 2 green, 4 red, 12 blue; 6 blue, 1 green, 15 red; 20 red, 12 blue; 6 red, 1 green, 2 blue
|
||||
Game 54: 5 red, 16 blue; 5 green, 3 red, 17 blue; 5 red, 3 blue, 5 green; 4 green, 6 blue, 9 red; 2 blue, 6 green, 2 red
|
||||
Game 55: 1 blue, 1 red; 1 green, 1 red, 3 blue; 4 blue, 1 green, 1 red; 5 blue; 2 blue
|
||||
Game 56: 4 red, 4 blue; 7 blue, 11 red; 1 red, 2 green, 9 blue; 4 blue, 16 red, 2 green; 1 red; 2 green, 5 blue, 1 red
|
||||
Game 57: 1 green, 8 blue; 1 red; 10 blue, 5 green; 3 blue, 4 green; 11 blue, 1 red; 4 blue, 3 green, 1 red
|
||||
Game 58: 8 green, 5 blue; 9 blue, 8 red, 5 green; 6 red, 6 blue, 9 green; 1 green, 5 blue, 2 red; 3 red, 3 green, 2 blue; 2 green, 1 red, 1 blue
|
||||
Game 59: 15 red, 4 blue, 8 green; 12 red, 6 green; 3 red
|
||||
Game 60: 14 blue, 11 red; 12 blue, 6 red; 11 blue, 6 red; 5 red, 13 blue; 15 blue; 1 green, 1 blue, 16 red
|
||||
Game 61: 5 red, 1 green; 4 red, 9 green; 1 blue, 6 green, 14 red
|
||||
Game 62: 19 red, 1 green; 1 blue, 3 red; 15 red, 1 blue; 1 blue, 3 red; 5 red, 1 green, 1 blue
|
||||
Game 63: 1 red, 3 green, 10 blue; 2 green, 1 red, 14 blue; 1 green, 5 blue, 1 red; 6 blue, 4 green, 1 red
|
||||
Game 64: 5 red, 2 green; 5 green, 2 red, 2 blue; 3 red, 3 blue, 1 green; 3 blue, 3 green, 3 red; 1 green, 3 red
|
||||
Game 65: 13 red, 2 green, 3 blue; 1 red, 2 blue, 1 green; 1 blue; 2 green, 1 red
|
||||
Game 66: 7 red, 12 blue, 6 green; 2 red, 5 green, 11 blue; 3 green, 2 blue, 2 red; 9 blue, 1 red, 2 green
|
||||
Game 67: 4 red, 3 green, 7 blue; 8 blue, 3 red; 2 red; 9 blue, 5 red, 2 green
|
||||
Game 68: 12 blue; 10 green, 5 blue; 8 blue; 9 blue, 7 red, 18 green; 5 red, 12 blue, 8 green; 8 green, 13 red, 10 blue
|
||||
Game 69: 1 green, 1 red; 2 red, 1 green, 3 blue; 1 red, 1 green, 4 blue; 1 green, 8 red
|
||||
Game 70: 12 green, 1 blue, 4 red; 8 green, 1 red; 1 blue, 8 green; 2 green, 3 red; 5 green, 4 red; 2 blue, 12 green, 1 red
|
||||
Game 71: 10 blue, 4 red, 14 green; 6 green, 7 red, 8 blue; 1 red, 1 blue, 13 green; 10 red, 6 blue, 3 green; 8 blue, 7 green, 4 red
|
||||
Game 72: 1 green; 1 blue, 12 green, 14 red; 3 blue, 7 green, 8 red; 12 red, 18 green; 13 green, 11 red, 1 blue; 2 blue, 6 green, 6 red
|
||||
Game 73: 17 red, 3 green, 15 blue; 15 blue, 2 red; 15 red, 7 blue, 4 green; 9 blue, 1 green, 18 red
|
||||
Game 74: 10 red, 2 blue; 1 blue, 7 red; 5 blue, 2 green, 2 red; 3 blue, 15 red, 3 green; 4 blue, 3 green, 13 red
|
||||
Game 75: 6 blue, 10 red; 2 green, 2 blue, 10 red; 10 green, 1 blue, 10 red; 4 blue, 6 red, 11 green
|
||||
Game 76: 10 blue, 1 red, 2 green; 6 blue, 2 green, 10 red; 3 red, 15 green, 1 blue
|
||||
Game 77: 5 green, 1 red; 2 blue, 1 green; 13 green, 2 red, 5 blue; 12 green, 1 blue, 2 red; 3 blue, 2 green, 2 red
|
||||
Game 78: 1 green, 16 red; 6 red, 1 blue, 1 green; 13 red; 12 red, 3 green; 1 blue, 7 red
|
||||
Game 79: 3 green, 7 blue; 1 red, 8 blue, 5 green; 1 red, 6 green, 7 blue; 11 green, 1 red, 7 blue; 1 blue
|
||||
Game 80: 3 green, 13 red, 8 blue; 17 red, 9 blue; 7 blue, 1 green, 2 red; 8 red, 6 blue, 3 green; 1 red, 2 blue; 2 green, 4 blue, 10 red
|
||||
Game 81: 3 red, 1 green, 7 blue; 2 green, 2 blue, 3 red; 3 red, 1 blue, 7 green; 6 green, 12 blue
|
||||
Game 82: 11 red, 3 green, 2 blue; 3 red, 1 green, 1 blue; 16 red, 1 green
|
||||
Game 83: 8 green, 3 blue, 2 red; 1 blue, 13 green, 6 red; 4 blue, 5 red, 1 green; 12 green, 4 red, 12 blue; 17 green, 7 blue, 3 red
|
||||
Game 84: 2 blue, 13 red, 5 green; 3 green, 3 blue, 19 red; 2 red, 11 green, 5 blue; 3 green, 3 blue, 15 red; 7 green, 4 blue, 11 red; 1 red, 10 green
|
||||
Game 85: 1 red, 3 blue, 4 green; 2 red, 11 green, 2 blue; 2 blue, 7 green, 1 red
|
||||
Game 86: 3 blue, 4 green, 8 red; 4 green, 2 red; 9 red, 4 blue, 1 green; 18 red, 1 blue
|
||||
Game 87: 3 red, 14 blue, 1 green; 10 blue, 1 green; 1 green, 4 red, 14 blue; 8 blue, 7 green, 4 red; 2 green, 7 red, 7 blue; 2 green, 10 blue
|
||||
Game 88: 12 green, 6 red; 6 red, 3 blue, 2 green; 4 red, 4 blue, 9 green; 3 red, 4 green, 8 blue; 1 blue, 3 red
|
||||
Game 89: 3 green, 3 red, 2 blue; 3 red, 2 green, 1 blue; 6 green, 4 blue, 12 red; 13 red, 14 blue, 1 green; 5 red; 10 red, 8 blue, 7 green
|
||||
Game 90: 7 green, 10 blue; 6 green, 1 red, 2 blue; 6 blue; 5 green, 9 blue, 1 red; 10 blue, 1 red, 6 green
|
||||
Game 91: 6 red, 2 blue; 3 blue, 3 red, 1 green; 19 blue, 7 red
|
||||
Game 92: 9 green, 3 blue; 1 red, 5 green; 13 green, 3 blue, 2 red; 1 red, 3 blue, 7 green
|
||||
Game 93: 11 red, 3 green, 11 blue; 7 green, 3 red, 10 blue; 11 green, 4 blue, 8 red; 14 green, 8 blue
|
||||
Game 94: 7 blue; 1 green, 11 blue, 2 red; 1 green, 1 red, 19 blue; 7 green, 2 red, 10 blue
|
||||
Game 95: 15 blue, 1 red, 9 green; 5 green, 1 red, 4 blue; 6 green, 17 blue; 9 blue, 11 green; 10 blue, 9 green; 9 blue, 7 green
|
||||
Game 96: 7 red, 13 blue; 6 blue, 15 red, 3 green; 1 green, 1 red, 1 blue; 9 red, 2 green, 8 blue; 5 green, 8 red, 1 blue; 6 blue, 3 green, 13 red
|
||||
Game 97: 19 blue, 10 red, 4 green; 8 red, 17 blue; 8 blue
|
||||
Game 98: 2 blue, 2 red, 4 green; 5 green, 3 blue, 2 red; 5 green, 15 blue; 15 blue, 5 green, 1 red
|
||||
Game 99: 1 blue, 2 green, 8 red; 1 blue, 7 red, 1 green; 11 red, 2 green; 1 red, 1 blue
|
||||
Game 100: 8 green; 2 red, 20 green; 12 green, 1 red, 1 blue; 4 red, 1 blue; 1 blue, 6 red
|
||||
52
2023/day2/p2/main.go
Normal file
52
2023/day2/p2/main.go
Normal file
@ -0,0 +1,52 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"fmt"
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func main() {
|
||||
file, _ := os.Open("./input.text")
|
||||
defer file.Close()
|
||||
|
||||
scanner := bufio.NewScanner(file)
|
||||
|
||||
sum := 0
|
||||
|
||||
for scanner.Scan() {
|
||||
line := strings.Split(scanner.Text(), ":")
|
||||
|
||||
draws := strings.Split(line[1], ";")
|
||||
|
||||
max_red := 0
|
||||
max_green := 0
|
||||
max_blue := 0
|
||||
|
||||
for _, draw := range draws {
|
||||
|
||||
cubes := strings.Split(draw, ",")
|
||||
for _, cube := range cubes {
|
||||
v := strings.Fields(cube)
|
||||
value, _ := strconv.Atoi(v[0])
|
||||
color := v[1]
|
||||
|
||||
if color == "red" && value > max_red {
|
||||
max_red = value
|
||||
}
|
||||
if color == "green" && value > max_green {
|
||||
max_green = value
|
||||
}
|
||||
if color == "blue" && value > max_blue {
|
||||
max_blue = value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sum += max_red * max_green * max_blue
|
||||
}
|
||||
|
||||
fmt.Println("Sum of the minimum power of all games:", sum)
|
||||
}
|
||||
5
2023/day2/p2/test.text
Normal file
5
2023/day2/p2/test.text
Normal file
@ -0,0 +1,5 @@
|
||||
Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green
|
||||
Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue
|
||||
Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red
|
||||
Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red
|
||||
Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green
|
||||
140
2023/day3/p1/input.text
Normal file
140
2023/day3/p1/input.text
Normal file
@ -0,0 +1,140 @@
|
||||
...................15....904...........850.................329...................13....................................871....816....697....
|
||||
...........53.497........................%....906...610.......*.............735#..&...*......558...68...............68..*......&....*.......
|
||||
..........*....$....................132.........*..........844....875................350............*...............*..336.364...649........
|
||||
.......726.......341..................*...186...358..................*244........57.......@.........738......*.....663.................584..
|
||||
.............952.*......33......660..704............949......................518*....234.967....551........971..&.......................*...
|
||||
.......738...*....222......................706.......*..825.............474%...........*...........*.405.........779..............542...405.
|
||||
.74.........366....................192..........542.737....*760...................623/..730.....718.../.....................$17......%......
|
||||
...*126.....................%........*.504...=..*.........................................................974...............................
|
||||
........331/..901.........337..........*...461.698...............*461.....814............................*............975...............165.
|
||||
..../.........*.....................262.......................313........*........530.56.....567.......897.....*.........*.9................
|
||||
....953....355...@703..................................609..............462.......%........./...............108.557...501.../...724.........
|
||||
..............................................=.........%.......46......................533....670...............................*..%630....
|
||||
.........................91...382*204.........154..%.............+.524.995..............=.....*...........7..........692.92*56...73.........
|
||||
.685....*....70.189.......*.........................773...830/....../....*........=.........565.............464................$....738..130
|
||||
.........938..*........993..............*.................................243...340...753...........*...882...............108.647....*......
|
||||
..............762..........348.......280...............364*526...........................*........552.....=....25..682....*.........164.....
|
||||
.....948..............813../....644......62........................................#.....657......................*.........................
|
||||
......*...........................*.................$745.......739.....*...399...30............&..@...........924.117..........309..........
|
||||
...883....544.....33.........585=.428.146................288.....*..853....*...........*891.409....429..460...*..........997....*........187
|
||||
.............*818........829..........*....846..............................248.....574..................*....789.......*.....965....-..*...
|
||||
......=.....................*..........370.......850+.............313...........................573....621...............268.......58..800..
|
||||
....67....287.............481..709...............................*.......#74...................*.................965........................
|
||||
............@.291.............*.........607*....950.475..309...66..932........395..374..........155.891....472..*......774.............&....
|
||||
....207..........%..262......543..887/......711....*.......+......*............*...*........823............*...93...........377.....764.....
|
||||
.....*...968.951.......#................................$.........453...366..736.972........*.............697........*618...&...............
|
||||
....984..*...............-.......................884..23......492.....*..*................70..523.....25........$.....................370...
|
||||
..................870...187.......548#.522..458.....*..........*....956......535....../.........*.525*........197....@..*266...123.....*....
|
||||
.........501.....*..........................&.....323........257........956..*........80..946.592.................211.........*.........311.
|
||||
.....380*.....867...653..347....................*........93=...........*......515..........-...................................678..........
|
||||
..........876......&....*.......&631.950.647...631...@...........=...705..914................739..............319......713.........*97.#918.
|
||||
.....805...*..........118................-.........790....559..51........../........*.........*......550......*........./.......647.........
|
||||
......-..428.....599......813................413..................280............840.654.......91.....*...........236.......$...............
|
||||
.............=...%.......*.....77...................#.492............................................96..........@.......175....%...........
|
||||
......*427..569..........47......................999......314.....636*253.................764.................27......-..........415..386...
|
||||
...142................$................@..320........969...................882*311...............#..751...........=....649...........*......
|
||||
.........*723..993.976....638........475................=..800.......................*764.710...574....*964....831..........473......531....
|
||||
...%..486...................*....#..................................831...........375........*........................=824......21..........
|
||||
559.........................441...316................................./....................618.407.......83.......972...............91......
|
||||
......*.....25..741...................%...............*63.546$..905......27........861.756........*.......*..........*...28...57............
|
||||
.......794....*./........782...236....47...........937...........*..755....*505..............23.948.......560.532...421....*..#.........405.
|
||||
............566.................*........-850..872.......90....229...+..........978..684............225..................675.....591...*....
|
||||
.............................296..243...........+....691...................311.........$......321......@......827....$13.......$....&..530..
|
||||
.....664..422$....613.....@.........%.401/.$974.....-.........%.145....729......*........./.......106............%.......=.....611..........
|
||||
.......$.........*.......857...147*.............591........+.46..*.....=........306.67*...818.............................261....../........
|
||||
............823...785..............340.........-....564..777......456.......%....................891.................560...........642..181.
|
||||
.....394.....*................226..........423..............................539.................*............640&.............535...........
|
||||
.......@.....626..317..329....*...92........+..................374....827............*.683+....771....529.........303..........*............
|
||||
.........172.....-........*......*.....332...........288..229..+.........*.786=....468.............*....*...........*....461...249..=.......
|
||||
....974...*............901..@....130..*..............$...*..........4.573................163......429....808.464*47..231....@......964......
|
||||
........183.................582........11...............310.....774.*.....567.............*....36...........................................
|
||||
.......................939.....................*826............@.....892..........481......266.*...-253.........106.830....235......*..841..
|
||||
727.........177#.........&.......507........301..........................550..242*.....+./.....686.......@.446.*.....*.......*....894..*....
|
||||
....67...............468.....&......&..596......................817.600...............85.5.............973...$.805...513......378.......388.
|
||||
...........*247.........*.....974.........*263....329....476....*............721............723.....................................358.....
|
||||
........784.....434.....667.......................*............615.195.612...............................540#........347...........*........
|
||||
...............*.................76......121...659........@555..........-.............201......................866............628.505.509...
|
||||
.............515........../.................#....................281..%...656............*670.419.......799.......*...510.786...*.......&...
|
||||
....993.................540.373....709.............705............*...132..#........298$......*...232....*..@..878.......*....528...#.......
|
||||
....$.........615.............*..........948..........*........565................%..........465..#.....497.67....................631.......
|
||||
.........138....#....417......123...........*.......546...821...................114..=............................258.859=.380-.............
|
||||
.....734*.............../.............833..399..........................+............780...288..............117..@...................925....
|
||||
................*860..........228........*...............................956....390*........=..........%...*..........839...373......*......
|
||||
..802........369........641.............763.....154.24...............302............620..............150.403.......*.........*....647.......
|
||||
...................................&........466*.....@..................*827....530.............................129.628.....923.........=866
|
||||
..........&......&.............824.573.................669.........................$.....374..627...........698.....................759.....
|
||||
.......499....%.812.857*653...................668..........879.......974................../......*926...852.........................-....832
|
||||
...646......284..............708...369...........*808................-.......705.......@...............%.............492.462............*...
|
||||
....................959......#.......*....872..........................102....*.........80..839....996..............*.....%........83...49..
|
||||
.785............363..*.............49.......*.......667.....797....224.......586..............&....*...34..673.......650....................
|
||||
....*..*132....*.....225...................631..350..*.........*....*.............941....=.......52....*.................406...546..........
|
||||
.543............760.........305..325...330.......+.................621...........*.......63..#.......268..239...................#...........
|
||||
........658..................*............*...........735......820.....145....419...........91..489.........*......404.......*....#.........
|
||||
..........=....415+.....38$....844...+..366.............*.......*......*..............................43....945.....#.....563.205..211..183.
|
||||
......267.......................*...519.....730........836..........277...........808...........504...&................................#....
|
||||
.....*..................705/....575..........*....../..........$866.........=.......*...975......#.......183.931........%.......611.........
|
||||
.......135.......284........................246.653.972..............365..191.....376...*.....&.........*......*.........994...@.....11.....
|
||||
...440../.........*.............................*..............415.....................985..838......677.......109...................*......
|
||||
...@............224....399.727$......68#..........................$......432.....214$.....................#.................591....686......
|
||||
..........&.......................................658........143....779.+....942......$.............885....567..........$...................
|
||||
.461.......33....277.407......108..............47.*.............*...........*.......$.811............................390....................
|
||||
..........................907*.....#397..307...*....197.12.....3...738....254.85..393...............713..700..741...........176.....883.....
|
||||
..316........180...........................*.758...................-...........................................*............*...............
|
||||
....*..../........871...338..165.........683............455...701*......................540....255.......$....858........277....28....+.....
|
||||
...660.469..912...#..........%......743.........439.....-.........206......363..........*.......*.......640............................144..
|
||||
..............*.........443...............610.............803.............*.............879...658............$................189...........
|
||||
...........172......794........98..............646......................662..............................*....49.-210.523.257....*..........
|
||||
...87..662.....#.......*667....%..408..........*............220...524............=.....742..39..160....64.636..........*..*....974..378.....
|
||||
...*.....*.....42..&.............=....371*.....804.................*..#....../.240.....*........................395%..461..818.....*........
|
||||
....706.398........452....500.............406..........57*380....365.42...635.......131...........18.....538.....................403........
|
||||
..............143........*.........80............740..........................*245......784........-...........708...................&.297..
|
||||
.230...........*.......373..341...........................$438.......*.................=.............874&..959*...........192......829.#....
|
||||
...#..........476..647.....*......................................431.728..........................................50.....$.................
|
||||
........334...........*731.930......=........966........*323...................301.....%....404...............879....*372.....208.134.......
|
||||
...........*.....................163..........*......509......................%.....&..785.......................*...............*..........
|
||||
...768..329....199........................................797......*368..........873..........26.565....651.....664......111..........217...
|
||||
................*.....26.......705*76....415.............*................................749..........*..................#......545-..%....
|
||||
....-....473..517......*...............5*....449..........68........................751.......*399......401.................................
|
||||
.730......#.........240...&..65.718.87......*.....532..............-....567............*....................675.......67..463...............
|
||||
.....289#....509........200......*...*....852....................885...+....663..72..507......998.&954..213....$.....*.........672..........
|
||||
..............................403.....129........377-....................../....&.................................473...........*...........
|
||||
.........855=.........250...................961........860*916.......981..........326.........633..404................676.%566..120.........
|
||||
892...........532.............754.......866*....790..................#........819*..............*.........%.44..=......*............29......
|
||||
....@527.......*..................600............../...$568.....800.....................179..528........613.....358...949...................
|
||||
................302...807............*..895.................+.....@.....-...........................980...........................736.......
|
||||
........217...=......*............879.....+.-..........%.....793.......442.......422............209*.......&.......969....240.378...*.......
|
||||
....340*.....145...%.596....................23....703...217................372..........610.................129.......*........../.....=....
|
||||
.................790.....&............904............=............795......*.......385=...+.....88*143...............891....406.......79....
|
||||
............*749.........31..............*....318.................+.......317.................................%419.............*392.........
|
||||
....854..797......*..500...............614.1...*..............803.....451............330.159.143.598.......+......./827...............717...
|
||||
...@............924.*........................245............-.&..........*...606................*...........461............604....#....*....
|
||||
....................73....160..406.150...............933.957...................%.......419.........665..*.........-.......*.....721..573....
|
||||
....*915.........40................*...%.............*........584.......929......377....*..404.935....&..870.....93........395..............
|
||||
.781.............@...........632.......710....769.323............$.........*.........904.....*...*.....................859..................
|
||||
.....=.......................*...646............-.........................52................149...414....................*........%.........
|
||||
...51....524.625..........328...*.................................295.734......@..........................856.291.695....367..218..787..8...
|
||||
.........../.*................339........................576/.417*...........445...@........................%....................-..........
|
||||
....869.85...316.....308...............345.......749.............................264.............775..777...............................89..
|
||||
.......*...............#.........$....*..........*....../.....786.713*52.................357.......&./.........#......971....74.305....-....
|
||||
............................325..770..167..@.....265..+..883................................+...57..........312.......*........*............
|
||||
......+.....266.....788.111....*..........342........588.......939..393*717.............488....*....................401....249...255........
|
||||
.......308..*............#.....816....465..........*.....492..@.............581.........-.......397..709*.................$.....*...........
|
||||
.............511.....881...+.........+..........178..524*..............150..../..720.......843...........964....129.../......908............
|
||||
.......749.............*.526.$............800............................*.........*...500....*.../.................487..........200........
|
||||
..668......*639......932......139.726................#...51..436$..................775...*...834..874.......%..............859+......439....
|
||||
........810........................*.......805.......100..*...........999.....743......169............477...961......973............$.......
|
||||
.574...........6*262........398....204......*.....%.......525...........*.........................412..*.........376...*.@43....=......=....
|
||||
....*836....................................25...619............658.....172.......................*...408...........*........%...776..802...
|
||||
.............307.......&........537..988..............128..-.....*..........................118...327......296.......967..991...............
|
||||
.....899...$...*....788.....829......=....................559.722.......519.........385$...+..................*.323*..............*123......
|
||||
........*.930...674...........*..........447.......801..............957....................................111......767..34....556..........
|
||||
..565.644..............18.....472.........*...8........................*........258........901.................296.......*..........*.......
|
||||
....*............995=....*................649.*...151.........437%...445.747......-.........&......#......%.....*.........800....357.240....
|
||||
....476.491/.931.......121..732*940..682......975..$.....*..................+.358.............../.363....152.264........$...................
|
||||
.............=....730*..................*584...........234.........996.................*.....701........................499............649..
|
||||
......................672......@.............................958.....&.+...........983.673........233.@981........760.......................
|
||||
..942.993@......293...........939..&....@.........867..92.....*........679.........................*.............*.......27...998...........
|
||||
....#.......230.$...................36.24....809..#....*...660.....$.......748..199.-.............717...@......................../..........
|
||||
......*95..............647...$..............-.........461..........757...........*...68...............728..210*680..708......$.....246......
|
||||
...355.........*..........*.538...%..............................-...............977....209*.......................*.........141.....*......
|
||||
...............680.....670.........784........171..799.........317..........................844........166........289.................463...
|
||||
83
2023/day3/p1/main.py
Normal file
83
2023/day3/p1/main.py
Normal file
@ -0,0 +1,83 @@
|
||||
with open("input.text", 'r') as f:
|
||||
contents = f.read().split("\n")
|
||||
|
||||
sum_of_parts = 0
|
||||
|
||||
for index, line in enumerate(contents):
|
||||
|
||||
# Find numbers
|
||||
part_numbers = []
|
||||
num: bool = False
|
||||
num_index = None
|
||||
length = 0
|
||||
for char_index, char in enumerate(line):
|
||||
if char.isnumeric():
|
||||
if not num:
|
||||
num_index = char_index
|
||||
|
||||
num = True
|
||||
length += 1
|
||||
else:
|
||||
if num:
|
||||
part_numbers.append((num_index, length, line[num_index:num_index + length]))
|
||||
num = False
|
||||
length = 0
|
||||
|
||||
if num:
|
||||
part_numbers.append((num_index, length, line[num_index:num_index + length]))
|
||||
|
||||
if part_numbers:
|
||||
print(f"index {index}, {part_numbers}")
|
||||
|
||||
# Check for symbols
|
||||
for part_index, part_length, part_number in part_numbers:
|
||||
|
||||
symbol = False
|
||||
|
||||
minus = 1 if part_index != 0 else 0
|
||||
add = 1 if part_index + length != len(line) else 0
|
||||
start_index = part_index - minus
|
||||
end_index = part_index + part_length + add
|
||||
|
||||
# Check line above
|
||||
if index != 0:
|
||||
for check_index in range(start_index, end_index):
|
||||
|
||||
check_char = contents[index - 1][check_index]
|
||||
|
||||
if check_char != "." and not check_char.isnumeric():
|
||||
sum_of_parts += int(part_number)
|
||||
print(f"Added {part_number}, symbol at ({index - 1}, {check_index}), symbol = \"{check_char}\"")
|
||||
symbol = True
|
||||
break
|
||||
if symbol:
|
||||
continue
|
||||
|
||||
# Check current line
|
||||
if start_index != part_index:
|
||||
if line[start_index] != "." and not line[start_index].isnumeric():
|
||||
sum_of_parts += int(part_number)
|
||||
print(f"Added {part_number}, symbol at ({index}, {start_index}), symbol = \"{line[start_index]}\"")
|
||||
continue
|
||||
|
||||
if end_index != part_index + length - 1:
|
||||
if line[end_index - 1] != "." and not line[end_index - 1].isnumeric():
|
||||
sum_of_parts += int(part_number)
|
||||
print(f"Added {part_number}, symbol at ({index}, {end_index - 1}), symbol = \"{line[end_index - 1]}\"")
|
||||
continue
|
||||
|
||||
# Check line bellow
|
||||
if index != (len(contents) - 1):
|
||||
for check_index in range(start_index, end_index):
|
||||
|
||||
check_char = contents[index + 1][check_index]
|
||||
|
||||
if check_char != "." and not check_char.isnumeric():
|
||||
sum_of_parts += int(part_number)
|
||||
print(f"Added {part_number}, symbol at ({index + 1}, {check_index}), symbol = \"{check_char}\"")
|
||||
symbol = True
|
||||
break
|
||||
if symbol:
|
||||
continue
|
||||
|
||||
print(f"Sum of engine parts: {sum_of_parts}")
|
||||
10
2023/day3/p1/test.text
Normal file
10
2023/day3/p1/test.text
Normal file
@ -0,0 +1,10 @@
|
||||
467..114..
|
||||
...*......
|
||||
..35..633.
|
||||
......#...
|
||||
617*......
|
||||
.....+.58.
|
||||
..592.....
|
||||
......755.
|
||||
...$.*....
|
||||
.664.598..
|
||||
140
2023/day3/p2/input.text
Normal file
140
2023/day3/p2/input.text
Normal file
@ -0,0 +1,140 @@
|
||||
...................15....904...........850.................329...................13....................................871....816....697....
|
||||
...........53.497........................%....906...610.......*.............735#..&...*......558...68...............68..*......&....*.......
|
||||
..........*....$....................132.........*..........844....875................350............*...............*..336.364...649........
|
||||
.......726.......341..................*...186...358..................*244........57.......@.........738......*.....663.................584..
|
||||
.............952.*......33......660..704............949......................518*....234.967....551........971..&.......................*...
|
||||
.......738...*....222......................706.......*..825.............474%...........*...........*.405.........779..............542...405.
|
||||
.74.........366....................192..........542.737....*760...................623/..730.....718.../.....................$17......%......
|
||||
...*126.....................%........*.504...=..*.........................................................974...............................
|
||||
........331/..901.........337..........*...461.698...............*461.....814............................*............975...............165.
|
||||
..../.........*.....................262.......................313........*........530.56.....567.......897.....*.........*.9................
|
||||
....953....355...@703..................................609..............462.......%........./...............108.557...501.../...724.........
|
||||
..............................................=.........%.......46......................533....670...............................*..%630....
|
||||
.........................91...382*204.........154..%.............+.524.995..............=.....*...........7..........692.92*56...73.........
|
||||
.685....*....70.189.......*.........................773...830/....../....*........=.........565.............464................$....738..130
|
||||
.........938..*........993..............*.................................243...340...753...........*...882...............108.647....*......
|
||||
..............762..........348.......280...............364*526...........................*........552.....=....25..682....*.........164.....
|
||||
.....948..............813../....644......62........................................#.....657......................*.........................
|
||||
......*...........................*.................$745.......739.....*...399...30............&..@...........924.117..........309..........
|
||||
...883....544.....33.........585=.428.146................288.....*..853....*...........*891.409....429..460...*..........997....*........187
|
||||
.............*818........829..........*....846..............................248.....574..................*....789.......*.....965....-..*...
|
||||
......=.....................*..........370.......850+.............313...........................573....621...............268.......58..800..
|
||||
....67....287.............481..709...............................*.......#74...................*.................965........................
|
||||
............@.291.............*.........607*....950.475..309...66..932........395..374..........155.891....472..*......774.............&....
|
||||
....207..........%..262......543..887/......711....*.......+......*............*...*........823............*...93...........377.....764.....
|
||||
.....*...968.951.......#................................$.........453...366..736.972........*.............697........*618...&...............
|
||||
....984..*...............-.......................884..23......492.....*..*................70..523.....25........$.....................370...
|
||||
..................870...187.......548#.522..458.....*..........*....956......535....../.........*.525*........197....@..*266...123.....*....
|
||||
.........501.....*..........................&.....323........257........956..*........80..946.592.................211.........*.........311.
|
||||
.....380*.....867...653..347....................*........93=...........*......515..........-...................................678..........
|
||||
..........876......&....*.......&631.950.647...631...@...........=...705..914................739..............319......713.........*97.#918.
|
||||
.....805...*..........118................-.........790....559..51........../........*.........*......550......*........./.......647.........
|
||||
......-..428.....599......813................413..................280............840.654.......91.....*...........236.......$...............
|
||||
.............=...%.......*.....77...................#.492............................................96..........@.......175....%...........
|
||||
......*427..569..........47......................999......314.....636*253.................764.................27......-..........415..386...
|
||||
...142................$................@..320........969...................882*311...............#..751...........=....649...........*......
|
||||
.........*723..993.976....638........475................=..800.......................*764.710...574....*964....831..........473......531....
|
||||
...%..486...................*....#..................................831...........375........*........................=824......21..........
|
||||
559.........................441...316................................./....................618.407.......83.......972...............91......
|
||||
......*.....25..741...................%...............*63.546$..905......27........861.756........*.......*..........*...28...57............
|
||||
.......794....*./........782...236....47...........937...........*..755....*505..............23.948.......560.532...421....*..#.........405.
|
||||
............566.................*........-850..872.......90....229...+..........978..684............225..................675.....591...*....
|
||||
.............................296..243...........+....691...................311.........$......321......@......827....$13.......$....&..530..
|
||||
.....664..422$....613.....@.........%.401/.$974.....-.........%.145....729......*........./.......106............%.......=.....611..........
|
||||
.......$.........*.......857...147*.............591........+.46..*.....=........306.67*...818.............................261....../........
|
||||
............823...785..............340.........-....564..777......456.......%....................891.................560...........642..181.
|
||||
.....394.....*................226..........423..............................539.................*............640&.............535...........
|
||||
.......@.....626..317..329....*...92........+..................374....827............*.683+....771....529.........303..........*............
|
||||
.........172.....-........*......*.....332...........288..229..+.........*.786=....468.............*....*...........*....461...249..=.......
|
||||
....974...*............901..@....130..*..............$...*..........4.573................163......429....808.464*47..231....@......964......
|
||||
........183.................582........11...............310.....774.*.....567.............*....36...........................................
|
||||
.......................939.....................*826............@.....892..........481......266.*...-253.........106.830....235......*..841..
|
||||
727.........177#.........&.......507........301..........................550..242*.....+./.....686.......@.446.*.....*.......*....894..*....
|
||||
....67...............468.....&......&..596......................817.600...............85.5.............973...$.805...513......378.......388.
|
||||
...........*247.........*.....974.........*263....329....476....*............721............723.....................................358.....
|
||||
........784.....434.....667.......................*............615.195.612...............................540#........347...........*........
|
||||
...............*.................76......121...659........@555..........-.............201......................866............628.505.509...
|
||||
.............515........../.................#....................281..%...656............*670.419.......799.......*...510.786...*.......&...
|
||||
....993.................540.373....709.............705............*...132..#........298$......*...232....*..@..878.......*....528...#.......
|
||||
....$.........615.............*..........948..........*........565................%..........465..#.....497.67....................631.......
|
||||
.........138....#....417......123...........*.......546...821...................114..=............................258.859=.380-.............
|
||||
.....734*.............../.............833..399..........................+............780...288..............117..@...................925....
|
||||
................*860..........228........*...............................956....390*........=..........%...*..........839...373......*......
|
||||
..802........369........641.............763.....154.24...............302............620..............150.403.......*.........*....647.......
|
||||
...................................&........466*.....@..................*827....530.............................129.628.....923.........=866
|
||||
..........&......&.............824.573.................669.........................$.....374..627...........698.....................759.....
|
||||
.......499....%.812.857*653...................668..........879.......974................../......*926...852.........................-....832
|
||||
...646......284..............708...369...........*808................-.......705.......@...............%.............492.462............*...
|
||||
....................959......#.......*....872..........................102....*.........80..839....996..............*.....%........83...49..
|
||||
.785............363..*.............49.......*.......667.....797....224.......586..............&....*...34..673.......650....................
|
||||
....*..*132....*.....225...................631..350..*.........*....*.............941....=.......52....*.................406...546..........
|
||||
.543............760.........305..325...330.......+.................621...........*.......63..#.......268..239...................#...........
|
||||
........658..................*............*...........735......820.....145....419...........91..489.........*......404.......*....#.........
|
||||
..........=....415+.....38$....844...+..366.............*.......*......*..............................43....945.....#.....563.205..211..183.
|
||||
......267.......................*...519.....730........836..........277...........808...........504...&................................#....
|
||||
.....*..................705/....575..........*....../..........$866.........=.......*...975......#.......183.931........%.......611.........
|
||||
.......135.......284........................246.653.972..............365..191.....376...*.....&.........*......*.........994...@.....11.....
|
||||
...440../.........*.............................*..............415.....................985..838......677.......109...................*......
|
||||
...@............224....399.727$......68#..........................$......432.....214$.....................#.................591....686......
|
||||
..........&.......................................658........143....779.+....942......$.............885....567..........$...................
|
||||
.461.......33....277.407......108..............47.*.............*...........*.......$.811............................390....................
|
||||
..........................907*.....#397..307...*....197.12.....3...738....254.85..393...............713..700..741...........176.....883.....
|
||||
..316........180...........................*.758...................-...........................................*............*...............
|
||||
....*..../........871...338..165.........683............455...701*......................540....255.......$....858........277....28....+.....
|
||||
...660.469..912...#..........%......743.........439.....-.........206......363..........*.......*.......640............................144..
|
||||
..............*.........443...............610.............803.............*.............879...658............$................189...........
|
||||
...........172......794........98..............646......................662..............................*....49.-210.523.257....*..........
|
||||
...87..662.....#.......*667....%..408..........*............220...524............=.....742..39..160....64.636..........*..*....974..378.....
|
||||
...*.....*.....42..&.............=....371*.....804.................*..#....../.240.....*........................395%..461..818.....*........
|
||||
....706.398........452....500.............406..........57*380....365.42...635.......131...........18.....538.....................403........
|
||||
..............143........*.........80............740..........................*245......784........-...........708...................&.297..
|
||||
.230...........*.......373..341...........................$438.......*.................=.............874&..959*...........192......829.#....
|
||||
...#..........476..647.....*......................................431.728..........................................50.....$.................
|
||||
........334...........*731.930......=........966........*323...................301.....%....404...............879....*372.....208.134.......
|
||||
...........*.....................163..........*......509......................%.....&..785.......................*...............*..........
|
||||
...768..329....199........................................797......*368..........873..........26.565....651.....664......111..........217...
|
||||
................*.....26.......705*76....415.............*................................749..........*..................#......545-..%....
|
||||
....-....473..517......*...............5*....449..........68........................751.......*399......401.................................
|
||||
.730......#.........240...&..65.718.87......*.....532..............-....567............*....................675.......67..463...............
|
||||
.....289#....509........200......*...*....852....................885...+....663..72..507......998.&954..213....$.....*.........672..........
|
||||
..............................403.....129........377-....................../....&.................................473...........*...........
|
||||
.........855=.........250...................961........860*916.......981..........326.........633..404................676.%566..120.........
|
||||
892...........532.............754.......866*....790..................#........819*..............*.........%.44..=......*............29......
|
||||
....@527.......*..................600............../...$568.....800.....................179..528........613.....358...949...................
|
||||
................302...807............*..895.................+.....@.....-...........................980...........................736.......
|
||||
........217...=......*............879.....+.-..........%.....793.......442.......422............209*.......&.......969....240.378...*.......
|
||||
....340*.....145...%.596....................23....703...217................372..........610.................129.......*........../.....=....
|
||||
.................790.....&............904............=............795......*.......385=...+.....88*143...............891....406.......79....
|
||||
............*749.........31..............*....318.................+.......317.................................%419.............*392.........
|
||||
....854..797......*..500...............614.1...*..............803.....451............330.159.143.598.......+......./827...............717...
|
||||
...@............924.*........................245............-.&..........*...606................*...........461............604....#....*....
|
||||
....................73....160..406.150...............933.957...................%.......419.........665..*.........-.......*.....721..573....
|
||||
....*915.........40................*...%.............*........584.......929......377....*..404.935....&..870.....93........395..............
|
||||
.781.............@...........632.......710....769.323............$.........*.........904.....*...*.....................859..................
|
||||
.....=.......................*...646............-.........................52................149...414....................*........%.........
|
||||
...51....524.625..........328...*.................................295.734......@..........................856.291.695....367..218..787..8...
|
||||
.........../.*................339........................576/.417*...........445...@........................%....................-..........
|
||||
....869.85...316.....308...............345.......749.............................264.............775..777...............................89..
|
||||
.......*...............#.........$....*..........*....../.....786.713*52.................357.......&./.........#......971....74.305....-....
|
||||
............................325..770..167..@.....265..+..883................................+...57..........312.......*........*............
|
||||
......+.....266.....788.111....*..........342........588.......939..393*717.............488....*....................401....249...255........
|
||||
.......308..*............#.....816....465..........*.....492..@.............581.........-.......397..709*.................$.....*...........
|
||||
.............511.....881...+.........+..........178..524*..............150..../..720.......843...........964....129.../......908............
|
||||
.......749.............*.526.$............800............................*.........*...500....*.../.................487..........200........
|
||||
..668......*639......932......139.726................#...51..436$..................775...*...834..874.......%..............859+......439....
|
||||
........810........................*.......805.......100..*...........999.....743......169............477...961......973............$.......
|
||||
.574...........6*262........398....204......*.....%.......525...........*.........................412..*.........376...*.@43....=......=....
|
||||
....*836....................................25...619............658.....172.......................*...408...........*........%...776..802...
|
||||
.............307.......&........537..988..............128..-.....*..........................118...327......296.......967..991...............
|
||||
.....899...$...*....788.....829......=....................559.722.......519.........385$...+..................*.323*..............*123......
|
||||
........*.930...674...........*..........447.......801..............957....................................111......767..34....556..........
|
||||
..565.644..............18.....472.........*...8........................*........258........901.................296.......*..........*.......
|
||||
....*............995=....*................649.*...151.........437%...445.747......-.........&......#......%.....*.........800....357.240....
|
||||
....476.491/.931.......121..732*940..682......975..$.....*..................+.358.............../.363....152.264........$...................
|
||||
.............=....730*..................*584...........234.........996.................*.....701........................499............649..
|
||||
......................672......@.............................958.....&.+...........983.673........233.@981........760.......................
|
||||
..942.993@......293...........939..&....@.........867..92.....*........679.........................*.............*.......27...998...........
|
||||
....#.......230.$...................36.24....809..#....*...660.....$.......748..199.-.............717...@......................../..........
|
||||
......*95..............647...$..............-.........461..........757...........*...68...............728..210*680..708......$.....246......
|
||||
...355.........*..........*.538...%..............................-...............977....209*.......................*.........141.....*......
|
||||
...............680.....670.........784........171..799.........317..........................844........166........289.................463...
|
||||
125
2023/day3/p2/main.py
Normal file
125
2023/day3/p2/main.py
Normal file
@ -0,0 +1,125 @@
|
||||
with open("input.text", 'r') as f:
|
||||
contents = f.read().split("\n")
|
||||
|
||||
sum_of_parts = 0
|
||||
|
||||
"""
|
||||
{
|
||||
(1, 3) : [467, 35]
|
||||
}
|
||||
"""
|
||||
gears = {}
|
||||
|
||||
for index, line in enumerate(contents):
|
||||
|
||||
# Find numbers
|
||||
part_numbers = []
|
||||
num: bool = False
|
||||
num_index = None
|
||||
length = 0
|
||||
for char_index, char in enumerate(line):
|
||||
if char.isnumeric():
|
||||
if not num:
|
||||
num_index = char_index
|
||||
|
||||
num = True
|
||||
length += 1
|
||||
else:
|
||||
if num:
|
||||
part_numbers.append((num_index, length, line[num_index:num_index + length]))
|
||||
num = False
|
||||
length = 0
|
||||
|
||||
if num:
|
||||
part_numbers.append((num_index, length, line[num_index:num_index + length]))
|
||||
|
||||
if part_numbers:
|
||||
print(f"index {index}, {part_numbers}")
|
||||
|
||||
# Check for symbols
|
||||
for part_index, part_length, part_number in part_numbers:
|
||||
|
||||
symbol = False
|
||||
|
||||
minus = 1 if part_index != 0 else 0
|
||||
add = 1 if part_index + length != len(line) else 0
|
||||
start_index = part_index - minus
|
||||
end_index = part_index + part_length + add
|
||||
|
||||
# Check line above
|
||||
if index != 0:
|
||||
for check_index in range(start_index, end_index):
|
||||
|
||||
coords = (index - 1, check_index)
|
||||
x, y = coords
|
||||
check_char = contents[x][y]
|
||||
|
||||
if check_char == "*":
|
||||
if coords in gears:
|
||||
gears[coords].append(part_number)
|
||||
else:
|
||||
gears[coords] = [part_number]
|
||||
|
||||
symbol = True
|
||||
break
|
||||
if symbol:
|
||||
continue
|
||||
|
||||
# Check current line
|
||||
if start_index != part_index:
|
||||
if line[start_index] == "*":
|
||||
coords = (index, start_index)
|
||||
|
||||
check_char = line[start_index]
|
||||
|
||||
if check_char == "*":
|
||||
if coords in gears:
|
||||
gears[coords].append(part_number)
|
||||
else:
|
||||
gears[coords] = [part_number]
|
||||
|
||||
continue
|
||||
|
||||
if end_index != part_index + length - 1:
|
||||
if line[end_index - 1] == "*":
|
||||
coords = (index, end_index - 1)
|
||||
|
||||
check_char = line[end_index - 1]
|
||||
|
||||
if check_char == "*":
|
||||
if coords in gears:
|
||||
gears[coords].append(part_number)
|
||||
else:
|
||||
gears[coords] = [part_number]
|
||||
|
||||
continue
|
||||
|
||||
# Check line bellow
|
||||
if index != (len(contents) - 1):
|
||||
for check_index in range(start_index, end_index):
|
||||
|
||||
coords = (index + 1, check_index)
|
||||
x, y = coords
|
||||
|
||||
check_char = contents[x][y]
|
||||
|
||||
if check_char == "*":
|
||||
if coords in gears:
|
||||
gears[coords].append(part_number)
|
||||
else:
|
||||
gears[coords] = [part_number]
|
||||
|
||||
symbol = True
|
||||
break
|
||||
if symbol:
|
||||
continue
|
||||
|
||||
|
||||
sum_of_gear_ratios = 0
|
||||
for gear in gears:
|
||||
if len(gears[gear]) == 2:
|
||||
gear_ratio = int(gears[gear][0]) * int(gears[gear][1])
|
||||
print(gear_ratio)
|
||||
sum_of_gear_ratios += gear_ratio
|
||||
|
||||
print(f"Sum of gear ratios: {sum_of_gear_ratios}")
|
||||
10
2023/day3/p2/test.text
Normal file
10
2023/day3/p2/test.text
Normal file
@ -0,0 +1,10 @@
|
||||
467..114..
|
||||
...*......
|
||||
..35..633.
|
||||
......#...
|
||||
617*......
|
||||
.....+.58.
|
||||
..592.....
|
||||
......755.
|
||||
...$.*....
|
||||
.664.598..
|
||||
213
2023/day4/p1/input.text
Normal file
213
2023/day4/p1/input.text
Normal file
@ -0,0 +1,213 @@
|
||||
Card 1: 69 61 27 58 89 52 81 94 40 51 | 43 40 52 90 37 97 89 80 69 42 51 70 94 58 10 73 21 29 61 63 57 79 81 27 35
|
||||
Card 2: 5 75 37 76 98 32 24 83 44 50 | 80 75 91 5 33 52 31 96 83 92 46 98 55 65 48 24 44 4 32 60 88 37 76 50 77
|
||||
Card 3: 37 39 43 53 47 20 50 56 78 65 | 80 56 32 78 72 97 40 77 17 50 87 99 36 93 63 19 39 59 44 52 23 75 9 51 43
|
||||
Card 4: 6 25 31 60 2 50 89 67 82 16 | 65 89 5 67 68 53 50 6 51 25 96 32 2 16 41 60 63 90 82 30 98 31 75 14 7
|
||||
Card 5: 43 39 98 45 33 87 36 23 61 66 | 93 61 4 21 47 32 94 99 45 23 87 64 92 43 33 5 83 16 98 44 39 77 66 18 36
|
||||
Card 6: 59 6 65 20 62 3 92 79 98 24 | 80 15 28 70 24 32 93 99 91 86 95 16 90 83 11 75 19 4 48 6 78 61 20 27 7
|
||||
Card 7: 49 54 25 44 79 68 13 60 1 43 | 16 18 4 82 99 23 80 46 79 55 14 1 32 13 54 84 37 44 20 68 25 60 27 49 43
|
||||
Card 8: 52 50 19 69 28 93 32 98 97 47 | 2 40 28 47 20 60 66 98 12 19 31 14 16 75 97 49 93 69 11 52 50 87 24 32 27
|
||||
Card 9: 47 44 94 43 75 49 77 24 93 45 | 94 47 30 43 24 77 44 31 66 75 45 54 92 49 84 53 20 11 17 16 86 93 50 85 76
|
||||
Card 10: 23 39 92 16 68 30 49 59 34 90 | 85 15 25 31 92 90 47 59 11 36 68 10 96 65 16 49 18 97 9 83 28 61 4 94 46
|
||||
Card 11: 21 37 14 89 46 31 64 90 43 45 | 63 29 14 23 7 28 13 86 83 16 19 24 78 54 47 51 58 77 71 40 56 62 20 89 39
|
||||
Card 12: 69 98 97 19 70 5 62 25 55 90 | 1 35 45 25 75 61 50 99 82 96 71 74 72 76 3 70 14 57 88 27 5 94 58 32 85
|
||||
Card 13: 24 51 65 64 29 37 86 60 41 94 | 40 13 88 85 46 59 90 55 8 72 56 93 6 71 52 87 31 91 20 5 83 36 86 43 96
|
||||
Card 14: 43 76 64 80 49 48 83 14 51 54 | 1 99 54 36 80 48 49 15 43 17 51 96 83 40 76 14 41 75 84 55 63 91 64 58 9
|
||||
Card 15: 9 33 75 53 48 76 25 83 28 24 | 1 10 69 28 76 87 71 52 26 44 66 92 75 55 7 40 93 20 12 91 30 33 46 39 31
|
||||
Card 16: 55 92 85 21 81 90 47 63 34 70 | 26 2 1 87 59 69 40 58 46 43 70 17 35 71 6 63 49 13 81 11 85 94 44 96 5
|
||||
Card 17: 21 42 95 24 35 53 39 14 18 4 | 76 23 5 79 22 20 36 69 38 77 40 37 32 89 49 15 59 44 51 25 74 34 54 16 28
|
||||
Card 18: 63 21 61 65 82 69 27 74 98 58 | 51 58 86 21 90 54 45 41 71 74 83 6 42 1 35 78 31 9 55 46 11 15 63 84 82
|
||||
Card 19: 44 41 24 51 74 20 97 31 83 39 | 17 24 2 54 73 28 13 55 49 79 42 62 58 8 95 23 86 70 76 41 26 4 80 25 11
|
||||
Card 20: 83 61 55 56 96 16 95 49 65 90 | 67 75 63 37 87 54 39 19 99 81 47 49 24 84 41 13 78 40 38 64 26 34 15 72 48
|
||||
Card 21: 23 89 57 54 90 82 2 8 65 80 | 78 14 21 39 45 42 1 80 99 20 52 11 31 50 68 82 59 4 96 55 6 46 88 38 34
|
||||
Card 22: 85 6 4 41 5 35 31 19 64 17 | 83 56 96 41 16 39 70 81 67 51 74 99 1 18 43 48 5 85 29 88 30 52 69 11 61
|
||||
Card 23: 72 88 38 82 33 10 75 44 70 53 | 7 71 56 96 19 89 30 67 21 22 48 45 80 86 39 61 4 44 74 28 23 40 46 72 78
|
||||
Card 24: 75 67 13 39 63 58 43 35 49 99 | 28 46 17 95 55 2 83 18 42 91 20 78 97 51 60 81 47 69 64 57 37 77 12 61 67
|
||||
Card 25: 87 44 62 66 82 20 7 21 51 32 | 54 97 46 1 95 14 26 47 94 25 49 30 84 12 5 73 48 89 45 53 28 74 93 88 13
|
||||
Card 26: 65 6 10 66 15 26 47 62 63 68 | 5 60 71 41 68 66 53 26 6 56 38 47 90 62 63 33 81 10 15 3 16 96 83 65 20
|
||||
Card 27: 7 95 47 35 58 87 21 68 80 37 | 94 24 39 74 43 78 69 54 10 32 84 99 41 75 6 86 11 66 56 62 16 44 5 59 65
|
||||
Card 28: 95 19 21 14 59 74 27 68 32 99 | 83 35 5 41 92 59 26 57 18 55 52 32 6 23 36 54 56 50 15 48 27 89 45 53 12
|
||||
Card 29: 1 8 93 94 72 89 13 37 58 49 | 35 62 88 26 94 50 31 87 72 78 85 1 44 49 22 5 20 91 98 13 77 93 60 48 52
|
||||
Card 30: 47 94 67 27 56 25 38 52 28 32 | 22 61 56 82 58 27 32 18 33 94 79 23 62 60 76 98 67 49 77 64 11 47 40 16 42
|
||||
Card 31: 61 68 80 67 41 6 52 33 22 91 | 54 10 72 91 31 33 95 43 39 68 81 22 63 67 32 61 27 73 66 75 36 79 6 59 80
|
||||
Card 32: 62 5 57 36 87 33 53 86 82 8 | 76 32 30 5 53 57 86 56 97 77 18 33 8 82 15 71 83 17 48 90 9 43 54 88 4
|
||||
Card 33: 79 25 27 11 17 23 76 38 15 26 | 83 80 37 36 77 24 20 55 16 59 81 7 19 1 18 91 42 29 22 2 41 27 6 50 92
|
||||
Card 34: 3 8 29 57 87 88 97 12 41 95 | 29 94 44 20 34 28 76 12 95 74 22 85 31 64 91 50 1 97 35 49 98 41 92 67 25
|
||||
Card 35: 43 79 50 20 6 76 25 14 66 89 | 93 72 50 67 38 89 13 87 46 54 36 52 20 57 56 17 3 22 43 63 14 84 15 29 16
|
||||
Card 36: 68 15 59 47 30 98 89 27 5 25 | 11 8 32 72 18 74 73 48 39 53 51 88 22 90 55 40 14 44 66 12 94 71 9 13 31
|
||||
Card 37: 11 48 72 90 12 86 34 32 51 7 | 52 80 36 46 74 64 44 27 11 47 61 84 55 28 77 26 58 54 3 5 17 60 89 16 72
|
||||
Card 38: 13 97 42 79 96 69 8 57 90 48 | 84 67 52 8 20 54 21 45 69 23 28 85 92 95 40 59 87 2 50 83 14 6 16 70 39
|
||||
Card 39: 87 67 8 38 15 20 96 30 45 97 | 36 28 43 35 9 27 14 70 29 1 40 56 60 81 63 48 53 44 31 75 49 85 64 39 69
|
||||
Card 40: 63 35 33 6 58 97 91 34 67 18 | 68 61 98 66 84 20 37 41 17 50 81 14 60 78 36 9 65 21 83 2 71 79 85 7 47
|
||||
Card 41: 75 97 62 6 92 69 53 20 45 5 | 5 53 56 69 84 97 75 62 39 18 22 64 6 92 70 41 45 20 17 63 7 9 54 29 21
|
||||
Card 42: 64 21 72 62 90 50 84 28 71 37 | 71 38 64 50 42 4 65 85 91 21 55 58 10 92 90 7 17 60 84 70 37 72 28 98 62
|
||||
Card 43: 58 28 84 32 92 18 48 73 86 5 | 43 32 33 35 84 50 64 6 21 52 92 58 29 95 11 18 28 79 48 77 5 86 60 73 10
|
||||
Card 44: 30 69 44 40 5 58 22 63 65 90 | 65 68 69 43 58 5 72 90 22 63 52 78 66 15 60 88 30 12 74 44 67 40 41 38 29
|
||||
Card 45: 69 53 87 59 27 10 16 90 52 35 | 83 4 87 89 11 30 45 70 52 13 35 92 90 79 6 68 71 86 16 97 26 72 39 96 53
|
||||
Card 46: 78 8 1 64 87 6 3 7 75 82 | 48 84 56 8 89 73 31 68 64 46 40 6 41 14 78 97 91 27 95 28 47 30 37 58 75
|
||||
Card 47: 58 24 13 97 18 50 89 9 14 81 | 97 24 54 16 14 32 78 62 50 5 18 42 20 99 15 58 13 89 96 72 81 75 29 9 86
|
||||
Card 48: 87 83 32 53 5 72 86 84 65 9 | 30 89 54 53 58 13 85 81 83 39 71 5 91 65 68 82 94 42 87 24 86 29 47 32 28
|
||||
Card 49: 38 4 66 35 19 56 78 90 81 65 | 60 16 82 68 7 49 15 32 3 22 48 11 38 53 83 45 54 23 5 81 78 34 63 27 65
|
||||
Card 50: 9 48 47 87 99 6 65 2 44 75 | 75 79 55 82 44 27 42 48 51 65 16 68 3 52 30 62 84 66 87 69 8 10 86 35 72
|
||||
Card 51: 28 24 85 63 96 30 88 29 5 50 | 71 61 30 90 65 96 41 50 82 68 39 10 81 29 48 26 80 97 28 24 27 88 38 5 63
|
||||
Card 52: 86 80 90 33 19 78 13 69 89 27 | 62 54 85 88 97 64 37 31 29 6 94 69 67 51 57 58 89 13 76 55 22 96 63 66 38
|
||||
Card 53: 75 5 78 44 10 77 3 89 39 4 | 41 61 76 56 75 85 7 22 19 51 5 87 53 10 79 24 39 94 26 57 1 35 83 32 34
|
||||
Card 54: 70 80 59 16 6 99 83 37 26 8 | 62 58 16 74 35 53 94 1 80 89 61 11 86 36 83 14 8 39 43 6 92 99 18 64 79
|
||||
Card 55: 41 39 43 58 60 65 74 76 11 46 | 58 42 60 59 13 16 83 55 37 25 32 96 22 79 69 2 89 3 21 71 35 67 95 19 45
|
||||
Card 56: 10 18 89 9 63 51 81 4 49 75 | 3 32 45 68 87 65 71 55 79 89 37 64 21 53 30 62 26 6 90 51 70 74 22 10 54
|
||||
Card 57: 27 58 75 7 80 71 45 46 26 55 | 67 76 91 16 69 82 24 48 46 87 28 20 75 36 86 8 51 42 9 84 3 43 27 34 70
|
||||
Card 58: 64 55 76 63 58 66 34 27 46 62 | 79 22 69 33 1 81 4 76 36 40 88 39 2 47 89 48 29 77 93 67 41 10 95 19 63
|
||||
Card 59: 62 1 42 32 48 12 94 36 33 86 | 71 41 46 96 12 55 10 38 15 43 1 60 67 2 30 89 37 98 19 18 69 25 50 20 77
|
||||
Card 60: 11 14 6 57 55 62 88 19 24 26 | 45 58 88 83 51 36 46 32 85 17 61 33 31 2 91 9 78 39 81 20 87 86 64 66 49
|
||||
Card 61: 9 28 27 33 53 71 38 63 55 60 | 26 77 83 57 75 50 3 68 31 52 24 94 40 18 8 80 70 5 25 72 47 44 45 89 19
|
||||
Card 62: 47 64 33 74 26 82 21 30 69 39 | 29 68 65 37 60 58 17 48 75 91 2 9 16 31 46 49 97 57 94 40 34 13 11 43 39
|
||||
Card 63: 1 16 10 67 73 48 66 78 55 32 | 31 54 78 79 42 34 81 55 37 63 29 73 90 48 11 77 67 14 46 19 16 66 89 53 32
|
||||
Card 64: 59 33 71 69 84 2 53 95 28 52 | 85 82 66 79 45 71 33 10 30 84 52 19 94 54 28 41 61 59 6 69 53 97 38 2 49
|
||||
Card 65: 17 46 40 23 93 76 45 2 43 32 | 17 32 23 2 52 7 15 77 20 39 46 64 99 59 98 89 43 40 93 4 45 11 72 76 13
|
||||
Card 66: 58 9 28 19 90 80 77 11 81 20 | 44 51 39 20 63 6 11 88 61 27 90 53 62 70 34 42 28 24 78 16 81 65 9 31 15
|
||||
Card 67: 88 42 78 9 26 43 54 95 8 40 | 58 54 10 43 60 36 40 42 95 63 4 88 82 50 38 26 8 99 31 74 13 46 91 61 44
|
||||
Card 68: 32 95 6 83 30 14 38 15 87 70 | 79 15 64 45 99 70 17 38 87 93 83 53 14 77 85 32 19 95 29 6 7 61 90 30 67
|
||||
Card 69: 76 15 92 22 48 46 42 39 84 32 | 51 26 1 9 2 73 17 94 6 62 92 77 32 90 43 48 81 22 88 58 78 46 79 98 15
|
||||
Card 70: 62 90 81 15 8 3 72 93 65 32 | 57 62 3 80 26 67 10 72 54 36 98 29 17 90 93 32 49 48 76 8 12 31 65 81 15
|
||||
Card 71: 74 46 75 14 56 20 83 28 35 61 | 57 61 75 59 54 55 56 32 71 4 18 60 72 94 39 86 30 50 48 41 7 14 77 73 85
|
||||
Card 72: 47 63 42 84 87 78 21 56 97 26 | 87 40 78 1 48 7 26 63 42 37 30 97 65 84 14 93 85 39 47 11 50 71 21 28 56
|
||||
Card 73: 20 56 88 38 50 74 76 69 63 17 | 73 47 87 89 98 18 33 14 3 78 72 39 77 97 74 80 81 51 88 59 46 2 70 69 20
|
||||
Card 74: 44 74 4 59 77 99 66 81 8 6 | 75 88 25 73 74 86 16 8 99 17 50 22 83 35 67 3 77 5 46 34 68 80 6 23 54
|
||||
Card 75: 58 25 36 26 80 12 88 51 98 71 | 71 66 77 83 51 61 23 98 33 53 18 75 43 20 26 92 70 90 25 94 86 12 34 36 22
|
||||
Card 76: 14 79 44 82 59 75 43 88 12 52 | 11 30 26 74 82 91 72 79 35 69 52 24 13 23 3 22 78 38 43 10 14 53 76 66 90
|
||||
Card 77: 65 79 38 39 3 18 89 51 9 41 | 5 87 13 45 86 85 72 7 92 22 36 69 67 82 40 73 83 15 34 59 68 57 31 84 71
|
||||
Card 78: 67 89 71 15 39 66 29 97 11 38 | 4 95 21 74 29 43 51 65 31 91 98 39 71 13 93 88 64 47 40 76 58 6 92 80 81
|
||||
Card 79: 8 60 27 44 15 52 91 99 35 47 | 97 1 35 81 53 79 16 23 52 77 11 56 2 85 21 96 46 83 5 37 49 93 13 76 69
|
||||
Card 80: 1 37 16 40 6 48 66 26 90 12 | 87 23 24 5 67 80 20 53 95 66 93 85 7 34 32 52 92 61 9 27 41 35 36 57 38
|
||||
Card 81: 72 39 83 5 69 43 73 92 88 78 | 77 74 68 78 9 75 50 65 8 14 35 96 64 80 58 6 4 46 57 61 66 85 48 40 34
|
||||
Card 82: 38 2 71 61 46 97 8 84 43 24 | 91 50 76 58 17 11 66 60 65 16 44 70 96 20 37 94 30 99 6 69 32 29 81 49 48
|
||||
Card 83: 50 89 48 66 96 97 28 5 12 76 | 89 93 79 68 16 48 44 42 28 41 83 50 97 96 76 82 15 57 10 66 5 12 74 38 4
|
||||
Card 84: 9 71 98 81 59 30 99 45 80 48 | 6 17 31 35 88 57 10 81 77 70 58 21 34 63 51 84 74 37 64 80 29 16 3 11 76
|
||||
Card 85: 36 86 69 83 56 51 19 67 65 10 | 35 3 55 38 90 59 82 2 32 10 17 36 52 69 83 65 13 92 97 99 48 30 87 68 70
|
||||
Card 86: 6 96 82 83 89 31 91 20 28 5 | 20 11 84 45 50 81 23 56 24 28 1 53 2 57 54 64 3 94 96 43 6 26 91 77 66
|
||||
Card 87: 84 22 38 2 94 23 76 64 29 42 | 13 99 48 23 62 82 38 91 31 88 14 43 66 94 36 64 49 85 26 97 71 39 22 68 60
|
||||
Card 88: 69 25 81 63 86 79 1 64 76 38 | 85 81 63 6 69 50 16 65 54 25 27 38 84 76 7 64 79 12 86 88 70 94 39 1 20
|
||||
Card 89: 7 43 74 93 60 24 33 53 97 35 | 62 51 93 86 81 71 63 2 13 99 66 83 97 37 10 77 55 27 73 92 67 19 33 88 96
|
||||
Card 90: 2 78 5 23 69 72 93 86 55 24 | 92 38 66 85 34 52 83 24 31 6 25 13 33 30 17 7 81 15 16 9 21 53 94 2 77
|
||||
Card 91: 34 21 58 13 99 32 61 65 49 30 | 50 73 18 84 99 53 21 61 94 22 26 93 30 68 34 65 58 72 77 32 49 11 13 39 9
|
||||
Card 92: 15 67 55 79 9 88 33 7 94 49 | 20 94 87 58 9 35 93 7 67 21 15 57 30 56 88 85 5 13 60 83 2 55 38 28 6
|
||||
Card 93: 16 11 80 5 33 23 96 21 56 94 | 1 37 85 94 72 42 66 16 10 70 86 77 33 21 55 11 6 45 96 29 90 14 80 48 64
|
||||
Card 94: 2 57 51 10 3 70 63 60 1 40 | 67 80 96 98 52 74 97 33 92 88 19 62 43 73 55 3 1 20 95 99 12 90 17 24 56
|
||||
Card 95: 80 18 73 50 2 3 83 65 33 26 | 7 78 28 4 2 19 14 29 61 81 17 38 57 89 11 20 5 12 13 10 24 96 75 25 55
|
||||
Card 96: 98 53 54 50 20 34 28 96 59 88 | 52 41 53 29 40 15 88 93 30 76 97 81 73 17 12 70 6 63 27 32 64 48 69 96 44
|
||||
Card 97: 66 82 79 74 75 71 29 32 96 50 | 62 46 76 30 21 50 98 17 32 75 87 96 41 42 79 73 45 92 51 91 78 35 27 72 74
|
||||
Card 98: 93 39 91 70 97 33 57 69 53 73 | 38 71 33 25 52 26 75 94 93 42 17 82 7 27 47 89 18 11 20 91 40 31 55 19 4
|
||||
Card 99: 93 31 61 29 77 60 66 92 3 10 | 55 63 56 4 61 33 60 85 45 48 78 27 25 36 42 93 20 67 49 21 7 83 65 13 71
|
||||
Card 100: 21 86 19 62 53 34 88 42 71 47 | 74 7 79 85 22 60 76 10 40 62 50 92 20 24 12 42 15 31 56 90 44 72 34 11 95
|
||||
Card 101: 8 68 64 72 98 60 56 69 57 25 | 24 5 95 77 89 58 39 63 80 48 53 66 38 61 31 3 43 1 16 71 52 82 19 14 51
|
||||
Card 102: 47 39 45 40 54 93 87 26 33 67 | 95 80 98 3 24 53 96 9 90 13 35 21 86 88 63 55 1 42 25 56 32 60 34 40 77
|
||||
Card 103: 64 18 52 28 82 54 31 49 66 44 | 4 78 40 73 32 99 33 6 29 46 11 25 47 36 14 97 79 61 63 50 55 26 30 58 77
|
||||
Card 104: 95 84 89 87 57 53 12 43 58 1 | 59 45 57 58 39 61 52 81 43 40 23 86 1 97 95 55 89 84 87 6 17 85 53 12 28
|
||||
Card 105: 98 81 56 52 37 26 46 39 88 36 | 4 34 88 32 5 73 98 26 39 77 93 42 62 82 41 81 56 1 12 33 46 36 14 52 37
|
||||
Card 106: 97 98 42 95 14 87 41 46 44 27 | 5 82 46 66 87 41 51 55 13 27 7 44 31 97 77 10 14 90 98 94 95 12 79 42 35
|
||||
Card 107: 15 30 60 32 25 73 77 63 85 81 | 16 86 56 41 20 51 25 52 73 40 74 32 15 61 99 34 60 85 77 30 5 27 63 35 81
|
||||
Card 108: 65 59 24 72 54 66 14 81 67 31 | 94 92 83 67 50 19 61 6 42 55 60 97 22 18 24 40 86 43 72 56 5 75 63 45 90
|
||||
Card 109: 90 87 3 17 80 96 36 93 34 79 | 51 11 29 96 13 66 70 99 72 67 64 42 37 30 55 98 35 12 15 84 5 10 57 19 49
|
||||
Card 110: 57 82 85 42 23 76 70 64 88 21 | 65 32 76 81 7 43 23 52 55 14 70 58 27 82 48 64 85 47 57 16 46 97 68 21 45
|
||||
Card 111: 50 62 66 33 93 43 56 70 77 35 | 94 79 19 16 35 41 78 32 91 4 14 3 13 48 63 36 75 98 64 69 27 96 77 51 74
|
||||
Card 112: 6 36 83 73 59 48 65 12 29 92 | 12 36 82 52 8 35 88 69 9 28 89 39 87 20 22 67 27 63 75 73 70 58 31 78 79
|
||||
Card 113: 25 10 29 67 87 32 54 92 62 43 | 65 19 67 75 79 29 8 73 62 97 82 87 25 18 32 93 49 5 66 27 68 42 43 11 46
|
||||
Card 114: 29 44 96 86 64 37 4 71 94 98 | 5 27 55 76 33 59 68 77 3 96 15 1 46 20 35 61 53 83 78 69 99 97 34 30 25
|
||||
Card 115: 32 90 91 88 39 66 37 35 12 21 | 85 82 71 37 87 22 72 17 35 9 58 95 64 12 33 90 68 66 15 43 4 7 91 8 84
|
||||
Card 116: 75 50 66 77 51 36 98 23 97 28 | 4 66 44 20 35 76 51 83 58 89 91 87 75 27 10 47 1 60 97 90 77 45 63 59 36
|
||||
Card 117: 85 44 56 82 39 64 30 88 79 20 | 71 88 53 27 36 85 13 11 38 91 77 19 3 99 23 73 39 44 24 45 32 15 58 79 56
|
||||
Card 118: 80 41 82 32 1 52 91 40 66 11 | 72 3 4 29 77 87 36 40 16 46 66 30 92 76 98 49 85 7 32 28 60 86 52 95 83
|
||||
Card 119: 50 66 77 26 2 49 9 25 58 81 | 80 49 50 55 16 56 20 42 31 99 69 26 28 85 66 65 70 90 84 53 40 19 60 12 38
|
||||
Card 120: 48 9 95 85 16 70 81 61 57 92 | 2 58 66 10 34 54 7 94 16 14 25 74 92 49 88 13 57 26 99 97 70 75 65 19 17
|
||||
Card 121: 50 76 20 25 53 17 2 78 85 86 | 14 40 78 89 93 48 1 28 11 4 54 71 5 69 85 61 38 94 66 64 98 95 30 67 23
|
||||
Card 122: 62 92 40 16 25 82 64 87 52 53 | 5 19 25 48 38 42 1 99 51 79 2 78 75 57 81 56 70 47 59 91 90 6 9 24 15
|
||||
Card 123: 50 91 29 69 41 73 44 51 13 26 | 66 55 22 6 17 71 1 3 67 24 88 79 65 64 60 34 7 90 78 72 28 83 82 74 10
|
||||
Card 124: 61 77 51 39 73 4 6 25 53 91 | 54 88 26 11 3 79 10 86 23 49 66 21 47 85 5 2 98 7 1 60 55 13 94 34 62
|
||||
Card 125: 31 67 93 63 21 28 12 85 39 57 | 69 46 22 59 55 75 11 97 70 1 94 14 81 96 79 44 18 36 85 34 56 48 30 72 15
|
||||
Card 126: 31 89 5 98 63 36 40 48 91 12 | 91 42 6 47 51 94 48 83 5 77 98 8 11 50 29 9 36 54 89 40 12 63 31 34 73
|
||||
Card 127: 41 88 97 87 13 80 74 49 24 6 | 43 66 62 47 36 87 6 88 24 49 96 56 25 79 8 76 23 97 41 42 80 89 13 73 74
|
||||
Card 128: 7 6 3 99 56 40 80 27 23 43 | 34 64 97 67 3 78 69 43 57 98 96 4 6 94 62 48 23 68 8 1 58 73 75 65 16
|
||||
Card 129: 46 80 39 32 35 41 61 93 57 47 | 40 63 93 89 61 4 45 46 25 96 80 39 35 14 62 95 49 32 47 2 41 99 57 82 44
|
||||
Card 130: 90 10 79 84 88 76 59 18 62 11 | 79 11 53 97 92 5 88 52 23 60 62 64 86 84 14 20 98 91 10 28 24 29 87 65 3
|
||||
Card 131: 95 50 11 76 61 4 2 8 42 47 | 40 15 46 61 8 2 29 97 65 50 19 83 76 95 59 82 48 57 43 72 42 25 31 47 53
|
||||
Card 132: 49 86 99 81 13 98 69 32 89 18 | 89 84 65 58 32 15 96 49 1 18 22 13 98 99 6 81 46 50 88 78 3 11 69 74 86
|
||||
Card 133: 18 56 75 7 48 40 38 22 10 90 | 10 42 61 18 91 38 12 67 72 54 51 22 86 77 81 87 75 34 89 97 35 6 96 7 62
|
||||
Card 134: 67 66 99 61 98 32 6 82 86 9 | 12 8 33 87 82 66 98 78 68 24 59 80 6 44 32 49 9 2 97 65 86 71 99 61 67
|
||||
Card 135: 24 59 92 68 44 20 30 8 40 77 | 28 72 51 38 58 40 30 24 21 77 92 82 59 18 50 7 19 44 20 68 91 8 32 88 94
|
||||
Card 136: 27 10 70 96 29 69 37 63 86 65 | 28 27 8 34 29 82 78 56 22 30 3 19 63 88 67 74 75 4 91 41 35 65 7 14 66
|
||||
Card 137: 74 70 86 34 89 37 73 23 29 85 | 16 65 58 88 8 5 11 26 39 91 51 31 19 78 92 87 36 34 80 94 42 81 38 40 93
|
||||
Card 138: 71 35 5 13 69 8 88 11 76 31 | 69 42 5 59 76 54 37 11 39 9 12 73 66 13 71 89 56 26 28 77 2 31 1 4 57
|
||||
Card 139: 10 50 78 91 55 61 81 19 44 59 | 97 98 39 52 56 28 94 24 3 54 45 82 14 17 5 16 27 99 37 38 26 31 53 9 35
|
||||
Card 140: 17 93 15 73 45 20 43 50 2 52 | 64 21 15 57 77 90 2 61 22 8 91 39 93 82 62 5 47 30 41 80 58 1 17 25 48
|
||||
Card 141: 52 66 4 8 87 11 14 76 23 24 | 3 55 29 16 26 61 12 43 89 15 56 24 5 36 85 62 90 75 65 71 53 45 38 50 54
|
||||
Card 142: 57 35 91 73 66 67 64 63 92 18 | 96 58 44 37 19 41 72 54 52 31 88 20 45 68 42 21 2 59 62 53 70 63 77 57 69
|
||||
Card 143: 88 70 69 13 18 97 64 89 40 29 | 74 98 30 5 85 12 38 62 66 33 36 17 71 9 97 22 47 79 39 60 89 13 83 77 8
|
||||
Card 144: 14 35 52 8 75 43 62 33 36 70 | 13 95 71 64 6 48 74 84 61 24 89 77 17 58 87 75 76 43 28 54 3 83 99 67 12
|
||||
Card 145: 53 88 65 42 72 92 43 14 3 90 | 21 19 33 59 84 61 96 41 20 31 88 71 38 72 79 48 58 55 62 36 23 11 30 18 70
|
||||
Card 146: 68 28 58 96 42 32 22 90 19 47 | 84 25 39 96 67 26 29 24 9 62 1 14 46 11 77 81 61 82 60 80 78 52 31 98 49
|
||||
Card 147: 81 85 76 67 4 63 25 97 57 27 | 2 26 43 9 56 59 29 10 13 45 35 60 86 65 15 46 19 5 79 8 44 1 6 20 21
|
||||
Card 148: 90 41 37 66 94 87 84 14 9 29 | 94 47 5 10 23 38 61 87 55 22 75 97 37 29 30 9 18 84 69 41 11 73 43 45 14
|
||||
Card 149: 84 30 17 21 47 26 81 68 57 40 | 86 78 70 5 54 40 34 38 47 72 62 56 53 7 10 37 73 92 46 61 41 74 68 23 63
|
||||
Card 150: 83 21 33 53 37 57 66 29 41 6 | 20 61 75 89 59 60 41 83 21 29 30 57 66 58 37 76 90 96 53 69 33 17 12 95 6
|
||||
Card 151: 12 5 52 36 3 29 69 6 82 27 | 82 12 27 44 50 15 76 28 29 52 57 36 73 3 34 5 94 37 6 92 84 9 10 98 69
|
||||
Card 152: 82 62 80 30 37 68 41 89 12 5 | 60 32 64 57 41 74 89 16 72 20 26 6 91 18 52 68 62 55 5 30 82 1 37 80 12
|
||||
Card 153: 97 28 55 92 70 83 58 44 67 40 | 24 58 55 88 92 40 6 83 12 70 10 22 44 76 82 97 4 98 65 28 5 32 7 67 74
|
||||
Card 154: 31 50 70 87 43 26 55 30 14 54 | 43 72 90 20 10 13 91 54 75 39 26 70 17 87 22 60 29 1 27 69 14 31 50 67 55
|
||||
Card 155: 21 4 25 52 3 16 98 43 72 81 | 87 4 21 43 90 67 39 36 13 64 6 25 29 16 83 84 5 98 9 81 78 1 74 12 96
|
||||
Card 156: 77 46 21 67 59 78 63 30 45 48 | 48 35 17 62 44 25 34 67 23 13 63 81 99 29 93 84 73 96 86 90 88 30 60 85 21
|
||||
Card 157: 43 32 99 39 58 3 38 81 79 41 | 79 41 34 8 99 80 70 43 51 38 29 68 32 83 58 2 6 36 63 95 81 67 3 28 10
|
||||
Card 158: 43 68 57 98 30 58 47 40 12 93 | 91 62 48 6 52 16 72 34 28 85 81 94 26 4 99 30 71 44 80 65 40 60 58 18 49
|
||||
Card 159: 62 30 18 57 61 68 65 98 10 56 | 98 32 29 1 15 77 55 10 13 30 80 93 38 86 70 99 97 19 85 33 17 21 48 47 89
|
||||
Card 160: 30 47 79 28 57 77 73 75 35 40 | 98 25 96 11 15 34 19 35 6 38 1 91 29 57 61 22 69 12 40 21 41 17 27 39 56
|
||||
Card 161: 62 58 10 14 73 95 77 97 47 70 | 15 46 1 36 3 66 27 77 49 45 94 65 23 61 76 8 91 42 82 13 85 67 92 68 53
|
||||
Card 162: 47 24 44 73 3 10 30 98 5 29 | 75 99 37 41 60 43 13 67 74 23 82 40 35 64 77 25 4 9 58 56 8 7 85 70 66
|
||||
Card 163: 10 17 99 41 6 14 81 23 5 84 | 95 11 99 62 53 23 8 73 48 42 96 47 39 94 56 30 58 63 22 66 33 26 35 5 43
|
||||
Card 164: 71 32 31 15 73 3 70 91 61 18 | 3 16 77 70 33 94 62 40 88 32 90 98 66 49 86 68 95 7 53 97 96 28 4 75 35
|
||||
Card 165: 61 74 1 76 17 22 19 83 5 96 | 83 5 47 29 52 40 94 32 70 95 67 84 56 31 18 62 42 9 53 36 57 48 64 15 85
|
||||
Card 166: 84 96 57 6 48 13 42 12 19 99 | 67 29 25 81 77 69 63 56 8 27 80 62 94 30 78 10 45 49 20 95 50 66 61 6 24
|
||||
Card 167: 21 41 29 39 24 98 68 40 7 78 | 44 19 53 13 17 4 2 64 87 60 1 51 10 35 94 52 25 75 92 95 80 67 82 42 86
|
||||
Card 168: 18 72 92 63 3 38 82 65 85 61 | 53 14 92 63 74 75 97 56 85 82 30 4 42 34 18 61 72 65 20 47 43 3 38 39 40
|
||||
Card 169: 98 91 13 27 52 51 36 82 80 78 | 78 42 51 62 36 38 4 95 82 17 91 27 12 98 76 13 84 52 80 32 39 50 48 19 2
|
||||
Card 170: 94 67 3 32 73 84 11 47 23 90 | 94 84 66 73 32 31 23 18 93 29 58 81 95 16 46 53 89 4 11 44 49 67 90 82 40
|
||||
Card 171: 2 55 5 19 59 73 29 65 12 23 | 33 75 5 53 90 95 68 73 29 71 11 45 72 54 59 12 55 85 56 19 17 24 8 92 2
|
||||
Card 172: 74 43 65 15 59 37 11 83 20 85 | 59 30 36 97 78 65 88 20 96 11 51 22 93 63 94 28 3 90 68 95 73 43 13 74 85
|
||||
Card 173: 53 46 64 33 65 55 8 81 1 36 | 12 22 78 35 57 96 36 3 27 29 52 80 2 79 8 76 93 54 1 24 48 32 94 14 64
|
||||
Card 174: 20 38 12 24 28 39 18 59 75 94 | 95 48 91 36 56 63 62 46 67 4 32 97 39 66 93 55 50 34 5 85 29 76 45 54 7
|
||||
Card 175: 26 96 12 74 65 57 51 18 83 75 | 26 89 74 83 65 12 58 88 92 22 8 39 18 51 34 96 75 44 94 35 30 90 69 57 23
|
||||
Card 176: 48 64 15 96 42 33 88 27 50 86 | 36 85 60 68 93 63 33 17 28 70 24 50 96 38 54 53 72 90 41 86 74 88 75 64 48
|
||||
Card 177: 66 27 35 76 89 90 31 26 20 95 | 51 94 62 77 31 5 16 20 30 86 75 42 23 11 69 24 87 76 27 60 80 46 43 57 90
|
||||
Card 178: 83 38 10 89 18 80 1 67 63 7 | 37 28 46 84 94 89 38 21 24 68 25 92 60 34 58 54 76 55 11 19 85 33 93 15 8
|
||||
Card 179: 59 82 88 8 21 16 55 2 56 45 | 2 26 73 81 90 5 13 55 21 82 69 8 22 99 36 68 53 88 86 56 16 7 45 87 28
|
||||
Card 180: 95 5 4 34 30 73 98 89 6 37 | 7 28 72 6 95 37 68 4 34 98 82 73 84 8 65 5 89 57 15 42 56 45 69 11 74
|
||||
Card 181: 85 69 79 50 37 34 11 84 5 89 | 4 35 99 48 21 97 93 25 8 37 47 79 34 16 76 26 55 67 50 75 63 15 58 84 5
|
||||
Card 182: 70 10 57 74 60 93 9 41 79 32 | 19 18 96 8 49 2 50 94 93 4 23 89 11 39 38 97 58 56 82 21 13 28 65 47 29
|
||||
Card 183: 53 70 11 25 1 37 32 4 78 45 | 23 54 83 35 11 41 1 47 18 60 36 71 10 64 95 49 69 32 45 46 61 9 4 52 25
|
||||
Card 184: 71 31 19 43 12 93 30 56 17 27 | 61 20 92 50 33 17 51 89 45 24 39 64 23 18 52 2 41 46 63 84 88 7 99 27 78
|
||||
Card 185: 44 55 78 43 18 33 69 81 82 9 | 39 57 42 79 76 67 58 1 26 63 54 82 70 22 66 55 15 38 74 96 46 53 51 28 99
|
||||
Card 186: 25 76 9 33 59 42 82 6 79 4 | 10 50 20 18 93 95 62 40 22 70 48 16 75 15 49 81 64 94 6 21 73 80 78 77 83
|
||||
Card 187: 43 33 83 89 36 31 86 22 13 14 | 3 78 63 34 8 38 23 16 81 80 54 1 95 92 60 24 82 49 44 68 62 46 66 97 28
|
||||
Card 188: 81 6 49 46 11 77 99 82 84 51 | 36 45 18 87 48 35 86 7 83 31 38 61 92 98 70 78 74 59 63 66 15 85 47 96 1
|
||||
Card 189: 50 43 3 38 20 80 40 70 82 74 | 29 55 1 2 45 97 59 49 60 79 88 90 94 57 12 24 47 61 5 52 95 75 63 48 32
|
||||
Card 190: 22 66 97 81 70 24 53 76 17 35 | 92 59 1 36 97 70 34 77 69 55 17 81 62 67 71 91 58 24 76 87 45 30 33 35 22
|
||||
Card 191: 20 65 9 10 98 71 60 83 51 34 | 68 51 10 26 20 4 56 24 34 9 65 83 60 55 5 27 8 43 71 98 14 21 32 48 64
|
||||
Card 192: 92 77 16 8 1 87 51 14 89 76 | 13 10 60 19 93 97 16 11 51 47 76 30 91 24 14 89 77 35 8 28 87 21 92 1 22
|
||||
Card 193: 53 24 36 45 60 18 35 25 12 28 | 98 29 92 35 52 99 12 45 74 18 28 30 70 68 55 24 25 77 81 36 72 20 53 50 60
|
||||
Card 194: 50 83 40 8 87 28 79 27 44 91 | 37 80 88 17 90 40 67 87 20 76 77 52 68 1 55 35 14 61 4 96 75 83 10 71 8
|
||||
Card 195: 6 41 29 40 96 49 9 55 51 18 | 69 30 77 83 47 52 59 55 70 10 92 19 85 11 86 42 53 38 35 90 51 46 80 91 84
|
||||
Card 196: 92 29 86 97 9 30 87 6 15 4 | 18 46 50 63 30 14 6 82 3 53 55 26 29 86 85 70 4 89 90 24 10 35 27 9 20
|
||||
Card 197: 80 1 81 94 98 75 58 9 19 10 | 26 37 57 58 22 1 19 94 10 87 70 5 95 40 53 81 89 93 8 80 86 9 36 75 98
|
||||
Card 198: 29 41 51 44 7 84 65 62 20 74 | 74 5 72 62 41 88 23 49 66 97 31 84 18 51 20 10 29 19 44 7 1 60 40 78 30
|
||||
Card 199: 20 2 3 95 63 60 10 81 87 90 | 60 54 3 61 38 77 42 32 62 82 90 35 9 81 2 20 87 63 8 65 95 19 30 10 85
|
||||
Card 200: 80 76 17 57 36 9 70 65 1 13 | 88 50 96 87 77 36 14 70 86 29 68 90 93 3 25 65 74 83 78 62 9 69 47 22 8
|
||||
Card 201: 19 43 79 93 31 72 66 7 18 55 | 72 20 71 43 57 19 53 83 47 35 37 67 13 31 74 81 76 18 44 55 93 97 26 84 11
|
||||
Card 202: 26 65 71 57 14 86 49 66 1 23 | 27 41 16 51 82 72 13 55 14 21 69 62 15 46 63 78 22 31 30 57 76 45 3 71 86
|
||||
Card 203: 53 43 69 4 76 74 73 11 34 88 | 46 68 63 19 55 64 88 51 33 15 17 57 53 42 76 66 80 34 11 69 73 96 59 74 16
|
||||
Card 204: 9 6 64 82 79 1 73 68 39 57 | 92 82 49 53 84 4 69 20 30 13 16 1 26 76 60 57 91 65 24 12 34 56 33 38 59
|
||||
Card 205: 45 6 76 94 78 35 95 20 85 90 | 89 94 28 15 48 87 56 32 40 88 21 33 51 53 54 67 64 9 17 78 6 57 12 98 95
|
||||
Card 206: 32 94 53 98 84 82 48 45 8 25 | 84 4 25 97 12 93 35 60 42 80 61 62 18 8 32 17 94 23 63 53 31 3 48 43 20
|
||||
Card 207: 40 18 52 70 55 29 49 43 15 20 | 38 39 78 70 35 81 34 29 51 55 17 43 52 64 16 21 69 27 47 88 2 99 18 54 3
|
||||
Card 208: 9 67 74 14 59 41 84 60 73 86 | 87 16 27 86 50 7 30 77 64 76 73 71 99 92 23 82 2 5 55 57 40 47 45 72 21
|
||||
Card 209: 45 50 11 39 28 93 77 92 41 18 | 32 6 56 34 15 87 48 64 41 30 3 46 42 21 44 72 59 29 25 77 83 66 5 12 11
|
||||
Card 210: 34 74 60 33 14 25 27 98 54 75 | 90 79 69 27 70 4 40 93 66 62 65 3 8 42 34 92 53 98 56 89 57 13 52 38 30
|
||||
Card 211: 20 21 98 93 33 65 13 48 81 53 | 19 82 78 95 77 54 89 61 58 74 39 43 1 64 73 11 72 7 32 9 17 46 8 84 86
|
||||
Card 212: 46 82 24 14 63 38 94 70 79 91 | 23 83 87 4 48 81 40 13 84 68 22 65 45 11 88 75 98 1 15 56 64 44 35 7 3
|
||||
Card 213: 79 84 12 86 58 10 11 24 32 26 | 52 94 65 29 89 7 76 80 31 21 78 37 66 69 13 41 93 73 96 16 92 44 62 3 95
|
||||
41
2023/day4/p1/main.rs
Normal file
41
2023/day4/p1/main.rs
Normal file
@ -0,0 +1,41 @@
|
||||
use std::fs;
|
||||
|
||||
|
||||
fn main() {
|
||||
let file_path = "./input.text";
|
||||
|
||||
let contents = fs::read_to_string(file_path)
|
||||
.unwrap();
|
||||
|
||||
let mut sum_of_points = 0;
|
||||
for line in contents.lines()
|
||||
{
|
||||
let line_halves: Vec<&str> = line.split(" | ").collect();
|
||||
|
||||
let first_half: Vec<&str> = line_halves[0].split(": ").collect();
|
||||
|
||||
let winning_numbers: Vec<&str> = first_half[1].split(" ").filter(|num| !num.is_empty()).collect();
|
||||
|
||||
let my_numbers = line_halves[1].split(" ").filter(|num| !num.is_empty());
|
||||
|
||||
let mut points = 0;
|
||||
for number in my_numbers
|
||||
{
|
||||
if winning_numbers.contains(&number)
|
||||
{
|
||||
if points == 0
|
||||
{
|
||||
points = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
points *= 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sum_of_points += points;
|
||||
}
|
||||
|
||||
println!("Sum of points on cards: {sum_of_points}");
|
||||
}
|
||||
6
2023/day4/p1/test.text
Normal file
6
2023/day4/p1/test.text
Normal file
@ -0,0 +1,6 @@
|
||||
Card 1: 41 48 83 86 17 | 83 86 6 31 17 9 48 53
|
||||
Card 2: 13 32 20 16 61 | 61 30 68 82 17 32 24 19
|
||||
Card 3: 1 21 53 59 44 | 69 82 63 72 16 21 14 1
|
||||
Card 4: 41 92 73 84 69 | 59 84 76 51 58 5 54 83
|
||||
Card 5: 87 83 26 28 32 | 88 30 70 12 93 22 82 36
|
||||
Card 6: 31 18 13 56 72 | 74 77 10 23 35 67 36 11
|
||||
213
2023/day4/p2/input.text
Normal file
213
2023/day4/p2/input.text
Normal file
@ -0,0 +1,213 @@
|
||||
Card 1: 69 61 27 58 89 52 81 94 40 51 | 43 40 52 90 37 97 89 80 69 42 51 70 94 58 10 73 21 29 61 63 57 79 81 27 35
|
||||
Card 2: 5 75 37 76 98 32 24 83 44 50 | 80 75 91 5 33 52 31 96 83 92 46 98 55 65 48 24 44 4 32 60 88 37 76 50 77
|
||||
Card 3: 37 39 43 53 47 20 50 56 78 65 | 80 56 32 78 72 97 40 77 17 50 87 99 36 93 63 19 39 59 44 52 23 75 9 51 43
|
||||
Card 4: 6 25 31 60 2 50 89 67 82 16 | 65 89 5 67 68 53 50 6 51 25 96 32 2 16 41 60 63 90 82 30 98 31 75 14 7
|
||||
Card 5: 43 39 98 45 33 87 36 23 61 66 | 93 61 4 21 47 32 94 99 45 23 87 64 92 43 33 5 83 16 98 44 39 77 66 18 36
|
||||
Card 6: 59 6 65 20 62 3 92 79 98 24 | 80 15 28 70 24 32 93 99 91 86 95 16 90 83 11 75 19 4 48 6 78 61 20 27 7
|
||||
Card 7: 49 54 25 44 79 68 13 60 1 43 | 16 18 4 82 99 23 80 46 79 55 14 1 32 13 54 84 37 44 20 68 25 60 27 49 43
|
||||
Card 8: 52 50 19 69 28 93 32 98 97 47 | 2 40 28 47 20 60 66 98 12 19 31 14 16 75 97 49 93 69 11 52 50 87 24 32 27
|
||||
Card 9: 47 44 94 43 75 49 77 24 93 45 | 94 47 30 43 24 77 44 31 66 75 45 54 92 49 84 53 20 11 17 16 86 93 50 85 76
|
||||
Card 10: 23 39 92 16 68 30 49 59 34 90 | 85 15 25 31 92 90 47 59 11 36 68 10 96 65 16 49 18 97 9 83 28 61 4 94 46
|
||||
Card 11: 21 37 14 89 46 31 64 90 43 45 | 63 29 14 23 7 28 13 86 83 16 19 24 78 54 47 51 58 77 71 40 56 62 20 89 39
|
||||
Card 12: 69 98 97 19 70 5 62 25 55 90 | 1 35 45 25 75 61 50 99 82 96 71 74 72 76 3 70 14 57 88 27 5 94 58 32 85
|
||||
Card 13: 24 51 65 64 29 37 86 60 41 94 | 40 13 88 85 46 59 90 55 8 72 56 93 6 71 52 87 31 91 20 5 83 36 86 43 96
|
||||
Card 14: 43 76 64 80 49 48 83 14 51 54 | 1 99 54 36 80 48 49 15 43 17 51 96 83 40 76 14 41 75 84 55 63 91 64 58 9
|
||||
Card 15: 9 33 75 53 48 76 25 83 28 24 | 1 10 69 28 76 87 71 52 26 44 66 92 75 55 7 40 93 20 12 91 30 33 46 39 31
|
||||
Card 16: 55 92 85 21 81 90 47 63 34 70 | 26 2 1 87 59 69 40 58 46 43 70 17 35 71 6 63 49 13 81 11 85 94 44 96 5
|
||||
Card 17: 21 42 95 24 35 53 39 14 18 4 | 76 23 5 79 22 20 36 69 38 77 40 37 32 89 49 15 59 44 51 25 74 34 54 16 28
|
||||
Card 18: 63 21 61 65 82 69 27 74 98 58 | 51 58 86 21 90 54 45 41 71 74 83 6 42 1 35 78 31 9 55 46 11 15 63 84 82
|
||||
Card 19: 44 41 24 51 74 20 97 31 83 39 | 17 24 2 54 73 28 13 55 49 79 42 62 58 8 95 23 86 70 76 41 26 4 80 25 11
|
||||
Card 20: 83 61 55 56 96 16 95 49 65 90 | 67 75 63 37 87 54 39 19 99 81 47 49 24 84 41 13 78 40 38 64 26 34 15 72 48
|
||||
Card 21: 23 89 57 54 90 82 2 8 65 80 | 78 14 21 39 45 42 1 80 99 20 52 11 31 50 68 82 59 4 96 55 6 46 88 38 34
|
||||
Card 22: 85 6 4 41 5 35 31 19 64 17 | 83 56 96 41 16 39 70 81 67 51 74 99 1 18 43 48 5 85 29 88 30 52 69 11 61
|
||||
Card 23: 72 88 38 82 33 10 75 44 70 53 | 7 71 56 96 19 89 30 67 21 22 48 45 80 86 39 61 4 44 74 28 23 40 46 72 78
|
||||
Card 24: 75 67 13 39 63 58 43 35 49 99 | 28 46 17 95 55 2 83 18 42 91 20 78 97 51 60 81 47 69 64 57 37 77 12 61 67
|
||||
Card 25: 87 44 62 66 82 20 7 21 51 32 | 54 97 46 1 95 14 26 47 94 25 49 30 84 12 5 73 48 89 45 53 28 74 93 88 13
|
||||
Card 26: 65 6 10 66 15 26 47 62 63 68 | 5 60 71 41 68 66 53 26 6 56 38 47 90 62 63 33 81 10 15 3 16 96 83 65 20
|
||||
Card 27: 7 95 47 35 58 87 21 68 80 37 | 94 24 39 74 43 78 69 54 10 32 84 99 41 75 6 86 11 66 56 62 16 44 5 59 65
|
||||
Card 28: 95 19 21 14 59 74 27 68 32 99 | 83 35 5 41 92 59 26 57 18 55 52 32 6 23 36 54 56 50 15 48 27 89 45 53 12
|
||||
Card 29: 1 8 93 94 72 89 13 37 58 49 | 35 62 88 26 94 50 31 87 72 78 85 1 44 49 22 5 20 91 98 13 77 93 60 48 52
|
||||
Card 30: 47 94 67 27 56 25 38 52 28 32 | 22 61 56 82 58 27 32 18 33 94 79 23 62 60 76 98 67 49 77 64 11 47 40 16 42
|
||||
Card 31: 61 68 80 67 41 6 52 33 22 91 | 54 10 72 91 31 33 95 43 39 68 81 22 63 67 32 61 27 73 66 75 36 79 6 59 80
|
||||
Card 32: 62 5 57 36 87 33 53 86 82 8 | 76 32 30 5 53 57 86 56 97 77 18 33 8 82 15 71 83 17 48 90 9 43 54 88 4
|
||||
Card 33: 79 25 27 11 17 23 76 38 15 26 | 83 80 37 36 77 24 20 55 16 59 81 7 19 1 18 91 42 29 22 2 41 27 6 50 92
|
||||
Card 34: 3 8 29 57 87 88 97 12 41 95 | 29 94 44 20 34 28 76 12 95 74 22 85 31 64 91 50 1 97 35 49 98 41 92 67 25
|
||||
Card 35: 43 79 50 20 6 76 25 14 66 89 | 93 72 50 67 38 89 13 87 46 54 36 52 20 57 56 17 3 22 43 63 14 84 15 29 16
|
||||
Card 36: 68 15 59 47 30 98 89 27 5 25 | 11 8 32 72 18 74 73 48 39 53 51 88 22 90 55 40 14 44 66 12 94 71 9 13 31
|
||||
Card 37: 11 48 72 90 12 86 34 32 51 7 | 52 80 36 46 74 64 44 27 11 47 61 84 55 28 77 26 58 54 3 5 17 60 89 16 72
|
||||
Card 38: 13 97 42 79 96 69 8 57 90 48 | 84 67 52 8 20 54 21 45 69 23 28 85 92 95 40 59 87 2 50 83 14 6 16 70 39
|
||||
Card 39: 87 67 8 38 15 20 96 30 45 97 | 36 28 43 35 9 27 14 70 29 1 40 56 60 81 63 48 53 44 31 75 49 85 64 39 69
|
||||
Card 40: 63 35 33 6 58 97 91 34 67 18 | 68 61 98 66 84 20 37 41 17 50 81 14 60 78 36 9 65 21 83 2 71 79 85 7 47
|
||||
Card 41: 75 97 62 6 92 69 53 20 45 5 | 5 53 56 69 84 97 75 62 39 18 22 64 6 92 70 41 45 20 17 63 7 9 54 29 21
|
||||
Card 42: 64 21 72 62 90 50 84 28 71 37 | 71 38 64 50 42 4 65 85 91 21 55 58 10 92 90 7 17 60 84 70 37 72 28 98 62
|
||||
Card 43: 58 28 84 32 92 18 48 73 86 5 | 43 32 33 35 84 50 64 6 21 52 92 58 29 95 11 18 28 79 48 77 5 86 60 73 10
|
||||
Card 44: 30 69 44 40 5 58 22 63 65 90 | 65 68 69 43 58 5 72 90 22 63 52 78 66 15 60 88 30 12 74 44 67 40 41 38 29
|
||||
Card 45: 69 53 87 59 27 10 16 90 52 35 | 83 4 87 89 11 30 45 70 52 13 35 92 90 79 6 68 71 86 16 97 26 72 39 96 53
|
||||
Card 46: 78 8 1 64 87 6 3 7 75 82 | 48 84 56 8 89 73 31 68 64 46 40 6 41 14 78 97 91 27 95 28 47 30 37 58 75
|
||||
Card 47: 58 24 13 97 18 50 89 9 14 81 | 97 24 54 16 14 32 78 62 50 5 18 42 20 99 15 58 13 89 96 72 81 75 29 9 86
|
||||
Card 48: 87 83 32 53 5 72 86 84 65 9 | 30 89 54 53 58 13 85 81 83 39 71 5 91 65 68 82 94 42 87 24 86 29 47 32 28
|
||||
Card 49: 38 4 66 35 19 56 78 90 81 65 | 60 16 82 68 7 49 15 32 3 22 48 11 38 53 83 45 54 23 5 81 78 34 63 27 65
|
||||
Card 50: 9 48 47 87 99 6 65 2 44 75 | 75 79 55 82 44 27 42 48 51 65 16 68 3 52 30 62 84 66 87 69 8 10 86 35 72
|
||||
Card 51: 28 24 85 63 96 30 88 29 5 50 | 71 61 30 90 65 96 41 50 82 68 39 10 81 29 48 26 80 97 28 24 27 88 38 5 63
|
||||
Card 52: 86 80 90 33 19 78 13 69 89 27 | 62 54 85 88 97 64 37 31 29 6 94 69 67 51 57 58 89 13 76 55 22 96 63 66 38
|
||||
Card 53: 75 5 78 44 10 77 3 89 39 4 | 41 61 76 56 75 85 7 22 19 51 5 87 53 10 79 24 39 94 26 57 1 35 83 32 34
|
||||
Card 54: 70 80 59 16 6 99 83 37 26 8 | 62 58 16 74 35 53 94 1 80 89 61 11 86 36 83 14 8 39 43 6 92 99 18 64 79
|
||||
Card 55: 41 39 43 58 60 65 74 76 11 46 | 58 42 60 59 13 16 83 55 37 25 32 96 22 79 69 2 89 3 21 71 35 67 95 19 45
|
||||
Card 56: 10 18 89 9 63 51 81 4 49 75 | 3 32 45 68 87 65 71 55 79 89 37 64 21 53 30 62 26 6 90 51 70 74 22 10 54
|
||||
Card 57: 27 58 75 7 80 71 45 46 26 55 | 67 76 91 16 69 82 24 48 46 87 28 20 75 36 86 8 51 42 9 84 3 43 27 34 70
|
||||
Card 58: 64 55 76 63 58 66 34 27 46 62 | 79 22 69 33 1 81 4 76 36 40 88 39 2 47 89 48 29 77 93 67 41 10 95 19 63
|
||||
Card 59: 62 1 42 32 48 12 94 36 33 86 | 71 41 46 96 12 55 10 38 15 43 1 60 67 2 30 89 37 98 19 18 69 25 50 20 77
|
||||
Card 60: 11 14 6 57 55 62 88 19 24 26 | 45 58 88 83 51 36 46 32 85 17 61 33 31 2 91 9 78 39 81 20 87 86 64 66 49
|
||||
Card 61: 9 28 27 33 53 71 38 63 55 60 | 26 77 83 57 75 50 3 68 31 52 24 94 40 18 8 80 70 5 25 72 47 44 45 89 19
|
||||
Card 62: 47 64 33 74 26 82 21 30 69 39 | 29 68 65 37 60 58 17 48 75 91 2 9 16 31 46 49 97 57 94 40 34 13 11 43 39
|
||||
Card 63: 1 16 10 67 73 48 66 78 55 32 | 31 54 78 79 42 34 81 55 37 63 29 73 90 48 11 77 67 14 46 19 16 66 89 53 32
|
||||
Card 64: 59 33 71 69 84 2 53 95 28 52 | 85 82 66 79 45 71 33 10 30 84 52 19 94 54 28 41 61 59 6 69 53 97 38 2 49
|
||||
Card 65: 17 46 40 23 93 76 45 2 43 32 | 17 32 23 2 52 7 15 77 20 39 46 64 99 59 98 89 43 40 93 4 45 11 72 76 13
|
||||
Card 66: 58 9 28 19 90 80 77 11 81 20 | 44 51 39 20 63 6 11 88 61 27 90 53 62 70 34 42 28 24 78 16 81 65 9 31 15
|
||||
Card 67: 88 42 78 9 26 43 54 95 8 40 | 58 54 10 43 60 36 40 42 95 63 4 88 82 50 38 26 8 99 31 74 13 46 91 61 44
|
||||
Card 68: 32 95 6 83 30 14 38 15 87 70 | 79 15 64 45 99 70 17 38 87 93 83 53 14 77 85 32 19 95 29 6 7 61 90 30 67
|
||||
Card 69: 76 15 92 22 48 46 42 39 84 32 | 51 26 1 9 2 73 17 94 6 62 92 77 32 90 43 48 81 22 88 58 78 46 79 98 15
|
||||
Card 70: 62 90 81 15 8 3 72 93 65 32 | 57 62 3 80 26 67 10 72 54 36 98 29 17 90 93 32 49 48 76 8 12 31 65 81 15
|
||||
Card 71: 74 46 75 14 56 20 83 28 35 61 | 57 61 75 59 54 55 56 32 71 4 18 60 72 94 39 86 30 50 48 41 7 14 77 73 85
|
||||
Card 72: 47 63 42 84 87 78 21 56 97 26 | 87 40 78 1 48 7 26 63 42 37 30 97 65 84 14 93 85 39 47 11 50 71 21 28 56
|
||||
Card 73: 20 56 88 38 50 74 76 69 63 17 | 73 47 87 89 98 18 33 14 3 78 72 39 77 97 74 80 81 51 88 59 46 2 70 69 20
|
||||
Card 74: 44 74 4 59 77 99 66 81 8 6 | 75 88 25 73 74 86 16 8 99 17 50 22 83 35 67 3 77 5 46 34 68 80 6 23 54
|
||||
Card 75: 58 25 36 26 80 12 88 51 98 71 | 71 66 77 83 51 61 23 98 33 53 18 75 43 20 26 92 70 90 25 94 86 12 34 36 22
|
||||
Card 76: 14 79 44 82 59 75 43 88 12 52 | 11 30 26 74 82 91 72 79 35 69 52 24 13 23 3 22 78 38 43 10 14 53 76 66 90
|
||||
Card 77: 65 79 38 39 3 18 89 51 9 41 | 5 87 13 45 86 85 72 7 92 22 36 69 67 82 40 73 83 15 34 59 68 57 31 84 71
|
||||
Card 78: 67 89 71 15 39 66 29 97 11 38 | 4 95 21 74 29 43 51 65 31 91 98 39 71 13 93 88 64 47 40 76 58 6 92 80 81
|
||||
Card 79: 8 60 27 44 15 52 91 99 35 47 | 97 1 35 81 53 79 16 23 52 77 11 56 2 85 21 96 46 83 5 37 49 93 13 76 69
|
||||
Card 80: 1 37 16 40 6 48 66 26 90 12 | 87 23 24 5 67 80 20 53 95 66 93 85 7 34 32 52 92 61 9 27 41 35 36 57 38
|
||||
Card 81: 72 39 83 5 69 43 73 92 88 78 | 77 74 68 78 9 75 50 65 8 14 35 96 64 80 58 6 4 46 57 61 66 85 48 40 34
|
||||
Card 82: 38 2 71 61 46 97 8 84 43 24 | 91 50 76 58 17 11 66 60 65 16 44 70 96 20 37 94 30 99 6 69 32 29 81 49 48
|
||||
Card 83: 50 89 48 66 96 97 28 5 12 76 | 89 93 79 68 16 48 44 42 28 41 83 50 97 96 76 82 15 57 10 66 5 12 74 38 4
|
||||
Card 84: 9 71 98 81 59 30 99 45 80 48 | 6 17 31 35 88 57 10 81 77 70 58 21 34 63 51 84 74 37 64 80 29 16 3 11 76
|
||||
Card 85: 36 86 69 83 56 51 19 67 65 10 | 35 3 55 38 90 59 82 2 32 10 17 36 52 69 83 65 13 92 97 99 48 30 87 68 70
|
||||
Card 86: 6 96 82 83 89 31 91 20 28 5 | 20 11 84 45 50 81 23 56 24 28 1 53 2 57 54 64 3 94 96 43 6 26 91 77 66
|
||||
Card 87: 84 22 38 2 94 23 76 64 29 42 | 13 99 48 23 62 82 38 91 31 88 14 43 66 94 36 64 49 85 26 97 71 39 22 68 60
|
||||
Card 88: 69 25 81 63 86 79 1 64 76 38 | 85 81 63 6 69 50 16 65 54 25 27 38 84 76 7 64 79 12 86 88 70 94 39 1 20
|
||||
Card 89: 7 43 74 93 60 24 33 53 97 35 | 62 51 93 86 81 71 63 2 13 99 66 83 97 37 10 77 55 27 73 92 67 19 33 88 96
|
||||
Card 90: 2 78 5 23 69 72 93 86 55 24 | 92 38 66 85 34 52 83 24 31 6 25 13 33 30 17 7 81 15 16 9 21 53 94 2 77
|
||||
Card 91: 34 21 58 13 99 32 61 65 49 30 | 50 73 18 84 99 53 21 61 94 22 26 93 30 68 34 65 58 72 77 32 49 11 13 39 9
|
||||
Card 92: 15 67 55 79 9 88 33 7 94 49 | 20 94 87 58 9 35 93 7 67 21 15 57 30 56 88 85 5 13 60 83 2 55 38 28 6
|
||||
Card 93: 16 11 80 5 33 23 96 21 56 94 | 1 37 85 94 72 42 66 16 10 70 86 77 33 21 55 11 6 45 96 29 90 14 80 48 64
|
||||
Card 94: 2 57 51 10 3 70 63 60 1 40 | 67 80 96 98 52 74 97 33 92 88 19 62 43 73 55 3 1 20 95 99 12 90 17 24 56
|
||||
Card 95: 80 18 73 50 2 3 83 65 33 26 | 7 78 28 4 2 19 14 29 61 81 17 38 57 89 11 20 5 12 13 10 24 96 75 25 55
|
||||
Card 96: 98 53 54 50 20 34 28 96 59 88 | 52 41 53 29 40 15 88 93 30 76 97 81 73 17 12 70 6 63 27 32 64 48 69 96 44
|
||||
Card 97: 66 82 79 74 75 71 29 32 96 50 | 62 46 76 30 21 50 98 17 32 75 87 96 41 42 79 73 45 92 51 91 78 35 27 72 74
|
||||
Card 98: 93 39 91 70 97 33 57 69 53 73 | 38 71 33 25 52 26 75 94 93 42 17 82 7 27 47 89 18 11 20 91 40 31 55 19 4
|
||||
Card 99: 93 31 61 29 77 60 66 92 3 10 | 55 63 56 4 61 33 60 85 45 48 78 27 25 36 42 93 20 67 49 21 7 83 65 13 71
|
||||
Card 100: 21 86 19 62 53 34 88 42 71 47 | 74 7 79 85 22 60 76 10 40 62 50 92 20 24 12 42 15 31 56 90 44 72 34 11 95
|
||||
Card 101: 8 68 64 72 98 60 56 69 57 25 | 24 5 95 77 89 58 39 63 80 48 53 66 38 61 31 3 43 1 16 71 52 82 19 14 51
|
||||
Card 102: 47 39 45 40 54 93 87 26 33 67 | 95 80 98 3 24 53 96 9 90 13 35 21 86 88 63 55 1 42 25 56 32 60 34 40 77
|
||||
Card 103: 64 18 52 28 82 54 31 49 66 44 | 4 78 40 73 32 99 33 6 29 46 11 25 47 36 14 97 79 61 63 50 55 26 30 58 77
|
||||
Card 104: 95 84 89 87 57 53 12 43 58 1 | 59 45 57 58 39 61 52 81 43 40 23 86 1 97 95 55 89 84 87 6 17 85 53 12 28
|
||||
Card 105: 98 81 56 52 37 26 46 39 88 36 | 4 34 88 32 5 73 98 26 39 77 93 42 62 82 41 81 56 1 12 33 46 36 14 52 37
|
||||
Card 106: 97 98 42 95 14 87 41 46 44 27 | 5 82 46 66 87 41 51 55 13 27 7 44 31 97 77 10 14 90 98 94 95 12 79 42 35
|
||||
Card 107: 15 30 60 32 25 73 77 63 85 81 | 16 86 56 41 20 51 25 52 73 40 74 32 15 61 99 34 60 85 77 30 5 27 63 35 81
|
||||
Card 108: 65 59 24 72 54 66 14 81 67 31 | 94 92 83 67 50 19 61 6 42 55 60 97 22 18 24 40 86 43 72 56 5 75 63 45 90
|
||||
Card 109: 90 87 3 17 80 96 36 93 34 79 | 51 11 29 96 13 66 70 99 72 67 64 42 37 30 55 98 35 12 15 84 5 10 57 19 49
|
||||
Card 110: 57 82 85 42 23 76 70 64 88 21 | 65 32 76 81 7 43 23 52 55 14 70 58 27 82 48 64 85 47 57 16 46 97 68 21 45
|
||||
Card 111: 50 62 66 33 93 43 56 70 77 35 | 94 79 19 16 35 41 78 32 91 4 14 3 13 48 63 36 75 98 64 69 27 96 77 51 74
|
||||
Card 112: 6 36 83 73 59 48 65 12 29 92 | 12 36 82 52 8 35 88 69 9 28 89 39 87 20 22 67 27 63 75 73 70 58 31 78 79
|
||||
Card 113: 25 10 29 67 87 32 54 92 62 43 | 65 19 67 75 79 29 8 73 62 97 82 87 25 18 32 93 49 5 66 27 68 42 43 11 46
|
||||
Card 114: 29 44 96 86 64 37 4 71 94 98 | 5 27 55 76 33 59 68 77 3 96 15 1 46 20 35 61 53 83 78 69 99 97 34 30 25
|
||||
Card 115: 32 90 91 88 39 66 37 35 12 21 | 85 82 71 37 87 22 72 17 35 9 58 95 64 12 33 90 68 66 15 43 4 7 91 8 84
|
||||
Card 116: 75 50 66 77 51 36 98 23 97 28 | 4 66 44 20 35 76 51 83 58 89 91 87 75 27 10 47 1 60 97 90 77 45 63 59 36
|
||||
Card 117: 85 44 56 82 39 64 30 88 79 20 | 71 88 53 27 36 85 13 11 38 91 77 19 3 99 23 73 39 44 24 45 32 15 58 79 56
|
||||
Card 118: 80 41 82 32 1 52 91 40 66 11 | 72 3 4 29 77 87 36 40 16 46 66 30 92 76 98 49 85 7 32 28 60 86 52 95 83
|
||||
Card 119: 50 66 77 26 2 49 9 25 58 81 | 80 49 50 55 16 56 20 42 31 99 69 26 28 85 66 65 70 90 84 53 40 19 60 12 38
|
||||
Card 120: 48 9 95 85 16 70 81 61 57 92 | 2 58 66 10 34 54 7 94 16 14 25 74 92 49 88 13 57 26 99 97 70 75 65 19 17
|
||||
Card 121: 50 76 20 25 53 17 2 78 85 86 | 14 40 78 89 93 48 1 28 11 4 54 71 5 69 85 61 38 94 66 64 98 95 30 67 23
|
||||
Card 122: 62 92 40 16 25 82 64 87 52 53 | 5 19 25 48 38 42 1 99 51 79 2 78 75 57 81 56 70 47 59 91 90 6 9 24 15
|
||||
Card 123: 50 91 29 69 41 73 44 51 13 26 | 66 55 22 6 17 71 1 3 67 24 88 79 65 64 60 34 7 90 78 72 28 83 82 74 10
|
||||
Card 124: 61 77 51 39 73 4 6 25 53 91 | 54 88 26 11 3 79 10 86 23 49 66 21 47 85 5 2 98 7 1 60 55 13 94 34 62
|
||||
Card 125: 31 67 93 63 21 28 12 85 39 57 | 69 46 22 59 55 75 11 97 70 1 94 14 81 96 79 44 18 36 85 34 56 48 30 72 15
|
||||
Card 126: 31 89 5 98 63 36 40 48 91 12 | 91 42 6 47 51 94 48 83 5 77 98 8 11 50 29 9 36 54 89 40 12 63 31 34 73
|
||||
Card 127: 41 88 97 87 13 80 74 49 24 6 | 43 66 62 47 36 87 6 88 24 49 96 56 25 79 8 76 23 97 41 42 80 89 13 73 74
|
||||
Card 128: 7 6 3 99 56 40 80 27 23 43 | 34 64 97 67 3 78 69 43 57 98 96 4 6 94 62 48 23 68 8 1 58 73 75 65 16
|
||||
Card 129: 46 80 39 32 35 41 61 93 57 47 | 40 63 93 89 61 4 45 46 25 96 80 39 35 14 62 95 49 32 47 2 41 99 57 82 44
|
||||
Card 130: 90 10 79 84 88 76 59 18 62 11 | 79 11 53 97 92 5 88 52 23 60 62 64 86 84 14 20 98 91 10 28 24 29 87 65 3
|
||||
Card 131: 95 50 11 76 61 4 2 8 42 47 | 40 15 46 61 8 2 29 97 65 50 19 83 76 95 59 82 48 57 43 72 42 25 31 47 53
|
||||
Card 132: 49 86 99 81 13 98 69 32 89 18 | 89 84 65 58 32 15 96 49 1 18 22 13 98 99 6 81 46 50 88 78 3 11 69 74 86
|
||||
Card 133: 18 56 75 7 48 40 38 22 10 90 | 10 42 61 18 91 38 12 67 72 54 51 22 86 77 81 87 75 34 89 97 35 6 96 7 62
|
||||
Card 134: 67 66 99 61 98 32 6 82 86 9 | 12 8 33 87 82 66 98 78 68 24 59 80 6 44 32 49 9 2 97 65 86 71 99 61 67
|
||||
Card 135: 24 59 92 68 44 20 30 8 40 77 | 28 72 51 38 58 40 30 24 21 77 92 82 59 18 50 7 19 44 20 68 91 8 32 88 94
|
||||
Card 136: 27 10 70 96 29 69 37 63 86 65 | 28 27 8 34 29 82 78 56 22 30 3 19 63 88 67 74 75 4 91 41 35 65 7 14 66
|
||||
Card 137: 74 70 86 34 89 37 73 23 29 85 | 16 65 58 88 8 5 11 26 39 91 51 31 19 78 92 87 36 34 80 94 42 81 38 40 93
|
||||
Card 138: 71 35 5 13 69 8 88 11 76 31 | 69 42 5 59 76 54 37 11 39 9 12 73 66 13 71 89 56 26 28 77 2 31 1 4 57
|
||||
Card 139: 10 50 78 91 55 61 81 19 44 59 | 97 98 39 52 56 28 94 24 3 54 45 82 14 17 5 16 27 99 37 38 26 31 53 9 35
|
||||
Card 140: 17 93 15 73 45 20 43 50 2 52 | 64 21 15 57 77 90 2 61 22 8 91 39 93 82 62 5 47 30 41 80 58 1 17 25 48
|
||||
Card 141: 52 66 4 8 87 11 14 76 23 24 | 3 55 29 16 26 61 12 43 89 15 56 24 5 36 85 62 90 75 65 71 53 45 38 50 54
|
||||
Card 142: 57 35 91 73 66 67 64 63 92 18 | 96 58 44 37 19 41 72 54 52 31 88 20 45 68 42 21 2 59 62 53 70 63 77 57 69
|
||||
Card 143: 88 70 69 13 18 97 64 89 40 29 | 74 98 30 5 85 12 38 62 66 33 36 17 71 9 97 22 47 79 39 60 89 13 83 77 8
|
||||
Card 144: 14 35 52 8 75 43 62 33 36 70 | 13 95 71 64 6 48 74 84 61 24 89 77 17 58 87 75 76 43 28 54 3 83 99 67 12
|
||||
Card 145: 53 88 65 42 72 92 43 14 3 90 | 21 19 33 59 84 61 96 41 20 31 88 71 38 72 79 48 58 55 62 36 23 11 30 18 70
|
||||
Card 146: 68 28 58 96 42 32 22 90 19 47 | 84 25 39 96 67 26 29 24 9 62 1 14 46 11 77 81 61 82 60 80 78 52 31 98 49
|
||||
Card 147: 81 85 76 67 4 63 25 97 57 27 | 2 26 43 9 56 59 29 10 13 45 35 60 86 65 15 46 19 5 79 8 44 1 6 20 21
|
||||
Card 148: 90 41 37 66 94 87 84 14 9 29 | 94 47 5 10 23 38 61 87 55 22 75 97 37 29 30 9 18 84 69 41 11 73 43 45 14
|
||||
Card 149: 84 30 17 21 47 26 81 68 57 40 | 86 78 70 5 54 40 34 38 47 72 62 56 53 7 10 37 73 92 46 61 41 74 68 23 63
|
||||
Card 150: 83 21 33 53 37 57 66 29 41 6 | 20 61 75 89 59 60 41 83 21 29 30 57 66 58 37 76 90 96 53 69 33 17 12 95 6
|
||||
Card 151: 12 5 52 36 3 29 69 6 82 27 | 82 12 27 44 50 15 76 28 29 52 57 36 73 3 34 5 94 37 6 92 84 9 10 98 69
|
||||
Card 152: 82 62 80 30 37 68 41 89 12 5 | 60 32 64 57 41 74 89 16 72 20 26 6 91 18 52 68 62 55 5 30 82 1 37 80 12
|
||||
Card 153: 97 28 55 92 70 83 58 44 67 40 | 24 58 55 88 92 40 6 83 12 70 10 22 44 76 82 97 4 98 65 28 5 32 7 67 74
|
||||
Card 154: 31 50 70 87 43 26 55 30 14 54 | 43 72 90 20 10 13 91 54 75 39 26 70 17 87 22 60 29 1 27 69 14 31 50 67 55
|
||||
Card 155: 21 4 25 52 3 16 98 43 72 81 | 87 4 21 43 90 67 39 36 13 64 6 25 29 16 83 84 5 98 9 81 78 1 74 12 96
|
||||
Card 156: 77 46 21 67 59 78 63 30 45 48 | 48 35 17 62 44 25 34 67 23 13 63 81 99 29 93 84 73 96 86 90 88 30 60 85 21
|
||||
Card 157: 43 32 99 39 58 3 38 81 79 41 | 79 41 34 8 99 80 70 43 51 38 29 68 32 83 58 2 6 36 63 95 81 67 3 28 10
|
||||
Card 158: 43 68 57 98 30 58 47 40 12 93 | 91 62 48 6 52 16 72 34 28 85 81 94 26 4 99 30 71 44 80 65 40 60 58 18 49
|
||||
Card 159: 62 30 18 57 61 68 65 98 10 56 | 98 32 29 1 15 77 55 10 13 30 80 93 38 86 70 99 97 19 85 33 17 21 48 47 89
|
||||
Card 160: 30 47 79 28 57 77 73 75 35 40 | 98 25 96 11 15 34 19 35 6 38 1 91 29 57 61 22 69 12 40 21 41 17 27 39 56
|
||||
Card 161: 62 58 10 14 73 95 77 97 47 70 | 15 46 1 36 3 66 27 77 49 45 94 65 23 61 76 8 91 42 82 13 85 67 92 68 53
|
||||
Card 162: 47 24 44 73 3 10 30 98 5 29 | 75 99 37 41 60 43 13 67 74 23 82 40 35 64 77 25 4 9 58 56 8 7 85 70 66
|
||||
Card 163: 10 17 99 41 6 14 81 23 5 84 | 95 11 99 62 53 23 8 73 48 42 96 47 39 94 56 30 58 63 22 66 33 26 35 5 43
|
||||
Card 164: 71 32 31 15 73 3 70 91 61 18 | 3 16 77 70 33 94 62 40 88 32 90 98 66 49 86 68 95 7 53 97 96 28 4 75 35
|
||||
Card 165: 61 74 1 76 17 22 19 83 5 96 | 83 5 47 29 52 40 94 32 70 95 67 84 56 31 18 62 42 9 53 36 57 48 64 15 85
|
||||
Card 166: 84 96 57 6 48 13 42 12 19 99 | 67 29 25 81 77 69 63 56 8 27 80 62 94 30 78 10 45 49 20 95 50 66 61 6 24
|
||||
Card 167: 21 41 29 39 24 98 68 40 7 78 | 44 19 53 13 17 4 2 64 87 60 1 51 10 35 94 52 25 75 92 95 80 67 82 42 86
|
||||
Card 168: 18 72 92 63 3 38 82 65 85 61 | 53 14 92 63 74 75 97 56 85 82 30 4 42 34 18 61 72 65 20 47 43 3 38 39 40
|
||||
Card 169: 98 91 13 27 52 51 36 82 80 78 | 78 42 51 62 36 38 4 95 82 17 91 27 12 98 76 13 84 52 80 32 39 50 48 19 2
|
||||
Card 170: 94 67 3 32 73 84 11 47 23 90 | 94 84 66 73 32 31 23 18 93 29 58 81 95 16 46 53 89 4 11 44 49 67 90 82 40
|
||||
Card 171: 2 55 5 19 59 73 29 65 12 23 | 33 75 5 53 90 95 68 73 29 71 11 45 72 54 59 12 55 85 56 19 17 24 8 92 2
|
||||
Card 172: 74 43 65 15 59 37 11 83 20 85 | 59 30 36 97 78 65 88 20 96 11 51 22 93 63 94 28 3 90 68 95 73 43 13 74 85
|
||||
Card 173: 53 46 64 33 65 55 8 81 1 36 | 12 22 78 35 57 96 36 3 27 29 52 80 2 79 8 76 93 54 1 24 48 32 94 14 64
|
||||
Card 174: 20 38 12 24 28 39 18 59 75 94 | 95 48 91 36 56 63 62 46 67 4 32 97 39 66 93 55 50 34 5 85 29 76 45 54 7
|
||||
Card 175: 26 96 12 74 65 57 51 18 83 75 | 26 89 74 83 65 12 58 88 92 22 8 39 18 51 34 96 75 44 94 35 30 90 69 57 23
|
||||
Card 176: 48 64 15 96 42 33 88 27 50 86 | 36 85 60 68 93 63 33 17 28 70 24 50 96 38 54 53 72 90 41 86 74 88 75 64 48
|
||||
Card 177: 66 27 35 76 89 90 31 26 20 95 | 51 94 62 77 31 5 16 20 30 86 75 42 23 11 69 24 87 76 27 60 80 46 43 57 90
|
||||
Card 178: 83 38 10 89 18 80 1 67 63 7 | 37 28 46 84 94 89 38 21 24 68 25 92 60 34 58 54 76 55 11 19 85 33 93 15 8
|
||||
Card 179: 59 82 88 8 21 16 55 2 56 45 | 2 26 73 81 90 5 13 55 21 82 69 8 22 99 36 68 53 88 86 56 16 7 45 87 28
|
||||
Card 180: 95 5 4 34 30 73 98 89 6 37 | 7 28 72 6 95 37 68 4 34 98 82 73 84 8 65 5 89 57 15 42 56 45 69 11 74
|
||||
Card 181: 85 69 79 50 37 34 11 84 5 89 | 4 35 99 48 21 97 93 25 8 37 47 79 34 16 76 26 55 67 50 75 63 15 58 84 5
|
||||
Card 182: 70 10 57 74 60 93 9 41 79 32 | 19 18 96 8 49 2 50 94 93 4 23 89 11 39 38 97 58 56 82 21 13 28 65 47 29
|
||||
Card 183: 53 70 11 25 1 37 32 4 78 45 | 23 54 83 35 11 41 1 47 18 60 36 71 10 64 95 49 69 32 45 46 61 9 4 52 25
|
||||
Card 184: 71 31 19 43 12 93 30 56 17 27 | 61 20 92 50 33 17 51 89 45 24 39 64 23 18 52 2 41 46 63 84 88 7 99 27 78
|
||||
Card 185: 44 55 78 43 18 33 69 81 82 9 | 39 57 42 79 76 67 58 1 26 63 54 82 70 22 66 55 15 38 74 96 46 53 51 28 99
|
||||
Card 186: 25 76 9 33 59 42 82 6 79 4 | 10 50 20 18 93 95 62 40 22 70 48 16 75 15 49 81 64 94 6 21 73 80 78 77 83
|
||||
Card 187: 43 33 83 89 36 31 86 22 13 14 | 3 78 63 34 8 38 23 16 81 80 54 1 95 92 60 24 82 49 44 68 62 46 66 97 28
|
||||
Card 188: 81 6 49 46 11 77 99 82 84 51 | 36 45 18 87 48 35 86 7 83 31 38 61 92 98 70 78 74 59 63 66 15 85 47 96 1
|
||||
Card 189: 50 43 3 38 20 80 40 70 82 74 | 29 55 1 2 45 97 59 49 60 79 88 90 94 57 12 24 47 61 5 52 95 75 63 48 32
|
||||
Card 190: 22 66 97 81 70 24 53 76 17 35 | 92 59 1 36 97 70 34 77 69 55 17 81 62 67 71 91 58 24 76 87 45 30 33 35 22
|
||||
Card 191: 20 65 9 10 98 71 60 83 51 34 | 68 51 10 26 20 4 56 24 34 9 65 83 60 55 5 27 8 43 71 98 14 21 32 48 64
|
||||
Card 192: 92 77 16 8 1 87 51 14 89 76 | 13 10 60 19 93 97 16 11 51 47 76 30 91 24 14 89 77 35 8 28 87 21 92 1 22
|
||||
Card 193: 53 24 36 45 60 18 35 25 12 28 | 98 29 92 35 52 99 12 45 74 18 28 30 70 68 55 24 25 77 81 36 72 20 53 50 60
|
||||
Card 194: 50 83 40 8 87 28 79 27 44 91 | 37 80 88 17 90 40 67 87 20 76 77 52 68 1 55 35 14 61 4 96 75 83 10 71 8
|
||||
Card 195: 6 41 29 40 96 49 9 55 51 18 | 69 30 77 83 47 52 59 55 70 10 92 19 85 11 86 42 53 38 35 90 51 46 80 91 84
|
||||
Card 196: 92 29 86 97 9 30 87 6 15 4 | 18 46 50 63 30 14 6 82 3 53 55 26 29 86 85 70 4 89 90 24 10 35 27 9 20
|
||||
Card 197: 80 1 81 94 98 75 58 9 19 10 | 26 37 57 58 22 1 19 94 10 87 70 5 95 40 53 81 89 93 8 80 86 9 36 75 98
|
||||
Card 198: 29 41 51 44 7 84 65 62 20 74 | 74 5 72 62 41 88 23 49 66 97 31 84 18 51 20 10 29 19 44 7 1 60 40 78 30
|
||||
Card 199: 20 2 3 95 63 60 10 81 87 90 | 60 54 3 61 38 77 42 32 62 82 90 35 9 81 2 20 87 63 8 65 95 19 30 10 85
|
||||
Card 200: 80 76 17 57 36 9 70 65 1 13 | 88 50 96 87 77 36 14 70 86 29 68 90 93 3 25 65 74 83 78 62 9 69 47 22 8
|
||||
Card 201: 19 43 79 93 31 72 66 7 18 55 | 72 20 71 43 57 19 53 83 47 35 37 67 13 31 74 81 76 18 44 55 93 97 26 84 11
|
||||
Card 202: 26 65 71 57 14 86 49 66 1 23 | 27 41 16 51 82 72 13 55 14 21 69 62 15 46 63 78 22 31 30 57 76 45 3 71 86
|
||||
Card 203: 53 43 69 4 76 74 73 11 34 88 | 46 68 63 19 55 64 88 51 33 15 17 57 53 42 76 66 80 34 11 69 73 96 59 74 16
|
||||
Card 204: 9 6 64 82 79 1 73 68 39 57 | 92 82 49 53 84 4 69 20 30 13 16 1 26 76 60 57 91 65 24 12 34 56 33 38 59
|
||||
Card 205: 45 6 76 94 78 35 95 20 85 90 | 89 94 28 15 48 87 56 32 40 88 21 33 51 53 54 67 64 9 17 78 6 57 12 98 95
|
||||
Card 206: 32 94 53 98 84 82 48 45 8 25 | 84 4 25 97 12 93 35 60 42 80 61 62 18 8 32 17 94 23 63 53 31 3 48 43 20
|
||||
Card 207: 40 18 52 70 55 29 49 43 15 20 | 38 39 78 70 35 81 34 29 51 55 17 43 52 64 16 21 69 27 47 88 2 99 18 54 3
|
||||
Card 208: 9 67 74 14 59 41 84 60 73 86 | 87 16 27 86 50 7 30 77 64 76 73 71 99 92 23 82 2 5 55 57 40 47 45 72 21
|
||||
Card 209: 45 50 11 39 28 93 77 92 41 18 | 32 6 56 34 15 87 48 64 41 30 3 46 42 21 44 72 59 29 25 77 83 66 5 12 11
|
||||
Card 210: 34 74 60 33 14 25 27 98 54 75 | 90 79 69 27 70 4 40 93 66 62 65 3 8 42 34 92 53 98 56 89 57 13 52 38 30
|
||||
Card 211: 20 21 98 93 33 65 13 48 81 53 | 19 82 78 95 77 54 89 61 58 74 39 43 1 64 73 11 72 7 32 9 17 46 8 84 86
|
||||
Card 212: 46 82 24 14 63 38 94 70 79 91 | 23 83 87 4 48 81 40 13 84 68 22 65 45 11 88 75 98 1 15 56 64 44 35 7 3
|
||||
Card 213: 79 84 12 86 58 10 11 24 32 26 | 52 94 65 29 89 7 76 80 31 21 78 37 66 69 13 41 93 73 96 16 92 44 62 3 95
|
||||
65
2023/day4/p2/main.rs
Normal file
65
2023/day4/p2/main.rs
Normal file
@ -0,0 +1,65 @@
|
||||
use std::{fs, vec};
|
||||
|
||||
const FILE_PATH: &str = "./input.text";
|
||||
|
||||
fn process_line(line: &str) -> i32
|
||||
{
|
||||
let mut cards_won = 0;
|
||||
|
||||
// Line processing
|
||||
let line_halves: Vec<&str> = line.split(" | ").collect();
|
||||
|
||||
let first_half: Vec<&str> = line_halves[0].split(": ").collect();
|
||||
|
||||
let winning_numbers: Vec<&str> = first_half[1].split(" ").filter(|num| !num.is_empty()).collect();
|
||||
|
||||
let my_numbers = line_halves[1].split(" ").filter(|num| !num.is_empty());
|
||||
|
||||
for number in my_numbers
|
||||
{
|
||||
if winning_numbers.contains(&number)
|
||||
{
|
||||
cards_won += 1;
|
||||
}
|
||||
}
|
||||
|
||||
return cards_won;
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let contents = fs::read_to_string(FILE_PATH)
|
||||
.unwrap();
|
||||
|
||||
let lines: Vec<&str> = contents.lines().collect();
|
||||
|
||||
let mut cards_won_sum: i64 = 0;
|
||||
let mut card_values: Vec<(usize, i32)> = Vec::new();
|
||||
|
||||
for index in 0..lines.len()
|
||||
{
|
||||
let mut temp_vec = vec![(index, process_line(lines[index]))];
|
||||
card_values.append(&mut temp_vec);
|
||||
|
||||
}
|
||||
|
||||
let mut cards_won: Vec<(usize, i32)> = card_values.clone();
|
||||
|
||||
while !cards_won.is_empty()
|
||||
{
|
||||
let mut temp_cards_won: Vec<(usize, i32)> = Vec::new();
|
||||
for (index, cards_won_value) in cards_won.clone()
|
||||
{
|
||||
cards_won_sum += 1;
|
||||
for i in (index + 1)..(index + 1 + cards_won_value as usize)
|
||||
{
|
||||
let mut temp_vec: Vec<(usize, i32)> = vec![(i, card_values[i].1)];
|
||||
temp_cards_won.append(&mut temp_vec);
|
||||
}
|
||||
}
|
||||
|
||||
cards_won = temp_cards_won;
|
||||
}
|
||||
|
||||
|
||||
println!("Total cards won: {cards_won_sum}");
|
||||
}
|
||||
6
2023/day4/p2/test.text
Normal file
6
2023/day4/p2/test.text
Normal file
@ -0,0 +1,6 @@
|
||||
Card 1: 41 48 83 86 17 | 83 86 6 31 17 9 48 53
|
||||
Card 2: 13 32 20 16 61 | 61 30 68 82 17 32 24 19
|
||||
Card 3: 1 21 53 59 44 | 69 82 63 72 16 21 14 1
|
||||
Card 4: 41 92 73 84 69 | 59 84 76 51 58 5 54 83
|
||||
Card 5: 87 83 26 28 32 | 88 30 70 12 93 22 82 36
|
||||
Card 6: 31 18 13 56 72 | 74 77 10 23 35 67 36 11
|
||||
243
2023/day5/p1/input.text
Normal file
243
2023/day5/p1/input.text
Normal file
@ -0,0 +1,243 @@
|
||||
seeds: 1514493331 295250933 3793791524 105394212 828589016 654882197 658370118 49359719 4055197159 59237418 314462259 268880047 2249227634 74967914 2370414906 38444198 3291001718 85800943 2102534948 5923540
|
||||
|
||||
seed-to-soil map:
|
||||
3352941879 1247490906 129850502
|
||||
1738919961 2189748071 56658550
|
||||
1795578511 292133467 518088747
|
||||
1519757661 1666834550 130335907
|
||||
1650093568 133993362 88826393
|
||||
2813914030 2262539545 40894545
|
||||
2698412916 2661705133 115501114
|
||||
2854808575 810222214 437268692
|
||||
410530961 1545057218 121777332
|
||||
0 242661076 10731898
|
||||
532308293 2303434090 61476099
|
||||
3292077267 1797170457 2282798
|
||||
2313667258 0 133993362
|
||||
2447660620 2410952837 250752296
|
||||
3294360065 253392974 38740493
|
||||
10731898 1377341408 167715810
|
||||
1457582089 2364910189 46042648
|
||||
593784392 3009289500 824592362
|
||||
3333100558 222819755 19841321
|
||||
1418376754 1799453255 39205335
|
||||
1503624737 2246406621 16132924
|
||||
178447708 2777206247 232083253
|
||||
3482792381 1838658590 351089481
|
||||
|
||||
soil-to-fertilizer map:
|
||||
3513795976 4258851234 36116062
|
||||
3393453635 4148223693 110627541
|
||||
3504081176 3494735450 6350258
|
||||
2671742993 3596285367 235915393
|
||||
991290653 256764866 25867175
|
||||
2907658386 3330719253 68855819
|
||||
3336496635 4091266693 56957000
|
||||
3161141476 2536943456 80523019
|
||||
1961696534 304660310 29551079
|
||||
812996514 1560772632 178294139
|
||||
1562163347 2321959023 78904062
|
||||
31289107 1039870587 339682886
|
||||
1520029818 1928417376 42133529
|
||||
3510431434 3832200760 3364542
|
||||
3549912038 3272523584 58195669
|
||||
0 149071717 31289107
|
||||
3608107707 3501085708 5732766
|
||||
503523937 1739066771 189350605
|
||||
3071674583 3506818474 89466893
|
||||
3241664495 3996434553 94832140
|
||||
1708133363 454333361 253563171
|
||||
3813493721 3097084118 175439466
|
||||
1991247613 1970550905 351408118
|
||||
3613840473 2897430870 199653248
|
||||
2536943456 2762631333 134799537
|
||||
1641067409 244319429 12445437
|
||||
3994753216 3913095788 83338765
|
||||
2976514205 3399575072 95160378
|
||||
1354883134 0 143118415
|
||||
1349131883 2400863085 5751251
|
||||
1498001549 282632041 22028269
|
||||
2342655731 180360824 63958605
|
||||
370971993 1379553473 126598642
|
||||
4149802438 2617466475 145164858
|
||||
1017157828 707896532 331974055
|
||||
692874542 334211389 120121972
|
||||
497570635 143118415 5953302
|
||||
3988933187 3907275759 5820029
|
||||
4078091981 3835565302 71710457
|
||||
1653512846 1506152115 54620517
|
||||
|
||||
fertilizer-to-water map:
|
||||
3053686523 2028998994 1241280773
|
||||
1492748555 1562401968 269616514
|
||||
554432178 1000324407 562077561
|
||||
2944878746 3270279767 108807777
|
||||
2501520804 3379087544 52288887
|
||||
1762365069 20686928 69653413
|
||||
2028998994 3431376431 472521810
|
||||
1431309984 814973200 3653900
|
||||
409832614 0 20686928
|
||||
430519542 818627100 123912636
|
||||
1116509739 500172955 314800245
|
||||
2553809691 3903898241 391069055
|
||||
0 90340341 409832614
|
||||
1434963884 942539736 57784671
|
||||
|
||||
water-to-light map:
|
||||
2774754469 1598606098 15160294
|
||||
3832622498 1469118874 129487224
|
||||
4125818569 3997047227 169148727
|
||||
1108418694 1130695768 196125912
|
||||
637654660 517892123 26551592
|
||||
2519230072 3399515763 135968347
|
||||
2751000257 3126996880 23754212
|
||||
861800165 884077239 88532605
|
||||
1469118874 2566660966 63929427
|
||||
2789914763 3150751092 63425583
|
||||
2853340346 2561960449 4700517
|
||||
1692681911 3397592997 1922766
|
||||
2858040863 1773257241 287341147
|
||||
2655198419 2851614649 15098309
|
||||
950332770 972609844 158085924
|
||||
591049922 471287385 46604738
|
||||
3482333989 3849276196 108901632
|
||||
1694604677 1613766392 159490849
|
||||
3591235621 3958177828 38869399
|
||||
3630105020 4166195954 128771342
|
||||
3205039781 3535484110 277294208
|
||||
2706794606 2060598388 44205651
|
||||
386607659 544443715 110595292
|
||||
3962109722 2540862463 21097986
|
||||
697311924 0 92263281
|
||||
558450415 404456802 11447837
|
||||
2409200012 3214176675 110030060
|
||||
569898252 862925569 21151670
|
||||
1354525884 415904639 55382746
|
||||
789575205 790700609 72224960
|
||||
3832262624 2690248164 359874
|
||||
163757080 181606223 222850579
|
||||
1533048301 2967363270 159633610
|
||||
497202951 784452458 6248151
|
||||
2670296728 3812778318 36497878
|
||||
3145382010 2630590393 59657771
|
||||
1854095526 2104804039 436058424
|
||||
0 655039007 74414138
|
||||
2390804262 2690608038 18395750
|
||||
1304544606 1326821680 49981278
|
||||
3758876362 3324206735 73386262
|
||||
664206252 1376802958 33105672
|
||||
74414138 92263281 89342942
|
||||
3983207708 2709003788 142610861
|
||||
503451102 729453145 54999313
|
||||
2290153950 2866712958 100650312
|
||||
|
||||
light-to-temperature map:
|
||||
2054128675 422374783 216418447
|
||||
3729049939 3132111492 565917357
|
||||
524183620 1261361039 34450583
|
||||
723901655 638793230 74616934
|
||||
304496246 795175951 115896188
|
||||
1128506994 1008723417 50927515
|
||||
958650763 2074746732 3056214
|
||||
0 1224918384 36442655
|
||||
558634203 1059650932 165267452
|
||||
2052385426 713410164 1743249
|
||||
833053864 1953862956 120883776
|
||||
36442655 715153413 80022538
|
||||
1455705971 1506174459 386316618
|
||||
1842022589 1295811622 210362837
|
||||
2270547122 2077802946 24477429
|
||||
116465193 2102280375 188031053
|
||||
1179434509 945607414 63116003
|
||||
798518589 911072139 34535275
|
||||
3373647615 3893335786 195498774
|
||||
3696979816 3698028849 32070123
|
||||
1242550512 1892491077 43410067
|
||||
3051130577 2566857633 322517038
|
||||
3002478931 3844684140 48651646
|
||||
2311039190 3730098972 114585168
|
||||
2425624358 2311039190 187630064
|
||||
2819387158 2889374671 183091773
|
||||
1285960579 103791186 85466201
|
||||
1371426780 338095592 84279191
|
||||
1110545182 1935901144 17961812
|
||||
953937640 2290311428 4713123
|
||||
420392434 0 103791186
|
||||
961706977 189257387 148838205
|
||||
3637334768 3072466444 59645048
|
||||
3569146389 2498669254 68188379
|
||||
2613254422 4088834560 206132736
|
||||
|
||||
temperature-to-humidity map:
|
||||
2032423062 2486277941 26281270
|
||||
333062067 2316624216 6051173
|
||||
1716048249 1385455997 91409968
|
||||
460397469 2512559211 69041956
|
||||
25538975 668468772 15388105
|
||||
2090913379 324344034 71221218
|
||||
2804805674 3018690414 130533369
|
||||
529439425 908821722 476634275
|
||||
1106765273 448560048 219908724
|
||||
2162134597 1476865965 445565302
|
||||
0 395565252 25538975
|
||||
4004204691 4019550481 43244121
|
||||
2058704332 0 32209047
|
||||
1516375281 2116951248 199672968
|
||||
3888833667 2764269134 115371024
|
||||
40927080 32209047 292134987
|
||||
1490276549 2581601167 26098732
|
||||
1360818538 2322675389 129458011
|
||||
1006073700 2043715496 73235752
|
||||
1079309452 421104227 27455821
|
||||
1807458217 683856877 224964845
|
||||
339113240 1922431267 121284229
|
||||
4155917040 2879640158 139050256
|
||||
2764269134 4171262830 40536540
|
||||
4047448812 4062794602 108468228
|
||||
2935339043 3149223783 870326698
|
||||
1326673997 2452133400 34144541
|
||||
3805665741 4211799370 83167926
|
||||
|
||||
humidity-to-location map:
|
||||
3928575650 3147563455 98804874
|
||||
2357899446 2418187254 26586982
|
||||
449562184 2261875136 59054833
|
||||
308294839 60287808 141267345
|
||||
1872062279 1591999301 10857495
|
||||
1227084719 574109504 259895254
|
||||
1980177059 1765508840 13399403
|
||||
1162615704 1941046629 64469015
|
||||
2384486428 2654234915 114059261
|
||||
702311863 1515542756 40659242
|
||||
1993576462 2005515644 256359492
|
||||
3047301127 3246368329 27789688
|
||||
650396000 1713592977 51915863
|
||||
3701335066 3862068622 181049310
|
||||
1122863338 1673840611 39752366
|
||||
3075090815 4174917460 120049836
|
||||
3882384376 2778717800 46191274
|
||||
1626219043 201555153 245843236
|
||||
4027380524 3325898523 267586772
|
||||
3417979817 4043117932 13866284
|
||||
3281454033 2925002624 18592540
|
||||
110359150 1556201998 35797303
|
||||
2558833497 2444774236 209460679
|
||||
508617017 834004758 141778983
|
||||
1574315753 975783741 51903290
|
||||
2249935954 1027687031 107963492
|
||||
0 463750354 110359150
|
||||
2778717800 3593485295 268583327
|
||||
3195140651 2824909074 86313382
|
||||
3445626269 2943595164 203968291
|
||||
3324037823 4080975466 93941994
|
||||
742971105 1135650523 379892233
|
||||
146156453 1778908243 39038597
|
||||
3300046573 4056984216 23991250
|
||||
1503331938 1602856796 70983815
|
||||
185195050 1817946840 123099789
|
||||
3649594560 3274158017 21920411
|
||||
1486979973 447398389 16351965
|
||||
3671514971 3296078428 29820095
|
||||
2498545689 0 60287808
|
||||
3431846101 2911222456 13780168
|
||||
1882919774 2320929969 97257285
|
||||
98
2023/day5/p1/main.go
Normal file
98
2023/day5/p1/main.go
Normal file
@ -0,0 +1,98 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"fmt"
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type ConversionRange struct {
|
||||
source_start int
|
||||
source_end int
|
||||
target_start int
|
||||
target_end int
|
||||
translate int
|
||||
}
|
||||
|
||||
func convert(c *ConversionRange, num int) int {
|
||||
if num >= c.source_start && num <= c.source_end {
|
||||
return num + c.translate
|
||||
} else {
|
||||
return -1
|
||||
}
|
||||
}
|
||||
|
||||
func print(c ConversionRange) {
|
||||
fmt.Println()
|
||||
}
|
||||
|
||||
func main() {
|
||||
file, _ := os.Open("./test.text")
|
||||
defer file.Close()
|
||||
|
||||
scanner := bufio.NewScanner(file)
|
||||
var seed_to_soil []*ConversionRange
|
||||
|
||||
// Parse file
|
||||
index := 0
|
||||
s_to_s_mapping := false
|
||||
for scanner.Scan() {
|
||||
line := scanner.Text()
|
||||
|
||||
// Get starting seeds
|
||||
|
||||
if index == 0 {
|
||||
seeds_list := strings.Split(line, ": ")[1]
|
||||
seeds_value_list := strings.Split(seeds_list, " ")
|
||||
|
||||
var seeds []int
|
||||
|
||||
for _, seed := range seeds_value_list {
|
||||
seed_value, _ := strconv.Atoi(seed)
|
||||
seeds = append(seeds, seed_value)
|
||||
}
|
||||
|
||||
fmt.Println("Seeds: ", seeds)
|
||||
}
|
||||
|
||||
if line == "seed-to-soil map:" {
|
||||
s_to_s_mapping = true
|
||||
continue
|
||||
}
|
||||
|
||||
if s_to_s_mapping {
|
||||
if line == "" {
|
||||
s_to_s_mapping = false
|
||||
for _, r := range seed_to_soil {
|
||||
print(r)
|
||||
}
|
||||
continue
|
||||
} else {
|
||||
var r_values []int
|
||||
range_strings := strings.Split(line, " ")
|
||||
for _, r := range range_strings {
|
||||
r_value, _ := strconv.Atoi(r)
|
||||
r_values = append(r_values, r_value)
|
||||
}
|
||||
|
||||
var temp *ConversionRange
|
||||
temp = new(ConversionRange)
|
||||
|
||||
temp.target_start = r_values[0]
|
||||
temp.source_start = r_values[1]
|
||||
length := r_values[2]
|
||||
|
||||
temp.target_end = temp.target_start + length
|
||||
temp.source_end = temp.source_start + length
|
||||
temp.translate = temp.target_start - temp.target_end
|
||||
|
||||
seed_to_soil = append(seed_to_soil, temp)
|
||||
}
|
||||
}
|
||||
|
||||
index++
|
||||
}
|
||||
|
||||
}
|
||||
102
2023/day5/p1/main.py
Normal file
102
2023/day5/p1/main.py
Normal file
@ -0,0 +1,102 @@
|
||||
#!/bin/python3.12
|
||||
|
||||
FILE_PATH = "input.text"
|
||||
|
||||
class ConversionRange:
|
||||
target_start : int
|
||||
target_end : int
|
||||
source_start : int
|
||||
source_end : int
|
||||
translate : int
|
||||
|
||||
def __init__(self, target_start : int, source_start : int, length : int):
|
||||
self.target_start = target_start
|
||||
self.source_start = source_start
|
||||
self.target_end = self.target_start + length
|
||||
self.source_end = self.source_start + length
|
||||
self.translate = self.target_start - self.source_start
|
||||
|
||||
def __str__(self):
|
||||
print(f"Target start: {self.target_start}")
|
||||
print(f"Source start: {self.source_start}")
|
||||
print(f"Translate: {self.translate}")
|
||||
return ""
|
||||
|
||||
|
||||
|
||||
class Conversion:
|
||||
ranges : list[ConversionRange]
|
||||
|
||||
def __init__(self):
|
||||
self.ranges = []
|
||||
pass
|
||||
|
||||
def convert(self, num : int) -> int:
|
||||
for r in self.ranges:
|
||||
if num >= r.source_start and num <= r.source_end:
|
||||
return num + r.translate
|
||||
return num
|
||||
|
||||
|
||||
def main() -> None:
|
||||
with open(FILE_PATH, 'r') as f:
|
||||
contents = f.read().split('\n')
|
||||
|
||||
# Setup
|
||||
seeds: list[int] = []
|
||||
maps: dict[str, Conversion] = {}
|
||||
maps["seed-to-soil"] = Conversion()
|
||||
maps["soil-to-fertilizer"] = Conversion()
|
||||
maps["fertilizer-to-water"] = Conversion()
|
||||
maps["water-to-light"] = Conversion()
|
||||
maps["light-to-temperature"] = Conversion()
|
||||
maps["temperature-to-humidity"] = Conversion()
|
||||
maps["humidity-to-location"] = Conversion()
|
||||
|
||||
current_conversion: str = ""
|
||||
|
||||
# Parse the file
|
||||
for index, line in enumerate(contents):
|
||||
if index == 0:
|
||||
seeds_list: list[str] = line.split(": ")[1].split()
|
||||
for seed in seeds_list:
|
||||
seeds.append(int(seed))
|
||||
print(f"Seeds: {seeds}")
|
||||
continue
|
||||
|
||||
if not line:
|
||||
continue
|
||||
|
||||
if not line[0].isdigit():
|
||||
current_conversion = line[:-5]
|
||||
print(f"Current conversion: {current_conversion}")
|
||||
continue
|
||||
|
||||
nums: list[int] = list(map(lambda x: int(x), line.split()))
|
||||
|
||||
temp = ConversionRange(nums[0], nums[1], nums[2])
|
||||
print(temp)
|
||||
maps[current_conversion].ranges.append(temp)
|
||||
|
||||
# Convert the seeds
|
||||
lowest_location: float = float('inf')
|
||||
for seed in seeds:
|
||||
temp = seed
|
||||
for key, value in maps.items():
|
||||
print(f"Mapping {temp} with {key}")
|
||||
temp = value.convert(temp)
|
||||
|
||||
if temp < lowest_location:
|
||||
lowest_location = temp
|
||||
print(f"Location: {temp}")
|
||||
|
||||
print(f"Lowest location: {lowest_location}")
|
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
|
||||
|
||||
33
2023/day5/p1/test.text
Normal file
33
2023/day5/p1/test.text
Normal file
@ -0,0 +1,33 @@
|
||||
seeds: 79 14 55 13
|
||||
|
||||
seed-to-soil map:
|
||||
50 98 2
|
||||
52 50 48
|
||||
|
||||
soil-to-fertilizer map:
|
||||
0 15 37
|
||||
37 52 2
|
||||
39 0 15
|
||||
|
||||
fertilizer-to-water map:
|
||||
49 53 8
|
||||
0 11 42
|
||||
42 0 7
|
||||
57 7 4
|
||||
|
||||
water-to-light map:
|
||||
88 18 7
|
||||
18 25 70
|
||||
|
||||
light-to-temperature map:
|
||||
45 77 23
|
||||
81 45 19
|
||||
68 64 13
|
||||
|
||||
temperature-to-humidity map:
|
||||
0 69 1
|
||||
1 0 69
|
||||
|
||||
humidity-to-location map:
|
||||
60 56 37
|
||||
56 93 4
|
||||
243
2023/day5/p2/input.text
Normal file
243
2023/day5/p2/input.text
Normal file
@ -0,0 +1,243 @@
|
||||
seeds: 1514493331 295250933 3793791524 105394212 828589016 654882197 658370118 49359719 4055197159 59237418 314462259 268880047 2249227634 74967914 2370414906 38444198 3291001718 85800943 2102534948 5923540
|
||||
|
||||
seed-to-soil map:
|
||||
3352941879 1247490906 129850502
|
||||
1738919961 2189748071 56658550
|
||||
1795578511 292133467 518088747
|
||||
1519757661 1666834550 130335907
|
||||
1650093568 133993362 88826393
|
||||
2813914030 2262539545 40894545
|
||||
2698412916 2661705133 115501114
|
||||
2854808575 810222214 437268692
|
||||
410530961 1545057218 121777332
|
||||
0 242661076 10731898
|
||||
532308293 2303434090 61476099
|
||||
3292077267 1797170457 2282798
|
||||
2313667258 0 133993362
|
||||
2447660620 2410952837 250752296
|
||||
3294360065 253392974 38740493
|
||||
10731898 1377341408 167715810
|
||||
1457582089 2364910189 46042648
|
||||
593784392 3009289500 824592362
|
||||
3333100558 222819755 19841321
|
||||
1418376754 1799453255 39205335
|
||||
1503624737 2246406621 16132924
|
||||
178447708 2777206247 232083253
|
||||
3482792381 1838658590 351089481
|
||||
|
||||
soil-to-fertilizer map:
|
||||
3513795976 4258851234 36116062
|
||||
3393453635 4148223693 110627541
|
||||
3504081176 3494735450 6350258
|
||||
2671742993 3596285367 235915393
|
||||
991290653 256764866 25867175
|
||||
2907658386 3330719253 68855819
|
||||
3336496635 4091266693 56957000
|
||||
3161141476 2536943456 80523019
|
||||
1961696534 304660310 29551079
|
||||
812996514 1560772632 178294139
|
||||
1562163347 2321959023 78904062
|
||||
31289107 1039870587 339682886
|
||||
1520029818 1928417376 42133529
|
||||
3510431434 3832200760 3364542
|
||||
3549912038 3272523584 58195669
|
||||
0 149071717 31289107
|
||||
3608107707 3501085708 5732766
|
||||
503523937 1739066771 189350605
|
||||
3071674583 3506818474 89466893
|
||||
3241664495 3996434553 94832140
|
||||
1708133363 454333361 253563171
|
||||
3813493721 3097084118 175439466
|
||||
1991247613 1970550905 351408118
|
||||
3613840473 2897430870 199653248
|
||||
2536943456 2762631333 134799537
|
||||
1641067409 244319429 12445437
|
||||
3994753216 3913095788 83338765
|
||||
2976514205 3399575072 95160378
|
||||
1354883134 0 143118415
|
||||
1349131883 2400863085 5751251
|
||||
1498001549 282632041 22028269
|
||||
2342655731 180360824 63958605
|
||||
370971993 1379553473 126598642
|
||||
4149802438 2617466475 145164858
|
||||
1017157828 707896532 331974055
|
||||
692874542 334211389 120121972
|
||||
497570635 143118415 5953302
|
||||
3988933187 3907275759 5820029
|
||||
4078091981 3835565302 71710457
|
||||
1653512846 1506152115 54620517
|
||||
|
||||
fertilizer-to-water map:
|
||||
3053686523 2028998994 1241280773
|
||||
1492748555 1562401968 269616514
|
||||
554432178 1000324407 562077561
|
||||
2944878746 3270279767 108807777
|
||||
2501520804 3379087544 52288887
|
||||
1762365069 20686928 69653413
|
||||
2028998994 3431376431 472521810
|
||||
1431309984 814973200 3653900
|
||||
409832614 0 20686928
|
||||
430519542 818627100 123912636
|
||||
1116509739 500172955 314800245
|
||||
2553809691 3903898241 391069055
|
||||
0 90340341 409832614
|
||||
1434963884 942539736 57784671
|
||||
|
||||
water-to-light map:
|
||||
2774754469 1598606098 15160294
|
||||
3832622498 1469118874 129487224
|
||||
4125818569 3997047227 169148727
|
||||
1108418694 1130695768 196125912
|
||||
637654660 517892123 26551592
|
||||
2519230072 3399515763 135968347
|
||||
2751000257 3126996880 23754212
|
||||
861800165 884077239 88532605
|
||||
1469118874 2566660966 63929427
|
||||
2789914763 3150751092 63425583
|
||||
2853340346 2561960449 4700517
|
||||
1692681911 3397592997 1922766
|
||||
2858040863 1773257241 287341147
|
||||
2655198419 2851614649 15098309
|
||||
950332770 972609844 158085924
|
||||
591049922 471287385 46604738
|
||||
3482333989 3849276196 108901632
|
||||
1694604677 1613766392 159490849
|
||||
3591235621 3958177828 38869399
|
||||
3630105020 4166195954 128771342
|
||||
3205039781 3535484110 277294208
|
||||
2706794606 2060598388 44205651
|
||||
386607659 544443715 110595292
|
||||
3962109722 2540862463 21097986
|
||||
697311924 0 92263281
|
||||
558450415 404456802 11447837
|
||||
2409200012 3214176675 110030060
|
||||
569898252 862925569 21151670
|
||||
1354525884 415904639 55382746
|
||||
789575205 790700609 72224960
|
||||
3832262624 2690248164 359874
|
||||
163757080 181606223 222850579
|
||||
1533048301 2967363270 159633610
|
||||
497202951 784452458 6248151
|
||||
2670296728 3812778318 36497878
|
||||
3145382010 2630590393 59657771
|
||||
1854095526 2104804039 436058424
|
||||
0 655039007 74414138
|
||||
2390804262 2690608038 18395750
|
||||
1304544606 1326821680 49981278
|
||||
3758876362 3324206735 73386262
|
||||
664206252 1376802958 33105672
|
||||
74414138 92263281 89342942
|
||||
3983207708 2709003788 142610861
|
||||
503451102 729453145 54999313
|
||||
2290153950 2866712958 100650312
|
||||
|
||||
light-to-temperature map:
|
||||
2054128675 422374783 216418447
|
||||
3729049939 3132111492 565917357
|
||||
524183620 1261361039 34450583
|
||||
723901655 638793230 74616934
|
||||
304496246 795175951 115896188
|
||||
1128506994 1008723417 50927515
|
||||
958650763 2074746732 3056214
|
||||
0 1224918384 36442655
|
||||
558634203 1059650932 165267452
|
||||
2052385426 713410164 1743249
|
||||
833053864 1953862956 120883776
|
||||
36442655 715153413 80022538
|
||||
1455705971 1506174459 386316618
|
||||
1842022589 1295811622 210362837
|
||||
2270547122 2077802946 24477429
|
||||
116465193 2102280375 188031053
|
||||
1179434509 945607414 63116003
|
||||
798518589 911072139 34535275
|
||||
3373647615 3893335786 195498774
|
||||
3696979816 3698028849 32070123
|
||||
1242550512 1892491077 43410067
|
||||
3051130577 2566857633 322517038
|
||||
3002478931 3844684140 48651646
|
||||
2311039190 3730098972 114585168
|
||||
2425624358 2311039190 187630064
|
||||
2819387158 2889374671 183091773
|
||||
1285960579 103791186 85466201
|
||||
1371426780 338095592 84279191
|
||||
1110545182 1935901144 17961812
|
||||
953937640 2290311428 4713123
|
||||
420392434 0 103791186
|
||||
961706977 189257387 148838205
|
||||
3637334768 3072466444 59645048
|
||||
3569146389 2498669254 68188379
|
||||
2613254422 4088834560 206132736
|
||||
|
||||
temperature-to-humidity map:
|
||||
2032423062 2486277941 26281270
|
||||
333062067 2316624216 6051173
|
||||
1716048249 1385455997 91409968
|
||||
460397469 2512559211 69041956
|
||||
25538975 668468772 15388105
|
||||
2090913379 324344034 71221218
|
||||
2804805674 3018690414 130533369
|
||||
529439425 908821722 476634275
|
||||
1106765273 448560048 219908724
|
||||
2162134597 1476865965 445565302
|
||||
0 395565252 25538975
|
||||
4004204691 4019550481 43244121
|
||||
2058704332 0 32209047
|
||||
1516375281 2116951248 199672968
|
||||
3888833667 2764269134 115371024
|
||||
40927080 32209047 292134987
|
||||
1490276549 2581601167 26098732
|
||||
1360818538 2322675389 129458011
|
||||
1006073700 2043715496 73235752
|
||||
1079309452 421104227 27455821
|
||||
1807458217 683856877 224964845
|
||||
339113240 1922431267 121284229
|
||||
4155917040 2879640158 139050256
|
||||
2764269134 4171262830 40536540
|
||||
4047448812 4062794602 108468228
|
||||
2935339043 3149223783 870326698
|
||||
1326673997 2452133400 34144541
|
||||
3805665741 4211799370 83167926
|
||||
|
||||
humidity-to-location map:
|
||||
3928575650 3147563455 98804874
|
||||
2357899446 2418187254 26586982
|
||||
449562184 2261875136 59054833
|
||||
308294839 60287808 141267345
|
||||
1872062279 1591999301 10857495
|
||||
1227084719 574109504 259895254
|
||||
1980177059 1765508840 13399403
|
||||
1162615704 1941046629 64469015
|
||||
2384486428 2654234915 114059261
|
||||
702311863 1515542756 40659242
|
||||
1993576462 2005515644 256359492
|
||||
3047301127 3246368329 27789688
|
||||
650396000 1713592977 51915863
|
||||
3701335066 3862068622 181049310
|
||||
1122863338 1673840611 39752366
|
||||
3075090815 4174917460 120049836
|
||||
3882384376 2778717800 46191274
|
||||
1626219043 201555153 245843236
|
||||
4027380524 3325898523 267586772
|
||||
3417979817 4043117932 13866284
|
||||
3281454033 2925002624 18592540
|
||||
110359150 1556201998 35797303
|
||||
2558833497 2444774236 209460679
|
||||
508617017 834004758 141778983
|
||||
1574315753 975783741 51903290
|
||||
2249935954 1027687031 107963492
|
||||
0 463750354 110359150
|
||||
2778717800 3593485295 268583327
|
||||
3195140651 2824909074 86313382
|
||||
3445626269 2943595164 203968291
|
||||
3324037823 4080975466 93941994
|
||||
742971105 1135650523 379892233
|
||||
146156453 1778908243 39038597
|
||||
3300046573 4056984216 23991250
|
||||
1503331938 1602856796 70983815
|
||||
185195050 1817946840 123099789
|
||||
3649594560 3274158017 21920411
|
||||
1486979973 447398389 16351965
|
||||
3671514971 3296078428 29820095
|
||||
2498545689 0 60287808
|
||||
3431846101 2911222456 13780168
|
||||
1882919774 2320929969 97257285
|
||||
151
2023/day5/p2/main.py
Normal file
151
2023/day5/p2/main.py
Normal file
@ -0,0 +1,151 @@
|
||||
#!/bin/python3.12
|
||||
|
||||
FILE_PATH = "input.text"
|
||||
|
||||
class ConversionRange:
|
||||
target_start : int
|
||||
target_end : int
|
||||
source_start : int
|
||||
source_end : int
|
||||
translate : int
|
||||
|
||||
def __init__(self, target_start : int, source_start : int, length : int):
|
||||
self.target_start = target_start
|
||||
self.source_start = source_start
|
||||
self.target_end = self.target_start + length
|
||||
self.source_end = self.source_start + length
|
||||
self.translate = self.target_start - self.source_start
|
||||
|
||||
def __str__(self):
|
||||
print(f"Target start: {self.target_start}")
|
||||
print(f"Source start: {self.source_start}")
|
||||
print(f"Translate: {self.translate}")
|
||||
return ""
|
||||
|
||||
|
||||
"""
|
||||
{
|
||||
(79, 93) : {
|
||||
(79, 93) : {
|
||||
(52, 99) : {
|
||||
(52, 53) : {
|
||||
(37, 38) : {
|
||||
|
||||
}
|
||||
},
|
||||
(54, 99) : {
|
||||
(54, 99) : {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
"""
|
||||
class Conversion:
|
||||
start : int
|
||||
end : int
|
||||
ranges : list
|
||||
|
||||
def __init__(self, start : int, end : int):
|
||||
self.start = start
|
||||
self.end = end
|
||||
self.ranges = []
|
||||
|
||||
def __contains__(self, r) -> bool:
|
||||
if r.start >= self.start and r.end <= self.end:
|
||||
return True
|
||||
return False
|
||||
|
||||
def add_range(self, range) -> None:
|
||||
self.ranges.append(range)
|
||||
|
||||
def convert(self, num : int) -> int:
|
||||
for r in self.ranges:
|
||||
if num >= r.source_start and num <= r.source_end:
|
||||
return num + r.translate
|
||||
return num
|
||||
|
||||
def convert_range(self, range : tuple[int, int]) -> list:
|
||||
start, end: int = range
|
||||
|
||||
results: list = []
|
||||
|
||||
result: list = [None, None]
|
||||
for r in self.ranges:
|
||||
if r.source_start >= start:
|
||||
|
||||
result[0] = r.target_start
|
||||
|
||||
if r.source_end <= end:
|
||||
result[1] = r.target_end
|
||||
|
||||
if result[0] and result[1]:
|
||||
results.append(result)
|
||||
result = []
|
||||
|
||||
def main() -> None:
|
||||
with open(FILE_PATH, 'r') as f:
|
||||
contents = f.read().split('\n')
|
||||
|
||||
# Setup
|
||||
seeds: list[int] = []
|
||||
maps: dict[str, Conversion] = {}
|
||||
maps["seed-to-soil"] = Conversion()
|
||||
maps["soil-to-fertilizer"] = Conversion()
|
||||
maps["fertilizer-to-water"] = Conversion()
|
||||
maps["water-to-light"] = Conversion()
|
||||
maps["light-to-temperature"] = Conversion()
|
||||
maps["temperature-to-humidity"] = Conversion()
|
||||
maps["humidity-to-location"] = Conversion()
|
||||
|
||||
current_conversion: str = ""
|
||||
|
||||
# Parse the file
|
||||
for index, line in enumerate(contents):
|
||||
if index == 0:
|
||||
seeds_list: list[str] = line.split(": ")[1].split()
|
||||
for seed in seeds_list:
|
||||
seeds.append(int(seed))
|
||||
print(f"Seeds: {seeds}")
|
||||
continue
|
||||
|
||||
if not line:
|
||||
continue
|
||||
|
||||
if not line[0].isdigit():
|
||||
current_conversion = line[:-5]
|
||||
print(f"Current conversion: {current_conversion}")
|
||||
continue
|
||||
|
||||
nums: list[int] = list(map(lambda x: int(x), line.split()))
|
||||
|
||||
temp = ConversionRange(nums[0], nums[1], nums[2])
|
||||
print(temp)
|
||||
maps[current_conversion].ranges.append(temp)
|
||||
|
||||
# Convert the seeds
|
||||
lowest_location: float = float('inf')
|
||||
for seed in seeds:
|
||||
temp = seed
|
||||
for key, value in maps.items():
|
||||
print(f"Mapping {temp} with {key}")
|
||||
temp = value.convert(temp)
|
||||
|
||||
if temp < lowest_location:
|
||||
lowest_location = temp
|
||||
print(f"Location: {temp}")
|
||||
|
||||
print(f"Lowest location: {lowest_location}")
|
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
|
||||
|
||||
31
2023/day5/p2/test.py
Normal file
31
2023/day5/p2/test.py
Normal file
@ -0,0 +1,31 @@
|
||||
class Range:
|
||||
start: int
|
||||
end: int
|
||||
|
||||
def __init__(self, s: int, e: int):
|
||||
self.start = s
|
||||
self.end = e
|
||||
|
||||
def contains(self, key) -> tuple | None:
|
||||
start, end = (key.start, key.end)
|
||||
|
||||
if start > self.end or end <= self.start:
|
||||
return None
|
||||
|
||||
start_value = start if self.start <= start and start <= self.end else self.start
|
||||
end_value = end if self.end >= end and end >= self.start else self.end
|
||||
|
||||
return Range(start_value, end_value)
|
||||
|
||||
def __str__(self) -> str:
|
||||
return f'({self.start}, {self.end})'
|
||||
|
||||
|
||||
|
||||
r = Range(1, 5)
|
||||
r2 = Range(2, 3)
|
||||
|
||||
print(r.contains(r2))
|
||||
|
||||
|
||||
|
||||
33
2023/day5/p2/test.text
Normal file
33
2023/day5/p2/test.text
Normal file
@ -0,0 +1,33 @@
|
||||
seeds: 79 14 55 13
|
||||
|
||||
seed-to-soil map:
|
||||
50 98 2
|
||||
52 50 48
|
||||
|
||||
soil-to-fertilizer map:
|
||||
0 15 37
|
||||
37 52 2
|
||||
39 0 15
|
||||
|
||||
fertilizer-to-water map:
|
||||
49 53 8
|
||||
0 11 42
|
||||
42 0 7
|
||||
57 7 4
|
||||
|
||||
water-to-light map:
|
||||
88 18 7
|
||||
18 25 70
|
||||
|
||||
light-to-temperature map:
|
||||
45 77 23
|
||||
81 45 19
|
||||
68 64 13
|
||||
|
||||
temperature-to-humidity map:
|
||||
0 69 1
|
||||
1 0 69
|
||||
|
||||
humidity-to-location map:
|
||||
60 56 37
|
||||
56 93 4
|
||||
2
2023/day6/p1/input.text
Normal file
2
2023/day6/p1/input.text
Normal file
@ -0,0 +1,2 @@
|
||||
Time: 51 69 98 78
|
||||
Distance: 377 1171 1224 1505
|
||||
37
2023/day6/p1/main.py
Normal file
37
2023/day6/p1/main.py
Normal file
@ -0,0 +1,37 @@
|
||||
|
||||
FILE_PATH = "input.text"
|
||||
|
||||
def main() -> None:
|
||||
with open(FILE_PATH, 'r') as f:
|
||||
lines = f.readlines()
|
||||
|
||||
race_times: list[int] = list(map(lambda x: int(x), lines[0].split()[1:]))
|
||||
race_record_distances: list[int] = list(map(lambda x: int(x), lines[1].split()[1:]))
|
||||
|
||||
win_combinations: list[int] = []
|
||||
for index, time in enumerate(race_times):
|
||||
|
||||
wins: int = 0
|
||||
|
||||
for v in range(1, time):
|
||||
|
||||
time_left: int = time - v
|
||||
distance: int = v * time_left
|
||||
|
||||
if distance > race_record_distances[index]:
|
||||
wins += 1
|
||||
|
||||
win_combinations.append(wins)
|
||||
|
||||
product: int = win_combinations[0]
|
||||
for combo in win_combinations[1:]:
|
||||
product *= combo
|
||||
|
||||
print(f"Product of combinations: {product}")
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
|
||||
2
2023/day6/p1/test.text
Normal file
2
2023/day6/p1/test.text
Normal file
@ -0,0 +1,2 @@
|
||||
Time: 7 15 30
|
||||
Distance: 9 40 200
|
||||
2
2023/day6/p2/input.text
Normal file
2
2023/day6/p2/input.text
Normal file
@ -0,0 +1,2 @@
|
||||
Time: 51 69 98 78
|
||||
Distance: 377 1171 1224 1505
|
||||
28
2023/day6/p2/main.py
Normal file
28
2023/day6/p2/main.py
Normal file
@ -0,0 +1,28 @@
|
||||
|
||||
FILE_PATH = "input.text"
|
||||
|
||||
def main() -> None:
|
||||
with open(FILE_PATH, 'r') as f:
|
||||
lines = f.readlines()
|
||||
|
||||
race_time: int = int(''.join(list(map(lambda x: x if x != " " else "", lines[0][5:]))))
|
||||
race_record_distance: int = int(''.join(list(map(lambda x: x if x != " " else "", lines[1][10:]))))
|
||||
|
||||
win_combinations: int = 0
|
||||
for v in range(1, race_time):
|
||||
|
||||
time_left: int = race_time - v
|
||||
distance: int = v * time_left
|
||||
|
||||
if distance > race_record_distance:
|
||||
win_combinations += 1
|
||||
|
||||
|
||||
print(f"Win combinations: {win_combinations}")
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
|
||||
2
2023/day6/p2/test.text
Normal file
2
2023/day6/p2/test.text
Normal file
@ -0,0 +1,2 @@
|
||||
Time: 7 15 30
|
||||
Distance: 9 40 200
|
||||
BIN
2023/day7/p1/__pycache__/main.cpython-310.pyc
Normal file
BIN
2023/day7/p1/__pycache__/main.cpython-310.pyc
Normal file
Binary file not shown.
BIN
2023/day7/p1/__pycache__/main.cpython-311.pyc
Normal file
BIN
2023/day7/p1/__pycache__/main.cpython-311.pyc
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user