day04: Solve puzzles
parent
d56a9fb9b2
commit
e814a60181
2
Makefile
2
Makefile
|
@ -12,6 +12,8 @@ day03:
|
|||
php day03/solve.php input
|
||||
|
||||
day04:
|
||||
php day04/solve.php input
|
||||
|
||||
day05:
|
||||
day06:
|
||||
day07:
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
7,4,9,5,11,17,23,2,0,14,21,24,10,16,13,6,15,25,12,22,18,20,8,19,3,26,1
|
||||
|
||||
22 13 17 11 0
|
||||
8 2 23 4 24
|
||||
21 9 14 16 7
|
||||
6 10 3 18 5
|
||||
1 12 20 15 19
|
||||
|
||||
3 15 0 2 22
|
||||
9 18 13 17 5
|
||||
19 8 7 25 23
|
||||
20 11 10 24 4
|
||||
14 21 16 12 6
|
||||
|
||||
14 21 17 24 4
|
||||
10 16 15 9 19
|
||||
18 8 23 26 20
|
||||
22 11 13 6 5
|
||||
2 0 12 3 7
|
|
@ -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
|
|
@ -0,0 +1,99 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
function getBingoNumbers(array $entries) : array
|
||||
{
|
||||
return explode(',', $entries[0]);
|
||||
}
|
||||
|
||||
function getBingoBoards(array $entries) : array
|
||||
{
|
||||
$boards = [];
|
||||
|
||||
// Drop the bingo numbers on the first line
|
||||
array_shift($entries);
|
||||
|
||||
$boardNr = 0;
|
||||
$rowNr = 0;
|
||||
foreach ($entries as $row) {
|
||||
if (empty($row)) {
|
||||
$boards[++$boardNr] = [];
|
||||
$rowNr = 0;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
preg_match('/(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/', $row, $matches);
|
||||
array_shift($matches);
|
||||
|
||||
$boards[$boardNr][$rowNr++] = $matches;
|
||||
}
|
||||
|
||||
return array_values(array_filter($boards));
|
||||
}
|
||||
|
||||
function markNumberOnBoards(array $boards, int $nr) : array
|
||||
{
|
||||
foreach ($boards as $bkey => $board) {
|
||||
foreach ($board as $lkey => $line) {
|
||||
foreach ($line as $ckey => $value) {
|
||||
if ((int) $value === $nr) {
|
||||
$boards[$bkey][$lkey][$ckey] = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $boards;
|
||||
}
|
||||
|
||||
function boardHasBingo(array $board) : bool
|
||||
{
|
||||
foreach ($board as $line) {
|
||||
if (count(array_filter($line, 'is_null')) === 5) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
for ($i = 0; $i < 5; $i++) {
|
||||
if (is_null($board[0][$i]) && is_null($board[1][$i]) && is_null($board[2][$i]) &&
|
||||
is_null($board[3][$i]) && is_null($board[4][$i])) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function findBingoBoard(array $boards) : ?array
|
||||
{
|
||||
foreach ($boards as $board) {
|
||||
if (boardHasBingo($board)) {
|
||||
return $board;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
function filterBingoBoards(array $boards) : array
|
||||
{
|
||||
$boards = array_filter(
|
||||
$boards,
|
||||
function (array $board) : bool {
|
||||
return !boardHasBingo($board);
|
||||
}
|
||||
);
|
||||
|
||||
return array_values($boards);
|
||||
}
|
||||
|
||||
function sumBingoBoard(array $board) : int
|
||||
{
|
||||
$sum = 0;
|
||||
|
||||
foreach ($board as $line) {
|
||||
$sum += array_sum($line);
|
||||
}
|
||||
|
||||
return $sum;
|
||||
}
|
|
@ -0,0 +1,51 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
require_once(__DIR__.'/../lib/functions.php');
|
||||
require_once(__DIR__.'/lib.php');
|
||||
|
||||
$entries = getLines(__DIR__.'/'.$argv[1].'.txt', $filter = false);
|
||||
|
||||
timedPrintf(
|
||||
'[2021-12-04.1] Winner board points: %d [Time: %ss]',
|
||||
(function (array $entries) : int {
|
||||
$bingoNumbers = getBingoNumbers($entries);
|
||||
$bingoBoards = getBingoBoards($entries);
|
||||
|
||||
foreach ($bingoNumbers as $bingoNumber) {
|
||||
$bingoBoards = markNumberOnBoards($bingoBoards, (int) $bingoNumber);
|
||||
|
||||
if ($winner = findBingoBoard($bingoBoards)) {
|
||||
return $bingoNumber * sumBingoBoard($winner);
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}),
|
||||
$entries
|
||||
);
|
||||
|
||||
timedPrintf(
|
||||
'[2021-12-04.2] Loser board points: %d [Time: %ss]',
|
||||
(function (array $entries) : int {
|
||||
$bingoNumbers = getBingoNumbers($entries);
|
||||
$bingoBoards = getBingoBoards($entries);
|
||||
|
||||
foreach ($bingoNumbers as $bingoNumber) {
|
||||
$bingoBoards = markNumberOnBoards($bingoBoards, (int) $bingoNumber);
|
||||
|
||||
if (count($bingoBoards) > 1) {
|
||||
$bingoBoards = filterBingoBoards($bingoBoards);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if (boardHasBingo($bingoBoards[0])) {
|
||||
return $bingoNumber * sumBingoBoard($bingoBoards[0]);
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}),
|
||||
$entries
|
||||
);
|
Loading…
Reference in New Issue