Compare commits

...
2 Commits
Author SHA1 Message Date
Daniel Aberger e6563a9ad7 3rd: refactor / remove redundancy 2021-12-04 22:35:53 +01:00
Daniel Aberger 062cc5c7cb main: add fancy 2021-12-04 22:34:55 +01:00
2 changed files with 23 additions and 36 deletions
+4 -3
View File
@@ -8,10 +8,11 @@ import (
) )
func main() { func main() {
fmt.Println("Day 1") fmt.Println("🎄 MERRY CHRISTMAS 🎄")
fmt.Println("Day 1️⃣")
one.Run() one.Run()
fmt.Println("Day 2") fmt.Println("Day 2️⃣")
two.Run() two.Run()
fmt.Println("Day 3") fmt.Println("Day 3️⃣")
three.Run() three.Run()
} }
+18 -32
View File
@@ -20,10 +20,10 @@ func calcOxygen(values [][]int) int {
valueStore := make([][][]int, 0) valueStore := make([][][]int, 0)
valueStore = append(valueStore, values) valueStore = append(valueStore, values)
for i := 0; i < len(values[0]); i++ { for i := 0; i < len(values[0]); i++ {
frequencyMap := getMostCommonValues(valueStore[i]) commonValues := getCommonValues(valueStore[i], false)
newValues := make([][]int, 0) newValues := make([][]int, 0)
for _, v := range valueStore[i] { for _, v := range valueStore[i] {
if v[i] == frequencyMap[i] { if v[i] == commonValues[i] {
newValues = append(newValues, v) newValues = append(newValues, v)
} }
} }
@@ -42,10 +42,10 @@ func calcCO2(values [][]int) int {
valueStore := make([][][]int, 0) valueStore := make([][][]int, 0)
valueStore = append(valueStore, values) valueStore = append(valueStore, values)
for i := 0; i < len(values[0]); i++ { for i := 0; i < len(values[0]); i++ {
frequencyMap := getLeastCommonValues(valueStore[i]) commonValues := getCommonValues(valueStore[i], true)
newValues := make([][]int, 0) newValues := make([][]int, 0)
for _, v := range valueStore[i] { for _, v := range valueStore[i] {
if v[i] == frequencyMap[i] { if v[i] == commonValues[i] {
newValues = append(newValues, v) newValues = append(newValues, v)
} }
} }
@@ -60,33 +60,7 @@ func calcCO2(values [][]int) int {
return convertToDecimal(valueStore[len(valueStore)-1][0]) return convertToDecimal(valueStore[len(valueStore)-1][0])
} }
func getMostCommonValues(values [][]int) []int { func getCommonValues(values [][]int, least bool) []int {
ones := make([]int, len(values[0]))
zeros := make([]int, len(values[0]))
result := make([]int, len(values[0]))
for _, v := range values {
for i, b := range v {
if b == 1 {
ones[i]++
} else if b == 0 {
zeros[i]++
}
}
}
for k := range result {
if ones[k] > zeros[k] {
result[k] = 1
} else {
result[k] = 0
}
if ones[k] == zeros[k] {
result[k] = 1
}
}
return result
}
func getLeastCommonValues(values [][]int) []int {
ones := make([]int, len(values[0])) ones := make([]int, len(values[0]))
zeros := make([]int, len(values[0])) zeros := make([]int, len(values[0]))
result := make([]int, len(values[0])) result := make([]int, len(values[0]))
@@ -101,14 +75,26 @@ func getLeastCommonValues(values [][]int) []int {
} }
for k := range result { for k := range result {
if ones[k] > zeros[k] { if ones[k] > zeros[k] {
if least {
result[k] = 0 result[k] = 0
} else { } else {
result[k] = 1 result[k] = 1
} }
if ones[k] == zeros[k] { } else {
if least {
result[k] = 1
} else {
result[k] = 0 result[k] = 0
} }
} }
if ones[k] == zeros[k] {
if least {
result[k] = 0
} else {
result[k] = 1
}
}
}
return result return result
} }