mirror of
https://github.com/HenkKalkwater/aoc-2020
synced 2024-11-22 02:55:18 +00:00
Day 10 part 1
This commit is contained in:
parent
4902daebaf
commit
f728b02ad6
95
in/10.txt
Normal file
95
in/10.txt
Normal file
|
@ -0,0 +1,95 @@
|
|||
76
|
||||
12
|
||||
97
|
||||
28
|
||||
132
|
||||
107
|
||||
145
|
||||
121
|
||||
84
|
||||
34
|
||||
115
|
||||
127
|
||||
22
|
||||
23
|
||||
11
|
||||
135
|
||||
113
|
||||
82
|
||||
140
|
||||
119
|
||||
69
|
||||
77
|
||||
83
|
||||
36
|
||||
13
|
||||
37
|
||||
92
|
||||
133
|
||||
122
|
||||
99
|
||||
147
|
||||
112
|
||||
42
|
||||
62
|
||||
65
|
||||
40
|
||||
123
|
||||
139
|
||||
33
|
||||
129
|
||||
149
|
||||
68
|
||||
41
|
||||
16
|
||||
48
|
||||
109
|
||||
5
|
||||
27
|
||||
142
|
||||
81
|
||||
90
|
||||
9
|
||||
78
|
||||
103
|
||||
26
|
||||
100
|
||||
141
|
||||
59
|
||||
55
|
||||
120
|
||||
126
|
||||
1
|
||||
35
|
||||
2
|
||||
20
|
||||
114
|
||||
58
|
||||
54
|
||||
10
|
||||
51
|
||||
116
|
||||
93
|
||||
6
|
||||
134
|
||||
108
|
||||
47
|
||||
70
|
||||
91
|
||||
138
|
||||
63
|
||||
19
|
||||
64
|
||||
148
|
||||
106
|
||||
21
|
||||
98
|
||||
43
|
||||
30
|
||||
146
|
||||
46
|
||||
128
|
||||
73
|
||||
94
|
||||
87
|
||||
29
|
|
@ -17,6 +17,7 @@ import day6;
|
|||
import day7;
|
||||
import day8;
|
||||
import day9;
|
||||
import day10;
|
||||
import dayutil;
|
||||
|
||||
immutable string progName = "aoc-2020";
|
||||
|
@ -35,6 +36,7 @@ Variant function(int, File, bool, string[])[] programs = [
|
|||
&day7.run,
|
||||
&day8.run,
|
||||
&day9.run,
|
||||
&day10.run,
|
||||
];
|
||||
|
||||
void printUsage(string message = null) {
|
||||
|
|
38
source/day10.d
Normal file
38
source/day10.d
Normal file
|
@ -0,0 +1,38 @@
|
|||
import std.array;
|
||||
import std.algorithm;
|
||||
import std.conv;
|
||||
import std.range;
|
||||
import std.stdio;
|
||||
import std.variant;
|
||||
|
||||
import dayutil;
|
||||
|
||||
Variant run(int part, File input, bool bigboy, string[] args) {
|
||||
uint[] numbers = input.byLineCopy.map!(to!uint).array ~ [0u];
|
||||
auto sortedNumbers = numbers.sort;
|
||||
|
||||
Variant result = parts!size_t(part,
|
||||
() => part1(sortedNumbers));
|
||||
return result;
|
||||
}
|
||||
|
||||
size_t part1(T)(SortedRange!(T[]) numbers) {
|
||||
size_t gap1 = 0, gap3 = 0;
|
||||
|
||||
foreach(window; numbers.slide!(No.withPartial)(2)) {
|
||||
size_t diff = window[1] - window[0];
|
||||
if (diff == 3) gap3++;
|
||||
if (diff == 1) gap1++;
|
||||
}
|
||||
// Device adapter is always rated 3 volts higher
|
||||
gap3++;
|
||||
writeln(gap1, ", ", gap3);
|
||||
return gap1 * gap3;
|
||||
}
|
||||
|
||||
unittest {
|
||||
uint[] numbers = [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];
|
||||
numbers ~= [0u];
|
||||
assert(part1(numbers.sort) == 220);
|
||||
}
|
Loading…
Reference in a new issue