parent
5e81d05091
commit
92ab7fae32
4 changed files with 225 additions and 0 deletions
@ -0,0 +1,77 @@ |
||||
package main |
||||
|
||||
import ( |
||||
"AoC2020/helper" |
||||
"fmt" |
||||
"os" |
||||
"sort" |
||||
) |
||||
|
||||
func main() { |
||||
args := os.Args[1:] |
||||
input, err := helper.GetInput(args[0]) |
||||
if err != nil { |
||||
fmt.Println(err) |
||||
} |
||||
numbers, err := helper.MapToNumber(input) |
||||
if err != nil { |
||||
fmt.Println(err) |
||||
} |
||||
part2(numbers) |
||||
} |
||||
|
||||
func part2(numbers []int) { |
||||
sort.Ints(numbers) |
||||
numbers = prependInt(numbers,0) |
||||
numbers = append(numbers,numbers[len(numbers)-1]+3) |
||||
fmt.Printf("%v \n",numbers) |
||||
possibilities := make([][3]int, len(numbers)) |
||||
possibilities[len(numbers)-1] = [3]int{0,0,1} |
||||
for i:= len(numbers)-1; i >= 0; i-- { |
||||
diff := 0 |
||||
j := 1 |
||||
for diff <= 3 && i+j<len(numbers){ |
||||
diff = numbers[i+j] - numbers[i] |
||||
switch diff { |
||||
case 1: |
||||
possibilities[i][0] = sum(possibilities[i+j]) |
||||
case 2: |
||||
possibilities[i][1] = sum(possibilities[i+j]) |
||||
case 3: |
||||
possibilities[i][2] = sum(possibilities[i+j]) |
||||
} |
||||
j++ |
||||
} |
||||
} |
||||
fmt.Printf("%v \n",possibilities) |
||||
fmt.Printf("%d \n",sum(possibilities[0])) |
||||
} |
||||
|
||||
func part1(numbers []int) { |
||||
sort.Ints(numbers) |
||||
diffCounter := make([]int, 3) |
||||
numbers = prependInt(numbers,0) |
||||
numbers = append(numbers,numbers[len(numbers)-1]+3) |
||||
fmt.Printf("%v \n",numbers) |
||||
for i:= 0; i < len(numbers)-1; i++ { |
||||
diffCounter[numbers[i+1] - numbers[i]-1]++ |
||||
} |
||||
fmt.Printf("%v \n",diffCounter) |
||||
fmt.Print(diffCounter[0] * diffCounter[2]) |
||||
} |
||||
|
||||
func prependInt(x []int, y int) []int { |
||||
x = append(x, 0) |
||||
copy(x[1:], x) |
||||
x[0] = y |
||||
return x |
||||
} |
||||
|
||||
func sum(array [3]int) int { |
||||
result := 0 |
||||
for _, v := range array { |
||||
result += v |
||||
} |
||||
return result |
||||
} |
||||
|
@ -0,0 +1,106 @@ |
||||
66 |
||||
7 |
||||
73 |
||||
162 |
||||
62 |
||||
165 |
||||
157 |
||||
158 |
||||
137 |
||||
125 |
||||
138 |
||||
59 |
||||
36 |
||||
40 |
||||
94 |
||||
95 |
||||
13 |
||||
35 |
||||
136 |
||||
96 |
||||
156 |
||||
155 |
||||
24 |
||||
84 |
||||
42 |
||||
171 |
||||
142 |
||||
3 |
||||
104 |
||||
149 |
||||
83 |
||||
129 |
||||
19 |
||||
122 |
||||
68 |
||||
103 |
||||
74 |
||||
118 |
||||
20 |
||||
110 |
||||
54 |
||||
127 |
||||
88 |
||||
31 |
||||
135 |
||||
26 |
||||
126 |
||||
2 |
||||
51 |
||||
91 |
||||
16 |
||||
65 |
||||
128 |
||||
119 |
||||
67 |
||||
48 |
||||
111 |
||||
29 |
||||
49 |
||||
12 |
||||
132 |
||||
17 |
||||
41 |
||||
166 |
||||
75 |
||||
146 |
||||
50 |
||||
30 |
||||
1 |
||||
164 |
||||
112 |
||||
34 |
||||
18 |
||||
72 |
||||
97 |
||||
145 |
||||
11 |
||||
117 |
||||
58 |
||||
78 |
||||
152 |
||||
90 |
||||
172 |
||||
163 |
||||
89 |
||||
107 |
||||
45 |
||||
37 |
||||
79 |
||||
159 |
||||
141 |
||||
105 |
||||
10 |
||||
115 |
||||
69 |
||||
170 |
||||
25 |
||||
100 |
||||
80 |
||||
4 |
||||
85 |
||||
169 |
||||
106 |
||||
57 |
||||
116 |
||||
23 |
@ -0,0 +1,11 @@ |
||||
16 |
||||
10 |
||||
15 |
||||
5 |
||||
1 |
||||
11 |
||||
7 |
||||
19 |
||||
6 |
||||
12 |
||||
4 |
@ -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