Add day 10

This commit is contained in:
Peter Resch
2020-12-12 18:13:09 -06:00
parent f9bc1ec66c
commit a8ab1a177e
4 changed files with 188 additions and 4 deletions
+2
View File
@@ -7,6 +7,7 @@ import 'package:aoc2020/aoc20201206.dart';
import 'package:aoc2020/aoc20201207.dart'; import 'package:aoc2020/aoc20201207.dart';
import 'package:aoc2020/aoc20201208.dart'; import 'package:aoc2020/aoc20201208.dart';
import 'package:aoc2020/aoc20201209.dart'; import 'package:aoc2020/aoc20201209.dart';
import 'package:aoc2020/aoc20201210.dart';
import 'package:aoc2020/aocbase.dart'; import 'package:aoc2020/aocbase.dart';
import 'dart:mirrors'; import 'dart:mirrors';
@@ -26,6 +27,7 @@ class aoc2020 {
AOC20201207(), AOC20201207(),
AOC20201208(), AOC20201208(),
AOC20201209(), AOC20201209(),
AOC20201210(),
]; ];
static void list() async { static void list() async {
+56 -4
View File
@@ -1,16 +1,68 @@
import 'dart:math';
import 'package:aoc2020/aocbase.dart'; import 'package:aoc2020/aocbase.dart';
import 'package:aoc2020/model/readdata.dart'; import 'package:aoc2020/model/readdata.dart';
class AOC20201210 extends AOCBase { 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 @override
Future<void> a({bool test}) async { Future<void> a({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; await init(test);
var mylist = await ReadData.readFileString(filename);
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 @override
Future<void> b({bool test}) async { Future<void> b({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; var groups = <int, int>{};
var mylist = await ReadData.readFileString(filename);
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]);
}
}
} }
} }
+99
View File
@@ -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
+31
View File
@@ -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