This commit is contained in:
JISAUAY committed 2024-12-02 09:58:35 -06:00
commit ca9736d8ec
122 files changed
+28514

No files matched your search

+1
View File
@@ -0,0 +1 @@
()(((()))(()()()((((()(((())(()(()((((((()(()(((())))((()(((()))((())(()((()()()()(((())(((((((())))()()(()(()(())(((((()()()((())(((((()()))))()(())(((())(())((((((())())))(()())))()))))()())()())((()()((()()()()(()((((((((()()())((()()(((((()(((())((())(()))()((((()((((((((())()((()())(())((()))())((((()())(((((((((((()()(((((()(()))())(((()(()))())((()(()())())())(()(((())(())())()()(()(()((()))((()))))((((()(((()))))((((()(()(()())())()(((()((((())((((()(((()()(())()()()())((()((((((()((()()))()((()))()(()()((())))(((()(((()))((()((()(()))(((()()(()(()()()))))()()(((()(((())())))))((()(((())()(()(())((()())))((((())))(()(()(()())()((()())))(((()((()(())()()((()((())(()()((())(())()))()))((()(())()))())(((((((()(()()(()(())())))))))(()((((((())((((())((())())(()()))))()(())(()())()())((())(()))))(()))(()((()))()(()((((((()()()()((((((((()(()(())((()()(()()))(())()())()((())))()))()())(((()))(())()(())()))()((()((()(()()())(())()()()((())())))((()()(()()((()(())()()())(((()(()()))))(())))(()(()())()))()()))))))()))))((((((())))())))(()(())())(()())))))(()))()))))))()((()))))()))))(()(()((()())())(()()))))(((())()))())())())(((()(()()))(())()(())(())((((((()()))))((()(()))))))(()))())(((()()(()))()())()()()())))))))))))))(())(()))(()))((()(())(()())(())())(()())(())()()(()())))()()()))(())())()))())())(())((())))))))(())))(())))))()))))((())(()(((()))))(()))()((()(())))(()())(((((()))()())()()))))()))))()))())(()(()()()))()))))))((()))))))))))()((()))((()(())((())()()(()()))()(()))))()()(()))()))(((())))(())()((())(())(()())()())())))))))())))()((())))()))(()))()()))(((((((()))())(()()))(()()(()))()(()((()())()))))))(((()()()())))(())()))()())(()()))()()))))))))(())))()))()()))))))()))()())))()(())(())))))()(())()()(()()))))())((()))))()))))(()(((((()))))))))())))())()(())()()))))(())))())()()())()()())()(()))))()))()))))))))())))((()))()))()))())))()())()()())))())))(()((())()((()))())))))())()(())((())))))))))))())()())(())())())(()))(()))()))())(()(())())()())()()(()))))(()(())))))))(())))())(())))))))())()()(())())())))(())))))()))()(()())()(()))())())))))()()(()))()))))())))))))))()))))()))))))())()())()()))))()())))())))))))))))()()))))()()(((()))()()(())()))))((()))))(()))(())())))(())()))))))(()))()))))(())())))))()))(()())))))))))))))())))))))))()((()())(()())))))))((()))))(())(())))()(()())())))())())(()()()())))()))))))())))))())()()())))))))))))()()(()))))()())()))((()())(()))))()(()))))))))))()())())(((())(()))))())()))()))()))))))()))))))(()))))()))))()(())))(())))(()))())()()(()()))()))(()()))))))))()))(()))())(()()(()(()())()()))()))))))))(())))))((()()(()))())())))))()))())(()())()()))())))()(()()()()))((())())))())()(()()))()))))))))(()))(())))()))))(()(()())(()))))()())())()))()()))())))))))))))())()))))))()))))))))())))))()))))())(()())))(())()))())())))))()()(()()())(()())))()()))(((()))(()()()))))()))))()))))((())))()((((((()()))))))())))))))))))(((()))))))))))))(())())))))())(()))))))(()))((()))())))()(()((()))()))()))))))))))())()))()(()()))))())))())(())()(()))()))())(()))()))))(()()))()()(())))))()))(())(()(()()))(()()())))))(((()))))))()))))))))))))(())(()))))()())())()()((()()))())))))(()))))())))))))()()()))))))))())))()(((()()))(())))))(((())())))))((()))()(()))(()))))(()())))(()))())))))()))))(())(())))()((()))(())())))()()))()))))))))()))(()()()(()()()(()))())(())()())(((()))(())))))))))(((()())))()()))))))))()(())(()))()((((())(())(()())))()))(((())()()()))((()))(()))())())))())))(()))())()())())(()(())())()()()(())))())(())))(())))(())()))()))(()((()))))))))())(()))))))())(()()))()()))()(()(()())))()()(()((()((((((()))(())))()()()))())()))((()()(()))())((()(()(()))(()()))))()())))()))()())))))))()()((()())(())))()))(()))(())(()))())(()(())))()()))))))(((()(((()()))()(()(())())((()()))()))()))()))()(()()()(()))((()())()(())))()()))(((())()()())(())()((()()()()(()(())(()()))()(((((()())))((())))))(()()()))))(((()(())))()))((()((()(())()(()((())))((()())()(()))(((()())()()(()))(())(((()((()())()((())()())(((()()))((()((())(()))(()())(()()()))((()))(())(()((()()())((()))(())))(())(())(())))(()())))(((((()(()(((((()())((((()(()())(())(()()(((())((()(((()()(((()()((((((())))())(()((((((()(()))()))()()((()((()))))()(()()(()((()()))))))(((((()(((((())()()()(())())))))))()))((()()(())))(())(()()()())))))(()((((())))))))()()(((()(()(()(()(()())()()()(((((((((()()())()(()))((()()()()()(((((((()())()((())()))((((((()(()(()(()())(((()(((((((()(((())(((((((((())(())())()))((()(()))(((()()())(())(()(()()(((()(())()))())))(())((((((())(()()())()()(((()(((())(()(((())(((((((()(((((((((()))(())(()(()(()))))((()))()(())())())((()(()((()()))((()()((()(())(())(()((())(((())(((()()()((((((()()(())((((())()))))(())((()(()((())))(((((()(()()())())((())())))((())((()((()()((((((())(((()()(()())())(()(()))(()(()))())())()(((((((()(((()(())()()((())((()(()()((()(()()(((((((((((())((())((((((())((()((((()(()((((()(((((((())()((()))))())()((()((((()(()(((()((()())))(())())(((()(((())((((((()(((((((((Line truncated
+11
View 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
View 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
View File
@@ -0,0 +1,1000 @@
20x3x11
15x27x5
6x29x7
30x15x9
19x29x21
10x4x15
1x26x4
1x5x18
10x15x23
10x14x20
3x5x18
29x23x30
7x4x10
22x24x29
30x1x2
19x2x5
11x9x22
23x15x10
11x11x10
30x28x5
22x5x4
6x26x20
16x12x30
10x20x5
25x14x24
16x17x22
11x28x26
1x11x10
1x24x15
13x17x21
30x3x13
20x25x17
22x12x5
22x20x24
9x2x14
6x18x8
27x28x24
11x17x1
1x4x12
5x20x13
24x23x23
22x1x25
18x19x5
5x23x13
8x16x4
20x21x9
1x7x11
8x30x17
3x30x9
6x16x18
22x25x27
9x20x26
16x21x23
5x24x17
15x17x15
26x15x10
22x16x3
20x24x24
8x18x10
23x19x16
1x21x24
23x23x9
14x20x6
25x5x5
16x3x1
29x29x20
11x4x26
10x23x24
29x25x16
27x27x22
9x7x22
6x21x18
25x11x19
14x13x3
15x28x17
14x3x12
29x8x19
30x14x20
20x23x4
8x16x5
4x11x18
20x8x24
21x13x21
14x26x29
27x4x17
27x4x25
5x28x6
23x24x11
29x22x5
30x20x6
23x2x10
11x4x7
27x23x6
10x20x19
8x20x22
5x29x22
16x13x2
2x11x14
6x12x4
3x13x6
16x5x18
25x3x28
21x1x5
20x16x19
28x30x27
26x7x18
25x27x24
11x19x7
21x19x17
2x12x27
20x5x14
8x5x8
6x24x8
7x28x20
3x20x28
5x20x30
13x29x1
26x29x5
19x28x25
5x19x11
11x20x22
4x23x1
19x25x12
3x10x6
3x14x10
28x16x12
23x12x2
23x12x19
20x28x10
9x10x25
16x21x16
1x18x20
9x4x26
3x25x8
17x16x28
9x28x16
27x3x12
17x24x12
13x21x10
7x17x13
6x10x9
7x29x25
11x19x30
1x24x5
20x16x23
24x28x21
6x29x19
25x2x19
12x5x26
25x29x12
16x28x22
26x26x15
9x13x5
10x29x7
1x24x16
22x2x2
6x16x13
3x12x28
4x12x13
14x27x21
14x23x26
7x5x18
8x30x27
15x9x18
26x16x5
3x29x17
19x7x18
16x18x1
26x15x30
24x30x21
13x20x7
4x12x10
27x20x11
28x29x21
20x14x30
28x12x3
19x1x8
4x8x6
21x14x2
27x19x21
17x24x14
15x18x11
18x7x26
25x28x29
27x26x9
18x12x17
24x28x25
13x24x14
26x9x28
9x3x30
9x2x9
8x1x29
18x30x10
18x14x5
26x8x30
12x1x1
30x5x28
26x17x21
10x10x10
20x7x27
13x17x6
21x13x17
2x16x8
7x9x9
15x26x4
11x28x25
10x6x19
21x6x29
15x5x6
28x9x16
14x3x10
12x29x5
22x19x19
25x15x22
30x6x28
11x23x13
20x25x14
26x1x13
6x14x15
16x25x17
28x4x13
10x24x25
4x13x10
9x15x16
15x24x6
22x9x19
11x11x8
4x19x12
24x5x4
27x12x13
7x27x16
2x6x9
29x27x15
18x26x23
19x16x15
14x5x25
9x16x30
4x6x4
13x10x10
1x8x29
23x5x17
19x20x20
11x27x24
27x15x5
15x11x12
21x11x3
1x13x22
17x8x8
13x14x14
17x22x7
9x5x8
2x6x3
25x9x15
11x8x13
9x25x12
3x16x12
12x16x8
16x24x17
4x6x26
22x29x11
14x17x19
28x2x27
24x22x19
22x20x30
23x28x4
16x12x14
22x24x22
29x1x28
26x29x16
3x25x30
27x3x13
22x24x26
25x3x2
7x24x2
10x5x3
28x8x29
25x6x4
12x17x14
24x3x5
23x27x7
26x23x30
11x10x19
23x7x11
26x14x15
14x3x25
12x24x14
2x14x12
9x12x16
9x2x28
3x8x2
22x6x9
2x30x2
25x1x9
20x11x2
14x11x12
7x14x12
24x8x26
13x21x23
18x17x23
13x6x17
20x20x19
13x17x29
7x24x24
23x8x6
19x10x28
3x8x21
15x20x18
11x27x1
11x24x28
13x20x11
18x19x22
27x22x12
28x3x2
13x4x29
26x5x6
14x29x25
7x4x7
5x17x7
2x8x1
22x30x24
22x21x28
1x28x13
11x20x4
25x29x19
9x23x4
30x6x11
25x18x10
28x10x24
3x5x20
19x28x10
27x19x2
26x20x4
19x21x6
2x12x30
8x26x27
11x27x10
14x13x17
4x3x21
2x20x21
22x30x3
2x23x2
3x16x12
22x28x22
3x23x29
8x25x15
9x30x4
10x11x1
24x8x20
10x7x27
7x22x4
27x13x17
5x28x5
30x15x13
10x8x17
8x21x5
8x17x26
25x16x4
9x7x25
13x11x20
6x30x9
15x14x12
30x1x23
5x20x24
22x7x6
26x11x23
29x7x5
13x24x28
22x20x10
18x3x1
15x19x23
28x28x20
7x26x2
9x12x20
15x4x6
1x17x21
3x22x17
9x4x20
25x19x5
9x11x22
14x1x17
14x5x16
30x5x18
19x6x12
28x16x22
13x4x25
29x23x18
1x27x3
12x14x4
10x25x19
15x19x30
11x30x4
11x22x26
13x25x2
17x13x27
11x30x24
15x1x14
17x18x4
26x11x3
16x22x28
13x20x9
1x18x3
25x11x12
20x21x1
22x27x4
8x28x23
7x13x27
17x9x26
27x27x20
11x20x12
26x21x11
29x14x12
27x25x1
28x29x25
21x23x28
5x18x18
19x5x4
7x6x30
27x8x11
12x24x12
16x25x22
26x11x29
25x22x17
15x23x23
17x9x6
30x10x16
21x3x5
18x27x2
28x21x14
16x18x17
4x18x2
9x1x14
9x1x9
5x27x12
8x16x30
3x19x19
16x26x24
1x6x9
15x14x3
11x7x19
8x19x3
17x26x26
6x18x11
19x12x4
29x20x16
20x17x23
6x6x5
20x30x19
18x25x18
2x26x2
3x1x1
14x25x18
3x1x6
11x14x18
17x23x27
25x29x9
6x25x20
20x10x9
17x5x18
29x14x8
14x25x26
10x15x29
23x19x11
22x2x2
4x5x5
13x23x25
19x13x19
20x18x6
30x7x28
26x18x17
29x18x10
30x29x1
12x26x24
18x17x26
29x28x15
3x12x20
24x10x8
30x15x6
28x23x15
14x28x11
10x27x19
14x8x21
24x1x23
1x3x27
6x15x6
8x25x26
13x10x25
6x9x8
10x29x29
26x23x5
14x24x1
25x6x22
17x11x18
1x27x26
18x25x23
20x15x6
2x21x28
2x10x13
12x25x14
2x14x23
30x5x23
29x19x21
29x10x25
14x22x16
17x11x26
12x17x30
8x17x7
20x25x28
20x11x30
15x1x12
13x3x24
16x23x23
27x3x3
26x3x27
18x5x12
12x26x7
19x27x12
20x10x28
30x12x25
3x14x10
21x26x1
24x26x26
7x21x30
3x29x12
29x28x5
5x20x7
27x11x2
15x20x4
16x15x15
19x13x7
7x17x15
27x24x15
9x17x28
20x21x14
14x29x29
23x26x13
27x23x21
18x13x6
26x16x21
18x26x27
9x3x12
30x18x24
12x11x29
5x15x1
1x16x3
14x28x11
2x18x1
19x18x19
18x28x21
2x3x14
22x16x5
28x18x28
24x16x18
7x4x10
19x26x19
24x17x7
25x9x6
25x17x7
20x22x20
3x3x7
23x19x15
21x27x21
1x23x11
9x19x4
22x4x18
6x15x5
15x25x2
23x11x20
27x16x6
27x8x5
10x10x19
22x14x1
7x1x29
8x11x17
27x9x27
28x9x24
17x7x3
26x23x8
7x6x30
25x28x2
1x30x25
3x18x18
28x27x15
14x14x1
10x25x29
18x12x9
20x28x16
26x27x22
8x26x1
21x2x12
25x16x14
21x19x5
12x9x22
16x5x4
5x4x16
25x29x3
4x29x13
15x16x29
8x11x24
30x11x20
17x21x14
12x24x10
10x12x6
3x26x30
15x14x25
20x12x21
13x11x16
15x13x3
5x17x29
6x3x23
9x26x11
30x1x8
14x10x30
18x30x10
13x19x19
16x19x17
28x7x10
28x29x4
3x21x10
4x28x24
7x28x9
2x4x9
25x27x13
6x12x15
4x18x20
20x1x16
5x13x24
11x11x10
12x9x23
1x9x30
17x28x24
9x5x27
21x15x16
17x4x14
8x14x4
13x10x7
17x12x14
9x19x19
2x7x21
8x24x23
19x5x12
11x23x21
13x3x1
5x27x15
12x25x25
13x21x16
9x17x11
1x15x21
4x26x17
11x5x15
23x10x15
12x17x21
27x15x1
4x29x14
5x24x25
10x10x12
18x12x9
11x24x23
24x23x3
28x12x15
29x9x14
11x25x8
5x12x2
26x26x29
9x21x2
8x8x25
1x16x30
17x29x20
9x22x13
7x18x16
3x3x23
26x25x30
15x23x24
20x23x5
20x16x10
23x7x8
20x18x26
8x27x6
30x23x23
7x7x24
21x11x15
1x30x25
26x27x22
30x28x13
20x13x13
3x1x15
16x7x1
7x25x15
12x7x18
16x9x23
16x12x18
29x5x2
17x7x7
21x17x5
9x9x17
26x16x10
29x29x23
17x26x10
5x19x17
1x10x1
14x21x20
13x6x4
13x13x3
23x4x18
4x16x3
16x30x11
2x11x2
15x30x15
20x30x22
18x12x16
23x5x16
6x14x15
9x4x11
30x23x21
20x7x12
7x18x6
15x6x5
18x22x19
16x10x22
26x20x25
9x25x25
29x21x10
9x21x24
7x18x21
14x3x15
18x19x19
4x29x17
14x10x9
2x26x14
13x3x24
4x4x17
6x27x24
2x18x3
14x25x2
30x14x17
11x6x14
4x10x18
15x4x2
27x7x10
13x24x1
7x12x6
25x22x26
19x2x18
23x29x2
2x15x4
12x6x9
16x14x29
9x17x3
21x9x12
23x18x22
10x8x4
29x2x7
19x27x15
4x24x27
25x20x14
8x23x19
1x24x19
6x20x10
15x8x5
18x28x5
17x23x22
9x16x13
30x24x4
26x3x13
12x22x18
29x17x29
26x4x16
15x7x20
9x15x30
12x7x18
28x19x18
11x23x23
24x20x1
20x3x24
1x26x1
14x10x6
5x27x24
13x21x12
20x20x5
6x28x9
11x26x11
26x29x12
21x4x11
20x11x17
22x27x20
19x11x21
2x11x11
13x5x7
12x10x25
21x28x1
15x30x17
28x19x1
4x19x12
11x4x12
4x10x30
11x18x5
22x20x12
3x7x27
20x26x4
13x27x26
23x14x13
4x19x7
26x27x16
20x5x20
18x5x8
19x21x1
22x8x1
29x4x1
24x10x15
24x9x20
10x3x8
29x30x3
2x8x24
16x7x18
2x11x23
23x15x16
21x12x6
24x28x9
6x1x13
14x29x20
27x24x13
16x26x8
5x6x17
21x8x1
28x19x21
1x14x16
18x2x9
29x28x10
22x26x27
18x26x23
22x24x2
28x26x1
27x29x12
30x13x11
1x25x5
13x30x18
3x13x22
22x10x11
2x7x7
18x17x8
9x22x26
30x18x16
10x2x3
7x27x13
3x20x16
9x21x16
1x18x15
21x30x30
4x25x23
3x11x7
5x6x12
27x1x20
13x15x24
23x29x2
13x5x24
22x16x15
28x14x3
29x24x9
2x20x4
30x10x4
23x7x20
22x12x21
3x19x11
4x28x28
5x4x7
28x12x25
2x16x26
23x20x7
5x21x29
9x21x16
9x6x10
9x6x4
24x14x29
28x11x6
10x22x1
21x30x20
13x17x8
2x25x24
19x21x3
28x8x14
6x29x28
27x10x28
30x11x12
17x2x10
14x19x17
2x11x4
26x1x2
13x4x4
23x20x18
2x17x21
28x7x15
3x3x27
24x17x30
28x28x20
21x5x29
13x12x19
24x29x29
19x10x6
19x12x14
21x4x17
27x16x1
4x17x30
23x23x18
23x15x27
26x2x11
12x8x8
15x23x26
30x17x15
17x17x15
24x4x30
9x9x10
14x25x20
25x11x19
20x7x1
9x21x3
7x19x9
10x6x19
26x12x30
21x9x20
15x11x6
30x21x9
10x18x17
22x9x8
8x30x26
28x12x27
17x17x7
11x13x8
5x3x21
24x1x29
1x28x2
18x28x10
8x29x14
26x26x27
17x10x25
22x30x3
27x9x13
21x21x4
30x29x16
22x7x20
24x10x2
16x29x17
28x15x17
19x19x22
9x8x6
26x23x24
25x4x27
16x12x2
11x6x18
19x14x8
9x29x13
23x30x19
10x16x1
4x21x28
23x25x25
19x9x16
30x11x12
24x3x9
28x19x4
18x12x9
7x1x25
28x7x1
24x3x12
30x24x22
27x24x26
9x30x30
29x10x8
4x6x18
10x1x15
10x4x26
23x20x16
6x3x14
30x8x16
25x14x20
11x9x3
15x23x25
8x30x22
22x19x18
25x1x12
27x25x7
25x23x3
13x20x8
5x30x7
18x19x27
20x23x3
1x17x21
21x21x27
13x1x24
7x30x20
21x9x18
23x26x6
22x9x29
17x6x21
28x28x29
19x25x26
9x27x21
5x26x8
11x19x1
10x1x18
29x4x8
21x2x22
14x12x8
+19
View 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
View 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
View File
@@ -0,0 +1 @@
v>v<vvv<<vv^v<v>vv>v<<<^^^^^<<^<vv>^>v^>^>^>^>^><vvvv<^>^<<^><<<^vvvv>^>^><^v^><^<>^^>^vvv^<vv>>^>^^<>><>^>vvv>>^vv>^<><>^<v^>^>^><vv^vv^>><<^><<v>><>^<^>>vvv>v>>>v<<^<><^<v<>v>^^v^^^<^v^^>>><^>^>v<>^<>>^>^^v^><v<v>>><>v<v^v>^v<>>^><v>^<>v^>^<>^v^^^v^^>>vv<<^^><^<vvv>^>^^<^>>^^^^^v^<v>vv<>>v^v<^v^^<><^<^vv^><>><><>v>vvv^vv^^<<><<vvv><<^v^><v<>vvv^<^>vvvv^>^>>^v^<v^vv<^^v<>v>vv^<>><v<<<^v^<<><v<^<^<><^^^>^>>v>^>v^<>v><^<^<v^>^^vv<^^<>v^v^vv<>>>>v^v<>><^^v>vv^^>v^v>v<vv>>v>><v^v^v>vv>^^>^v><<vv^v^^vv<^v><^<<v<v^>vv^^^<v^>v>v^^^>><^^<v^<^>>v><vv<v^^>^^v>>v^^^<^^v>^v>><^<^<>>v<<^^vv>^^^v<^<^<v<v^^vv>^vv^>>v^><v>><<<>^vv^<^<>v^^<<<v<^>^><><v^^>>^^^<^vv<^^^>><^^v>^^v^<v^v^>^^<v>^<^v<^<<<<^<v^>v^<^^<>^^>^><<>>^v><>><^<v><^^^>>vv>^><vv>^^^^^v^vvv><><^<^>v>v^v^>^><><^<^><>v<<vv<^>><>^v^^v>^<<<>^v^>^<<v^vv<>v^<v^^vv><<v^<>>>^<v>vv>v>>>^<^>><vv<>>>>v<v>>>^v>v><>>vvv<^^><<^>^>v<^vvvv<v><vv<><^^^v^^^>v^v<>v<^^v>>><>v<v^>>v><v^>>^^<v<<<^<v<><^^v><<v^><<<<^vv<^<>^><vv<<<<^>>>^v>^v>vv>^v<>v>v<v><^>>v>>^>^><^<v^v^>^v<><><^^>^<vvvv^^<>^^^>vv^v^v>^v^^v^^v><v^<^<>><^<v>v>>vv<<v>>vvvv<vv><>>^v^>^>>v^v^<<<vv<><v<<>>>^v<<v>^^vv^><>v>^>v><<<<<<<^>^^v^<<^^>>vvv^<><>><>^^v<<vv><^^v<^^><vv>v^>>>v^v><v^v<^>v^><>v<<>v>^^v><<<<><^v^v>>^<>^<<>^<v<<>>v<<>><^<<<<^v>^<^v>v>vv<v<v<<>^>v<^<<>v^<vvvv^>v>><<v><v<>v>v>>v^vvv^^>>>v^<^<<^^<<<><v>v^<<v<<<>v<^^<><v<v^^<v>^>v>>v<>^>^^>>^v<<>v^^^>>>^vv<^v<v>^>v>^><>v^^<>^^v^^vv^<^>^<<>><<^>^v>>><<<vvvv><<><v<^v^v<vvv^<><<^<vv><v^v^v^>v>v^<vvv^><^><^<vv><>>v^>^^^<>><v^<^^^<>v<<v<^v>>>^>>v^><<>vvv><^>>v><v><>v>>^>v><<><<>^<>^^^vv><v^>v^^>>^>^<^v<v<^^<^vvvv>v<v>^>v^>^><^<vvvv><^><><<v<>v<v^><^<v^>^v^^<<<<^><^^<^><>>^v<<^<<^vv>v>>v<^<^vv>><v<vv>v<v<v>^v<>^>v<>^v<<<v>>^^v>>><vvv>v^>^v^v>^^^v<vvvv>><^>vvv^<vv^^vv><<<>v<>v>^<vvv^<^<v<v<^vv^^>>vv^<^^v^><^^^^^v<^<v<^>>>vv^v^>^<v>^<><v^<^v>>><^v^<<v<<v<>v>^v<v^v>>^^v<<v<v<<>>>vv>>^v>>^<<<<^><<<><^^>>v<>^vvvv>v^^^>^^^>^<vvvv><^^v<v<>v<^v^v<<v^^^v^<v<^v>v^^<>^>^<^v>vv<v^vv<^<<>v><<^><><^^v<<><^^><>^v>^<><<^<^^<<>vv<>^^<<^>><<<>>vvv>^>v^^v^><<^>v>^>^<^<<>v<^>vv^v^v<>vv<<v>vv<vv><^>v^<>^vv^v^<v<^>>>>v^v><^<><<>vv^<vvv^>>vvv^>v>>><^^vv<vvvv>v<^<^>>^^>^^vv>>><^v<>^v^<<>v^^^<v>^>>^<^<v>>^v<^^^<v>^v>^>>v<vv>>^<v^<<>>^>>><v>v^<<^<v>>^<<^^<>v<^v<^<>v^v>^^v<vvvv>^vv>vvv>v^<^>><v^^vv<<<^>vvvv<>>^^<>v^<><>v<^<>v<>^>v<>vv<v^v>>v<v<^<v^^v^vv^vvv><^^>v>><>>^<^^<>>^>^<v^>>vvv^v><v>>^>^>v><><<><vv^v>v<>^v<^vv^^^<>^^<<^^^v<>><v<^<^<^<^^><v^v<^>v^>vvvv>^^v^>^<v<^^^>>^<<vv^<><><^^^^<<>^<><v>vv^<><^>^^<>v^<>>>v><>vvvvv>v>v^^>^<<vvvv<>vv>>v<<^<>^^^v^<><>>^<<<v<v<>>>><><v>v<v<>>^>^^^^vv^^<<><^^<<vv<^<>v>vv<v<><<<^<<v<<<<>v<>>^<^>^>><v>v>><^^<>><<<><<><v^^v<<><^<^v<v^><^^v<<>><<<<^>v^<v>><v^><v<vvv>v^v^<v><<>>v<><<v>^<>><>>^><>v^v>v<<>v<>v^^><<>>>v<<>>>>^>v>><v<<>>>vv>v>^<^^^<>v<v>^<^^v^vvv^>vv>^<v><vvvv>^<<>vvv<<<vv>^^<^>^>>v>v<<<<<>^^vv^>>v>^<^<v^v^>^v>>v>^v<><>^<^>v>v<<<^^^v>^<<<>vvv^v^^>^>>^>v>v<>^^><>>v>^>v<<<^^^v^<v^vv>><><^<^<><vvv<v^>>^v>vv<^v<<^vv>v^<<v>v>v>^v^>^v<<^v^vv>v<v>^<<><v^>>v<>><v<<<^v<<>vvv^<vv<vvv<<>^vv^^v><^>v^vv<<v^<<^^^<^<>^^<<>v<><<v>^><>^<><<v<v^^>vv<>^<v<^<vvv>vv>v><^^v<>><^v^v><><>><v<v>vv<>>><v^^v<>><<^>>><^^^vvv<<<vv<<^v<<<>><<vv>>>>v<<<<<vv><><v>v^^<<^vv^<vv<>>vv>^<>^v^^<>^^^vv>v^^<v<><v>v<v>>^v<v<>>^<v^^><>v^^^>v^^v<vv><^>v^v^<>v>v<v<^^>>v<^^vv^v<^^^^vv<<><<^>>^^<<v^^<<^>v^>>^^^><^^>^v^v>^<<v<vv<<<v<^^^>^>>^v<>^<^>v>^>^v^<^^^<^vv<v><^^>>v<v>^>^v^>>>>^v>^^<<^<v^v<^<<v<<^><^^<v^<><v>v^<<v^^<><<>>><vv<<><>^<>>>v<<v^^^v^^<<<vv<<^<^<^vv^<><><<^^<^^>v^>^<v<>>v^v<><<v>^^v>^<^<vvv<v>v^v>>>^^<^<v^>^vv<<<v<<>^><><^<>v>>>v<v^<>v>><^^^v^^^v<^^<vv^^^>v>v<>>^^<><>v>^<v<>^>>>><>v>^v>^vv^v<vv<<^^>><v<>^>^^<v<^>^<vvv>><>^<<>>><<<><>^^<<<v<>v^>v>v<v>^^^>^>^v<<>v>vv>><<<v>^^<v><vv<<v^^>^>>^><^>v<^<^v>><^^>v<vv^^><><>^><<><>v^>v<><^^>><>^<^^v<^<<v>><v><<<^^<<v<^vv^v<>><>>>^>v<vvv^>^<><v^><^<<^vv<^v^v^v<>v^^v>v^<^>^vv^>>><<>v^vv^<>^v^><<v^v<v>v^<><>>v^v^><>v^vvv^^^<<^<<v<<v<^vv^>>v^v>^^<v<>><>v>>v^<>^>v>^>><<>v^v><^v>v>>><v<v><^<^^>vv<v><^>^<^>^^v><><v<^^v<<><^<<v^<v<<><^^vvv^v>^>^<>>vv>v^^v^^vv<^^>><v^^vv><^v>v^<<v<^v>vvv<>>^v><<>^v<<<>^><^vv><<^^<v^>v<<v>^vv<>^v>>>><<<<^^<^v>^<^^<^<^^>>^^v>^^^^v^^^<<>^^vv<<v^^><v>><^<<><>^>v<>>v^^^>^v^^v^<v^v>v>>>>>^v>^>^^<vvv^^<v^<<<v<<>v>><^^^v<<^^<v>>^<^<^><^<<v^v><<vv<^<>>v>v>^v<><<v>^>vv^v<v>v><^<v>><>^<vv<v^^^^v<^^>><<^^>v>v>^^^<>v>^v^^>vv^vv<^^>><>^>^<>v>><>^v<<v>v>^><^^^v^<vv><<^v^>v^>vv>v^<>v><vv><^v>v<><v^v^v<^v<>^v<v^<<><<v>>^v><v>^^<>vvv^>^<<v^>><^>><^<>^v<v<v<^vvv<><<^v^<v>><<<v>^<^<v>v>^vv^v>v<^^vv<<vvv^<v>><>vv^>v<<>v<vvvv>>v>^^>>><<<^>^vv>><v>^^^>v<^vv<>v<<<v<<<<v>>>>^<^^^^>v<^^<><v>v>v<v^>vv^>v>v<^>^v^<>v>>vvv>^^><^vvv>><>>>^<<^<v<>>>v^^><v<v>>^><>v<^^v^<<v><>^<>>><^v^v>>>^vvvv^<><<<v<^>>v>^v^<v<v<<^<<v^vv^v>v<v<>>v<v^<<<><v^>><^<<^>^^><v>v<^v^<^>v>^<<v>v^<>v^<>vv^<>^>^>v^>^vv<>^^<<>>v<>^v<><v^><><<<vv>v>v^>vv^><<<<v>^v<><>^^<vv>v^^v^^^<v<^^><v^v<>><v<vv>^<>>><vv<^v<<>>^><>>v<v^v^>>>v<<>v<<<<<<<^v<<^^^v<^v<>v^^<<<^<>>v^vv<v>^<^^<^^<<^>vv><^<^^v<<<^><^v<^><>v<vv^>^v^^>>><<vv^^v><^<<^<>>^>>^<<<<v^vv<>>>v>^v>><>v>>v>><>v>><^Line truncated
+20
View 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
View 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
View 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
View 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;
}
File diff suppressed because it is too large. Load diff
+80
View 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;
}
File diff suppressed because it is too large. Load diff
+102
View 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;
}
File diff suppressed because it is too large. Load diff
+83
View 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;
}
File diff suppressed because it is too large. Load diff
+83
View 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
View 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
View File
@@ -0,0 +1,6 @@
vJrwpWtwJgWrhcsFMMfFFhFp
jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL
PmmdzqPrVvPwwTWBwg
wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn
ttgJtRGJQctTZtZT
CrZsJsPPZsGzwwsLwLmpwMDw
+135
View 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
View 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
View File
@@ -0,0 +1,6 @@
vJrwpWtwJgWrhcsFMMfFFhFp
jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL
PmmdzqPrVvPwwTWBwg
wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn
ttgJtRGJQctTZtZT
CrZsJsPPZsGzwwsLwLmpwMDw
+95
View 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
View File
@@ -0,0 +1,1000 @@
7-50,8-33
76-83,77-87
68-73,55-68
13-37,12-25
7-7,12-96
9-22,10-12
52-77,12-52
43-83,44-60
33-90,78-89
10-10,9-50
6-89,7-98
10-11,11-60
8-75,7-94
23-23,23-23
65-78,23-64
5-97,96-96
93-96,76-80
15-47,14-16
16-17,17-43
28-39,8-41
40-70,40-41
32-89,57-88
39-76,40-64
13-96,55-69
56-80,57-81
57-82,58-82
57-57,44-58
33-54,33-53
9-91,91-96
58-68,33-57
6-65,4-5
2-88,3-88
23-69,23-98
1-99,2-60
15-70,15-71
45-67,2-68
37-64,5-59
3-79,2-79
38-83,38-83
4-4,5-98
43-74,43-75
4-99,2-5
31-42,42-42
24-28,27-30
2-80,2-81
33-66,30-62
80-93,80-80
30-81,81-93
17-96,16-84
48-86,47-62
62-74,61-74
8-37,37-67
22-98,21-98
29-29,29-58
27-85,5-85
95-98,1-96
99-99,24-97
19-22,21-83
34-82,82-83
13-76,31-92
44-86,77-85
15-47,15-47
25-54,26-55
20-38,3-37
3-15,4-74
78-78,19-78
15-25,18-24
71-87,86-86
9-99,99-99
25-68,24-24
42-89,31-42
47-67,48-74
34-61,20-34
2-80,1-3
5-6,5-74
4-67,5-53
20-20,21-88
7-48,5-8
14-62,14-14
49-79,42-78
23-28,22-22
21-87,21-86
57-95,57-95
36-53,12-77
12-46,13-57
52-84,85-88
41-73,73-73
84-94,64-95
93-94,12-94
1-99,1-99
6-6,6-70
3-99,7-98
96-99,3-97
18-84,17-85
56-99,8-57
7-83,8-84
51-82,50-83
7-77,7-8
58-76,59-77
13-79,14-79
7-7,8-85
15-17,16-28
17-79,16-79
74-74,1-73
28-28,28-65
59-62,59-66
48-69,46-47
14-23,3-24
35-83,83-98
55-84,55-83
10-20,7-19
13-88,21-88
62-62,62-85
32-32,33-33
49-86,15-90
2-3,2-38
1-1,2-93
40-52,22-41
41-82,82-92
42-79,41-59
53-99,52-99
52-68,6-55
30-65,31-65
56-90,8-91
83-93,17-82
5-84,4-70
56-56,56-97
5-44,4-81
85-91,90-90
23-51,22-22
12-15,14-68
28-28,28-84
1-6,10-32
5-86,50-88
8-20,19-19
62-80,62-81
50-77,76-97
3-97,3-96
14-77,37-39
82-84,29-82
6-31,1-24
62-71,46-61
13-13,11-15
3-9,4-17
32-97,11-98
89-90,23-89
51-59,48-60
53-74,53-74
30-30,29-71
8-70,8-9
65-65,65-66
34-85,96-99
36-40,36-36
42-42,42-72
2-43,33-69
4-31,30-77
69-84,70-92
26-95,27-98
3-3,6-89
34-88,51-79
63-63,3-63
8-8,8-61
30-87,13-84
38-38,37-50
24-87,10-93
6-88,3-4
19-70,19-69
36-92,31-37
17-94,14-18
56-61,49-74
30-62,29-62
20-25,21-87
12-76,12-12
94-96,54-95
1-99,4-77
40-40,16-41
72-90,14-73
8-93,7-92
10-95,41-98
29-36,19-51
79-93,70-94
11-18,17-95
3-97,2-98
52-67,53-53
13-46,12-45
5-68,4-94
16-73,15-15
11-40,33-33
76-83,82-85
28-35,40-92
53-93,12-83
2-61,58-60
4-51,4-4
18-43,17-56
93-93,14-93
95-98,16-96
32-39,36-41
9-73,6-9
55-55,36-56
20-98,20-99
2-58,18-99
5-6,9-75
21-90,77-82
88-99,7-89
21-44,14-38
82-97,69-82
12-12,13-87
46-81,98-99
15-82,14-83
12-51,11-12
3-94,4-94
9-33,10-86
20-93,19-50
27-84,53-83
79-80,3-79
73-90,78-89
96-96,93-98
93-98,54-93
33-82,6-33
1-9,9-27
14-14,15-63
4-94,5-95
16-90,15-90
47-78,47-79
4-75,3-75
3-96,96-99
38-66,19-92
16-56,12-14
37-47,46-47
4-70,1-70
26-58,48-72
38-97,43-93
76-84,76-78
13-55,5-14
66-78,62-92
42-87,41-86
3-21,4-62
10-63,9-63
9-67,8-67
10-92,92-92
96-98,79-95
19-53,99-99
4-64,4-63
46-60,14-59
2-90,1-89
16-25,9-11
8-98,8-97
3-92,3-91
65-87,64-88
4-67,3-4
66-88,78-87
14-82,76-81
12-85,11-84
30-53,12-52
53-60,7-61
73-73,5-73
55-55,55-57
14-16,10-15
23-29,22-22
64-82,38-63
38-68,69-69
9-79,10-56
43-87,42-88
30-63,31-62
25-25,24-83
31-31,31-75
2-96,17-99
31-37,35-36
3-42,2-43
82-97,19-82
38-94,95-97
1-87,88-99
47-87,46-84
4-54,53-55
80-96,3-81
5-5,4-98
35-50,24-36
7-78,12-94
45-70,69-73
32-32,32-63
61-71,39-72
35-35,34-35
80-81,22-82
34-62,5-34
19-21,18-19
24-87,25-87
34-97,34-98
5-91,64-92
19-49,19-98
27-50,49-51
10-70,69-71
10-66,66-66
66-99,65-66
3-33,32-53
23-32,8-34
90-91,37-90
41-77,53-76
57-57,30-57
35-37,36-48
46-86,46-67
60-83,60-61
15-21,35-56
60-91,60-91
12-30,3-29
89-90,82-92
24-53,25-53
13-60,14-61
44-45,41-48
24-94,93-94
28-59,60-85
94-98,66-93
11-94,46-93
89-93,44-89
72-93,30-72
22-40,23-35
14-94,15-97
51-86,48-76
90-90,66-91
58-74,10-71
27-34,36-42
1-96,96-97
25-94,24-24
9-28,1-10
14-15,15-92
5-26,25-25
98-99,32-98
12-71,11-11
77-81,80-96
30-66,40-65
26-54,33-53
17-78,18-18
9-94,9-10
87-95,37-88
15-93,86-92
30-82,29-82
58-93,57-71
20-75,60-67
1-89,88-88
19-95,19-94
13-95,12-14
34-67,33-67
35-97,31-35
54-99,54-98
6-92,18-36
31-59,30-30
1-75,74-81
44-47,45-45
26-75,3-26
35-36,36-71
7-7,8-29
32-88,33-74
11-66,47-65
29-93,28-94
79-85,20-78
8-60,52-60
39-41,40-80
4-90,6-90
49-86,87-87
8-8,9-99
7-59,10-92
30-93,11-30
16-31,30-30
33-62,33-33
10-25,10-24
15-59,40-85
16-94,94-95
1-2,1-99
77-91,54-78
10-76,34-72
2-90,2-89
26-54,23-58
3-82,2-99
20-65,21-21
42-67,31-43
18-51,3-19
9-73,52-72
19-40,18-41
53-66,65-72
3-99,76-97
73-73,15-73
11-15,11-11
20-71,20-72
60-74,54-75
6-91,8-90
35-52,35-53
17-94,96-96
8-84,30-65
21-82,16-22
84-89,43-90
41-81,41-80
39-48,38-94
13-59,13-60
39-40,40-86
11-11,10-90
76-76,68-76
26-93,25-27
78-94,68-77
88-95,7-88
3-20,19-74
88-93,25-65
6-6,6-51
12-15,22-97
18-22,18-19
65-84,65-84
37-94,34-35
8-28,7-36
53-83,53-55
3-99,4-79
2-43,31-43
52-68,52-84
12-53,11-11
69-74,64-75
4-5,5-98
11-47,12-21
61-87,88-89
3-3,4-98
24-80,83-86
2-55,1-54
92-92,46-92
14-26,14-27
3-57,1-4
57-64,56-92
78-78,11-78
48-48,49-90
79-80,53-80
7-53,8-47
48-81,47-75
28-88,27-87
12-66,12-66
29-92,37-92
10-99,98-99
58-72,57-73
24-78,77-83
1-24,23-83
30-57,57-82
39-72,40-46
8-85,7-86
24-43,24-40
1-98,1-99
35-79,35-80
54-68,67-76
6-89,4-90
99-99,13-69
5-5,6-42
3-88,27-89
91-91,2-92
32-69,34-68
53-79,53-85
21-22,22-88
10-69,7-11
3-81,9-68
7-42,3-86
52-58,57-69
44-74,42-74
3-22,4-18
20-62,62-92
84-87,20-85
3-69,3-3
40-48,47-67
9-9,8-99
3-92,2-10
20-20,18-20
5-93,7-93
52-76,15-77
14-87,14-88
43-46,44-49
2-3,6-92
28-66,24-82
2-88,3-87
43-87,42-92
2-3,3-95
45-49,44-50
30-83,29-82
24-81,25-57
76-77,77-77
18-85,4-90
57-57,19-57
9-99,3-10
45-50,44-50
3-99,2-79
38-61,41-62
63-87,64-87
1-86,98-98
51-58,50-54
31-41,31-31
20-85,10-19
8-97,8-8
16-64,64-89
1-4,3-92
12-68,13-69
45-46,46-90
84-98,53-84
32-49,46-48
55-93,55-92
3-4,6-21
6-99,3-7
52-90,19-88
7-7,8-85
53-95,53-53
69-87,68-88
33-34,15-34
22-38,4-39
67-83,68-68
52-89,53-68
30-85,53-84
26-94,26-95
11-37,11-96
86-92,17-93
33-78,33-78
9-81,80-80
46-53,53-53
44-63,62-98
1-78,1-78
31-61,16-29
16-88,16-96
9-51,9-50
34-53,35-54
18-98,18-18
31-66,6-16
28-35,36-52
98-99,60-97
25-35,25-25
60-90,84-89
13-15,1-21
2-23,2-24
2-91,90-93
25-32,31-80
55-62,56-63
24-43,42-91
63-82,62-84
5-9,31-87
47-63,48-76
62-88,62-87
26-73,26-72
25-41,26-42
10-77,76-76
82-87,2-83
1-96,1-97
9-56,18-55
2-93,3-92
58-94,62-97
71-97,12-69
15-91,90-90
49-60,50-60
73-84,83-83
57-91,10-58
12-70,11-69
3-53,52-67
13-94,94-96
90-92,2-68
4-74,74-82
16-95,20-97
17-30,17-31
41-50,5-28
18-34,17-98
37-66,15-99
2-43,1-1
1-58,38-70
5-7,6-24
38-54,54-63
6-20,5-7
72-93,83-90
89-90,34-89
8-18,7-14
1-54,2-53
45-87,45-46
6-24,5-5
5-81,1-3
4-5,4-97
38-38,38-70
4-91,5-98
52-69,51-53
18-45,18-44
99-99,4-99
32-93,35-93
25-95,15-30
35-38,34-75
25-29,26-64
30-51,30-52
36-37,37-40
14-81,13-15
19-85,18-85
15-88,16-16
21-96,22-95
29-31,30-68
22-85,22-48
19-84,18-79
63-63,24-64
51-79,51-80
21-38,37-44
19-72,4-18
30-95,30-94
1-88,89-98
4-5,4-83
95-97,74-95
2-83,83-83
89-94,93-98
27-93,19-28
43-43,44-88
86-89,87-87
1-3,5-66
98-99,59-97
4-80,5-21
5-5,4-85
15-82,16-97
49-50,48-49
8-89,89-90
14-15,15-25
42-48,47-49
9-48,8-10
21-84,21-83
97-99,1-97
22-90,90-95
18-73,72-76
87-91,68-80
21-22,22-44
5-91,90-97
25-97,96-98
8-22,1-7
4-77,4-30
43-43,44-64
43-43,43-88
39-56,40-57
15-90,16-71
25-78,85-97
27-78,26-79
61-70,66-67
8-94,96-98
11-16,30-89
9-55,9-54
53-92,53-54
1-98,1-99
29-30,31-76
81-83,27-80
75-85,75-85
18-94,11-12
2-11,11-93
1-4,3-84
2-62,1-61
2-96,2-95
1-87,86-88
71-78,75-75
96-96,6-97
6-8,8-44
64-86,85-99
3-11,9-11
31-92,14-92
8-96,14-97
6-94,5-93
5-67,5-66
10-14,13-92
14-74,13-73
21-96,96-97
56-66,62-65
7-77,7-77
88-92,18-73
9-63,19-93
1-84,18-84
12-85,9-12
28-28,29-94
18-37,17-36
20-93,93-94
33-52,4-60
35-93,65-82
27-27,27-67
22-92,22-77
45-50,45-64
8-99,8-98
1-1,2-90
4-62,5-63
22-44,4-45
92-94,14-95
3-95,39-94
29-96,95-95
21-96,21-95
65-71,66-91
88-94,58-89
13-84,1-83
13-87,12-86
29-48,28-36
6-90,6-89
37-70,36-38
20-79,21-80
32-89,30-89
8-76,8-8
52-74,51-75
6-89,5-89
59-77,60-76
35-83,35-35
52-78,49-98
39-88,22-35
27-32,27-27
13-50,12-13
61-61,61-61
13-85,12-14
17-25,26-95
57-71,41-73
50-76,49-49
87-87,18-88
95-95,41-96
53-54,52-53
6-44,5-98
1-88,88-93
13-29,29-81
9-70,3-6
92-97,41-92
14-48,3-5
2-5,3-20
39-83,55-83
83-83,8-83
14-52,2-15
7-64,8-63
50-76,50-77
1-78,1-77
3-80,2-2
96-96,47-96
99-99,65-99
52-74,9-53
25-53,25-54
18-18,18-73
47-52,16-48
83-88,83-88
3-7,6-75
8-93,9-76
57-57,30-59
61-61,62-96
73-88,73-88
17-41,11-40
49-49,48-69
1-62,1-54
15-26,15-45
6-56,5-5
4-99,2-3
15-89,88-93
22-22,17-22
12-85,12-12
89-99,62-90
53-95,53-95
4-64,10-74
6-42,4-6
11-41,20-22
49-50,48-49
11-85,12-84
32-32,26-31
40-67,8-39
17-17,16-93
12-54,13-55
43-44,43-43
33-35,34-93
2-8,7-64
30-91,31-91
70-70,15-74
36-36,36-80
23-23,3-24
18-40,25-40
36-99,35-45
45-83,83-84
90-90,9-91
24-25,23-23
12-91,11-90
30-37,30-38
24-94,25-98
30-67,29-29
4-50,8-51
63-95,14-85
14-14,15-32
2-3,2-86
27-41,26-42
6-86,86-86
34-70,34-69
89-97,2-90
59-75,59-74
58-94,58-93
6-75,2-75
44-73,43-45
50-61,50-70
6-92,7-7
34-88,35-92
2-96,97-99
10-91,10-91
1-94,2-23
21-40,21-39
19-87,87-95
6-75,2-18
22-72,15-73
9-96,42-96
16-16,16-87
27-84,26-83
94-97,2-94
45-58,56-56
10-16,22-71
34-55,43-78
94-98,9-99
1-90,89-95
1-84,29-85
13-70,70-71
58-86,4-87
1-41,41-55
36-71,37-72
65-68,45-69
30-30,31-31
35-69,35-68
58-94,58-95
10-94,93-98
53-94,23-54
47-51,48-48
7-86,7-7
28-44,23-29
7-73,6-7
5-88,5-88
10-92,9-9
18-71,17-72
7-16,15-78
41-42,42-78
9-32,8-96
51-52,32-52
24-76,23-87
2-99,2-2
95-95,1-95
42-92,92-92
21-85,88-93
75-75,1-75
70-71,3-72
39-87,32-42
1-1,3-85
55-57,56-70
16-39,15-16
25-26,26-87
14-79,33-73
53-64,14-53
96-99,2-97
32-91,33-95
85-92,25-86
4-96,1-3
69-98,51-69
24-76,75-75
60-93,68-85
51-51,52-90
25-30,30-34
10-90,11-89
1-96,1-97
42-61,42-62
30-71,29-31
26-35,17-36
7-84,7-83
18-25,18-24
9-86,21-87
3-27,26-51
56-97,55-56
47-74,48-96
5-35,6-92
35-70,27-37
2-2,2-90
18-64,18-63
1-3,3-78
14-36,13-42
12-53,19-58
55-91,56-62
14-24,23-64
9-32,33-86
40-64,40-63
25-92,25-92
49-51,55-69
13-46,13-45
46-75,45-76
2-77,2-76
21-88,3-96
7-12,12-92
46-91,45-92
7-78,57-79
2-2,1-97
78-87,8-79
28-75,27-74
5-81,80-83
30-63,29-64
69-80,32-70
2-78,1-79
13-15,14-74
79-84,83-84
68-69,11-69
9-43,9-44
92-99,92-92
90-97,35-90
13-68,13-13
3-87,1-3
47-52,48-53
27-94,8-28
46-93,44-52
8-56,8-95
50-57,44-58
4-18,2-2
3-77,76-76
17-17,18-83
2-93,20-23
94-94,5-95
73-82,3-74
31-49,48-81
40-43,9-41
74-74,74-85
10-95,3-95
14-22,21-78
2-96,1-4
26-66,11-66
48-48,6-49
12-86,85-94
81-83,80-83
3-29,30-77
55-90,47-91
5-83,1-6
7-19,6-6
36-39,37-43
11-60,17-45
8-83,3-21
11-11,11-79
25-31,35-97
30-46,46-47
24-24,25-78
6-96,5-7
73-83,13-84
15-99,14-82
84-98,84-99
7-61,42-61
2-37,37-37
9-9,9-34
40-42,41-85
11-33,10-32
2-9,8-64
92-92,86-93
7-38,7-37
16-92,2-17
2-3,3-50
1-95,2-96
38-87,67-87
5-21,21-22
38-47,24-70
4-44,3-81
84-85,1-84
22-99,21-96
70-72,59-72
15-96,16-96
6-76,6-6
83-83,78-83
26-37,25-25
9-43,3-43
81-81,80-80
47-51,49-53
97-97,29-98
23-47,46-46
28-84,29-85
1-94,1-95
14-72,13-15
61-95,4-78
9-89,9-9
10-12,11-90
50-54,19-50
97-98,9-98
15-94,16-28
77-77,25-76
20-74,19-28
1-99,2-41
29-79,79-79
30-88,30-87
24-98,75-91
15-65,14-65
67-77,67-78
5-86,2-4
3-81,4-82
40-90,39-91
19-51,19-19
48-67,42-67
17-60,24-47
27-81,18-82
48-87,66-87
35-96,34-89
16-23,22-50
7-85,85-85
7-43,6-42
26-75,27-27
6-10,9-64
18-38,14-39
45-85,84-89
30-98,98-98
84-93,14-85
8-57,8-56
24-91,23-92
79-93,79-94
37-60,16-37
2-81,5-80
80-92,81-99
5-40,5-40
10-44,44-48
5-15,14-42
8-68,2-6
30-78,53-77
81-88,29-80
98-99,6-98
42-99,98-98
63-63,17-63
41-98,41-97
1-99,2-98
+6
View 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
View 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
View File
@@ -0,0 +1,1000 @@
7-50,8-33
76-83,77-87
68-73,55-68
13-37,12-25
7-7,12-96
9-22,10-12
52-77,12-52
43-83,44-60
33-90,78-89
10-10,9-50
6-89,7-98
10-11,11-60
8-75,7-94
23-23,23-23
65-78,23-64
5-97,96-96
93-96,76-80
15-47,14-16
16-17,17-43
28-39,8-41
40-70,40-41
32-89,57-88
39-76,40-64
13-96,55-69
56-80,57-81
57-82,58-82
57-57,44-58
33-54,33-53
9-91,91-96
58-68,33-57
6-65,4-5
2-88,3-88
23-69,23-98
1-99,2-60
15-70,15-71
45-67,2-68
37-64,5-59
3-79,2-79
38-83,38-83
4-4,5-98
43-74,43-75
4-99,2-5
31-42,42-42
24-28,27-30
2-80,2-81
33-66,30-62
80-93,80-80
30-81,81-93
17-96,16-84
48-86,47-62
62-74,61-74
8-37,37-67
22-98,21-98
29-29,29-58
27-85,5-85
95-98,1-96
99-99,24-97
19-22,21-83
34-82,82-83
13-76,31-92
44-86,77-85
15-47,15-47
25-54,26-55
20-38,3-37
3-15,4-74
78-78,19-78
15-25,18-24
71-87,86-86
9-99,99-99
25-68,24-24
42-89,31-42
47-67,48-74
34-61,20-34
2-80,1-3
5-6,5-74
4-67,5-53
20-20,21-88
7-48,5-8
14-62,14-14
49-79,42-78
23-28,22-22
21-87,21-86
57-95,57-95
36-53,12-77
12-46,13-57
52-84,85-88
41-73,73-73
84-94,64-95
93-94,12-94
1-99,1-99
6-6,6-70
3-99,7-98
96-99,3-97
18-84,17-85
56-99,8-57
7-83,8-84
51-82,50-83
7-77,7-8
58-76,59-77
13-79,14-79
7-7,8-85
15-17,16-28
17-79,16-79
74-74,1-73
28-28,28-65
59-62,59-66
48-69,46-47
14-23,3-24
35-83,83-98
55-84,55-83
10-20,7-19
13-88,21-88
62-62,62-85
32-32,33-33
49-86,15-90
2-3,2-38
1-1,2-93
40-52,22-41
41-82,82-92
42-79,41-59
53-99,52-99
52-68,6-55
30-65,31-65
56-90,8-91
83-93,17-82
5-84,4-70
56-56,56-97
5-44,4-81
85-91,90-90
23-51,22-22
12-15,14-68
28-28,28-84
1-6,10-32
5-86,50-88
8-20,19-19
62-80,62-81
50-77,76-97
3-97,3-96
14-77,37-39
82-84,29-82
6-31,1-24
62-71,46-61
13-13,11-15
3-9,4-17
32-97,11-98
89-90,23-89
51-59,48-60
53-74,53-74
30-30,29-71
8-70,8-9
65-65,65-66
34-85,96-99
36-40,36-36
42-42,42-72
2-43,33-69
4-31,30-77
69-84,70-92
26-95,27-98
3-3,6-89
34-88,51-79
63-63,3-63
8-8,8-61
30-87,13-84
38-38,37-50
24-87,10-93
6-88,3-4
19-70,19-69
36-92,31-37
17-94,14-18
56-61,49-74
30-62,29-62
20-25,21-87
12-76,12-12
94-96,54-95
1-99,4-77
40-40,16-41
72-90,14-73
8-93,7-92
10-95,41-98
29-36,19-51
79-93,70-94
11-18,17-95
3-97,2-98
52-67,53-53
13-46,12-45
5-68,4-94
16-73,15-15
11-40,33-33
76-83,82-85
28-35,40-92
53-93,12-83
2-61,58-60
4-51,4-4
18-43,17-56
93-93,14-93
95-98,16-96
32-39,36-41
9-73,6-9
55-55,36-56
20-98,20-99
2-58,18-99
5-6,9-75
21-90,77-82
88-99,7-89
21-44,14-38
82-97,69-82
12-12,13-87
46-81,98-99
15-82,14-83
12-51,11-12
3-94,4-94
9-33,10-86
20-93,19-50
27-84,53-83
79-80,3-79
73-90,78-89
96-96,93-98
93-98,54-93
33-82,6-33
1-9,9-27
14-14,15-63
4-94,5-95
16-90,15-90
47-78,47-79
4-75,3-75
3-96,96-99
38-66,19-92
16-56,12-14
37-47,46-47
4-70,1-70
26-58,48-72
38-97,43-93
76-84,76-78
13-55,5-14
66-78,62-92
42-87,41-86
3-21,4-62
10-63,9-63
9-67,8-67
10-92,92-92
96-98,79-95
19-53,99-99
4-64,4-63
46-60,14-59
2-90,1-89
16-25,9-11
8-98,8-97
3-92,3-91
65-87,64-88
4-67,3-4
66-88,78-87
14-82,76-81
12-85,11-84
30-53,12-52
53-60,7-61
73-73,5-73
55-55,55-57
14-16,10-15
23-29,22-22
64-82,38-63
38-68,69-69
9-79,10-56
43-87,42-88
30-63,31-62
25-25,24-83
31-31,31-75
2-96,17-99
31-37,35-36
3-42,2-43
82-97,19-82
38-94,95-97
1-87,88-99
47-87,46-84
4-54,53-55
80-96,3-81
5-5,4-98
35-50,24-36
7-78,12-94
45-70,69-73
32-32,32-63
61-71,39-72
35-35,34-35
80-81,22-82
34-62,5-34
19-21,18-19
24-87,25-87
34-97,34-98
5-91,64-92
19-49,19-98
27-50,49-51
10-70,69-71
10-66,66-66
66-99,65-66
3-33,32-53
23-32,8-34
90-91,37-90
41-77,53-76
57-57,30-57
35-37,36-48
46-86,46-67
60-83,60-61
15-21,35-56
60-91,60-91
12-30,3-29
89-90,82-92
24-53,25-53
13-60,14-61
44-45,41-48
24-94,93-94
28-59,60-85
94-98,66-93
11-94,46-93
89-93,44-89
72-93,30-72
22-40,23-35
14-94,15-97
51-86,48-76
90-90,66-91
58-74,10-71
27-34,36-42
1-96,96-97
25-94,24-24
9-28,1-10
14-15,15-92
5-26,25-25
98-99,32-98
12-71,11-11
77-81,80-96
30-66,40-65
26-54,33-53
17-78,18-18
9-94,9-10
87-95,37-88
15-93,86-92
30-82,29-82
58-93,57-71
20-75,60-67
1-89,88-88
19-95,19-94
13-95,12-14
34-67,33-67
35-97,31-35
54-99,54-98
6-92,18-36
31-59,30-30
1-75,74-81
44-47,45-45
26-75,3-26
35-36,36-71
7-7,8-29
32-88,33-74
11-66,47-65
29-93,28-94
79-85,20-78
8-60,52-60
39-41,40-80
4-90,6-90
49-86,87-87
8-8,9-99
7-59,10-92
30-93,11-30
16-31,30-30
33-62,33-33
10-25,10-24
15-59,40-85
16-94,94-95
1-2,1-99
77-91,54-78
10-76,34-72
2-90,2-89
26-54,23-58
3-82,2-99
20-65,21-21
42-67,31-43
18-51,3-19
9-73,52-72
19-40,18-41
53-66,65-72
3-99,76-97
73-73,15-73
11-15,11-11
20-71,20-72
60-74,54-75
6-91,8-90
35-52,35-53
17-94,96-96
8-84,30-65
21-82,16-22
84-89,43-90
41-81,41-80
39-48,38-94
13-59,13-60
39-40,40-86
11-11,10-90
76-76,68-76
26-93,25-27
78-94,68-77
88-95,7-88
3-20,19-74
88-93,25-65
6-6,6-51
12-15,22-97
18-22,18-19
65-84,65-84
37-94,34-35
8-28,7-36
53-83,53-55
3-99,4-79
2-43,31-43
52-68,52-84
12-53,11-11
69-74,64-75
4-5,5-98
11-47,12-21
61-87,88-89
3-3,4-98
24-80,83-86
2-55,1-54
92-92,46-92
14-26,14-27
3-57,1-4
57-64,56-92
78-78,11-78
48-48,49-90
79-80,53-80
7-53,8-47
48-81,47-75
28-88,27-87
12-66,12-66
29-92,37-92
10-99,98-99
58-72,57-73
24-78,77-83
1-24,23-83
30-57,57-82
39-72,40-46
8-85,7-86
24-43,24-40
1-98,1-99
35-79,35-80
54-68,67-76
6-89,4-90
99-99,13-69
5-5,6-42
3-88,27-89
91-91,2-92
32-69,34-68
53-79,53-85
21-22,22-88
10-69,7-11
3-81,9-68
7-42,3-86
52-58,57-69
44-74,42-74
3-22,4-18
20-62,62-92
84-87,20-85
3-69,3-3
40-48,47-67
9-9,8-99
3-92,2-10
20-20,18-20
5-93,7-93
52-76,15-77
14-87,14-88
43-46,44-49
2-3,6-92
28-66,24-82
2-88,3-87
43-87,42-92
2-3,3-95
45-49,44-50
30-83,29-82
24-81,25-57
76-77,77-77
18-85,4-90
57-57,19-57
9-99,3-10
45-50,44-50
3-99,2-79
38-61,41-62
63-87,64-87
1-86,98-98
51-58,50-54
31-41,31-31
20-85,10-19
8-97,8-8
16-64,64-89
1-4,3-92
12-68,13-69
45-46,46-90
84-98,53-84
32-49,46-48
55-93,55-92
3-4,6-21
6-99,3-7
52-90,19-88
7-7,8-85
53-95,53-53
69-87,68-88
33-34,15-34
22-38,4-39
67-83,68-68
52-89,53-68
30-85,53-84
26-94,26-95
11-37,11-96
86-92,17-93
33-78,33-78
9-81,80-80
46-53,53-53
44-63,62-98
1-78,1-78
31-61,16-29
16-88,16-96
9-51,9-50
34-53,35-54
18-98,18-18
31-66,6-16
28-35,36-52
98-99,60-97
25-35,25-25
60-90,84-89
13-15,1-21
2-23,2-24
2-91,90-93
25-32,31-80
55-62,56-63
24-43,42-91
63-82,62-84
5-9,31-87
47-63,48-76
62-88,62-87
26-73,26-72
25-41,26-42
10-77,76-76
82-87,2-83
1-96,1-97
9-56,18-55
2-93,3-92
58-94,62-97
71-97,12-69
15-91,90-90
49-60,50-60
73-84,83-83
57-91,10-58
12-70,11-69
3-53,52-67
13-94,94-96
90-92,2-68
4-74,74-82
16-95,20-97
17-30,17-31
41-50,5-28
18-34,17-98
37-66,15-99
2-43,1-1
1-58,38-70
5-7,6-24
38-54,54-63
6-20,5-7
72-93,83-90
89-90,34-89
8-18,7-14
1-54,2-53
45-87,45-46
6-24,5-5
5-81,1-3
4-5,4-97
38-38,38-70
4-91,5-98
52-69,51-53
18-45,18-44
99-99,4-99
32-93,35-93
25-95,15-30
35-38,34-75
25-29,26-64
30-51,30-52
36-37,37-40
14-81,13-15
19-85,18-85
15-88,16-16
21-96,22-95
29-31,30-68
22-85,22-48
19-84,18-79
63-63,24-64
51-79,51-80
21-38,37-44
19-72,4-18
30-95,30-94
1-88,89-98
4-5,4-83
95-97,74-95
2-83,83-83
89-94,93-98
27-93,19-28
43-43,44-88
86-89,87-87
1-3,5-66
98-99,59-97
4-80,5-21
5-5,4-85
15-82,16-97
49-50,48-49
8-89,89-90
14-15,15-25
42-48,47-49
9-48,8-10
21-84,21-83
97-99,1-97
22-90,90-95
18-73,72-76
87-91,68-80
21-22,22-44
5-91,90-97
25-97,96-98
8-22,1-7
4-77,4-30
43-43,44-64
43-43,43-88
39-56,40-57
15-90,16-71
25-78,85-97
27-78,26-79
61-70,66-67
8-94,96-98
11-16,30-89
9-55,9-54
53-92,53-54
1-98,1-99
29-30,31-76
81-83,27-80
75-85,75-85
18-94,11-12
2-11,11-93
1-4,3-84
2-62,1-61
2-96,2-95
1-87,86-88
71-78,75-75
96-96,6-97
6-8,8-44
64-86,85-99
3-11,9-11
31-92,14-92
8-96,14-97
6-94,5-93
5-67,5-66
10-14,13-92
14-74,13-73
21-96,96-97
56-66,62-65
7-77,7-77
88-92,18-73
9-63,19-93
1-84,18-84
12-85,9-12
28-28,29-94
18-37,17-36
20-93,93-94
33-52,4-60
35-93,65-82
27-27,27-67
22-92,22-77
45-50,45-64
8-99,8-98
1-1,2-90
4-62,5-63
22-44,4-45
92-94,14-95
3-95,39-94
29-96,95-95
21-96,21-95
65-71,66-91
88-94,58-89
13-84,1-83
13-87,12-86
29-48,28-36
6-90,6-89
37-70,36-38
20-79,21-80
32-89,30-89
8-76,8-8
52-74,51-75
6-89,5-89
59-77,60-76
35-83,35-35
52-78,49-98
39-88,22-35
27-32,27-27
13-50,12-13
61-61,61-61
13-85,12-14
17-25,26-95
57-71,41-73
50-76,49-49
87-87,18-88
95-95,41-96
53-54,52-53
6-44,5-98
1-88,88-93
13-29,29-81
9-70,3-6
92-97,41-92
14-48,3-5
2-5,3-20
39-83,55-83
83-83,8-83
14-52,2-15
7-64,8-63
50-76,50-77
1-78,1-77
3-80,2-2
96-96,47-96
99-99,65-99
52-74,9-53
25-53,25-54
18-18,18-73
47-52,16-48
83-88,83-88
3-7,6-75
8-93,9-76
57-57,30-59
61-61,62-96
73-88,73-88
17-41,11-40
49-49,48-69
1-62,1-54
15-26,15-45
6-56,5-5
4-99,2-3
15-89,88-93
22-22,17-22
12-85,12-12
89-99,62-90
53-95,53-95
4-64,10-74
6-42,4-6
11-41,20-22
49-50,48-49
11-85,12-84
32-32,26-31
40-67,8-39
17-17,16-93
12-54,13-55
43-44,43-43
33-35,34-93
2-8,7-64
30-91,31-91
70-70,15-74
36-36,36-80
23-23,3-24
18-40,25-40
36-99,35-45
45-83,83-84
90-90,9-91
24-25,23-23
12-91,11-90
30-37,30-38
24-94,25-98
30-67,29-29
4-50,8-51
63-95,14-85
14-14,15-32
2-3,2-86
27-41,26-42
6-86,86-86
34-70,34-69
89-97,2-90
59-75,59-74
58-94,58-93
6-75,2-75
44-73,43-45
50-61,50-70
6-92,7-7
34-88,35-92
2-96,97-99
10-91,10-91
1-94,2-23
21-40,21-39
19-87,87-95
6-75,2-18
22-72,15-73
9-96,42-96
16-16,16-87
27-84,26-83
94-97,2-94
45-58,56-56
10-16,22-71
34-55,43-78
94-98,9-99
1-90,89-95
1-84,29-85
13-70,70-71
58-86,4-87
1-41,41-55
36-71,37-72
65-68,45-69
30-30,31-31
35-69,35-68
58-94,58-95
10-94,93-98
53-94,23-54
47-51,48-48
7-86,7-7
28-44,23-29
7-73,6-7
5-88,5-88
10-92,9-9
18-71,17-72
7-16,15-78
41-42,42-78
9-32,8-96
51-52,32-52
24-76,23-87
2-99,2-2
95-95,1-95
42-92,92-92
21-85,88-93
75-75,1-75
70-71,3-72
39-87,32-42
1-1,3-85
55-57,56-70
16-39,15-16
25-26,26-87
14-79,33-73
53-64,14-53
96-99,2-97
32-91,33-95
85-92,25-86
4-96,1-3
69-98,51-69
24-76,75-75
60-93,68-85
51-51,52-90
25-30,30-34
10-90,11-89
1-96,1-97
42-61,42-62
30-71,29-31
26-35,17-36
7-84,7-83
18-25,18-24
9-86,21-87
3-27,26-51
56-97,55-56
47-74,48-96
5-35,6-92
35-70,27-37
2-2,2-90
18-64,18-63
1-3,3-78
14-36,13-42
12-53,19-58
55-91,56-62
14-24,23-64
9-32,33-86
40-64,40-63
25-92,25-92
49-51,55-69
13-46,13-45
46-75,45-76
2-77,2-76
21-88,3-96
7-12,12-92
46-91,45-92
7-78,57-79
2-2,1-97
78-87,8-79
28-75,27-74
5-81,80-83
30-63,29-64
69-80,32-70
2-78,1-79
13-15,14-74
79-84,83-84
68-69,11-69
9-43,9-44
92-99,92-92
90-97,35-90
13-68,13-13
3-87,1-3
47-52,48-53
27-94,8-28
46-93,44-52
8-56,8-95
50-57,44-58
4-18,2-2
3-77,76-76
17-17,18-83
2-93,20-23
94-94,5-95
73-82,3-74
31-49,48-81
40-43,9-41
74-74,74-85
10-95,3-95
14-22,21-78
2-96,1-4
26-66,11-66
48-48,6-49
12-86,85-94
81-83,80-83
3-29,30-77
55-90,47-91
5-83,1-6
7-19,6-6
36-39,37-43
11-60,17-45
8-83,3-21
11-11,11-79
25-31,35-97
30-46,46-47
24-24,25-78
6-96,5-7
73-83,13-84
15-99,14-82
84-98,84-99
7-61,42-61
2-37,37-37
9-9,9-34
40-42,41-85
11-33,10-32
2-9,8-64
92-92,86-93
7-38,7-37
16-92,2-17
2-3,3-50
1-95,2-96
38-87,67-87
5-21,21-22
38-47,24-70
4-44,3-81
84-85,1-84
22-99,21-96
70-72,59-72
15-96,16-96
6-76,6-6
83-83,78-83
26-37,25-25
9-43,3-43
81-81,80-80
47-51,49-53
97-97,29-98
23-47,46-46
28-84,29-85
1-94,1-95
14-72,13-15
61-95,4-78
9-89,9-9
10-12,11-90
50-54,19-50
97-98,9-98
15-94,16-28
77-77,25-76
20-74,19-28
1-99,2-41
29-79,79-79
30-88,30-87
24-98,75-91
15-65,14-65
67-77,67-78
5-86,2-4
3-81,4-82
40-90,39-91
19-51,19-19
48-67,42-67
17-60,24-47
27-81,18-82
48-87,66-87
35-96,34-89
16-23,22-50
7-85,85-85
7-43,6-42
26-75,27-27
6-10,9-64
18-38,14-39
45-85,84-89
30-98,98-98
84-93,14-85
8-57,8-56
24-91,23-92
79-93,79-94
37-60,16-37
2-81,5-80
80-92,81-99
5-40,5-40
10-44,44-48
5-15,14-42
8-68,2-6
30-78,53-77
81-88,29-80
98-99,6-98
42-99,98-98
63-63,17-63
41-98,41-97
1-99,2-98
+6
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View File
@@ -0,0 +1 @@
bhzhtzzsczszsjjjzddfzdfzfjfzfbbnntnzznwzzvfvrrqmrmmdzzfqfhqhsqqpwpgwpppbtbnnstthmhrrsmmvsmmhjmjfmfsfjfnfnjjvcjjszjszjsszbznzbnzndzzmlldsdgdcddmqmfqqlcllbvllztzctzczdzttlmtlthtmhtmhmmszsllvzvdzzzsqzqbqccvfvcffzsfslfsllcglclwlvwvzzdsslggtzzgzdzmzddjljvvztttsgscsstztjztjztzvzwwthtftppnmpmmcpmmjlmjjjsfjsjppgcgwcggzffzwzbbmbrbprpqqpccfncfnffvcffsqqtzqzqwzwvzwwwbjbfbcbfblltnlnhhcthtvvzzfcfgfddlggbbshsggplglqqbrbggsvvzdvvlfvlvpvhhmggbrrnppjfjhffttfpffbdfbfvfqvvtcvvbvnnhbhhglgjgzzghhwrrtntrtwwfdfdmmcmtctftpptllzqllzflfrrgqgvgdvdfdbddprrrgccqvqnnmtmvmffpzzqggfbfnfwwqdqldqqlnqnttnbttrffnmmzwzjjtrjtrtmmqsmqmffqmfqfhhbthbhdhvdhvdvmvdmdhdshsqslldzztvvmzzdcccmbbhfhshrrrpsrrqqmdmmgdmmwdmdjdqqmcmttpgtgwgpwpprbrprhrsrllhsllprlplhppfzpffbhbccwdwbbrpbpvpqqmsspjssmbbmfmrmnrnwwgbwwbpwpjwwhqqgcqcvqccgffzpfftcffqlqjjznnlflhhlcczhzvhzhmzhmhfhnnqznntstwtggqjgjhggsvslltjlttfjjgffjzjwzzqzrrhlhzhbhphmhlmlzmzsmzmccvllgrrpbrbfbjfjttqjttdrdhhggqgddppqgpqgpgtptjptpllwccmwcmcpmcppdrrtstqqczqzvvlsltlddnvdvggcqqblqqsjqjttzhtzzszllqsqfqddqdbqddwqddfzzlczcscfsfpfdpdrpddsggcqchcfcpcssstwstwtggghvhqhzzqssjddwjwbjjsnjnfnwwglwwfnfhnnscsggzgjzzhzmmqfqsqwqrwqqqdtdcttzvvnbngbbcdbdggddnmddgzghhzgghwwbjbttlwlcctlccwwdhhrqrvrjjlglssgttpllwclwwtptwptwtvthtbhbzhbzhhrsrwwwnrwrfwfnwnhhnqqdjqjpqqwdwttzhttcdttvztzltzlzmzddrsdsfdsfftdfffmwffrjrffqrfqfsfqqqgqjggwzzrnnqfnqffdbfbtbbrpbrpbptpwttjmjjzrrhhqppdzdtdjttqwwtddjdzzmgzzhwwwdsdgssprsrgsgbbphhdpdwppnfppdqqwzzpbzzqwqpqsqhqdhqqtwwjnnmvmwvmmwwgjgzjjvcjcvcjcnjcncmmphmmvmwmwpwbbtbffhnhshgssgvgvrrbwbtbddqmqfqvvfqvqdvvdbvdbdcdfdlflmffrwwgmmttrztrrfrqrpqrrzjrjpjdpjprrnhhbhcbbcwwqlwwcssbddfrfjrfjfrjfjvvdmdtdzzlvzlzhzmhmhphchnnfqnffvccfpfbfpfqpprrmttzrzzjzmjmzjmmfvmmrzrqqdllgjlglcchssgllsbllrbrlrjlrrhhfwwsqwsstpssznzcznzqzssvtvtrrqwqvvtssgfsfhssljjnwjnjddjdggclcrrfsfhsstgtdtctfttvvsbvvbtbttcgcssjlslhlpljpppwzwnwdnngmgjjbzznwwdllrrfppshhvdhhldhdbbdbjbdjjrnjjzhzfhhsqqbqgmsbvnjsptlrsszlqfmgprvscphmqztbgtlrqvcgdzcptcqjncrdtfqnghnbmwwmcjgtjlbvqqzslgbbntrdfnvfjvfgcgngndjcspgwmpnsrqzzvzljbzlzzrwflrqqqmhsvqwbmdftnhwwzgqrlhddbbtwvbphljmstcjzvpjqwcnhlvpqvqdgvntgqzqwrlwbwvngwtqgrhznlzcvbwqmwncccjctrdzrmzjsvrmcfpjjcczhbvdfwhqvczggfmrspvprvvthvtqnsphpcsdmbrtbdqljvssdrhwjsrrlzprstpgqcbpmnpdgzgjttwcfrgjnsghmszlclgvmlsjrqfvflbnhwwphtvrnrbhdvdglcvgpzfsjpwwhtlvvdzthsrldfzhnlrblzsjjnwclqsqzgdbflhvpwcrtfbfbjcjttbjpvfgvfcswnqqwshbmqlscdzzwshfqwsvwnwzltbnrmzzhzvtwpzqcgwshpvzgtcmwrtrwctnpzbznnwqphnrgwljtrcwlqmvlndwrdrctztnmswslqmbjcmtlrmcpjvzccqszrnflqnqzttbhqlrhbmqdpscqvfgtdbnwjdcljwcbgbgjfzgrgpwqzqgbnrtpntfthhdbqmswvhnmwmszpghgjjzrbnbbfjblpstdfslmmmqfdcrhblqjqfphnldrvvfpnfrcvprjnqbzbspfpjtgqhnjbhnrwzcjvdbshhqpgrmzqpmjfmqwqvvdbddbsldwzzsrhnhsjjnvljrbwcnjrnjpmrrvfthftgptgtlpbgqffthflgftwcrqcqwqwrmrcmfrcqgmrnqjbscdcgrqlhjzthvzdgjbvpswflqcgsnlmgmvcsttsgmnqdtvwdvrndvfdcvrcwmqlmlhtrvthsndsrmnsfmdmfnpfmfhzjqmtcjzcrnsjdztztvgdtlrmbdmmstbfgpmmzthcslpvgrpgfljfgqlqhldfwvvvdvbzjtdtppbtrnqwsqztjrsjhtfrgmvsdngvsdzjgpwrldqpzdpvhljzpjvttwltdwcrhcbrgrvdrmpwvdwjchqsjfprbgtjtzggvgrgmlvvwqrjfprbbgjjqrtdfnrdffwbswbvqtqtfsrhsgrjhftqldhmcnmsnfflmdrzqdjmbqqgqsttdmtrrvfsjnccnhcpcvqtrzdjzrpwswmjvvgsgwvnmdgqwlctrlhqnsmczbwsjhmtgvdcgsndzlstcwchcztqqbtdwfvlljdvdlzljslgnzpmqvzfcvqhdzvgchffqgfwrnmwqzwgbzblpmvddlvnhglrhdnwzqwztzgjczjpwcjwmpnrnrhncfjfggrbphrjztwtfqmfjlwfhnqfftfghbnvtwgtmdzzrdrtmfrwhrrbhzmcllsgqzwzzqtgdggvzptvtdcpzmtmsfcfbjtzlbdrwhdbtdhhrgggmddnzsvjwgcdcqfppqwphfvlhmgqsznlhmgpnjvcvrwwppnphchgsrhjwjcpjggsrcwrvnllfgrmjltfzwhmbqwpwwzmrtlqcprrqztcgnghcbvzrbfptjmhtdcfhhffdbrswqpnpppnpqwtflrrmqgjzctmmvvvwzllbsfdvpqjtmvpjcpmjztscsgbdznfgcmtjzdqzwqrsvstnnvddcstzqjtnbsnlptpmbmfqmhppgnjrffqrtchgptbmwlwbwbcqqfngpbwtwdmlmdstmqwcwjtbwbbbhghgptmvhfmvqfvpwqzwnbjdhpwlgjgvprdjbnlzhnllssbpvzfzspwsscfpqtpdvtzvqncfrfrgddsdglqvpblmpcczlqfdmwzmgvrljhqtcglcvfhbdwhbttqqrjbqwhsrhrbjwmtqwqddvdggdwfsmnpbpvvgsqnvvrqntwmbzdnqpmmqtbnlsbmslpfmqjtgvbddhwvlvjtlrhqdpfnjwtbhwjwdrpgctbbrdqvbbnvgqwngrhqfvwzmlqtmhfqphnmczlbdpnbmpvwrsjbcnjnvcfgnsvlhpzdgdzgvfbgwdcrswznrggnghzssdwqvvlwftqhbnwdvghhvjlqqmcnqmvbwhrrnsswlwmwbsmpcpdzzgmcmqnzpvjpzqbwcsgdhqtqhcpbtqftvscmntsbdcbrndvlfhprpblzbjcpqhfljtvnvtgvrcgqbsgl
+4
View File
@@ -0,0 +1,4 @@
bvwbjplbgvbhsrlpgdmjqwftvncz
nppdvjthqldpwncqszvftbrmjlhg
nznrnfrfntjfmvfwmzdfjlvtqnbhcprsg
zcfzfwzzqfrljwzlrfnpqdbhtmscgvjw
+121
View 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
View File
@@ -0,0 +1 @@
bhzhtzzsczszsjjjzddfzdfzfjfzfbbnntnzznwzzvfvrrqmrmmdzzfqfhqhsqqpwpgwpppbtbnnstthmhrrsmmvsmmhjmjfmfsfjfnfnjjvcjjszjszjsszbznzbnzndzzmlldsdgdcddmqmfqqlcllbvllztzctzczdzttlmtlthtmhtmhmmszsllvzvdzzzsqzqbqccvfvcffzsfslfsllcglclwlvwvzzdsslggtzzgzdzmzddjljvvztttsgscsstztjztjztzvzwwthtftppnmpmmcpmmjlmjjjsfjsjppgcgwcggzffzwzbbmbrbprpqqpccfncfnffvcffsqqtzqzqwzwvzwwwbjbfbcbfblltnlnhhcthtvvzzfcfgfddlggbbshsggplglqqbrbggsvvzdvvlfvlvpvhhmggbrrnppjfjhffttfpffbdfbfvfqvvtcvvbvnnhbhhglgjgzzghhwrrtntrtwwfdfdmmcmtctftpptllzqllzflfrrgqgvgdvdfdbddprrrgccqvqnnmtmvmffpzzqggfbfnfwwqdqldqqlnqnttnbttrffnmmzwzjjtrjtrtmmqsmqmffqmfqfhhbthbhdhvdhvdvmvdmdhdshsqslldzztvvmzzdcccmbbhfhshrrrpsrrqqmdmmgdmmwdmdjdqqmcmttpgtgwgpwpprbrprhrsrllhsllprlplhppfzpffbhbccwdwbbrpbpvpqqmsspjssmbbmfmrmnrnwwgbwwbpwpjwwhqqgcqcvqccgffzpfftcffqlqjjznnlflhhlcczhzvhzhmzhmhfhnnqznntstwtggqjgjhggsvslltjlttfjjgffjzjwzzqzrrhlhzhbhphmhlmlzmzsmzmccvllgrrpbrbfbjfjttqjttdrdhhggqgddppqgpqgpgtptjptpllwccmwcmcpmcppdrrtstqqczqzvvlsltlddnvdvggcqqblqqsjqjttzhtzzszllqsqfqddqdbqddwqddfzzlczcscfsfpfdpdrpddsggcqchcfcpcssstwstwtggghvhqhzzqssjddwjwbjjsnjnfnwwglwwfnfhnnscsggzgjzzhzmmqfqsqwqrwqqqdtdcttzvvnbngbbcdbdggddnmddgzghhzgghwwbjbttlwlcctlccwwdhhrqrvrjjlglssgttpllwclwwtptwptwtvthtbhbzhbzhhrsrwwwnrwrfwfnwnhhnqqdjqjpqqwdwttzhttcdttvztzltzlzmzddrsdsfdsfftdfffmwffrjrffqrfqfsfqqqgqjggwzzrnnqfnqffdbfbtbbrpbrpbptpwttjmjjzrrhhqppdzdtdjttqwwtddjdzzmgzzhwwwdsdgssprsrgsgbbphhdpdwppnfppdqqwzzpbzzqwqpqsqhqdhqqtwwjnnmvmwvmmwwgjgzjjvcjcvcjcnjcncmmphmmvmwmwpwbbtbffhnhshgssgvgvrrbwbtbddqmqfqvvfqvqdvvdbvdbdcdfdlflmffrwwgmmttrztrrfrqrpqrrzjrjpjdpjprrnhhbhcbbcwwqlwwcssbddfrfjrfjfrjfjvvdmdtdzzlvzlzhzmhmhphchnnfqnffvccfpfbfpfqpprrmttzrzzjzmjmzjmmfvmmrzrqqdllgjlglcchssgllsbllrbrlrjlrrhhfwwsqwsstpssznzcznzqzssvtvtrrqwqvvtssgfsfhssljjnwjnjddjdggclcrrfsfhsstgtdtctfttvvsbvvbtbttcgcssjlslhlpljpppwzwnwdnngmgjjbzznwwdllrrfppshhvdhhldhdbbdbjbdjjrnjjzhzfhhsqqbqgmsbvnjsptlrsszlqfmgprvscphmqztbgtlrqvcgdzcptcqjncrdtfqnghnbmwwmcjgtjlbvqqzslgbbntrdfnvfjvfgcgngndjcspgwmpnsrqzzvzljbzlzzrwflrqqqmhsvqwbmdftnhwwzgqrlhddbbtwvbphljmstcjzvpjqwcnhlvpqvqdgvntgqzqwrlwbwvngwtqgrhznlzcvbwqmwncccjctrdzrmzjsvrmcfpjjcczhbvdfwhqvczggfmrspvprvvthvtqnsphpcsdmbrtbdqljvssdrhwjsrrlzprstpgqcbpmnpdgzgjttwcfrgjnsghmszlclgvmlsjrqfvflbnhwwphtvrnrbhdvdglcvgpzfsjpwwhtlvvdzthsrldfzhnlrblzsjjnwclqsqzgdbflhvpwcrtfbfbjcjttbjpvfgvfcswnqqwshbmqlscdzzwshfqwsvwnwzltbnrmzzhzvtwpzqcgwshpvzgtcmwrtrwctnpzbznnwqphnrgwljtrcwlqmvlndwrdrctztnmswslqmbjcmtlrmcpjvzccqszrnflqnqzttbhqlrhbmqdpscqvfgtdbnwjdcljwcbgbgjfzgrgpwqzqgbnrtpntfthhdbqmswvhnmwmszpghgjjzrbnbbfjblpstdfslmmmqfdcrhblqjqfphnldrvvfpnfrcvprjnqbzbspfpjtgqhnjbhnrwzcjvdbshhqpgrmzqpmjfmqwqvvdbddbsldwzzsrhnhsjjnvljrbwcnjrnjpmrrvfthftgptgtlpbgqffthflgftwcrqcqwqwrmrcmfrcqgmrnqjbscdcgrqlhjzthvzdgjbvpswflqcgsnlmgmvcsttsgmnqdtvwdvrndvfdcvrcwmqlmlhtrvthsndsrmnsfmdmfnpfmfhzjqmtcjzcrnsjdztztvgdtlrmbdmmstbfgpmmzthcslpvgrpgfljfgqlqhldfwvvvdvbzjtdtppbtrnqwsqztjrsjhtfrgmvsdngvsdzjgpwrldqpzdpvhljzpjvttwltdwcrhcbrgrvdrmpwvdwjchqsjfprbgtjtzggvgrgmlvvwqrjfprbbgjjqrtdfnrdffwbswbvqtqtfsrhsgrjhftqldhmcnmsnfflmdrzqdjmbqqgqsttdmtrrvfsjnccnhcpcvqtrzdjzrpwswmjvvgsgwvnmdgqwlctrlhqnsmczbwsjhmtgvdcgsndzlstcwchcztqqbtdwfvlljdvdlzljslgnzpmqvzfcvqhdzvgchffqgfwrnmwqzwgbzblpmvddlvnhglrhdnwzqwztzgjczjpwcjwmpnrnrhncfjfggrbphrjztwtfqmfjlwfhnqfftfghbnvtwgtmdzzrdrtmfrwhrrbhzmcllsgqzwzzqtgdggvzptvtdcpzmtmsfcfbjtzlbdrwhdbtdhhrgggmddnzsvjwgcdcqfppqwphfvlhmgqsznlhmgpnjvcvrwwppnphchgsrhjwjcpjggsrcwrvnllfgrmjltfzwhmbqwpwwzmrtlqcprrqztcgnghcbvzrbfptjmhtdcfhhffdbrswqpnpppnpqwtflrrmqgjzctmmvvvwzllbsfdvpqjtmvpjcpmjztscsgbdznfgcmtjzdqzwqrsvstnnvddcstzqjtnbsnlptpmbmfqmhppgnjrffqrtchgptbmwlwbwbcqqfngpbwtwdmlmdstmqwcwjtbwbbbhghgptmvhfmvqfvpwqzwnbjdhpwlgjgvprdjbnlzhnllssbpvzfzspwsscfpqtpdvtzvqncfrfrgddsdglqvpblmpcczlqfdmwzmgvrljhqtcglcvfhbdwhbttqqrjbqwhsrhrbjwmtqwqddvdggdwfsmnpbpvvgsqnvvrqntwmbzdnqpmmqtbnlsbmslpfmqjtgvbddhwvlvjtlrhqdpfnjwtbhwjwdrpgctbbrdqvbbnvgqwngrhqfvwzmlqtmhfqphnmczlbdpnbmpvwrsjbcnjnvcfgnsvlhpzdgdzgvfbgwdcrswznrggnghzssdwqvvlwftqhbnwdvghhvjlqqmcnqmvbwhrrnsswlwmwbsmpcpdzzgmcmqnzpvjpzqbwcsgdhqtqhcpbtqftvscmntsbdcbrndvlfhprpblzbjcpqhfljtvnvtgvrcgqbsgl
+5
View File
@@ -0,0 +1,5 @@
mjqjpqmgbljsphdztnvjfqwrcgsmlb
bvwbjplbgvbhsrlpgdmjqwftvncz
nppdvjthqldpwncqszvftbrmjlhg
nznrnfrfntjfmvfwmzdfjlvtqnbhcprsg
zcfzfwzzqfrljwzlrfnpqdbhtmscgvjw
+222
View 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);
}
File diff suppressed because it is too large. Load diff
+3
View File
@@ -0,0 +1,3 @@
set -e
gcc day7p1.c -o day7p1.exe
./day7p1.exe
+23
View 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
View File
@@ -0,0 +1,1000 @@
ninefourone1
53sevenvvqm
kscpjfdxp895foureightckjjl1
72fivebt9ndgq
28gtbkszmrtmnineoneightmx
four66jqrbtqcsxjtqjvfjhl1
four8pzznjbhxlhtz6bhtzdxjlg1
rgxjrsldrfmzq25szhbldzqhrhbjpkbjlsevenseven
slkjvk4threesevenznjqmmfive
61ppgrkmkfhteightone
1threesix67px
sxbjdbtlnjrmlzgxneightthreepmqxdxhfk8jfrheightwovp
twofour2sevenk
sevenonezknqnkfqbzffjvfivetwo94two
45xj
mp7one6eightvhfnmfive6
fhtctftxm3threefour2b
2dq7bdmhhs92
pdnbqlbvtcxgpnfhmsfhzstgm173
8fourvxkddsrlcvseveneight
15zqpmsix77hlljgfive
jzjv6seven
eight1vbfive
721sixsdzbqtskbpkqbcmgmlpk5psrhr
pqxdxcx5
twozsf2five
7twosixthree775
7xtxrch7six
729twofourlqrxtwo
qtvbgtclhnk4ninefourseven5one
jvhngkcdjhnmqghdbqdzqssf5onegzjbbcchboneightn
five8two14five2nine1
one3twomddthree
8nine9two
7fiveeight9ninesix6fivethree
254kcd61dc4two
7sixonetxvthntlngtwobzkbz23
8sixnine6
threedqtgmv2skmvcd
7ptdhpvr1
lsvmzvzvd9mqxszjmbddkmxzdxsninedmglzlzphtwo
kgdt12seven4xxtttr5
nrdtgdftjmfour6fxjninenineblqlthvpcx
ninezmstcdfchc11onebmmfdfhvdncrhc
1fiveseven
oneone26twoeight
threefivenine98one9twotbbcq
9cm7ninestc
jcrbmcjtrlzvz7
nine8nine22
3nineoneseveneight
58four2three
stwonefourthree9twonine4six5bvxgkxf
ninechzcz4seven
2tgzgmtzzpjdqqz
brsptjppb28qxcxxjbzpeighteight
eightthree3ninejrft4
sixqsgkzdjmgpfive4threemxltqdxsfive
vxfd2q8
khqhgqlxslkmbrvljcnineeight1gjgcqmnbdczqb8four
mvbltrgpfourcclxftbb7gcbqcptvgfsevenrdm
61eight
six8fourthree6fourseven6three
jqdfxvhjg3sflkn2sixptxxsqrfml
6jtxs
seven99threeone
five6sevensmbbrjqvdbmkbsqtwonelg
fdvfsndt32fourgllgfrninebhnzzczfive
9hxp9srhjhjjvqljhzprcjpqreightzs1
djldhkkcn55threethreefourflnxnbzhkzmx
fourfive43chfvjnvjrkpxlgjrfnqbl
fxjgtj4
1sevenfour2fiveeight
seven43rxxeightb1
9sevensnxkp3lpzxfxnntkxzkrhk7jzhmtvn6
25one
threeone7
1pkfvsxxthreeoneseven
ztbvfqnpz2xdhgdjmgvfourtworqbxqsh47
8four7sixninesix
threedgl88cczqhqxjnc
nineeightthree4sixfive3sixdqlmscqjk
16crjsdl
tgq2sixhc7three
tzgsqspndt5xnqlthghzfvkkhone
4fxdqrs64ninex34gd
seven22
kghfkrpvnppfncbhhqpt55bjf
hjhb71bqdrrgsrkqdtsgrxgsscqjmtfzjkzsbp
lgdnt9threeeighteight97
pvjhnk83sixncvgmsjltwotdmmpxknhvntfndxr
7449
qdfzv9hkprplzkfh
66three5five4zdsfrcnljqmsxf2
veightwo27bdbsvseveneightrcqcjxsixeight
1thvkkk
8bnxqfsdhzppblzlzbkfsksfscmb
zseventbdzlmhnnrfive1one
sixxnmntrmp6srcsqbrqnjfiveeightfive
4trnzlshnjtwo5twocxrvfssbj
6two3twonetqt
55qsnx43
3three23tpctbkrnqv
sixqk4cnfdmtltmlhqxtwo41glkhdhgnt
35fivesevenpfournxzsbbgzthjvlvzrnine
tworkzgkcvcone53nrvgdvgtc
two9llkjbkz8pklrsgqqzr2four
ninecgpbgcnine4tldjqsone4six
2tfjhtfourfour
onebhlhdvvqx1sevenmsixsix9
pjgjt6jkrgshxltfnine8four45
4vsqfljrfiveqeightnvbdb
11nfslqvhm
7crrhqxsfive8ctkzbhqnine
vrvtglvthreettrkq5bdlrtpx718
1btbxlthreedtrzgeightnineqczhqm3
193
fcbzxqxxjtmn47ffschdrbeight
twoh1gqkrnm1
7ninesixpzpsn7
5kkvzpgqd
three6nine
32fdn
22twoxgvktxpxmbjqtgtbckx
1hdtftwosix
2jfc
six5nvzcgmrscjn5eight4
nineqhtczsninetwosix4five
9three6sj
hntktlbqmldrphqzxkhfour193
twotwo5259
v7six1vtlxnpm
rhsm2
gprmtxbhlsv8onefournine
2fsrbtdvft15six1kxpqbnqsxh9
one5onemxthree8
nineqbxdbznzktxsmstsntzffour3one
9blhkhjsgsfgsblzdtqqfour8
stz4889563cb
vjrbs6threeptbbmncz7hqhqgfgldtseven5
vbfs1
zjqgczjsjpvzvjseven4
sixfjzbrrhcfqvglxhnsxninedrvtvjbfqjdbrzblkq6three
one3threegcdldjsrsssixonefiveonechngsl
7srxv4hsgjqsqfvv1tdngkpjrczkl4
5scgdglnjbnsix8fivesixtjccvmkfxfnzvhctgpncjc
4eightfivefive1lgscbj7kpcr1
eightknfssevenfive6jnpklczrpfeightwol
37qccxllhzshninebvpc8
1eightmmcthkhf
seven8fourqn7tbgqnmzcc1
sixsevenone4
clhdvjnqnine9threesix
onetwoeight9
81z3threenjsdhnqxvtwonezv
9hqtsb
onekgnlbthreeg3
eightspnrpjb65fivevzfpvjntbg7drbgjccneight
ninerdlsix7285
fournineninefive3vbnhmhdvjgdqcm
njzspqxpxrone7four55
nfdhlqcpvzrrtsmzhgq3
fourmfdtnpsfbxkjtgtgx5sixrppsqplqdjvnsixdtqvtdm
21onesix6sixnine2
fffsmvtt8fivenineglrqrmktzzseven
fivefoursevencjxmskrqclz2
lgk27threefourfsqrbkntbkfourvflgrzhh9
617hj9
ninegcxninetwohpfdxrb3tjjjtxtnvtwo
one1gnftc8onehtsxsmg
foneight3fsbhdqzr5twojbsdnntwohd9seven
zkzpfvcxqnbvrg1
nine36cddqfvrf
rdjlpfk2pschfsdrpz
nine994three8six
three3nvflpftf2eight4
3nine2
rxxjdk5354
hf4eight8qjtcfldnkvtwofivetwothree
7six3twodhnvmxj1nine
57seven3six6
qklbvzfhclfnllhhgeight8xtvld
5fgzqhkssmkcfour1
hhvjkdnlffnineeighttwo18twonecs
sevenbfzrgfm1six1
nine71cskklxvcbnxtskdbqnpgklrxklcgccxjnssksrlkx
hmklhhjdthree77
3vpxclbgkpone3ninesrclfive
djfqkgjvqpfvdsix5sixtwoeightsix
eightlt7csvgxpnslk
sevenfoureightnld2mxtgpbzpthree1
11sevenglfmsb6
onetjjnxvssg1four4drxbxpnpv24
2zdxs9mfnbgfmjln1threefive
one186ltsbck
6fsbpb9sixhc
nine818
xzqcpcdprsqjbgknkvztwo419q
39qfdlcnkhg31
9djnlcrxqxhrcb8mczrxrm
nmb887525seven
jhmv3
zhvdbn1fivem8seven4sixoneighttsn
6zmmjqmnftclqbcthree
6cpzeight92
onepqfhtsevencvlfvnczhb91mmtdprqxmcnine1
tvqdfxn8eight
five6fivercgrpbtjgv87jmcndclbk2six
jgtmrbvl68lpqkpxddqqxvsixfivesix
nine2nlffgkvmp
1frdnhssftg4eightgclxsgqtn
2sixblr94six
94mlfv
6vlqtcsmdd47hpfmlc7fiveeight2
tklxghxv5bzc4hhcdcpmnine8
four6one1zzgqghvs412
xghjpblsfpg19ntpfmcfd
471rbdblzs
69fourhjxkvd7fourfour
jmrscfqdfppfdjskpk61
five5eightnqpd9ninezknztwo
onelknchr7nrfprgmqzp
svxlxrx9892five2
3ntkbzzpxhdmrsix8ttgp
ndh7zlnrzpvmnine
one7xlnbmjjmfv62qvqjpfprbvjkpcnine
99three5
threetwotwo7dhtgtbchc7sixtwo
tmfxxph3eightgdccscdsrkmnhbb75
joneight4one5
nine3six
81tqzsqpkv99
sixvjlq7
five7bkc
five3811threelfpzztxzk
1fourkkpclqc3
xgrpbmktcthree46g
bgcp4two8
jtgeightwo7nine
bkmcrcq3eightrdtvrbglmxmmztqm
7tscmg5one2jhhbfb1
zt5khcrgqjg5nxxzxzd
five85
twothree1
eightsixthreetwo6b3tnjmcqdjfive
onefrlg7
fivescbjxbdnvslqqsone5bdbvskpmksqmmfsncsmd
two83fourthreefourseventhree
dglrmbtkfltwofive8ninelzmrxvxoneeight
8nine6sixsixtwo7
sevennine4lbsevenkdnrhpltn
h3fiveeight4cplrnd
vhsgjbqm3ninedfhfsb
93nine7jvjmlzgcztrqlxtwo
zhhhdddbbgcssvfzdhmpone5fivefournine
l9fourvjfbqpdslkmvxsdrnsgcvzpjxm
kxlseven5two
rbtwonegsdgvsjtpnnkone7mdz
phffknvthree2threeqgvfqxgnine7
2lgglnmthreeseven27three81
lrgkrxx2
seventwokxvzkvq6eightthree
5fiveseven
fstwonersngdlngx28nine
49oneninesix8four2q
hfvhzvmjgbfcbsevenrmhjhzkc3
six84
8eight2gzblldzvkjfive
6fz3eightzmsqb4qsbbsnthm
fcglpc2one51
sevendqghclrpxt7pzone48two
three5one
5sevenfivebbzkjlcnxseven8fourmzqlxxgjvc
xgg8one6782
gggtljnnsix3lkhdqzzpdtdkmjtgjddkpgx4five
qrmsfc13onevnhlbgs
nrtwonethreerbbqffzh62
5eight81gcdbrx3rlk
mtdtxcmm2bgmqhgqrtxsn8
onercx2
9sixoneqgr4
xmoneightfour2
six85foursixninetwo
ninetwo8four8six
qchclfzq47
khrll3two21
seveneightnine8868four
3rmbmtbxjp12seven
3tsxgvqxmzvxbdvxtgrvdbzqbh
eight7fourjtxx
fmb4one7threekbxeightwoj
vcsevensixseven577
2dkhlrrtrnbgzrmxm5fiveclhgn1eight
1sevenlmrbnfour17seven
three5jtbvkseightoneseven4df
fourrgqxplbpbxtsgkm7
fourqdfxchlc371sc2
fqxlmeighttwo1seven
zvvlftlhfthreesix6three46qkstxvdt
m74pjgccfour1four
plphq933eighteight
cdbqlhbhj3eight
4onevgdkxhz799five9fbljhpqmvk
two6qzgphxl
two1eight
onekxxghlonerqqlrs83threehvvdhsxmfour
npmsvvrdl2673
fivejthseightsixtwo9vgrvjzbzsrxjv
eight2gqfive7mzjzpxqcvheightjfx
1bxckdpt
dngoneightbtdptfn85
fourtwovfzgmxjseven935
8onesix2drgjnlrxbtdlmlznine5
five4mmpmqlttsx56ljdzldntdvthree
1nxxgtwothree22twothreenine
38eightsevennxctjfstp
8fourvhnps3onellstpnztn6kvjccmv
1bseven93eightfour
5nphkdbhxqb2pqxtkvhxq
nvvx6fourjgkdsczjv
fourxrmq78
8tjmnvthree3ninetwo2five
p7cvtwoneq
7thbggjbznrsixonethreeninej
xdgm1crqfnklk
onehmqqgh4ninenthjonegfjmvtfgd
sevenbsqtlk9
8seven9two9hdz29
fbcjhzdgzdg8jgjvcrmgbcrsixnine
3bssqrj44onedqxvhkfive1
tmmxtz5dtxbbcjlfivesix
pvfqzksgrs4khmlvtwoeightlsx
psbttsmnpninefour42fivegsixfive
sevenfiveqscr7dfxpninesix5
xmsjddzfxftsjfq6four6eight6three
seven42
eighteight1nineeight9
8c
pmqljjjzvx5znxqnsfour8
78zlpxnvsqpgmgmk
four7fsgttnrgnlslr
fourtwo3jg2
qlz18three5lpxfjvnfppqjxh
4fiveonetthree4eight
7lzffxkxnzjrtr
three7nineone46ksnshqgdpt
8dntxkkkgdxggvhxh2onefour5gqzsqkm
tjsixonedbklrxxk2twonxdpjzb8
mfglbrjrq93
seven37xhsrxrvcgninexbmdrzxthreeonethree
fivegznvfztszqlhtrsslsmqq43212
tdthjjjbkeighteightsevenpcbmpfq2
five1eightq
three13three4vrsrrtp
cgztjgqgdths2
dhxztfvlonetwokszrv8prdpm2
dfkcklchjj8twonine52ppvndfcnf6
three7ninenkxfourfive
93sixlqxctdhmvssixone
oneqbvfrvteightnineninefivethree9
jskrtmvsrqnpvcgsmxbonecmlrjpdpc4three
crpcfour54xxgzz
9fivefhdpcqsd
fivenineclfctjninefbsh2
fivexhrzbqpfxl8sixtwoeightllzplcpllk
zxgl5qneightsevenone
sixpdc17thxfive
1twolftpzbmnzvdlkvlsevenhdvgfrjhmthreethreeddkdvht
67twotwo71
oneeightcgnhtdxpfnsevenoneeight13
eightthreervd5tnj17
ssrsmhxrsixeight3gbqggcvfqg29
6fivecvcdxnxhxxtlzthree
fournrrsix595
p2qchlvplzdvchkbdzzbnsix7ninefour
fourthreefourtzvlrnr9m94seven
4jxzkrfourvtjpsnrllkjcczmmqnsj4q1two
4627qlpscgpjcnine539
two6nineeight
63five66fivethree1
skndgzsbsntwoone1
threerzgdxgtthree2three
953lsdgn59
27bk
sixmfmbslpjjsixsvnqrvtxznffive5
2ninenlgpggxm42six234
fdzfvkjnchsevenfivethreetscllgjvrtqckfnmz3cszmt4
7ninetlzsxjsl2nine3
shsvptqngsevencjjthvfm9six5four
7lsrq36threevzfjc62
two59threedxmfourjfschvqvnine
khfqjmksxhbvs8sevenhzrmjtkgm
nine2stgflmsm8fkthhhjzlszdnmkmqpnjxrfc4
twofourthree244nine
eightvt978
fivefiveninesixnine6513
2lbtz19fourtshqsvblhrkhxbpfour
ptt7bntxhdvl
mskflsslvdlmndmmqmfourtczqlssnineseven5xxxkfvzd
l329eightsevenfourfivethree
rmlksxsixspp9fourhlcg
8five9q
hqoneightsix19nine6xmjbtgjzgrhmlrxq
six38
9eight2
3sixbzhgfcg57sixsixjtqmknd
9fchn58
vrpftbnvonefour6
vqgdtrvhnnxxsevenseven9eight
56vnine5rdpsnlqcbq7three
vncrjds2cmrg7
213sixfivesix
tzclpzdsthree4sxgjvrzcrzcndnfour
4sixseven1three7
8fbrggzmtqn8
four79p
twonineqonemfour3dq
5fdgpmrghtksn5onesixtwo
xseightwongqqsxtwo8jslclldvnb
nine1one
9gxjrfourvhqzcxdhrtpxgtwonine
eighthfhtnvchtc7fjkrxsmhtm7rbk
thqxcfjbksix32xqrgqsqtx
6qjqql
jgcreight7eight
6onesix4threeseven
5vcv1twoeight7
fivesthreebvjntwo9jdxghmxvl
632msc9threenineqfone
dqxfourkb4eight
6stsp3nine
566sevenpdmg
xprjdn55
9mjtcmhjb
twoninelkjznqztbc3twolnhjhdbfxmhfr
twotczpxn6qlcfdlpnq
4ninefive
1rs44three2gzczjdgq7ssmtgjbgbb
ggmzqbkgsix4five23bftjlmbfbd
threehfcscmmlqvcjtpthree98
7sixsixone4
2fivefvrr9four4three
1zt1seven
9hsbthqvhhsnineone23tslqccg
sixbqvd3
22148four3
ninejlpbtnfive41rtzqjgfmcbncrrlnn
9sixfour
qnhfivetwofjtqtlxd7lmrlfctq864
69dqrzhlqssgcsxtz54cpmjvrkcfiveseven
fiveqpv85frkmpgxgc
xxqsscldeightone9ngqtkf1nine
5sixgxbnnjsvhf5dgxgone7
sixsevensqghlvkfxnfour7
8gmgvjbfivesevennine
qj796fourone9
rmpfsppvzdtwo4threetwotwo9
dqvtrhm3nhtrxxccmfiveonedfzfvcghr
4threejxkhnxcxjoneightp
sevenhkpfgdgsgnvseven3m
qhrvjcnfdbqchrsvchcxfourbkhhq9six1eight
29pqnd
1oneonethree627
5977rcr2threeeight1
fournthpqbztrhnine64
fjnjpgqxr86five4sixxhrtvbp2two
7sdnvlb5two
58vffgzcgx4nineoneeight3
h1sjgqbhndbz1oneqgncmhnleightwos
gjms21
onetwodphfznine51
gxpl3fourzfz3
five46
mqsixccffmc9gqk1
5kvxpqrrpeightthree
threefoursevenfive2dhtbrxlzzl
shhczssbltllsmntntlqfqgnnl98rm
5oneeight3vkqtwo29
bv69fouronefourone6
eight6five966
4xnrtztgfgcmnmnsevensix
gmsvtnjd1sevennine4xxhqfbrjjqbglqjngttc
mdnxhhteightfive5onenineninegqjbqmfd
xonefourtwo4
onesix61
sjmnjhkj2892eightnine9
nzseven39
99nnjjzdrfsnjhthree1sevenfive
6xmggtbnblnbxdpkzblnvcvjqmhvntwoeightseven
76five6six
chdfjrlfhdzeight778
xrvrck9five1hrvpfvkdcb7eightnine
foureighttq5sgdfourl2
4rnbxrhhboneonefournine
5four3
1b97eight
hlcjghlhsf32tgknm565knxqr
onecqgbgdcmlb2sixsix6nine
kxdkz3
seven5xvhrxdm
xblqbgkqgsixvgrthreezxnzhknklxhbmgl4
fvnkc7threethreeseven
bmbqxv24jhdg
97rfphlxvtx
4pgblonelone
ptdpllrddeight3
9knpjzskrfd4
twomjqdtbbvmj4shvsqrone3
9zzh3pjsf6mhxlhm9glglfztjm
cfconeight47fivetdsmndgvsmbqjvszb
21vbqjz374
sixeightqgfdjbhfd4oneeightone
tbccqdpz78srmcdx4six2
643gqtvhkljxt
klfjf4qms
zrnhkhqzpczzfqsgsrtxklpbtp72
1cnqfltrmhphg832three
twoseven5
mxkmxlcgsixklclrkfr8638fourlrqpzgjq
nkbfkh452pthree
zvcktvd2485four88
rfxj4
three6jnr7
two45rldjnmxkjphtwo7v
fivelncjffdnkzqrshvthreeh3p
ninejgrbmhrbqldeightnine6nine8one
96lvpt2djrkc5
7seveneightthcxgthreeseven5hpfddktpj
6bvn
sixbjxtphstzgspnmkcvc952one
gmmslrndvltlthree394sevenoneightl
threenine7onefourtwojxhzvqlseveneight
5eightsix4txcczzmg
84seven
skjpkhxggsvjbprhllgjhninetwo6
72bdpzccvone4zbdzlllnnonernlfvdpq
bvrtmzmtwonine29
mrlvmdnlxb2814five5fjxzlhpn
lmrpf82rksix611
tvq18oneqnmmzvtclnthree
jrbjc1zbbpqbrddt26seven1
lxfivenmdtnhdmf98ptpxsgmgrxkmmznlk
zbmvchmxsevenddddthree2dxlddjp4
three3onejg2fqgtjmpcgeighteight
three2two9seightfjqtwo
ninefive8sevenvnssix
3cnbxxtgmf5
kpmjcsfrjfgzhmbpnqmlvrhbhqs8
3vvcone64
fvqksdsixthreexbfivetwo3
sevenseven5
63twoone8vhbcpmmlfive1
4ctwo17eightsixkpvlgpj1
rsgsnone1
kbvxonemcqfive3eightone
ninenineone45threepvsmrtonejxmbnd
37fklnjkslqk9th9
fiveoneq8rcgdxtwo8jfkxq6
rgd7
7rgkdpvp7qrb
7crtxfmslxxtcxsv
mqdnltb23fiveqcdqtonethree
8seven7
8cqhqlhndqjznqhdbld2nspnxbj99tqqhp
onelqn7
bvbjfour7
ldqzhvhrbgsrrkh5j
kjsjxdcqgjztldjvxxgr9twoxfknxrrrphkdzdl8
rvscnztblp56ljqtwompclcf
2dbtdgsevenhzctckvkvxvjljz
tvmhhxbbxvvsnlnineqsltjd92one
9twoqdmtvbxhpcthreeeight
81dvnkd87xbct
6mnxqnndcjfivefdckzmppfsevenmqvvvbnrgs
lvl3qjk5
3fivefive
ktvsqzrf14eightmtnqbcktk5
sevencdknznbxseventwo8rzggmvpbvlrs
hkhhrdxlml1xzbshninejzqc
eightseven23shkgzdgvvcxxfdv5
14five1sevenxfmhtptwo3seven
47one
2three3
f5dszzs2
xmxffxkxpkninethree8x6seven
glzoneighteightrnjqgjznjm9
63fznqxdfqt8
33nine
4vrbmthreefbdzf
fourninethreesixnine9fourlvbgqhjbqncnlbjbz
two848dbvbninenine17
pqzqgone1two
eight7lmxbhcsix
szr2fcvkljctlghhthree
sk81pxqhhhhvnjvgzfiveseven
cgqqkrz2vpdpzrthqssg7nineeight
498eightfournine
eight85onesvxnineone53
ninevmchpkcg2
six2shsvqfivefourtwo
mdzckfvr72cv
twotwo7onethreefourdjtgjg
tworfclmm3
5sfvnkrmrptsix7four6kzlmclm
1onedkqgzbr89kphvc8
5seventhree8eight9eight
kvjpgjgrcmpdscbfthreethree4mjqjnnzceightwohh
kjbmh1fdkdtznmsznvlconeznineseven
1fmgpxhxpqznqscvbszhhcmglvtnzhbbjjbzg
1mfqzkfnine5
rrflkqslxztdlqxqkdnhqd7ps
39123thhsmscbpxr
8vnine4jgqrvqtshg3jhhdnbsrxneight4
xkqgnfour87
lsbnjqtzqz7ninenineone73lmkbnkhs
9fiveqqgqblfivehttxk
8twotwognd
4xknbheightfour6358
4cqtpfjpf72eight3
ninemjpqpqg8foureightsevenfcvpnrnnpzhcgkm
37twofivedsxrzbpchnkgxqx
oneone57one2k92
mckoneight9threefour1onefourhdrcrvhqcmngkjnsthree
945
tmmtwo7
57
6twoxzbfftnr27
threenine4bqpztsixfour
84eight
3jpbnjrqhqfnxckqkqdvls
9gzzjzz
374nine
ninembxeight4sevent
threecq3
cvn6cvqmpmfflkzphndjnggtktwosn
pgz7four5nineeightsixqrnfkdkgh
6one781vstwothreef
one617fourthreefourxqxnpv
8eightsqmkjkkf5xckcvd4lfnnfour
seven23qhntfmg56onexkjxh
f5s56rfltx282
twosixninefive1tlzq
threetdhghclfsksql5oneninetwoseven
zbqzxmpb9pxlrthree
r4gxdzjnvzfonejnpmfcpgvxjjvkh8
five338threejkk67seven
twolntxcnzvfr55sixtwofivesevennine
xhlppbqfr71brvppsixthreefddlgpfslqmdv
kxsklgonefjfpkd4threefive9six4
6srphqmtdoneh3glthreefour8
rjzdmj1cqvxnx1nvcvbfctft9
3fqjdgbpggthreesix53
9fivesndgmkvckblktzkshglqgdl4ztwoseven
qqrxkqhnzb23two34nine9
8hrmffgstqpsixeightx1six
jngcsjnrhn2zsvcjmjg
9zfdmhzxdnfour272dcrqgk
lbjbrfhjxhxjphzxsjsix4
fourthree2seven1two
twosix87
vrlqqkctddggcvcjcpk6hxbqvbxmtsix
mrcgbpc6dthzqmmthreefour6two
r2zntjxgpfqfmqh
fourseven3
6nfnsgchjdffttmgfnbvlxzoneseven8
8sevenqqfiveseven5twojvgk
4rmtkvml4
bprnine85
sevenmfpcvlblcnine485fourseven4
sevenseventhree68fivelhqgjqvcdqkvds
3fourxsgghqnvtssnvfs7nine7
1fiveone5hpfdgvxb
eight2eight42twotwoonenine
lpdeightxcgpxkkeighthtjpsninemjlxrxtg31
4smqpjzsixonethree
mr6csbmgrdrjj3onelqd4four1
5sixvbscchd3
384sps
4qzgsvmfx4ninevcclvcfrfp6tckcpvj5s
8l5glclltgcjgbhcg6
3ldtdmjc6threeone
hsrtzl521nine5qqrtpdsp
z4v8threejdsmbfjpbj
9sixln26eightwovmh
848
kndxtqpfrqxdxtfnqrqznpgvp9ninerlzcdvdtwo84
kmqs84775seven
5threefourzkg
43five8cq2kprvdqrmxr1
three4ttjqdh
48nine7sixfive
22x
sixrgtwo3rnbzkrztkdkg
4t
29bjpskmxneightppvthree
zmlzxvtlkt4seveneightbxseven
5two5eightnpszzmbkncnstx4
9vk98sevenhznkxmlrlk7vdbqgvfjdk
1sixb8sjkvdhfld
one42eight4mrsdnpfjpvdtq
76fourntsrfllxkdfqvm6seven
skqndhr3nm4776
4xpmfxmvj633eight
83ninecmpt
fourdthree9
9eightjqnnmthcrseven
7threekgtf1
xscj7threenmhsixseven5s3
cqlzjt41
855threemlmmqkgtfk
ninefzmvjjtvbmgf8nineninetwonegcn
ccpkzcldfourkdtfkjxvfb9fourhbtwonsoneightnl
pkeightwo5seven88rdnzzsdkbjeight9
threen2fjsfivesix26nine
nine4rz8nine7bglpcmkqfzpseven
eight94six8dpgrv
twodfctf278
fltqtmdkgjsvf72three
llrtzsixsix4fivetwosixone
qjhtjqjhgkjkzlpxxclsrdnzk1gbqt
sixeight1sixtwo
one5413nkmqjtlbdkz22
bhtwoneonemzpzkqeighttwooneqkmcmsbq4
sevensix3three2sixprcqcvm
25tjffdrtwohfqlkhzxlhb
97gcgqgjnpsthfjfdv636jsxq
zggjmjone1297six8drzs
jbpvnineeightntkkshbjvr3nshnqzdlkjmkfive
5four2gkkbxmpthreefour6
5two15sixfivetzpg
one4fouronemfpvnqseven
9fnlbljdnzzfournine78
djfljccrtvvqktzzvk61onesd
7twohbkeight
seven1eighttwothreet
4mdcljknhpqgxffqpj5
nine9jlsmfgdgntwothreeeight4
136nh
635ninejghg5
cmone7fdlk9lfivemzvnhkcsp
8eightnlndm
6fourpb892
fiveseventwosixfourthree7
5fm
ninegchdnrf63431
24sgnflnsixninenine8
snm9
3fntd721dhhkrqqxsfpstsvzpgonetkhcr
jlzfbml61vdmgb7one
266517
7fivetwo2vhchmg678nine
cgrp3vzn5ninetwofour
666ninefour
9s
svpcnlktpxtvk42jhsvvdpftxpsk
2qznfzvbdr
foneb7eightfivehlbjjknninethree
kfp6
l34pxxhxtd7d
rsbcrtwo27twocqlmeight
jkzgvqgpjfdqvmjfx2flnvjmgllxghhrbjjkfour2
45sevengdnf59twofive
6fivespvkblrxvkcgdxktl
three9dvrssvl5eight4ftsix
seven56gdmlbfbjsl894sevencmc
814
1one4
onenine5fivekcrf1gvvfhlncsv
2ctvq9djzddfxcrj
ntdlcqgsixvmfvlc4fourvlhtvvqmnmkrm
9nineseven1seven
lcvzbnfourksvjqvmv47one5
nine4blvlvlpkl6
sixnqxrhnztzvpmbzmxjm19five
18jtzhk
rzrhv8four
2npghxvjonebchsprfhsjznrxvxnine
eightngsevencrjkxbhpgtxlzhgb46sevenqhqmlfx
threesffl9fivelgmndjfvseven92
seven85
87six9vnshclz
threetwo7915three
one2vkbp6rhqbxvcl7
bsbr1five91
qd3mnine
jjvhltxtdh5nineone6
mbxlnj7bbhnxonejtmtqjfrzqgtrhkeightnine
fourfourqrxdtfive2smnqp
7tvjrszvrhdl5five
four15tvmpvxpvdjnine
sevenvv5tworpvdlseven3dlqvgblqtwo
nkckggninegnlqlnv25threexlhlbzvzk
3vngmhprjseventhreeeightnine
nvqtpzsszrdvttfivenine56oneseven8
146
fxfbone59
f32dhffctkxp6rcngvtfq
sixthreefsixjhckmjqfive495
42four
65nine984
5fthreeone9twoqqsfvzmp
ttwonefive4
one6gfxseightxqcq6
3sixnrjtwormrncmhxeight
jhdxnmsgsdsevensqsslbsndpdmznmldbgeight3tcvjjv4
5sixtvpckxzcjzbmrzk9
pmdmnfgkb3six8xsmstsmxgmm
53onetvlgbglq4zbqpdgsskzdsksd6
kzjcllvz6skphkfdxfiveqrbhmk
75qqjdgxlmfthreevzbfjdlxkfqqq
seveneightjntpjthzptwo2two
2five4fvrfxxnine4qzkkfkmq
2xlvcltn7
fnmggtj2rqxzh7three
rzpjkgtml1
2oneseven4one7xps6
rljfhfrhmzkjxktnszbkpfspxdkqneight2
pzgnine49six2
plxsqeight2
eight2sevenseveneight8rfcrsdlxb
sevenclpqqfxgjnmtwo9
9sevenrqsixone8eightrxqgfsbjh
kqtkstrxhtfzbllhl4lqvqkcbr
hfplfpbltczflpp7nfive8
ninenvqfrvtwo6onel
threev65
frhn18six9sixninefourrsqzgd
mcxckfg5vpkbs89gbninexjzvlj
fivesixdx28
7ppbqv
hs9twopcvpgtjnrsvksskpc8
9mlpckzj2twothreefive
rkrgdclkninetwo6eighttwodc25
tfivefourtwohkhhgsqlj1dtdcxmxkf
1four6five
fgbvmvxvtsix2twonine2sixfour
foureight66
s6fourcv
mxl358sixfive8six8
ztbtwo73sixvxsix9four
eight7qmdlcxfive5
phgfivekrjxdmnzsqsix9
1mfqsevenhz
rjhcdgzngtc155bqlttbsxklpknvlmk
qjkdqlrrs6two
sxlmqzxdpxdnj9fivetwo9seven5
2qtdblb2
8qgdzrsixtwo598oneightp
1shdb944
vrlpronek2
jm52
8eightfourseven11mvtrmtkr2bmp
mnvnjxrgmrxhztwo2ssrdpqk
ztfive435three6threetwo
tnrrdnbgnbhzljdxhxxfrqkcpeight8js3
foursix6zcsrztvgjxmp
five7fourgnnkspxcmczcbgsbdf77five
fgbrzkmvgrdbqjqndpfive81onetwomtzlfb
2qbsfd1two3ninetwo2
8tdjxvfpvdvone33three
lpchnmln56twofive8tfour
cfkfbhppjf6fourdkfxsvdtbcjspzlseven8
5fivestgkzsevenonedkhhrkthree
37nine8six8onefhvvbkmgdfgtv
26hzz
5glvnsztmnfjmkjseventdm4five
pvnnqrqvftrbcvnnthreenine5
mgscxxlp3eight
53eighteight
two1oneqlcdkbddfour
jbll3
8threeseven5tmtrgdhqxd
8twonine6s1
91seven5pmqrjlhqrtzs
jj3sevensix4482
jeightwo7lk4three
zchchxmsctzffivefournine9sqhqkgfour
72xct1
vnsxvsqkhpfvgdseven23gzcmltzgone
xzjqhcvsix1fivecjtxnfivekmvjdc
zdfourgjlhtwo24d5klkpdgqbz
7sdzzdbrxbtonerjcmknnql4dfzqccvqt
tncqzxjq9twofiveqkxdrxrpj894six
dddmkctrzlpfmsszeight8zvbpmpkg
three23ckjhgjc
375jzdhnfcfr19mhsbnplqh
vpbbjlzone5sevenseven33four
onejzfsevenrbskjq1four
seven13one
vcnkfgv979one6zln
rqlxzzbmjb4lmbthreektqsdcfzbmdsfivethreenrxdlkqt
qkoneight8
5rfourfivenine94fdprsix
onexonelzdh2lcbqpzq6
six6v
7gtgxqnnine
tsljzhntwo3fourpbjncgmvf3fflvjxp
vfkdone9fivecftvmjdk
xc5three6eight94
18363one7
8fiveksshdlfmzhljhcmjrn7kpv5j
xbhmxfhbjnjzmninethree7
2933mkmdqjcl
6ncvzqxfvgfive
lnine5fivetb4qmfktnqjxs
93187
5mqninedzkfhbk
two7eightntdbsix298four
sixone3bspxqxggkmkrbcqrhfrxrlgjrlvfl96
fourfivehqls3nine
threedfklszn2threeqzhh7one
mqmftzglone6kjpgglznhrjz89
146cvkftscqsevensixnine
nndhdgpd484hxdgjtfsdxxg9
6mbzckbjphg
eight6jbjtnld2mdjtd
zjtzcqxb736five
jlkdmone8
gvjnjvmlfvcmvnfb8xcgjcmjqvz1bzcctvsixfzqjlhfkfk6
vr6onejnjmrrldnsixsix5six
ninembtmtkgbctlfive45cjzzrmgcscfbcgeight
2mdvneightjzgffivefive4
hmdnbxghxjxt4czshmsfzc
61six18threehrcj
six3five6eightkdfzhxcjkdhq3
jrhqrqkpd4hsixdsbjdpscclmnnhknqq16
jflzcxr3three
threefourghvgsktkc93cmjmsgh8one6
96fivesevenslklhsfmpz
jgkpgfnnbq2pmspdfhsqxfour
g4fourthreerpkdhjhlxlzvnineseven
xkxhkphnkvpdnlncn86srxthree
7sixsevenrfour
5zr72qltsrbdsv
ninervqzdfzqmf6five
8jslpvs73
ztvlxndlm5twohdhmtrdnhbzdrxb
seven6nine4dpdpvrtrmqvql
jfz1
5nineeight5onefivecxtqbsdtbthreefour
fourgeight6threeszgseventwo9
sixfour3
npl8
tzjkffsvbjseven5rhmlxonezlx
5dhtpfour
twothreebxtfndvdnine1sixbb9
five9nineqlzrmtgs5
9v764nineeight
five4eightlsix6
3nineeight21
foureight8btsc
3xgdgtb2
7threetwonexqk
kkqsix48onefourhlsh8
onekgtdzgfh2fivenine2onerb
six4zgcnlhmltrxp5xphvtwo9
eight7cdqggpssix
niner9pzmrbqldkljmgphrrgmdjseven6
439
twofoursixrthree5bxppnhqtx
bmpnt3
fivepkzkzpghrptpksevenseven83two1
9fiveone8one
fiveseven3lqxghdlskbltrzrstwo
fournine3ninephlghonetwoeightbvmdcconeightq
three2pvklmzqjfh4sixonedrctlsfdfour
three91spjlscscjcxbbpdhrg37
57qqjpdfppsix1qxrh5mlmncf
4nfone5eight
eightqsix7one
4jtvxfd38hnrmqkbnvfxpp
qmfsspkfour1plmslcrsseventhree
fzckcbfvxbpsix7nine
fzrj4
4threeqntnineqstzjftnine
tkrh6sixdqflrvtmzmfiveseven9ktmtvprkxhfour
nine4983four
mpllmjrfgv66five3kvhthplrtwo7nkklb
9ngvdjddqbz
5twosix8lbhmzrg
eightsbmcfgm76two4hhc6
seventwosevenrpm6threeeightwodxs
xkbseventwotwogmkxhpmhm42hvvbfchreight
gcqeightwosix8xdlhrnnbkmsevenqdbrjghz
458ninextfjxvgsq5fltdsk6
rlgsflhxqd5bdbhclmrthree
twothreemqqbzjn88blvqxbseven
rqrrdrmlfsixfive6
eight959tzxkgqjd
txdszrn5eight3cqeight1brqr
45122
jvvslnkdk6qnfzjzvseight55eight
4twoeightgrhhkrvtkrzpfive7seven
three8gsmkpzsmfvf2
fiveeight5sevenone9twoseven
4seightjjdkdglspz3vg
sevenssrzkspld2
qnzcvcthrsgjlnzxmxlppjdpnine8seven7
eight7xhvkrcr
two2tdjdfbqtqxrs119r
+41
View 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
View File
@@ -0,0 +1,4 @@
1abc2
pqr3stu8vwx
a1b2c3d4e5f
treb7uchet
+1000
View File
@@ -0,0 +1,1000 @@
ninefourone1
53sevenvvqm
kscpjfdxp895foureightckjjl1
72fivebt9ndgq
28gtbkszmrtmnineoneightmx
four66jqrbtqcsxjtqjvfjhl1
four8pzznjbhxlhtz6bhtzdxjlg1
rgxjrsldrfmzq25szhbldzqhrhbjpkbjlsevenseven
slkjvk4threesevenznjqmmfive
61ppgrkmkfhteightone
1threesix67px
sxbjdbtlnjrmlzgxneightthreepmqxdxhfk8jfrheightwovp
twofour2sevenk
sevenonezknqnkfqbzffjvfivetwo94two
45xj
mp7one6eightvhfnmfive6
fhtctftxm3threefour2b
2dq7bdmhhs92
pdnbqlbvtcxgpnfhmsfhzstgm173
8fourvxkddsrlcvseveneight
15zqpmsix77hlljgfive
jzjv6seven
eight1vbfive
721sixsdzbqtskbpkqbcmgmlpk5psrhr
pqxdxcx5
twozsf2five
7twosixthree775
7xtxrch7six
729twofourlqrxtwo
qtvbgtclhnk4ninefourseven5one
jvhngkcdjhnmqghdbqdzqssf5onegzjbbcchboneightn
five8two14five2nine1
one3twomddthree
8nine9two
7fiveeight9ninesix6fivethree
254kcd61dc4two
7sixonetxvthntlngtwobzkbz23
8sixnine6
threedqtgmv2skmvcd
7ptdhpvr1
lsvmzvzvd9mqxszjmbddkmxzdxsninedmglzlzphtwo
kgdt12seven4xxtttr5
nrdtgdftjmfour6fxjninenineblqlthvpcx
ninezmstcdfchc11onebmmfdfhvdncrhc
1fiveseven
oneone26twoeight
threefivenine98one9twotbbcq
9cm7ninestc
jcrbmcjtrlzvz7
nine8nine22
3nineoneseveneight
58four2three
stwonefourthree9twonine4six5bvxgkxf
ninechzcz4seven
2tgzgmtzzpjdqqz
brsptjppb28qxcxxjbzpeighteight
eightthree3ninejrft4
sixqsgkzdjmgpfive4threemxltqdxsfive
vxfd2q8
khqhgqlxslkmbrvljcnineeight1gjgcqmnbdczqb8four
mvbltrgpfourcclxftbb7gcbqcptvgfsevenrdm
61eight
six8fourthree6fourseven6three
jqdfxvhjg3sflkn2sixptxxsqrfml
6jtxs
seven99threeone
five6sevensmbbrjqvdbmkbsqtwonelg
fdvfsndt32fourgllgfrninebhnzzczfive
9hxp9srhjhjjvqljhzprcjpqreightzs1
djldhkkcn55threethreefourflnxnbzhkzmx
fourfive43chfvjnvjrkpxlgjrfnqbl
fxjgtj4
1sevenfour2fiveeight
seven43rxxeightb1
9sevensnxkp3lpzxfxnntkxzkrhk7jzhmtvn6
25one
threeone7
1pkfvsxxthreeoneseven
ztbvfqnpz2xdhgdjmgvfourtworqbxqsh47
8four7sixninesix
threedgl88cczqhqxjnc
nineeightthree4sixfive3sixdqlmscqjk
16crjsdl
tgq2sixhc7three
tzgsqspndt5xnqlthghzfvkkhone
4fxdqrs64ninex34gd
seven22
kghfkrpvnppfncbhhqpt55bjf
hjhb71bqdrrgsrkqdtsgrxgsscqjmtfzjkzsbp
lgdnt9threeeighteight97
pvjhnk83sixncvgmsjltwotdmmpxknhvntfndxr
7449
qdfzv9hkprplzkfh
66three5five4zdsfrcnljqmsxf2
veightwo27bdbsvseveneightrcqcjxsixeight
1thvkkk
8bnxqfsdhzppblzlzbkfsksfscmb
zseventbdzlmhnnrfive1one
sixxnmntrmp6srcsqbrqnjfiveeightfive
4trnzlshnjtwo5twocxrvfssbj
6two3twonetqt
55qsnx43
3three23tpctbkrnqv
sixqk4cnfdmtltmlhqxtwo41glkhdhgnt
35fivesevenpfournxzsbbgzthjvlvzrnine
tworkzgkcvcone53nrvgdvgtc
two9llkjbkz8pklrsgqqzr2four
ninecgpbgcnine4tldjqsone4six
2tfjhtfourfour
onebhlhdvvqx1sevenmsixsix9
pjgjt6jkrgshxltfnine8four45
4vsqfljrfiveqeightnvbdb
11nfslqvhm
7crrhqxsfive8ctkzbhqnine
vrvtglvthreettrkq5bdlrtpx718
1btbxlthreedtrzgeightnineqczhqm3
193
fcbzxqxxjtmn47ffschdrbeight
twoh1gqkrnm1
7ninesixpzpsn7
5kkvzpgqd
three6nine
32fdn
22twoxgvktxpxmbjqtgtbckx
1hdtftwosix
2jfc
six5nvzcgmrscjn5eight4
nineqhtczsninetwosix4five
9three6sj
hntktlbqmldrphqzxkhfour193
twotwo5259
v7six1vtlxnpm
rhsm2
gprmtxbhlsv8onefournine
2fsrbtdvft15six1kxpqbnqsxh9
one5onemxthree8
nineqbxdbznzktxsmstsntzffour3one
9blhkhjsgsfgsblzdtqqfour8
stz4889563cb
vjrbs6threeptbbmncz7hqhqgfgldtseven5
vbfs1
zjqgczjsjpvzvjseven4
sixfjzbrrhcfqvglxhnsxninedrvtvjbfqjdbrzblkq6three
one3threegcdldjsrsssixonefiveonechngsl
7srxv4hsgjqsqfvv1tdngkpjrczkl4
5scgdglnjbnsix8fivesixtjccvmkfxfnzvhctgpncjc
4eightfivefive1lgscbj7kpcr1
eightknfssevenfive6jnpklczrpfeightwol
37qccxllhzshninebvpc8
1eightmmcthkhf
seven8fourqn7tbgqnmzcc1
sixsevenone4
clhdvjnqnine9threesix
onetwoeight9
81z3threenjsdhnqxvtwonezv
9hqtsb
onekgnlbthreeg3
eightspnrpjb65fivevzfpvjntbg7drbgjccneight
ninerdlsix7285
fournineninefive3vbnhmhdvjgdqcm
njzspqxpxrone7four55
nfdhlqcpvzrrtsmzhgq3
fourmfdtnpsfbxkjtgtgx5sixrppsqplqdjvnsixdtqvtdm
21onesix6sixnine2
fffsmvtt8fivenineglrqrmktzzseven
fivefoursevencjxmskrqclz2
lgk27threefourfsqrbkntbkfourvflgrzhh9
617hj9
ninegcxninetwohpfdxrb3tjjjtxtnvtwo
one1gnftc8onehtsxsmg
foneight3fsbhdqzr5twojbsdnntwohd9seven
zkzpfvcxqnbvrg1
nine36cddqfvrf
rdjlpfk2pschfsdrpz
nine994three8six
three3nvflpftf2eight4
3nine2
rxxjdk5354
hf4eight8qjtcfldnkvtwofivetwothree
7six3twodhnvmxj1nine
57seven3six6
qklbvzfhclfnllhhgeight8xtvld
5fgzqhkssmkcfour1
hhvjkdnlffnineeighttwo18twonecs
sevenbfzrgfm1six1
nine71cskklxvcbnxtskdbqnpgklrxklcgccxjnssksrlkx
hmklhhjdthree77
3vpxclbgkpone3ninesrclfive
djfqkgjvqpfvdsix5sixtwoeightsix
eightlt7csvgxpnslk
sevenfoureightnld2mxtgpbzpthree1
11sevenglfmsb6
onetjjnxvssg1four4drxbxpnpv24
2zdxs9mfnbgfmjln1threefive
one186ltsbck
6fsbpb9sixhc
nine818
xzqcpcdprsqjbgknkvztwo419q
39qfdlcnkhg31
9djnlcrxqxhrcb8mczrxrm
nmb887525seven
jhmv3
zhvdbn1fivem8seven4sixoneighttsn
6zmmjqmnftclqbcthree
6cpzeight92
onepqfhtsevencvlfvnczhb91mmtdprqxmcnine1
tvqdfxn8eight
five6fivercgrpbtjgv87jmcndclbk2six
jgtmrbvl68lpqkpxddqqxvsixfivesix
nine2nlffgkvmp
1frdnhssftg4eightgclxsgqtn
2sixblr94six
94mlfv
6vlqtcsmdd47hpfmlc7fiveeight2
tklxghxv5bzc4hhcdcpmnine8
four6one1zzgqghvs412
xghjpblsfpg19ntpfmcfd
471rbdblzs
69fourhjxkvd7fourfour
jmrscfqdfppfdjskpk61
five5eightnqpd9ninezknztwo
onelknchr7nrfprgmqzp
svxlxrx9892five2
3ntkbzzpxhdmrsix8ttgp
ndh7zlnrzpvmnine
one7xlnbmjjmfv62qvqjpfprbvjkpcnine
99three5
threetwotwo7dhtgtbchc7sixtwo
tmfxxph3eightgdccscdsrkmnhbb75
joneight4one5
nine3six
81tqzsqpkv99
sixvjlq7
five7bkc
five3811threelfpzztxzk
1fourkkpclqc3
xgrpbmktcthree46g
bgcp4two8
jtgeightwo7nine
bkmcrcq3eightrdtvrbglmxmmztqm
7tscmg5one2jhhbfb1
zt5khcrgqjg5nxxzxzd
five85
twothree1
eightsixthreetwo6b3tnjmcqdjfive
onefrlg7
fivescbjxbdnvslqqsone5bdbvskpmksqmmfsncsmd
two83fourthreefourseventhree
dglrmbtkfltwofive8ninelzmrxvxoneeight
8nine6sixsixtwo7
sevennine4lbsevenkdnrhpltn
h3fiveeight4cplrnd
vhsgjbqm3ninedfhfsb
93nine7jvjmlzgcztrqlxtwo
zhhhdddbbgcssvfzdhmpone5fivefournine
l9fourvjfbqpdslkmvxsdrnsgcvzpjxm
kxlseven5two
rbtwonegsdgvsjtpnnkone7mdz
phffknvthree2threeqgvfqxgnine7
2lgglnmthreeseven27three81
lrgkrxx2
seventwokxvzkvq6eightthree
5fiveseven
fstwonersngdlngx28nine
49oneninesix8four2q
hfvhzvmjgbfcbsevenrmhjhzkc3
six84
8eight2gzblldzvkjfive
6fz3eightzmsqb4qsbbsnthm
fcglpc2one51
sevendqghclrpxt7pzone48two
three5one
5sevenfivebbzkjlcnxseven8fourmzqlxxgjvc
xgg8one6782
gggtljnnsix3lkhdqzzpdtdkmjtgjddkpgx4five
qrmsfc13onevnhlbgs
nrtwonethreerbbqffzh62
5eight81gcdbrx3rlk
mtdtxcmm2bgmqhgqrtxsn8
onercx2
9sixoneqgr4
xmoneightfour2
six85foursixninetwo
ninetwo8four8six
qchclfzq47
khrll3two21
seveneightnine8868four
3rmbmtbxjp12seven
3tsxgvqxmzvxbdvxtgrvdbzqbh
eight7fourjtxx
fmb4one7threekbxeightwoj
vcsevensixseven577
2dkhlrrtrnbgzrmxm5fiveclhgn1eight
1sevenlmrbnfour17seven
three5jtbvkseightoneseven4df
fourrgqxplbpbxtsgkm7
fourqdfxchlc371sc2
fqxlmeighttwo1seven
zvvlftlhfthreesix6three46qkstxvdt
m74pjgccfour1four
plphq933eighteight
cdbqlhbhj3eight
4onevgdkxhz799five9fbljhpqmvk
two6qzgphxl
two1eight
onekxxghlonerqqlrs83threehvvdhsxmfour
npmsvvrdl2673
fivejthseightsixtwo9vgrvjzbzsrxjv
eight2gqfive7mzjzpxqcvheightjfx
1bxckdpt
dngoneightbtdptfn85
fourtwovfzgmxjseven935
8onesix2drgjnlrxbtdlmlznine5
five4mmpmqlttsx56ljdzldntdvthree
1nxxgtwothree22twothreenine
38eightsevennxctjfstp
8fourvhnps3onellstpnztn6kvjccmv
1bseven93eightfour
5nphkdbhxqb2pqxtkvhxq
nvvx6fourjgkdsczjv
fourxrmq78
8tjmnvthree3ninetwo2five
p7cvtwoneq
7thbggjbznrsixonethreeninej
xdgm1crqfnklk
onehmqqgh4ninenthjonegfjmvtfgd
sevenbsqtlk9
8seven9two9hdz29
fbcjhzdgzdg8jgjvcrmgbcrsixnine
3bssqrj44onedqxvhkfive1
tmmxtz5dtxbbcjlfivesix
pvfqzksgrs4khmlvtwoeightlsx
psbttsmnpninefour42fivegsixfive
sevenfiveqscr7dfxpninesix5
xmsjddzfxftsjfq6four6eight6three
seven42
eighteight1nineeight9
8c
pmqljjjzvx5znxqnsfour8
78zlpxnvsqpgmgmk
four7fsgttnrgnlslr
fourtwo3jg2
qlz18three5lpxfjvnfppqjxh
4fiveonetthree4eight
7lzffxkxnzjrtr
three7nineone46ksnshqgdpt
8dntxkkkgdxggvhxh2onefour5gqzsqkm
tjsixonedbklrxxk2twonxdpjzb8
mfglbrjrq93
seven37xhsrxrvcgninexbmdrzxthreeonethree
fivegznvfztszqlhtrsslsmqq43212
tdthjjjbkeighteightsevenpcbmpfq2
five1eightq
three13three4vrsrrtp
cgztjgqgdths2
dhxztfvlonetwokszrv8prdpm2
dfkcklchjj8twonine52ppvndfcnf6
three7ninenkxfourfive
93sixlqxctdhmvssixone
oneqbvfrvteightnineninefivethree9
jskrtmvsrqnpvcgsmxbonecmlrjpdpc4three
crpcfour54xxgzz
9fivefhdpcqsd
fivenineclfctjninefbsh2
fivexhrzbqpfxl8sixtwoeightllzplcpllk
zxgl5qneightsevenone
sixpdc17thxfive
1twolftpzbmnzvdlkvlsevenhdvgfrjhmthreethreeddkdvht
67twotwo71
oneeightcgnhtdxpfnsevenoneeight13
eightthreervd5tnj17
ssrsmhxrsixeight3gbqggcvfqg29
6fivecvcdxnxhxxtlzthree
fournrrsix595
p2qchlvplzdvchkbdzzbnsix7ninefour
fourthreefourtzvlrnr9m94seven
4jxzkrfourvtjpsnrllkjcczmmqnsj4q1two
4627qlpscgpjcnine539
two6nineeight
63five66fivethree1
skndgzsbsntwoone1
threerzgdxgtthree2three
953lsdgn59
27bk
sixmfmbslpjjsixsvnqrvtxznffive5
2ninenlgpggxm42six234
fdzfvkjnchsevenfivethreetscllgjvrtqckfnmz3cszmt4
7ninetlzsxjsl2nine3
shsvptqngsevencjjthvfm9six5four
7lsrq36threevzfjc62
two59threedxmfourjfschvqvnine
khfqjmksxhbvs8sevenhzrmjtkgm
nine2stgflmsm8fkthhhjzlszdnmkmqpnjxrfc4
twofourthree244nine
eightvt978
fivefiveninesixnine6513
2lbtz19fourtshqsvblhrkhxbpfour
ptt7bntxhdvl
mskflsslvdlmndmmqmfourtczqlssnineseven5xxxkfvzd
l329eightsevenfourfivethree
rmlksxsixspp9fourhlcg
8five9q
hqoneightsix19nine6xmjbtgjzgrhmlrxq
six38
9eight2
3sixbzhgfcg57sixsixjtqmknd
9fchn58
vrpftbnvonefour6
vqgdtrvhnnxxsevenseven9eight
56vnine5rdpsnlqcbq7three
vncrjds2cmrg7
213sixfivesix
tzclpzdsthree4sxgjvrzcrzcndnfour
4sixseven1three7
8fbrggzmtqn8
four79p
twonineqonemfour3dq
5fdgpmrghtksn5onesixtwo
xseightwongqqsxtwo8jslclldvnb
nine1one
9gxjrfourvhqzcxdhrtpxgtwonine
eighthfhtnvchtc7fjkrxsmhtm7rbk
thqxcfjbksix32xqrgqsqtx
6qjqql
jgcreight7eight
6onesix4threeseven
5vcv1twoeight7
fivesthreebvjntwo9jdxghmxvl
632msc9threenineqfone
dqxfourkb4eight
6stsp3nine
566sevenpdmg
xprjdn55
9mjtcmhjb
twoninelkjznqztbc3twolnhjhdbfxmhfr
twotczpxn6qlcfdlpnq
4ninefive
1rs44three2gzczjdgq7ssmtgjbgbb
ggmzqbkgsix4five23bftjlmbfbd
threehfcscmmlqvcjtpthree98
7sixsixone4
2fivefvrr9four4three
1zt1seven
9hsbthqvhhsnineone23tslqccg
sixbqvd3
22148four3
ninejlpbtnfive41rtzqjgfmcbncrrlnn
9sixfour
qnhfivetwofjtqtlxd7lmrlfctq864
69dqrzhlqssgcsxtz54cpmjvrkcfiveseven
fiveqpv85frkmpgxgc
xxqsscldeightone9ngqtkf1nine
5sixgxbnnjsvhf5dgxgone7
sixsevensqghlvkfxnfour7
8gmgvjbfivesevennine
qj796fourone9
rmpfsppvzdtwo4threetwotwo9
dqvtrhm3nhtrxxccmfiveonedfzfvcghr
4threejxkhnxcxjoneightp
sevenhkpfgdgsgnvseven3m
qhrvjcnfdbqchrsvchcxfourbkhhq9six1eight
29pqnd
1oneonethree627
5977rcr2threeeight1
fournthpqbztrhnine64
fjnjpgqxr86five4sixxhrtvbp2two
7sdnvlb5two
58vffgzcgx4nineoneeight3
h1sjgqbhndbz1oneqgncmhnleightwos
gjms21
onetwodphfznine51
gxpl3fourzfz3
five46
mqsixccffmc9gqk1
5kvxpqrrpeightthree
threefoursevenfive2dhtbrxlzzl
shhczssbltllsmntntlqfqgnnl98rm
5oneeight3vkqtwo29
bv69fouronefourone6
eight6five966
4xnrtztgfgcmnmnsevensix
gmsvtnjd1sevennine4xxhqfbrjjqbglqjngttc
mdnxhhteightfive5onenineninegqjbqmfd
xonefourtwo4
onesix61
sjmnjhkj2892eightnine9
nzseven39
99nnjjzdrfsnjhthree1sevenfive
6xmggtbnblnbxdpkzblnvcvjqmhvntwoeightseven
76five6six
chdfjrlfhdzeight778
xrvrck9five1hrvpfvkdcb7eightnine
foureighttq5sgdfourl2
4rnbxrhhboneonefournine
5four3
1b97eight
hlcjghlhsf32tgknm565knxqr
onecqgbgdcmlb2sixsix6nine
kxdkz3
seven5xvhrxdm
xblqbgkqgsixvgrthreezxnzhknklxhbmgl4
fvnkc7threethreeseven
bmbqxv24jhdg
97rfphlxvtx
4pgblonelone
ptdpllrddeight3
9knpjzskrfd4
twomjqdtbbvmj4shvsqrone3
9zzh3pjsf6mhxlhm9glglfztjm
cfconeight47fivetdsmndgvsmbqjvszb
21vbqjz374
sixeightqgfdjbhfd4oneeightone
tbccqdpz78srmcdx4six2
643gqtvhkljxt
klfjf4qms
zrnhkhqzpczzfqsgsrtxklpbtp72
1cnqfltrmhphg832three
twoseven5
mxkmxlcgsixklclrkfr8638fourlrqpzgjq
nkbfkh452pthree
zvcktvd2485four88
rfxj4
three6jnr7
two45rldjnmxkjphtwo7v
fivelncjffdnkzqrshvthreeh3p
ninejgrbmhrbqldeightnine6nine8one
96lvpt2djrkc5
7seveneightthcxgthreeseven5hpfddktpj
6bvn
sixbjxtphstzgspnmkcvc952one
gmmslrndvltlthree394sevenoneightl
threenine7onefourtwojxhzvqlseveneight
5eightsix4txcczzmg
84seven
skjpkhxggsvjbprhllgjhninetwo6
72bdpzccvone4zbdzlllnnonernlfvdpq
bvrtmzmtwonine29
mrlvmdnlxb2814five5fjxzlhpn
lmrpf82rksix611
tvq18oneqnmmzvtclnthree
jrbjc1zbbpqbrddt26seven1
lxfivenmdtnhdmf98ptpxsgmgrxkmmznlk
zbmvchmxsevenddddthree2dxlddjp4
three3onejg2fqgtjmpcgeighteight
three2two9seightfjqtwo
ninefive8sevenvnssix
3cnbxxtgmf5
kpmjcsfrjfgzhmbpnqmlvrhbhqs8
3vvcone64
fvqksdsixthreexbfivetwo3
sevenseven5
63twoone8vhbcpmmlfive1
4ctwo17eightsixkpvlgpj1
rsgsnone1
kbvxonemcqfive3eightone
ninenineone45threepvsmrtonejxmbnd
37fklnjkslqk9th9
fiveoneq8rcgdxtwo8jfkxq6
rgd7
7rgkdpvp7qrb
7crtxfmslxxtcxsv
mqdnltb23fiveqcdqtonethree
8seven7
8cqhqlhndqjznqhdbld2nspnxbj99tqqhp
onelqn7
bvbjfour7
ldqzhvhrbgsrrkh5j
kjsjxdcqgjztldjvxxgr9twoxfknxrrrphkdzdl8
rvscnztblp56ljqtwompclcf
2dbtdgsevenhzctckvkvxvjljz
tvmhhxbbxvvsnlnineqsltjd92one
9twoqdmtvbxhpcthreeeight
81dvnkd87xbct
6mnxqnndcjfivefdckzmppfsevenmqvvvbnrgs
lvl3qjk5
3fivefive
ktvsqzrf14eightmtnqbcktk5
sevencdknznbxseventwo8rzggmvpbvlrs
hkhhrdxlml1xzbshninejzqc
eightseven23shkgzdgvvcxxfdv5
14five1sevenxfmhtptwo3seven
47one
2three3
f5dszzs2
xmxffxkxpkninethree8x6seven
glzoneighteightrnjqgjznjm9
63fznqxdfqt8
33nine
4vrbmthreefbdzf
fourninethreesixnine9fourlvbgqhjbqncnlbjbz
two848dbvbninenine17
pqzqgone1two
eight7lmxbhcsix
szr2fcvkljctlghhthree
sk81pxqhhhhvnjvgzfiveseven
cgqqkrz2vpdpzrthqssg7nineeight
498eightfournine
eight85onesvxnineone53
ninevmchpkcg2
six2shsvqfivefourtwo
mdzckfvr72cv
twotwo7onethreefourdjtgjg
tworfclmm3
5sfvnkrmrptsix7four6kzlmclm
1onedkqgzbr89kphvc8
5seventhree8eight9eight
kvjpgjgrcmpdscbfthreethree4mjqjnnzceightwohh
kjbmh1fdkdtznmsznvlconeznineseven
1fmgpxhxpqznqscvbszhhcmglvtnzhbbjjbzg
1mfqzkfnine5
rrflkqslxztdlqxqkdnhqd7ps
39123thhsmscbpxr
8vnine4jgqrvqtshg3jhhdnbsrxneight4
xkqgnfour87
lsbnjqtzqz7ninenineone73lmkbnkhs
9fiveqqgqblfivehttxk
8twotwognd
4xknbheightfour6358
4cqtpfjpf72eight3
ninemjpqpqg8foureightsevenfcvpnrnnpzhcgkm
37twofivedsxrzbpchnkgxqx
oneone57one2k92
mckoneight9threefour1onefourhdrcrvhqcmngkjnsthree
945
tmmtwo7
57
6twoxzbfftnr27
threenine4bqpztsixfour
84eight
3jpbnjrqhqfnxckqkqdvls
9gzzjzz
374nine
ninembxeight4sevent
threecq3
cvn6cvqmpmfflkzphndjnggtktwosn
pgz7four5nineeightsixqrnfkdkgh
6one781vstwothreef
one617fourthreefourxqxnpv
8eightsqmkjkkf5xckcvd4lfnnfour
seven23qhntfmg56onexkjxh
f5s56rfltx282
twosixninefive1tlzq
threetdhghclfsksql5oneninetwoseven
zbqzxmpb9pxlrthree
r4gxdzjnvzfonejnpmfcpgvxjjvkh8
five338threejkk67seven
twolntxcnzvfr55sixtwofivesevennine
xhlppbqfr71brvppsixthreefddlgpfslqmdv
kxsklgonefjfpkd4threefive9six4
6srphqmtdoneh3glthreefour8
rjzdmj1cqvxnx1nvcvbfctft9
3fqjdgbpggthreesix53
9fivesndgmkvckblktzkshglqgdl4ztwoseven
qqrxkqhnzb23two34nine9
8hrmffgstqpsixeightx1six
jngcsjnrhn2zsvcjmjg
9zfdmhzxdnfour272dcrqgk
lbjbrfhjxhxjphzxsjsix4
fourthree2seven1two
twosix87
vrlqqkctddggcvcjcpk6hxbqvbxmtsix
mrcgbpc6dthzqmmthreefour6two
r2zntjxgpfqfmqh
fourseven3
6nfnsgchjdffttmgfnbvlxzoneseven8
8sevenqqfiveseven5twojvgk
4rmtkvml4
bprnine85
sevenmfpcvlblcnine485fourseven4
sevenseventhree68fivelhqgjqvcdqkvds
3fourxsgghqnvtssnvfs7nine7
1fiveone5hpfdgvxb
eight2eight42twotwoonenine
lpdeightxcgpxkkeighthtjpsninemjlxrxtg31
4smqpjzsixonethree
mr6csbmgrdrjj3onelqd4four1
5sixvbscchd3
384sps
4qzgsvmfx4ninevcclvcfrfp6tckcpvj5s
8l5glclltgcjgbhcg6
3ldtdmjc6threeone
hsrtzl521nine5qqrtpdsp
z4v8threejdsmbfjpbj
9sixln26eightwovmh
848
kndxtqpfrqxdxtfnqrqznpgvp9ninerlzcdvdtwo84
kmqs84775seven
5threefourzkg
43five8cq2kprvdqrmxr1
three4ttjqdh
48nine7sixfive
22x
sixrgtwo3rnbzkrztkdkg
4t
29bjpskmxneightppvthree
zmlzxvtlkt4seveneightbxseven
5two5eightnpszzmbkncnstx4
9vk98sevenhznkxmlrlk7vdbqgvfjdk
1sixb8sjkvdhfld
one42eight4mrsdnpfjpvdtq
76fourntsrfllxkdfqvm6seven
skqndhr3nm4776
4xpmfxmvj633eight
83ninecmpt
fourdthree9
9eightjqnnmthcrseven
7threekgtf1
xscj7threenmhsixseven5s3
cqlzjt41
855threemlmmqkgtfk
ninefzmvjjtvbmgf8nineninetwonegcn
ccpkzcldfourkdtfkjxvfb9fourhbtwonsoneightnl
pkeightwo5seven88rdnzzsdkbjeight9
threen2fjsfivesix26nine
nine4rz8nine7bglpcmkqfzpseven
eight94six8dpgrv
twodfctf278
fltqtmdkgjsvf72three
llrtzsixsix4fivetwosixone
qjhtjqjhgkjkzlpxxclsrdnzk1gbqt
sixeight1sixtwo
one5413nkmqjtlbdkz22
bhtwoneonemzpzkqeighttwooneqkmcmsbq4
sevensix3three2sixprcqcvm
25tjffdrtwohfqlkhzxlhb
97gcgqgjnpsthfjfdv636jsxq
zggjmjone1297six8drzs
jbpvnineeightntkkshbjvr3nshnqzdlkjmkfive
5four2gkkbxmpthreefour6
5two15sixfivetzpg
one4fouronemfpvnqseven
9fnlbljdnzzfournine78
djfljccrtvvqktzzvk61onesd
7twohbkeight
seven1eighttwothreet
4mdcljknhpqgxffqpj5
nine9jlsmfgdgntwothreeeight4
136nh
635ninejghg5
cmone7fdlk9lfivemzvnhkcsp
8eightnlndm
6fourpb892
fiveseventwosixfourthree7
5fm
ninegchdnrf63431
24sgnflnsixninenine8
snm9
3fntd721dhhkrqqxsfpstsvzpgonetkhcr
jlzfbml61vdmgb7one
266517
7fivetwo2vhchmg678nine
cgrp3vzn5ninetwofour
666ninefour
9s
svpcnlktpxtvk42jhsvvdpftxpsk
2qznfzvbdr
foneb7eightfivehlbjjknninethree
kfp6
l34pxxhxtd7d
rsbcrtwo27twocqlmeight
jkzgvqgpjfdqvmjfx2flnvjmgllxghhrbjjkfour2
45sevengdnf59twofive
6fivespvkblrxvkcgdxktl
three9dvrssvl5eight4ftsix
seven56gdmlbfbjsl894sevencmc
814
1one4
onenine5fivekcrf1gvvfhlncsv
2ctvq9djzddfxcrj
ntdlcqgsixvmfvlc4fourvlhtvvqmnmkrm
9nineseven1seven
lcvzbnfourksvjqvmv47one5
nine4blvlvlpkl6
sixnqxrhnztzvpmbzmxjm19five
18jtzhk
rzrhv8four
2npghxvjonebchsprfhsjznrxvxnine
eightngsevencrjkxbhpgtxlzhgb46sevenqhqmlfx
threesffl9fivelgmndjfvseven92
seven85
87six9vnshclz
threetwo7915three
one2vkbp6rhqbxvcl7
bsbr1five91
qd3mnine
jjvhltxtdh5nineone6
mbxlnj7bbhnxonejtmtqjfrzqgtrhkeightnine
fourfourqrxdtfive2smnqp
7tvjrszvrhdl5five
four15tvmpvxpvdjnine
sevenvv5tworpvdlseven3dlqvgblqtwo
nkckggninegnlqlnv25threexlhlbzvzk
3vngmhprjseventhreeeightnine
nvqtpzsszrdvttfivenine56oneseven8
146
fxfbone59
f32dhffctkxp6rcngvtfq
sixthreefsixjhckmjqfive495
42four
65nine984
5fthreeone9twoqqsfvzmp
ttwonefive4
one6gfxseightxqcq6
3sixnrjtwormrncmhxeight
jhdxnmsgsdsevensqsslbsndpdmznmldbgeight3tcvjjv4
5sixtvpckxzcjzbmrzk9
pmdmnfgkb3six8xsmstsmxgmm
53onetvlgbglq4zbqpdgsskzdsksd6
kzjcllvz6skphkfdxfiveqrbhmk
75qqjdgxlmfthreevzbfjdlxkfqqq
seveneightjntpjthzptwo2two
2five4fvrfxxnine4qzkkfkmq
2xlvcltn7
fnmggtj2rqxzh7three
rzpjkgtml1
2oneseven4one7xps6
rljfhfrhmzkjxktnszbkpfspxdkqneight2
pzgnine49six2
plxsqeight2
eight2sevenseveneight8rfcrsdlxb
sevenclpqqfxgjnmtwo9
9sevenrqsixone8eightrxqgfsbjh
kqtkstrxhtfzbllhl4lqvqkcbr
hfplfpbltczflpp7nfive8
ninenvqfrvtwo6onel
threev65
frhn18six9sixninefourrsqzgd
mcxckfg5vpkbs89gbninexjzvlj
fivesixdx28
7ppbqv
hs9twopcvpgtjnrsvksskpc8
9mlpckzj2twothreefive
rkrgdclkninetwo6eighttwodc25
tfivefourtwohkhhgsqlj1dtdcxmxkf
1four6five
fgbvmvxvtsix2twonine2sixfour
foureight66
s6fourcv
mxl358sixfive8six8
ztbtwo73sixvxsix9four
eight7qmdlcxfive5
phgfivekrjxdmnzsqsix9
1mfqsevenhz
rjhcdgzngtc155bqlttbsxklpknvlmk
qjkdqlrrs6two
sxlmqzxdpxdnj9fivetwo9seven5
2qtdblb2
8qgdzrsixtwo598oneightp
1shdb944
vrlpronek2
jm52
8eightfourseven11mvtrmtkr2bmp
mnvnjxrgmrxhztwo2ssrdpqk
ztfive435three6threetwo
tnrrdnbgnbhzljdxhxxfrqkcpeight8js3
foursix6zcsrztvgjxmp
five7fourgnnkspxcmczcbgsbdf77five
fgbrzkmvgrdbqjqndpfive81onetwomtzlfb
2qbsfd1two3ninetwo2
8tdjxvfpvdvone33three
lpchnmln56twofive8tfour
cfkfbhppjf6fourdkfxsvdtbcjspzlseven8
5fivestgkzsevenonedkhhrkthree
37nine8six8onefhvvbkmgdfgtv
26hzz
5glvnsztmnfjmkjseventdm4five
pvnnqrqvftrbcvnnthreenine5
mgscxxlp3eight
53eighteight
two1oneqlcdkbddfour
jbll3
8threeseven5tmtrgdhqxd
8twonine6s1
91seven5pmqrjlhqrtzs
jj3sevensix4482
jeightwo7lk4three
zchchxmsctzffivefournine9sqhqkgfour
72xct1
vnsxvsqkhpfvgdseven23gzcmltzgone
xzjqhcvsix1fivecjtxnfivekmvjdc
zdfourgjlhtwo24d5klkpdgqbz
7sdzzdbrxbtonerjcmknnql4dfzqccvqt
tncqzxjq9twofiveqkxdrxrpj894six
dddmkctrzlpfmsszeight8zvbpmpkg
three23ckjhgjc
375jzdhnfcfr19mhsbnplqh
vpbbjlzone5sevenseven33four
onejzfsevenrbskjq1four
seven13one
vcnkfgv979one6zln
rqlxzzbmjb4lmbthreektqsdcfzbmdsfivethreenrxdlkqt
qkoneight8
5rfourfivenine94fdprsix
onexonelzdh2lcbqpzq6
six6v
7gtgxqnnine
tsljzhntwo3fourpbjncgmvf3fflvjxp
vfkdone9fivecftvmjdk
xc5three6eight94
18363one7
8fiveksshdlfmzhljhcmjrn7kpv5j
xbhmxfhbjnjzmninethree7
2933mkmdqjcl
6ncvzqxfvgfive
lnine5fivetb4qmfktnqjxs
93187
5mqninedzkfhbk
two7eightntdbsix298four
sixone3bspxqxggkmkrbcqrhfrxrlgjrlvfl96
fourfivehqls3nine
threedfklszn2threeqzhh7one
mqmftzglone6kjpgglznhrjz89
146cvkftscqsevensixnine
nndhdgpd484hxdgjtfsdxxg9
6mbzckbjphg
eight6jbjtnld2mdjtd
zjtzcqxb736five
jlkdmone8
gvjnjvmlfvcmvnfb8xcgjcmjqvz1bzcctvsixfzqjlhfkfk6
vr6onejnjmrrldnsixsix5six
ninembtmtkgbctlfive45cjzzrmgcscfbcgeight
2mdvneightjzgffivefive4
hmdnbxghxjxt4czshmsfzc
61six18threehrcj
six3five6eightkdfzhxcjkdhq3
jrhqrqkpd4hsixdsbjdpscclmnnhknqq16
jflzcxr3three
threefourghvgsktkc93cmjmsgh8one6
96fivesevenslklhsfmpz
jgkpgfnnbq2pmspdfhsqxfour
g4fourthreerpkdhjhlxlzvnineseven
xkxhkphnkvpdnlncn86srxthree
7sixsevenrfour
5zr72qltsrbdsv
ninervqzdfzqmf6five
8jslpvs73
ztvlxndlm5twohdhmtrdnhbzdrxb
seven6nine4dpdpvrtrmqvql
jfz1
5nineeight5onefivecxtqbsdtbthreefour
fourgeight6threeszgseventwo9
sixfour3
npl8
tzjkffsvbjseven5rhmlxonezlx
5dhtpfour
twothreebxtfndvdnine1sixbb9
five9nineqlzrmtgs5
9v764nineeight
five4eightlsix6
3nineeight21
foureight8btsc
3xgdgtb2
7threetwonexqk
kkqsix48onefourhlsh8
onekgtdzgfh2fivenine2onerb
six4zgcnlhmltrxp5xphvtwo9
eight7cdqggpssix
niner9pzmrbqldkljmgphrrgmdjseven6
439
twofoursixrthree5bxppnhqtx
bmpnt3
fivepkzkzpghrptpksevenseven83two1
9fiveone8one
fiveseven3lqxghdlskbltrzrstwo
fournine3ninephlghonetwoeightbvmdcconeightq
three2pvklmzqjfh4sixonedrctlsfdfour
three91spjlscscjcxbbpdhrg37
57qqjpdfppsix1qxrh5mlmncf
4nfone5eight
eightqsix7one
4jtvxfd38hnrmqkbnvfxpp
qmfsspkfour1plmslcrsseventhree
fzckcbfvxbpsix7nine
fzrj4
4threeqntnineqstzjftnine
tkrh6sixdqflrvtmzmfiveseven9ktmtvprkxhfour
nine4983four
mpllmjrfgv66five3kvhthplrtwo7nkklb
9ngvdjddqbz
5twosix8lbhmzrg
eightsbmcfgm76two4hhc6
seventwosevenrpm6threeeightwodxs
xkbseventwotwogmkxhpmhm42hvvbfchreight
gcqeightwosix8xdlhrnnbkmsevenqdbrjghz
458ninextfjxvgsq5fltdsk6
rlgsflhxqd5bdbhclmrthree
twothreemqqbzjn88blvqxbseven
rqrrdrmlfsixfive6
eight959tzxkgqjd
txdszrn5eight3cqeight1brqr
45122
jvvslnkdk6qnfzjzvseight55eight
4twoeightgrhhkrvtkrzpfive7seven
three8gsmkpzsmfvf2
fiveeight5sevenone9twoseven
4seightjjdkdglspz3vg
sevenssrzkspld2
qnzcvcthrsgjlnzxmxlppjdpnine8seven7
eight7xhvkrcr
two2tdjdfbqtqxrs119r
+112
View 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
View File
@@ -0,0 +1,7 @@
two1nine
eightwothree
abcone2threexyz
xtwone3four
4nineeightseven2
zoneight234
7pqrstsixteen
+140
View 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
View 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
View File
@@ -0,0 +1,5 @@
..F7.
.FJ|.
SJ.L7
|F--J
LJ...
+140
View 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
View 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
View 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
View File
@@ -0,0 +1,140 @@
.......#.....#.....................#.............#.................#.........................#..............................................
#.....................#.......#.................................................................................#.......#...................
.......................................................................#.........................#..................................#.......
................................................................#..............#..............................................#.............
.........................................#............................................................#....................................#
.................#..................................................#.......................................................................
...........................#...............................................................................#................................
....#.......#...........................................#..........................#.............................#..........................
....................#.............#........#................................................................................................
...................................................#...................................................#...................#................
.........................#........................................#..................................................#......................
......#..........#...........................................#...........#............#.....................................................
......................................#..........................................#.........................#.....................#..........
.#...................#..................................#.......................................#...........................................
............#.................................#.....................#.......................................................................
............................................................................................................................................
..............................#.....................................................................................#..................#....
....................................................................................#........#......#.......................................
.........................#.........................#............#...........................................#...............................
.#......#.....#.......................#.................#........................................................#.....#....................
...........................................................................#.................................................#..............
...............................................#.......................................#...............#..........................#.........
......................#..................#..................................................................................................
..........................................................................................................................#.................
......#...........................#.........................................................#........................#......................
..............................................................................................................................#.............
..#.......................#.................#............................................................................................#..
..................#....................................................#................#...................................................
....................................................#.....#....................#............................................................
...............................#............................................................................................................
..............................................#...............#..........................................................#...........#......
.#.........#........................#..................................................................#....................................
..........................................................................#.......................#........................................#
...................#......................................................................#.................................................
.............................................................................................................................#..............
.....#......................................................................................................................................
........................................................#........................#..........................................................
.............................#...............#.....................#.....#............#..................#..............................#...
............................................................................................#......#...........#............................
.........................#........#...................................................................................#.....................
...........................................................................................................................................#
.....................................................#.....#.................................................................#..............
#.........................................................................................................#.......................#.........
................#...........................................................#.....................#.........................................
..............................#..............#...................................#.......#...........................#......................
........#................#.........#............................#............................................#.............#.........#......
............................................................................................................................................
.......................................................#...............#.............................#...........................#..........
.............#.................................#............................................................................................
............................................................................................................................................
..#.............................................................................#...........................................#...........#...
............................................................................................................................................
......................................#..........................................................#................#.........................
............................#................#......#......................#...........#....................................................
............................................................................................................................................
....................................................................................................#................#..........#...........
.#............#...................#...............................#........................................#.............................#..
.........#...............................................................#..................................................................
.......................#....................#........#...........................................#..........................................
............................................................#.....................................................#.........................
..............................#.......................................................................#...................#.......#.........
............#.......................#...................#............................#......................................................
...................................................#......................................#..............................................#..
.#................#...................................................#........................#............................................
......#....................................................................#................................#...............................
...............................#....................................................................................#.......................
.........................#.....................#......#.............................................#.................................#.....
............................................................................................................................................
...............#.....................#....................................................#.................................................
..................................................................................................................#.........................
....#......#.....................................#..............................#............................#............#.....#...........
....................#.............................................#....................#.........#.......................................#..
.........................................................#..............#.............................#.....................................
............................#...........#...........................................................................#.......................
............................................................................................................................................
#..................................#...............................................................#..........#.............................
.......#......................................................................................#.................................#.......#...
.....................#....................#...............................#.....#......................................#....................
................................#..........................#......#....................#..........................#.........................
..............#...................................#........................................................................#...............#
....#....................................................................................................#..................................
.......................#....................................................................................................................
......................................#................................#..................#.................................................
.....................................................#............................................#...............................#.........
............................................................................................................................................
............................................................................................................................................
....#.................#..................................#.........................#..........................#.............................
.............#........................................................................................#..................#..................
......................................#............................................................................#........................
.........#....................................................#.........#............................................................#......
.............................................................................................#..............................................
.............................#...........#............................................................................#.....................
#..................#................................................#....................#.......................................#.........#
...................................................................................................#......#.................................
...........#.............................................#...........................#......................................................
....................................#.......................................................................................................
..................................................#..........#.........#......................#.....................#.......................
.#......#....................................#..............................................................#...............................
.............................#.............................................#................................................................
.......................#...............................................................................#....................#...............
....................................................#.....................................#...........................................#.....
................#.....................#..................#.................................................................................#
...#.....#..........................................................#................#......................................................
.............................................#...............#................................#......#......................................
...............................#...............................................#............................................................
.............................................................................................................................#.........#....
.....................#................................................#.................................................#...................
...............#.........................#.......................#..................#.......................................................
.....#......................................................................................................#.......................#.......
....................................#.................#.........................#..................#........................................
........................................................................................................................................#...
.........#..............#.....................................#........................................#.....................#..............
...............................................#...................#........................................................................
......................................#.............#..................................#.....#.......................#......................
............#.....#...............................................................................#.........................................
...#...................................................................................................................................#....
.......................#.........................#..........................................................................................
.........................................................#...........#.........................#........#..........#.............#..........
............................#..............#....................#........................................................#..................
.......#.................................................................#................#.................................................
.................#..................................................................................#........................#...........#..
...................................................#.......#................................................................................
.........................................#......................................#......................................#....................
....................................#...........................................................................#...........................
..............................#.............................................................#...........#.......................#......#....
.........#...............................................#..............#...................................................................
........................#....................#.....................................#........................................................
#...........................................................................................................................................
............................#......................................................................#.......#................................
......................................#.....................................................................................................
.....#............#.........................................#..........................#..........................................#.........
...........................................#......................#..............................................#..........................
..............#..............................................................................#............................#.............#...
..#......#...........................................#..............................#..................#.....#..............................
....................#..........#.....#...............................#......................................................................
............................................................................................................................................
.................................................#..........................................................................................
.............#..........#...............................#...............#.............#..........#.........#........#.......................
............................................#................#.................#............................................................
....................................#....................................................................................#.............#....
+147
View 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
View File
@@ -0,0 +1,10 @@
...#......
.......#..
#.........
..........
......#...
.#........
.........#
..........
.......#..
#...#.....
+140
View File
@@ -0,0 +1,140 @@
.......#.....#.....................#.............#.................#.........................#..............................................
#.....................#.......#.................................................................................#.......#...................
.......................................................................#.........................#..................................#.......
................................................................#..............#..............................................#.............
.........................................#............................................................#....................................#
.................#..................................................#.......................................................................
...........................#...............................................................................#................................
....#.......#...........................................#..........................#.............................#..........................
....................#.............#........#................................................................................................
...................................................#...................................................#...................#................
.........................#........................................#..................................................#......................
......#..........#...........................................#...........#............#.....................................................
......................................#..........................................#.........................#.....................#..........
.#...................#..................................#.......................................#...........................................
............#.................................#.....................#.......................................................................
............................................................................................................................................
..............................#.....................................................................................#..................#....
....................................................................................#........#......#.......................................
.........................#.........................#............#...........................................#...............................
.#......#.....#.......................#.................#........................................................#.....#....................
...........................................................................#.................................................#..............
...............................................#.......................................#...............#..........................#.........
......................#..................#..................................................................................................
..........................................................................................................................#.................
......#...........................#.........................................................#........................#......................
..............................................................................................................................#.............
..#.......................#.................#............................................................................................#..
..................#....................................................#................#...................................................
....................................................#.....#....................#............................................................
...............................#............................................................................................................
..............................................#...............#..........................................................#...........#......
.#.........#........................#..................................................................#....................................
..........................................................................#.......................#........................................#
...................#......................................................................#.................................................
.............................................................................................................................#..............
.....#......................................................................................................................................
........................................................#........................#..........................................................
.............................#...............#.....................#.....#............#..................#..............................#...
............................................................................................#......#...........#............................
.........................#........#...................................................................................#.....................
...........................................................................................................................................#
.....................................................#.....#.................................................................#..............
#.........................................................................................................#.......................#.........
................#...........................................................#.....................#.........................................
..............................#..............#...................................#.......#...........................#......................
........#................#.........#............................#............................................#.............#.........#......
............................................................................................................................................
.......................................................#...............#.............................#...........................#..........
.............#.................................#............................................................................................
............................................................................................................................................
..#.............................................................................#...........................................#...........#...
............................................................................................................................................
......................................#..........................................................#................#.........................
............................#................#......#......................#...........#....................................................
............................................................................................................................................
....................................................................................................#................#..........#...........
.#............#...................#...............................#........................................#.............................#..
.........#...............................................................#..................................................................
.......................#....................#........#...........................................#..........................................
............................................................#.....................................................#.........................
..............................#.......................................................................#...................#.......#.........
............#.......................#...................#............................#......................................................
...................................................#......................................#..............................................#..
.#................#...................................................#........................#............................................
......#....................................................................#................................#...............................
...............................#....................................................................................#.......................
.........................#.....................#......#.............................................#.................................#.....
............................................................................................................................................
...............#.....................#....................................................#.................................................
..................................................................................................................#.........................
....#......#.....................................#..............................#............................#............#.....#...........
....................#.............................................#....................#.........#.......................................#..
.........................................................#..............#.............................#.....................................
............................#...........#...........................................................................#.......................
............................................................................................................................................
#..................................#...............................................................#..........#.............................
.......#......................................................................................#.................................#.......#...
.....................#....................#...............................#.....#......................................#....................
................................#..........................#......#....................#..........................#.........................
..............#...................................#........................................................................#...............#
....#....................................................................................................#..................................
.......................#....................................................................................................................
......................................#................................#..................#.................................................
.....................................................#............................................#...............................#.........
............................................................................................................................................
............................................................................................................................................
....#.................#..................................#.........................#..........................#.............................
.............#........................................................................................#..................#..................
......................................#............................................................................#........................
.........#....................................................#.........#............................................................#......
.............................................................................................#..............................................
.............................#...........#............................................................................#.....................
#..................#................................................#....................#.......................................#.........#
...................................................................................................#......#.................................
...........#.............................................#...........................#......................................................
....................................#.......................................................................................................
..................................................#..........#.........#......................#.....................#.......................
.#......#....................................#..............................................................#...............................
.............................#.............................................#................................................................
.......................#...............................................................................#....................#...............
....................................................#.....................................#...........................................#.....
................#.....................#..................#.................................................................................#
...#.....#..........................................................#................#......................................................
.............................................#...............#................................#......#......................................
...............................#...............................................#............................................................
.............................................................................................................................#.........#....
.....................#................................................#.................................................#...................
...............#.........................#.......................#..................#.......................................................
.....#......................................................................................................#.......................#.......
....................................#.................#.........................#..................#........................................
........................................................................................................................................#...
.........#..............#.....................................#........................................#.....................#..............
...............................................#...................#........................................................................
......................................#.............#..................................#.....#.......................#......................
............#.....#...............................................................................#.........................................
...#...................................................................................................................................#....
.......................#.........................#..........................................................................................
.........................................................#...........#.........................#........#..........#.............#..........
............................#..............#....................#........................................................#..................
.......#.................................................................#................#.................................................
.................#..................................................................................#........................#...........#..
...................................................#.......#................................................................................
.........................................#......................................#......................................#....................
....................................#...........................................................................#...........................
..............................#.............................................................#...........#.......................#......#....
.........#...............................................#..............#...................................................................
........................#....................#.....................................#........................................................
#...........................................................................................................................................
............................#......................................................................#.......#................................
......................................#.....................................................................................................
.....#............#.........................................#..........................#..........................................#.........
...........................................#......................#..............................................#..........................
..............#..............................................................................#............................#.............#...
..#......#...........................................#..............................#..................#.....#..............................
....................#..........#.....#...............................#......................................................................
............................................................................................................................................
.................................................#..........................................................................................
.............#..........#...............................#...............#.............#..........#.........#........#.......................
............................................#................#.................#............................................................
....................................#....................................................................................#.............#....
+116
View 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
View File
@@ -0,0 +1,10 @@
...#......
.......#..
#.........
..........
......#...
.#........
.........#
..........
.......#..
#...#.....
+25
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View File
@@ -0,0 +1,10 @@
467..114..
...*......
..35..633.
......#...
617*......
.....+.58.
..592.....
......755.
...$.*....
.664.598..
+140
View 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
View 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
View File
@@ -0,0 +1,10 @@
467..114..
...*......
..35..633.
......#...
617*......
.....+.58.
..592.....
......755.
...$.*....
.664.598..
+213
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View File
@@ -0,0 +1,2 @@
Time: 51 69 98 78
Distance: 377 1171 1224 1505
+37
View 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
View File
@@ -0,0 +1,2 @@
Time: 7 15 30
Distance: 9 40 200
+2
View File
@@ -0,0 +1,2 @@
Time: 51 69 98 78
Distance: 377 1171 1224 1505
+28
View 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
View File
@@ -0,0 +1,2 @@
Time: 7 15 30
Distance: 9 40 200
Binary file not shown.
Binary file not shown.
Loaded 100 of 122 files, more files were not shown because too many files have changed in this diff. Show more