Add day 10
parent
f9bc1ec66c
commit
a8ab1a177e
@ -1,16 +1,68 @@
|
||||
import 'dart:math';
|
||||
import 'package:aoc2020/aocbase.dart';
|
||||
import 'package:aoc2020/model/readdata.dart';
|
||||
|
||||
class AOC20201210 extends AOCBase {
|
||||
var mylist = <num>[];
|
||||
var dest = <num>[];
|
||||
|
||||
void init(bool test) async {
|
||||
mylist = await ReadData.readFile<num>(classString, test: test);
|
||||
mylist.sort();
|
||||
mylist.insert(0, 0);
|
||||
mylist.add(mylist.last + 3);
|
||||
dest = [];
|
||||
for (var index = 1; index < mylist.length; index++) {
|
||||
dest.add(mylist[index] - mylist[index - 1]);
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> a({bool test}) async {
|
||||
var filename = (test ?? false) ? classStringTest : classString;
|
||||
var mylist = await ReadData.readFileString(filename);
|
||||
await init(test);
|
||||
|
||||
var hist = <num, num>{};
|
||||
for (var num in dest) {
|
||||
hist[num] = hist[num] == null ? 1 : hist[num] + 1;
|
||||
}
|
||||
// print(hist);
|
||||
answerA = hist[1] * hist[3];
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> b({bool test}) async {
|
||||
var filename = (test ?? false) ? classStringTest : classString;
|
||||
var mylist = await ReadData.readFileString(filename);
|
||||
var groups = <int, int>{};
|
||||
|
||||
await init(test);
|
||||
|
||||
// Count groups
|
||||
var groupStart = false;
|
||||
var groupCount = 0;
|
||||
for (var index = 0; index < dest.length; index++) {
|
||||
if (!groupStart && dest[index] == 1) {
|
||||
groupStart = true;
|
||||
groupCount = 0;
|
||||
}
|
||||
if (groupStart) {
|
||||
if (dest[index] != 1) {
|
||||
groupStart = false;
|
||||
groups[groupCount] = groups[groupCount] == null ? 1 : groups[groupCount] + 1;
|
||||
} else {
|
||||
groupCount++;
|
||||
}
|
||||
}
|
||||
}
|
||||
var multiplier = <num>[1, 2, 4];
|
||||
for (var index = 3; index < 30; index++) {
|
||||
multiplier.add(multiplier[index-1] + multiplier[index-2] + multiplier[index-3]);
|
||||
}
|
||||
// print(groups);
|
||||
answerB = 1;
|
||||
for (var group in groups.keys) {
|
||||
if (group > 1) {
|
||||
// print('for group $group ${multiplier[group]} ^ ${groups[group]}');
|
||||
answerB = answerB * pow(multiplier[group-1], groups[group]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,99 @@
|
||||
18
|
||||
47
|
||||
144
|
||||
147
|
||||
124
|
||||
45
|
||||
81
|
||||
56
|
||||
16
|
||||
59
|
||||
97
|
||||
83
|
||||
75
|
||||
150
|
||||
33
|
||||
165
|
||||
30
|
||||
159
|
||||
84
|
||||
141
|
||||
104
|
||||
25
|
||||
164
|
||||
90
|
||||
92
|
||||
88
|
||||
2
|
||||
8
|
||||
51
|
||||
24
|
||||
153
|
||||
63
|
||||
27
|
||||
123
|
||||
127
|
||||
58
|
||||
108
|
||||
52
|
||||
38
|
||||
15
|
||||
149
|
||||
66
|
||||
72
|
||||
21
|
||||
46
|
||||
89
|
||||
135
|
||||
55
|
||||
34
|
||||
37
|
||||
78
|
||||
65
|
||||
134
|
||||
148
|
||||
76
|
||||
138
|
||||
103
|
||||
162
|
||||
114
|
||||
109
|
||||
42
|
||||
77
|
||||
102
|
||||
163
|
||||
7
|
||||
105
|
||||
69
|
||||
39
|
||||
91
|
||||
111
|
||||
131
|
||||
130
|
||||
6
|
||||
137
|
||||
96
|
||||
82
|
||||
64
|
||||
3
|
||||
95
|
||||
136
|
||||
85
|
||||
9
|
||||
116
|
||||
17
|
||||
99
|
||||
12
|
||||
117
|
||||
62
|
||||
50
|
||||
110
|
||||
26
|
||||
115
|
||||
71
|
||||
57
|
||||
156
|
||||
120
|
||||
98
|
||||
1
|
||||
70
|
||||
@ -0,0 +1,31 @@
|
||||
28
|
||||
33
|
||||
18
|
||||
42
|
||||
31
|
||||
14
|
||||
46
|
||||
20
|
||||
48
|
||||
47
|
||||
24
|
||||
23
|
||||
49
|
||||
45
|
||||
19
|
||||
38
|
||||
39
|
||||
11
|
||||
1
|
||||
32
|
||||
25
|
||||
35
|
||||
8
|
||||
17
|
||||
7
|
||||
9
|
||||
4
|
||||
2
|
||||
34
|
||||
10
|
||||
3
|
||||
Loading…
Reference in New Issue