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