Merge branch 'master' of ssh://gitea.dvereb.com:1128/dvereb/Advent-of-Code
This commit is contained in:
commit
e28632c743
BIN
2020/1/a.out
Executable file
BIN
2020/1/a.out
Executable file
Binary file not shown.
200
2020/1/data
Normal file
200
2020/1/data
Normal file
@ -0,0 +1,200 @@
|
|||||||
|
1778
|
||||||
|
1845
|
||||||
|
1813
|
||||||
|
1889
|
||||||
|
1939
|
||||||
|
1635
|
||||||
|
1443
|
||||||
|
796
|
||||||
|
1799
|
||||||
|
938
|
||||||
|
1488
|
||||||
|
1922
|
||||||
|
1909
|
||||||
|
1258
|
||||||
|
1659
|
||||||
|
1959
|
||||||
|
1557
|
||||||
|
1085
|
||||||
|
1379
|
||||||
|
1174
|
||||||
|
1782
|
||||||
|
1482
|
||||||
|
1702
|
||||||
|
1180
|
||||||
|
1992
|
||||||
|
1815
|
||||||
|
1802
|
||||||
|
215
|
||||||
|
1649
|
||||||
|
782
|
||||||
|
1847
|
||||||
|
1673
|
||||||
|
1823
|
||||||
|
1836
|
||||||
|
1447
|
||||||
|
1603
|
||||||
|
1767
|
||||||
|
1891
|
||||||
|
1964
|
||||||
|
1881
|
||||||
|
1637
|
||||||
|
1229
|
||||||
|
1994
|
||||||
|
1901
|
||||||
|
1583
|
||||||
|
1918
|
||||||
|
1415
|
||||||
|
1666
|
||||||
|
1155
|
||||||
|
1446
|
||||||
|
1315
|
||||||
|
1345
|
||||||
|
1948
|
||||||
|
1427
|
||||||
|
1242
|
||||||
|
1088
|
||||||
|
807
|
||||||
|
1747
|
||||||
|
1514
|
||||||
|
1351
|
||||||
|
1791
|
||||||
|
1612
|
||||||
|
1550
|
||||||
|
1926
|
||||||
|
1455
|
||||||
|
85
|
||||||
|
1594
|
||||||
|
1965
|
||||||
|
1884
|
||||||
|
1677
|
||||||
|
1960
|
||||||
|
1631
|
||||||
|
1585
|
||||||
|
1472
|
||||||
|
1263
|
||||||
|
1566
|
||||||
|
1998
|
||||||
|
1698
|
||||||
|
1968
|
||||||
|
1927
|
||||||
|
1378
|
||||||
|
1346
|
||||||
|
1710
|
||||||
|
1921
|
||||||
|
1827
|
||||||
|
1869
|
||||||
|
1187
|
||||||
|
1985
|
||||||
|
1323
|
||||||
|
1225
|
||||||
|
1474
|
||||||
|
1179
|
||||||
|
1580
|
||||||
|
1098
|
||||||
|
1737
|
||||||
|
1483
|
||||||
|
1665
|
||||||
|
1445
|
||||||
|
1979
|
||||||
|
1754
|
||||||
|
1854
|
||||||
|
1897
|
||||||
|
1405
|
||||||
|
1912
|
||||||
|
1614
|
||||||
|
1390
|
||||||
|
1773
|
||||||
|
1493
|
||||||
|
1333
|
||||||
|
1758
|
||||||
|
1867
|
||||||
|
1586
|
||||||
|
1347
|
||||||
|
1723
|
||||||
|
1285
|
||||||
|
394
|
||||||
|
1743
|
||||||
|
1252
|
||||||
|
320
|
||||||
|
1547
|
||||||
|
1804
|
||||||
|
1899
|
||||||
|
1526
|
||||||
|
1739
|
||||||
|
1533
|
||||||
|
1938
|
||||||
|
1081
|
||||||
|
1465
|
||||||
|
1920
|
||||||
|
1265
|
||||||
|
1470
|
||||||
|
1792
|
||||||
|
1118
|
||||||
|
1842
|
||||||
|
1204
|
||||||
|
1760
|
||||||
|
1663
|
||||||
|
893
|
||||||
|
1853
|
||||||
|
1244
|
||||||
|
1256
|
||||||
|
1428
|
||||||
|
1334
|
||||||
|
1967
|
||||||
|
1249
|
||||||
|
1752
|
||||||
|
1124
|
||||||
|
1725
|
||||||
|
1949
|
||||||
|
1340
|
||||||
|
1205
|
||||||
|
1584
|
||||||
|
548
|
||||||
|
1947
|
||||||
|
2002
|
||||||
|
1993
|
||||||
|
1931
|
||||||
|
1236
|
||||||
|
1154
|
||||||
|
1572
|
||||||
|
1650
|
||||||
|
1678
|
||||||
|
1944
|
||||||
|
1868
|
||||||
|
1129
|
||||||
|
1911
|
||||||
|
1106
|
||||||
|
1900
|
||||||
|
1240
|
||||||
|
1955
|
||||||
|
1219
|
||||||
|
1893
|
||||||
|
1459
|
||||||
|
1556
|
||||||
|
1173
|
||||||
|
1924
|
||||||
|
1568
|
||||||
|
1950
|
||||||
|
1303
|
||||||
|
1886
|
||||||
|
1365
|
||||||
|
1402
|
||||||
|
1711
|
||||||
|
1706
|
||||||
|
1671
|
||||||
|
1866
|
||||||
|
1403
|
||||||
|
1816
|
||||||
|
1717
|
||||||
|
1674
|
||||||
|
1487
|
||||||
|
1840
|
||||||
|
1951
|
||||||
|
1255
|
||||||
|
1786
|
||||||
|
1111
|
||||||
|
1280
|
||||||
|
1625
|
||||||
|
1478
|
||||||
|
1453
|
43
2020/1/main.cpp
Normal file
43
2020/1/main.cpp
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
#include <fstream>
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
int find2(std::vector<int> &numbers)
|
||||||
|
{
|
||||||
|
for(auto i = 0; i < numbers.size(); ++i)
|
||||||
|
for(auto j = i + 1; j < numbers.size(); ++j)
|
||||||
|
if(numbers[i] + numbers[j] == 2020)
|
||||||
|
return numbers[i] * numbers[j];
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
int find3(std::vector<int> &numbers)
|
||||||
|
{
|
||||||
|
for(auto i = 0; i < numbers.size(); ++i)
|
||||||
|
for(auto j = i + 1; j < numbers.size(); ++j)
|
||||||
|
for(auto k = i + 1; k < numbers.size(); ++k)
|
||||||
|
if(numbers[i] + numbers[j] + numbers[k] == 2020)
|
||||||
|
return numbers[i] * numbers[j] * numbers[k];
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
std::ifstream ifs("data");
|
||||||
|
if(!ifs.is_open())
|
||||||
|
{
|
||||||
|
std::cerr << "Couldn't open file." << std::endl;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<int> numbers;
|
||||||
|
for(std::string line; std::getline(ifs, line); )
|
||||||
|
numbers.push_back(std::atoi(line.c_str()));
|
||||||
|
|
||||||
|
std::cout << find2(numbers) << std::endl;
|
||||||
|
std::cout << find3(numbers) << std::endl;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
2
2020/2/Makefile
Normal file
2
2020/2/Makefile
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
a.out: main.cpp
|
||||||
|
clang++ -std=c++14 main.cpp -g -O0
|
BIN
2020/2/a.out
Executable file
BIN
2020/2/a.out
Executable file
Binary file not shown.
1000
2020/2/data
Normal file
1000
2020/2/data
Normal file
File diff suppressed because it is too large
Load Diff
72
2020/2/main.cpp
Normal file
72
2020/2/main.cpp
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
#include <algorithm>
|
||||||
|
#include <fstream>
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
// 6-7 w: wwhmzwtwwk
|
||||||
|
bool Valid1(const std::string &str)
|
||||||
|
{
|
||||||
|
int min, max;
|
||||||
|
char letter;
|
||||||
|
std::string password;
|
||||||
|
|
||||||
|
auto dash = str.find('-');
|
||||||
|
auto space = str.find(' ');
|
||||||
|
auto space_two = str.find(' ', space + 1);
|
||||||
|
|
||||||
|
min = std::atoi(str.substr(0, dash).c_str());
|
||||||
|
max = std::atoi(str.substr(dash + 1, space).c_str());
|
||||||
|
letter = str.at(space + 1);
|
||||||
|
password = str.substr(space_two + 1);
|
||||||
|
|
||||||
|
// std::cout << "min: " << min << std::endl
|
||||||
|
// << "max: " << max << std::endl
|
||||||
|
// << "letter: " << letter << std::endl
|
||||||
|
// << "pass: " << password << std::endl;
|
||||||
|
|
||||||
|
int total = std::count(password.begin(), password.end(), letter);
|
||||||
|
|
||||||
|
return (total >= min && total <= max);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Valid2(const std::string &str)
|
||||||
|
{
|
||||||
|
int min, max;
|
||||||
|
char letter;
|
||||||
|
std::string password;
|
||||||
|
|
||||||
|
auto dash = str.find('-');
|
||||||
|
auto space = str.find(' ');
|
||||||
|
auto space_two = str.find(' ', space + 1);
|
||||||
|
|
||||||
|
min = std::atoi(str.substr(0, dash).c_str());
|
||||||
|
max = std::atoi(str.substr(dash + 1, space).c_str());
|
||||||
|
letter = str.at(space + 1);
|
||||||
|
password = str.substr(space_two + 1);
|
||||||
|
|
||||||
|
bool a = password[min - 1] == letter;
|
||||||
|
bool b = password[max - 1] == letter;
|
||||||
|
|
||||||
|
return a != b;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
std::ifstream ifs("data");
|
||||||
|
if(!ifs.is_open())
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
int valid1 = 0;
|
||||||
|
int valid2 = 0;
|
||||||
|
for(std::string line; std::getline(ifs, line); )
|
||||||
|
{
|
||||||
|
if(Valid1(line))
|
||||||
|
++valid1;
|
||||||
|
if(Valid2(line))
|
||||||
|
++valid2;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::cout << valid1 << " valid1 passwords." << std::endl;
|
||||||
|
std::cout << valid2 << " valid2 passwords." << std::endl;
|
||||||
|
return 0;
|
||||||
|
}
|
601
2021/4/data
Normal file
601
2021/4/data
Normal file
@ -0,0 +1,601 @@
|
|||||||
|
42,32,13,22,91,2,88,85,53,87,37,33,76,98,89,19,69,9,62,21,38,49,54,81,0,26,79,36,57,18,4,40,31,80,24,64,77,97,70,6,73,23,20,47,45,51,74,25,95,96,58,92,94,11,39,63,65,99,48,83,29,34,44,75,55,17,14,56,8,82,59,52,46,90,5,41,60,67,16,1,15,61,71,66,72,30,28,3,43,27,78,10,86,7,50,35,84,12,93,68
|
||||||
|
|
||||||
|
90 8 2 34 41
|
||||||
|
11 67 74 71 62
|
||||||
|
47 42 44 1 17
|
||||||
|
21 55 12 91 6
|
||||||
|
60 69 75 92 56
|
||||||
|
|
||||||
|
49 29 60 45 31
|
||||||
|
94 51 73 33 67
|
||||||
|
21 92 53 95 96
|
||||||
|
2 55 52 8 87
|
||||||
|
4 36 76 83 42
|
||||||
|
|
||||||
|
23 66 50 84 58
|
||||||
|
62 98 81 76 57
|
||||||
|
24 2 56 79 6
|
||||||
|
55 0 16 64 38
|
||||||
|
12 67 5 97 60
|
||||||
|
|
||||||
|
46 64 5 39 62
|
||||||
|
16 82 13 77 52
|
||||||
|
18 26 44 0 61
|
||||||
|
25 7 43 42 50
|
||||||
|
11 85 30 28 76
|
||||||
|
|
||||||
|
51 28 70 65 78
|
||||||
|
62 88 30 36 96
|
||||||
|
80 87 4 1 24
|
||||||
|
63 22 41 79 34
|
||||||
|
18 15 47 26 67
|
||||||
|
|
||||||
|
48 68 92 67 36
|
||||||
|
54 50 71 98 21
|
||||||
|
20 91 70 78 76
|
||||||
|
87 97 44 3 93
|
||||||
|
84 12 39 96 57
|
||||||
|
|
||||||
|
86 12 38 44 1
|
||||||
|
10 87 74 53 66
|
||||||
|
14 99 85 48 88
|
||||||
|
59 33 76 71 31
|
||||||
|
83 39 2 67 35
|
||||||
|
|
||||||
|
62 67 27 96 8
|
||||||
|
81 23 78 33 48
|
||||||
|
80 16 0 86 85
|
||||||
|
26 54 29 32 89
|
||||||
|
88 77 43 18 46
|
||||||
|
|
||||||
|
87 88 13 49 80
|
||||||
|
78 19 81 56 11
|
||||||
|
18 55 70 44 48
|
||||||
|
31 37 24 95 28
|
||||||
|
20 79 89 94 14
|
||||||
|
|
||||||
|
10 31 52 49 79
|
||||||
|
8 72 61 27 42
|
||||||
|
73 4 11 43 91
|
||||||
|
37 44 58 19 97
|
||||||
|
96 63 90 13 74
|
||||||
|
|
||||||
|
71 27 87 40 99
|
||||||
|
69 29 79 64 67
|
||||||
|
85 66 4 28 30
|
||||||
|
23 51 16 49 45
|
||||||
|
92 12 74 1 75
|
||||||
|
|
||||||
|
46 52 40 12 44
|
||||||
|
0 73 20 86 1
|
||||||
|
85 32 4 42 2
|
||||||
|
21 33 56 39 9
|
||||||
|
49 69 76 98 22
|
||||||
|
|
||||||
|
42 81 5 11 2
|
||||||
|
57 50 77 8 24
|
||||||
|
85 92 15 39 52
|
||||||
|
37 70 36 79 67
|
||||||
|
34 20 16 93 22
|
||||||
|
|
||||||
|
49 68 25 4 46
|
||||||
|
17 57 77 59 54
|
||||||
|
65 83 18 84 63
|
||||||
|
36 74 61 22 71
|
||||||
|
14 0 26 3 98
|
||||||
|
|
||||||
|
1 80 93 66 58
|
||||||
|
38 9 18 60 2
|
||||||
|
70 46 35 88 11
|
||||||
|
95 89 85 29 26
|
||||||
|
82 68 25 15 53
|
||||||
|
|
||||||
|
97 80 28 17 7
|
||||||
|
67 46 54 95 98
|
||||||
|
38 74 42 57 79
|
||||||
|
63 29 36 78 6
|
||||||
|
90 60 84 10 14
|
||||||
|
|
||||||
|
18 88 8 96 0
|
||||||
|
66 56 43 47 11
|
||||||
|
69 73 14 71 25
|
||||||
|
27 63 31 44 94
|
||||||
|
75 95 84 74 13
|
||||||
|
|
||||||
|
92 9 98 17 74
|
||||||
|
46 7 2 51 52
|
||||||
|
21 60 5 87 15
|
||||||
|
86 91 65 69 54
|
||||||
|
61 85 1 62 53
|
||||||
|
|
||||||
|
89 80 4 0 68
|
||||||
|
17 87 52 86 48
|
||||||
|
3 34 16 25 35
|
||||||
|
13 38 49 66 50
|
||||||
|
36 43 65 84 56
|
||||||
|
|
||||||
|
9 93 54 92 55
|
||||||
|
32 2 39 96 98
|
||||||
|
58 72 52 83 97
|
||||||
|
12 44 27 24 20
|
||||||
|
0 3 28 56 69
|
||||||
|
|
||||||
|
66 56 37 36 72
|
||||||
|
35 49 40 43 44
|
||||||
|
54 21 59 12 65
|
||||||
|
74 25 22 80 98
|
||||||
|
27 81 69 97 62
|
||||||
|
|
||||||
|
72 81 27 61 74
|
||||||
|
26 50 79 13 53
|
||||||
|
49 78 76 70 43
|
||||||
|
51 64 99 46 67
|
||||||
|
68 59 71 17 41
|
||||||
|
|
||||||
|
97 22 73 30 98
|
||||||
|
8 54 68 47 23
|
||||||
|
70 89 41 52 61
|
||||||
|
81 28 58 90 3
|
||||||
|
88 40 86 46 43
|
||||||
|
|
||||||
|
94 6 46 43 59
|
||||||
|
41 28 87 31 45
|
||||||
|
83 26 66 81 1
|
||||||
|
76 86 15 42 8
|
||||||
|
67 47 54 4 77
|
||||||
|
|
||||||
|
96 56 22 67 2
|
||||||
|
95 47 90 54 51
|
||||||
|
78 79 29 82 48
|
||||||
|
61 81 77 6 24
|
||||||
|
71 93 98 26 75
|
||||||
|
|
||||||
|
95 7 77 94 64
|
||||||
|
19 79 14 24 5
|
||||||
|
50 48 4 71 22
|
||||||
|
35 69 89 54 2
|
||||||
|
6 51 8 82 58
|
||||||
|
|
||||||
|
87 6 85 53 64
|
||||||
|
50 43 80 61 15
|
||||||
|
69 41 51 76 0
|
||||||
|
78 26 37 62 16
|
||||||
|
12 33 75 58 52
|
||||||
|
|
||||||
|
67 18 68 52 42
|
||||||
|
37 30 49 31 69
|
||||||
|
93 90 76 9 32
|
||||||
|
60 84 73 94 17
|
||||||
|
21 27 66 43 44
|
||||||
|
|
||||||
|
89 69 24 14 1
|
||||||
|
88 33 50 2 63
|
||||||
|
12 34 6 97 53
|
||||||
|
28 26 55 8 32
|
||||||
|
49 19 17 64 86
|
||||||
|
|
||||||
|
31 37 81 65 38
|
||||||
|
96 18 45 19 58
|
||||||
|
35 43 1 49 41
|
||||||
|
46 85 92 53 15
|
||||||
|
3 34 8 14 21
|
||||||
|
|
||||||
|
35 68 61 45 39
|
||||||
|
46 99 52 55 15
|
||||||
|
74 14 10 62 17
|
||||||
|
8 66 98 89 91
|
||||||
|
58 24 44 27 29
|
||||||
|
|
||||||
|
28 48 52 18 13
|
||||||
|
17 35 20 11 49
|
||||||
|
93 50 31 95 83
|
||||||
|
27 33 79 44 80
|
||||||
|
4 96 23 65 68
|
||||||
|
|
||||||
|
70 78 31 86 36
|
||||||
|
99 38 62 95 27
|
||||||
|
52 74 25 80 41
|
||||||
|
30 15 47 19 21
|
||||||
|
77 23 53 9 7
|
||||||
|
|
||||||
|
0 83 11 25 42
|
||||||
|
50 64 76 67 72
|
||||||
|
75 30 82 15 84
|
||||||
|
58 17 87 61 33
|
||||||
|
98 74 44 3 93
|
||||||
|
|
||||||
|
5 40 78 24 11
|
||||||
|
57 17 67 60 25
|
||||||
|
37 76 28 56 35
|
||||||
|
66 94 2 90 47
|
||||||
|
86 10 85 46 45
|
||||||
|
|
||||||
|
63 12 7 74 14
|
||||||
|
21 31 84 51 36
|
||||||
|
66 20 25 46 41
|
||||||
|
15 3 18 62 45
|
||||||
|
35 78 93 2 9
|
||||||
|
|
||||||
|
90 9 33 63 41
|
||||||
|
25 73 35 97 19
|
||||||
|
99 96 45 71 22
|
||||||
|
84 43 29 14 88
|
||||||
|
42 8 1 78 68
|
||||||
|
|
||||||
|
98 84 38 95 27
|
||||||
|
18 32 54 12 96
|
||||||
|
56 50 2 45 53
|
||||||
|
14 83 59 72 70
|
||||||
|
22 41 28 9 78
|
||||||
|
|
||||||
|
89 94 50 33 73
|
||||||
|
31 47 8 35 34
|
||||||
|
43 92 95 21 51
|
||||||
|
68 13 53 24 38
|
||||||
|
80 69 44 87 83
|
||||||
|
|
||||||
|
32 82 75 73 91
|
||||||
|
99 10 22 58 23
|
||||||
|
86 9 42 81 40
|
||||||
|
71 25 3 78 54
|
||||||
|
80 15 83 5 4
|
||||||
|
|
||||||
|
58 1 3 11 24
|
||||||
|
66 51 84 44 25
|
||||||
|
37 54 12 27 97
|
||||||
|
38 2 39 85 83
|
||||||
|
89 91 33 79 59
|
||||||
|
|
||||||
|
49 22 12 84 60
|
||||||
|
34 29 11 92 19
|
||||||
|
97 41 88 53 38
|
||||||
|
26 37 8 36 67
|
||||||
|
91 3 90 52 46
|
||||||
|
|
||||||
|
77 35 76 56 20
|
||||||
|
39 94 37 3 83
|
||||||
|
78 81 66 29 4
|
||||||
|
82 41 38 0 73
|
||||||
|
59 16 88 15 30
|
||||||
|
|
||||||
|
34 69 74 90 33
|
||||||
|
9 47 71 94 10
|
||||||
|
76 50 15 19 32
|
||||||
|
49 89 31 21 92
|
||||||
|
80 12 13 97 93
|
||||||
|
|
||||||
|
45 94 35 59 20
|
||||||
|
18 46 14 36 30
|
||||||
|
6 78 84 38 99
|
||||||
|
5 4 90 92 63
|
||||||
|
34 24 26 75 3
|
||||||
|
|
||||||
|
80 39 1 93 55
|
||||||
|
67 71 30 44 76
|
||||||
|
38 13 73 21 8
|
||||||
|
11 47 46 69 29
|
||||||
|
15 57 95 52 34
|
||||||
|
|
||||||
|
45 86 88 80 19
|
||||||
|
3 5 55 36 90
|
||||||
|
54 85 44 18 39
|
||||||
|
57 92 42 25 77
|
||||||
|
43 0 12 1 24
|
||||||
|
|
||||||
|
74 71 83 29 25
|
||||||
|
56 12 52 33 64
|
||||||
|
68 94 97 14 15
|
||||||
|
7 48 24 80 5
|
||||||
|
54 87 35 1 66
|
||||||
|
|
||||||
|
55 50 73 72 36
|
||||||
|
17 80 87 68 90
|
||||||
|
8 33 81 1 51
|
||||||
|
67 61 71 54 95
|
||||||
|
93 98 27 56 0
|
||||||
|
|
||||||
|
19 32 63 6 98
|
||||||
|
13 38 23 28 8
|
||||||
|
5 31 66 72 39
|
||||||
|
99 46 2 64 14
|
||||||
|
91 83 35 85 10
|
||||||
|
|
||||||
|
67 85 49 68 37
|
||||||
|
8 36 31 81 18
|
||||||
|
74 61 20 80 50
|
||||||
|
34 23 42 52 39
|
||||||
|
21 14 22 58 54
|
||||||
|
|
||||||
|
16 14 69 13 81
|
||||||
|
21 96 62 7 5
|
||||||
|
95 52 0 67 24
|
||||||
|
6 30 65 66 86
|
||||||
|
28 25 85 56 15
|
||||||
|
|
||||||
|
4 41 21 86 32
|
||||||
|
95 23 63 28 2
|
||||||
|
9 16 37 84 14
|
||||||
|
92 22 71 42 5
|
||||||
|
46 65 69 81 57
|
||||||
|
|
||||||
|
45 20 46 44 22
|
||||||
|
62 93 78 58 25
|
||||||
|
91 38 29 68 24
|
||||||
|
21 55 71 43 26
|
||||||
|
64 76 84 80 99
|
||||||
|
|
||||||
|
92 67 43 5 12
|
||||||
|
2 64 46 15 96
|
||||||
|
95 75 73 38 30
|
||||||
|
10 65 20 39 26
|
||||||
|
36 16 25 27 88
|
||||||
|
|
||||||
|
9 62 18 58 34
|
||||||
|
85 80 36 2 48
|
||||||
|
16 60 75 72 51
|
||||||
|
39 22 32 61 54
|
||||||
|
40 44 23 87 53
|
||||||
|
|
||||||
|
93 69 56 4 22
|
||||||
|
73 51 24 53 19
|
||||||
|
83 98 77 94 59
|
||||||
|
52 70 15 40 48
|
||||||
|
60 89 67 92 85
|
||||||
|
|
||||||
|
48 72 42 80 22
|
||||||
|
99 49 11 77 4
|
||||||
|
28 24 1 63 51
|
||||||
|
85 93 62 7 78
|
||||||
|
35 32 3 21 86
|
||||||
|
|
||||||
|
36 75 67 79 34
|
||||||
|
20 8 71 6 5
|
||||||
|
50 61 14 52 81
|
||||||
|
26 37 0 80 77
|
||||||
|
93 47 86 54 94
|
||||||
|
|
||||||
|
50 19 68 54 80
|
||||||
|
81 12 33 87 24
|
||||||
|
28 40 37 30 31
|
||||||
|
41 51 15 27 97
|
||||||
|
67 70 14 77 86
|
||||||
|
|
||||||
|
89 57 48 37 27
|
||||||
|
44 46 29 63 20
|
||||||
|
74 88 25 68 76
|
||||||
|
18 28 91 59 58
|
||||||
|
99 77 62 64 83
|
||||||
|
|
||||||
|
22 5 86 37 42
|
||||||
|
47 69 87 34 89
|
||||||
|
64 33 18 56 51
|
||||||
|
30 49 11 79 17
|
||||||
|
61 80 0 29 57
|
||||||
|
|
||||||
|
7 82 87 15 83
|
||||||
|
76 43 92 1 97
|
||||||
|
0 46 2 86 6
|
||||||
|
48 27 29 61 67
|
||||||
|
53 10 64 93 77
|
||||||
|
|
||||||
|
65 16 23 26 87
|
||||||
|
58 5 25 97 94
|
||||||
|
43 7 39 69 35
|
||||||
|
62 81 56 13 28
|
||||||
|
76 12 37 14 93
|
||||||
|
|
||||||
|
90 81 15 55 23
|
||||||
|
58 40 8 56 76
|
||||||
|
83 7 78 89 47
|
||||||
|
65 70 13 48 42
|
||||||
|
16 69 66 52 46
|
||||||
|
|
||||||
|
30 38 20 32 94
|
||||||
|
91 96 34 23 90
|
||||||
|
16 24 49 50 86
|
||||||
|
65 19 56 7 66
|
||||||
|
80 60 74 71 11
|
||||||
|
|
||||||
|
60 77 54 25 22
|
||||||
|
9 61 68 6 89
|
||||||
|
15 71 10 84 41
|
||||||
|
1 47 8 43 63
|
||||||
|
69 57 85 24 81
|
||||||
|
|
||||||
|
54 83 73 52 49
|
||||||
|
69 96 31 57 44
|
||||||
|
19 66 24 6 55
|
||||||
|
91 84 20 3 27
|
||||||
|
7 9 71 43 75
|
||||||
|
|
||||||
|
90 72 15 99 2
|
||||||
|
73 56 48 28 62
|
||||||
|
40 75 0 59 31
|
||||||
|
43 67 44 24 77
|
||||||
|
98 35 4 3 37
|
||||||
|
|
||||||
|
2 85 72 39 49
|
||||||
|
58 25 91 69 19
|
||||||
|
34 8 57 42 55
|
||||||
|
80 21 51 64 30
|
||||||
|
28 32 82 84 6
|
||||||
|
|
||||||
|
33 77 39 13 12
|
||||||
|
86 21 96 82 94
|
||||||
|
78 92 42 45 70
|
||||||
|
31 22 60 80 67
|
||||||
|
79 27 93 55 65
|
||||||
|
|
||||||
|
49 90 73 72 10
|
||||||
|
98 89 77 88 12
|
||||||
|
83 3 31 47 21
|
||||||
|
65 26 93 55 53
|
||||||
|
5 95 22 8 63
|
||||||
|
|
||||||
|
79 88 11 62 25
|
||||||
|
85 14 77 4 19
|
||||||
|
41 31 83 26 67
|
||||||
|
46 98 74 99 2
|
||||||
|
44 53 70 36 52
|
||||||
|
|
||||||
|
21 33 15 57 53
|
||||||
|
56 91 25 69 10
|
||||||
|
52 59 73 96 87
|
||||||
|
65 71 14 37 2
|
||||||
|
39 89 29 83 64
|
||||||
|
|
||||||
|
88 38 45 39 20
|
||||||
|
99 72 61 96 4
|
||||||
|
23 24 67 49 80
|
||||||
|
77 6 65 76 18
|
||||||
|
59 51 78 33 46
|
||||||
|
|
||||||
|
44 22 9 90 83
|
||||||
|
93 50 2 54 26
|
||||||
|
68 71 43 85 41
|
||||||
|
38 20 6 64 24
|
||||||
|
81 39 33 56 27
|
||||||
|
|
||||||
|
98 1 69 30 38
|
||||||
|
67 52 79 31 0
|
||||||
|
24 41 82 55 73
|
||||||
|
33 66 64 20 7
|
||||||
|
65 9 14 70 94
|
||||||
|
|
||||||
|
59 63 65 25 1
|
||||||
|
36 85 61 82 50
|
||||||
|
52 3 70 30 43
|
||||||
|
79 57 31 71 76
|
||||||
|
19 97 93 77 49
|
||||||
|
|
||||||
|
60 45 90 32 74
|
||||||
|
77 64 58 44 43
|
||||||
|
71 49 37 21 46
|
||||||
|
50 67 1 24 15
|
||||||
|
14 22 0 40 23
|
||||||
|
|
||||||
|
65 87 81 64 28
|
||||||
|
53 80 23 76 77
|
||||||
|
49 14 50 2 35
|
||||||
|
85 26 88 94 30
|
||||||
|
79 18 68 15 45
|
||||||
|
|
||||||
|
6 48 38 63 92
|
||||||
|
51 45 58 4 76
|
||||||
|
78 40 22 17 55
|
||||||
|
79 12 66 61 5
|
||||||
|
68 74 0 93 89
|
||||||
|
|
||||||
|
66 4 65 71 77
|
||||||
|
47 35 38 83 64
|
||||||
|
53 16 9 56 25
|
||||||
|
92 81 55 60 33
|
||||||
|
80 24 73 0 26
|
||||||
|
|
||||||
|
26 29 55 76 38
|
||||||
|
79 52 91 84 39
|
||||||
|
50 57 37 34 71
|
||||||
|
33 31 68 92 24
|
||||||
|
81 95 5 70 8
|
||||||
|
|
||||||
|
83 64 11 67 42
|
||||||
|
97 29 27 4 78
|
||||||
|
23 10 48 71 81
|
||||||
|
80 74 86 17 36
|
||||||
|
61 14 85 21 96
|
||||||
|
|
||||||
|
18 8 7 88 25
|
||||||
|
59 5 28 57 69
|
||||||
|
64 54 16 70 72
|
||||||
|
13 75 71 33 2
|
||||||
|
60 55 46 51 32
|
||||||
|
|
||||||
|
23 89 63 96 88
|
||||||
|
71 66 9 53 65
|
||||||
|
56 46 29 95 80
|
||||||
|
44 94 90 3 5
|
||||||
|
11 99 59 60 78
|
||||||
|
|
||||||
|
42 33 81 25 0
|
||||||
|
46 66 63 82 94
|
||||||
|
52 73 92 30 24
|
||||||
|
59 26 50 87 45
|
||||||
|
79 55 74 17 64
|
||||||
|
|
||||||
|
95 43 13 98 18
|
||||||
|
62 12 24 88 28
|
||||||
|
23 11 93 51 67
|
||||||
|
71 0 44 64 96
|
||||||
|
66 17 84 90 19
|
||||||
|
|
||||||
|
38 6 12 75 27
|
||||||
|
28 73 62 50 51
|
||||||
|
63 86 29 98 15
|
||||||
|
46 90 4 58 96
|
||||||
|
20 78 64 56 82
|
||||||
|
|
||||||
|
19 91 23 40 1
|
||||||
|
78 57 75 43 2
|
||||||
|
35 60 85 74 30
|
||||||
|
80 3 63 54 32
|
||||||
|
82 99 89 25 88
|
||||||
|
|
||||||
|
88 13 92 11 72
|
||||||
|
56 6 35 55 21
|
||||||
|
8 20 36 60 99
|
||||||
|
1 96 57 45 12
|
||||||
|
41 73 50 83 69
|
||||||
|
|
||||||
|
42 69 53 76 11
|
||||||
|
38 74 13 14 86
|
||||||
|
18 49 51 67 61
|
||||||
|
26 80 47 16 78
|
||||||
|
66 46 12 68 79
|
||||||
|
|
||||||
|
22 90 72 93 24
|
||||||
|
55 29 43 28 5
|
||||||
|
99 47 87 40 51
|
||||||
|
81 18 70 20 36
|
||||||
|
0 48 23 46 82
|
||||||
|
|
||||||
|
91 74 83 95 54
|
||||||
|
60 56 38 37 89
|
||||||
|
87 96 71 50 35
|
||||||
|
5 11 42 72 3
|
||||||
|
77 81 36 49 97
|
||||||
|
|
||||||
|
71 72 17 34 93
|
||||||
|
45 81 22 67 23
|
||||||
|
61 20 94 14 1
|
||||||
|
85 40 15 36 88
|
||||||
|
54 91 62 73 9
|
||||||
|
|
||||||
|
66 36 39 58 60
|
||||||
|
96 8 22 49 77
|
||||||
|
76 64 47 78 30
|
||||||
|
50 41 12 69 15
|
||||||
|
7 1 29 72 27
|
||||||
|
|
||||||
|
90 12 65 13 39
|
||||||
|
75 70 47 36 79
|
||||||
|
31 54 17 10 32
|
||||||
|
76 92 55 83 40
|
||||||
|
49 5 20 44 37
|
||||||
|
|
||||||
|
16 78 65 5 70
|
||||||
|
63 72 89 93 66
|
||||||
|
21 90 46 54 81
|
||||||
|
7 48 88 60 11
|
||||||
|
95 0 38 3 26
|
||||||
|
|
||||||
|
19 65 66 41 27
|
||||||
|
7 18 91 52 48
|
||||||
|
87 55 49 68 71
|
||||||
|
85 12 4 40 1
|
||||||
|
57 67 6 11 58
|
||||||
|
|
||||||
|
91 85 38 14 21
|
||||||
|
63 93 37 76 25
|
||||||
|
68 36 4 24 71
|
||||||
|
43 31 60 19 95
|
||||||
|
52 55 13 83 78
|
75
2021/4/main.py
Normal file
75
2021/4/main.py
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
# all the numbers called, in order
|
||||||
|
numbers = []
|
||||||
|
|
||||||
|
temp_board = []
|
||||||
|
boards = []
|
||||||
|
fills = []
|
||||||
|
|
||||||
|
board_index = 0
|
||||||
|
|
||||||
|
####
|
||||||
|
def Victory(board):
|
||||||
|
for y in range(0, len(board)):
|
||||||
|
if(board[y] == [True, True, True, True, True]):
|
||||||
|
return True;
|
||||||
|
|
||||||
|
# NOTE(dev): Assumes all columns are the same length
|
||||||
|
for x in range(0, len(board[0])):
|
||||||
|
num_true = 0
|
||||||
|
for y in range(0, len(board)):
|
||||||
|
if(board[y][x]):
|
||||||
|
num_true = num_true + 1
|
||||||
|
if(num_true == len(board[0])):
|
||||||
|
return True
|
||||||
|
|
||||||
|
return False
|
||||||
|
|
||||||
|
####
|
||||||
|
def FindWinner(numbers):
|
||||||
|
for i in range(0, len(numbers)):
|
||||||
|
for board_index in range(0, len(boards)):
|
||||||
|
for y in range(0, len(boards[board_index])):
|
||||||
|
for x in range(0, len(boards[board_index][y])):
|
||||||
|
if(boards[board_index][y][x] == numbers[i]):
|
||||||
|
fills[board_index][y][x] = True
|
||||||
|
if(Victory(fills[board_index])):
|
||||||
|
print('Victory with', numbers[i], 'on board', board_index, '!!')
|
||||||
|
return numbers[i], board_index
|
||||||
|
|
||||||
|
#### MAIN EXECUTION ####
|
||||||
|
with open('data', 'r') as fp:
|
||||||
|
for i,line in enumerate(fp):
|
||||||
|
|
||||||
|
if(i == 0):
|
||||||
|
numbers = line.strip().split(',')
|
||||||
|
elif(len(line.strip()) == 0):
|
||||||
|
if(len(temp_board) > 0): # i.e. skip the first, empty one
|
||||||
|
# add in the next player board
|
||||||
|
boards.append(temp_board)
|
||||||
|
temp_board = []
|
||||||
|
# create a blank answer board for this player board
|
||||||
|
for j in range(0,5):
|
||||||
|
temp_board.append([False, False, False, False, False])
|
||||||
|
fills.append(temp_board);
|
||||||
|
temp_board = []
|
||||||
|
board_index = board_index + 1
|
||||||
|
else:
|
||||||
|
# add the next array of numbers to the temporary board object
|
||||||
|
temp_board.append(line.strip().split())
|
||||||
|
|
||||||
|
winning_number,winning_board_index = FindWinner(numbers)
|
||||||
|
print('Winning Number:', winning_number, ', Winning Board Index: ', winning_board_index)
|
||||||
|
|
||||||
|
total = 0
|
||||||
|
for y in range(0, len(fills[winning_board_index])):
|
||||||
|
for x in range(0, len(fills[winning_board_index][y])): # assumes size is same for all columns
|
||||||
|
if(not fills[winning_board_index][y][x]):
|
||||||
|
total = total + int(boards[winning_board_index][y][x])
|
||||||
|
|
||||||
|
print(total * int(winning_number))
|
||||||
|
|
||||||
|
# # DEBUG(dev): Show full contents of all boards
|
||||||
|
# for x in range(0, len(boards)):
|
||||||
|
# for y in range(0, len(boards[x])):
|
||||||
|
# for z in range(0, len(boards[x][y])):
|
||||||
|
# print(boards[x][y][z])
|
83
2021/4/main2.py
Normal file
83
2021/4/main2.py
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
# all the numbers called, in order
|
||||||
|
numbers = []
|
||||||
|
|
||||||
|
temp_board = []
|
||||||
|
boards = []
|
||||||
|
fills = []
|
||||||
|
|
||||||
|
board_index = 0
|
||||||
|
|
||||||
|
####
|
||||||
|
def Victory(board):
|
||||||
|
for y in range(0, len(board)):
|
||||||
|
if(board[y] == [True, True, True, True, True]):
|
||||||
|
return True;
|
||||||
|
|
||||||
|
# NOTE(dev): Assumes all columns are the same length
|
||||||
|
for x in range(0, len(board[0])):
|
||||||
|
num_true = 0
|
||||||
|
for y in range(0, len(board)):
|
||||||
|
if(board[y][x]):
|
||||||
|
num_true = num_true + 1
|
||||||
|
if(num_true == len(board[0])):
|
||||||
|
return True
|
||||||
|
|
||||||
|
return False
|
||||||
|
|
||||||
|
####
|
||||||
|
def FindWinner(numbers):
|
||||||
|
indexes = []
|
||||||
|
winning_indexes = []
|
||||||
|
for i in range(0, len(boards)):
|
||||||
|
indexes.append(i)
|
||||||
|
for i in range(0, len(numbers)):
|
||||||
|
for board_index in range(0, len(boards)):
|
||||||
|
if(board_index not in winning_indexes):
|
||||||
|
for y in range(0, len(boards[board_index])):
|
||||||
|
for x in range(0, len(boards[board_index][y])):
|
||||||
|
if(boards[board_index][y][x] == numbers[i]):
|
||||||
|
fills[board_index][y][x] = True
|
||||||
|
if(Victory(fills[board_index])):
|
||||||
|
print('Victory with', numbers[i], 'on board', board_index, '!!')
|
||||||
|
winning_indexes.append(int(board_index))
|
||||||
|
indexes.remove(int(board_index))
|
||||||
|
if(len(indexes) == 0):
|
||||||
|
return numbers[i], board_index
|
||||||
|
|
||||||
|
#### MAIN EXECUTION ####
|
||||||
|
with open('data', 'r') as fp:
|
||||||
|
for i,line in enumerate(fp):
|
||||||
|
|
||||||
|
if(i == 0):
|
||||||
|
numbers = line.strip().split(',')
|
||||||
|
elif(len(line.strip()) == 0):
|
||||||
|
if(len(temp_board) > 0): # i.e. skip the first, empty one
|
||||||
|
# add in the next player board
|
||||||
|
boards.append(temp_board)
|
||||||
|
temp_board = []
|
||||||
|
# create a blank answer board for this player board
|
||||||
|
for j in range(0,5):
|
||||||
|
temp_board.append([False, False, False, False, False])
|
||||||
|
fills.append(temp_board);
|
||||||
|
temp_board = []
|
||||||
|
board_index = board_index + 1
|
||||||
|
else:
|
||||||
|
# add the next array of numbers to the temporary board object
|
||||||
|
temp_board.append(line.strip().split())
|
||||||
|
|
||||||
|
winning_number,winning_board_index = FindWinner(numbers)
|
||||||
|
print('Winning Number:', winning_number, ', Winning Board Index: ', winning_board_index)
|
||||||
|
|
||||||
|
total = 0
|
||||||
|
for y in range(0, len(fills[winning_board_index])):
|
||||||
|
for x in range(0, len(fills[winning_board_index][y])): # assumes size is same for all columns
|
||||||
|
if(not fills[winning_board_index][y][x]):
|
||||||
|
total = total + int(boards[winning_board_index][y][x])
|
||||||
|
|
||||||
|
print(total * int(winning_number))
|
||||||
|
|
||||||
|
# # DEBUG(dev): Show full contents of all boards
|
||||||
|
# for x in range(0, len(boards)):
|
||||||
|
# for y in range(0, len(boards[x])):
|
||||||
|
# for z in range(0, len(boards[x][y])):
|
||||||
|
# print(boards[x][y][z])
|
Loading…
Reference in New Issue
Block a user