-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathday01.groovy
35 lines (32 loc) · 830 Bytes
/
day01.groovy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
def input = new File("input/day01.txt").readLines();
def numberMapping = [
"one": "1",
"two": "2",
"three": "3",
"four": "4",
"five": "5",
"six": "6",
"seven": "7",
"eight": "8",
"nine": "9",
];
def numbers = input.collect { value ->
def digits1 = [];
def digits2 = [];
for (def i = 0; i < value.length(); i++) {
def rem = value[i..-1];
if (rem[0] =~ /[0-9]/) {
digits1 << rem[0];
}
rem = rem.replace(numberMapping);
if (rem[0] =~ /[0-9]/) {
digits2 << rem[0];
}
}
return [
(digits1[0] + "" + digits1[-1]).toInteger(),
(digits2[0] + "" + digits2[-1]).toInteger(),
];
};
numbers.inject([0, 0]) { result, i -> [result[0] + i[0], result[1] + i[1]] }
.each { n -> println n };