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() {
fmt.Println("Day 1")
fmt.Println("🎄 MERRY CHRISTMAS 🎄")
fmt.Println("Day 1️⃣")
one.Run()
fmt.Println("Day 2")
fmt.Println("Day 2️⃣")
two.Run()
fmt.Println("Day 3")
fmt.Println("Day 3️⃣")
three.Run()
}
+18 -32
View File
@@ -20,10 +20,10 @@ func calcOxygen(values [][]int) int {
valueStore := make([][][]int, 0)
valueStore = append(valueStore, values)
for i := 0; i < len(values[0]); i++ {
frequencyMap := getMostCommonValues(valueStore[i])
commonValues := getCommonValues(valueStore[i], false)
newValues := make([][]int, 0)
for _, v := range valueStore[i] {
if v[i] == frequencyMap[i] {
if v[i] == commonValues[i] {
newValues = append(newValues, v)
}
}
@@ -42,10 +42,10 @@ func calcCO2(values [][]int) int {
valueStore := make([][][]int, 0)
valueStore = append(valueStore, values)
for i := 0; i < len(values[0]); i++ {
frequencyMap := getLeastCommonValues(valueStore[i])
commonValues := getCommonValues(valueStore[i], true)
newValues := make([][]int, 0)
for _, v := range valueStore[i] {
if v[i] == frequencyMap[i] {
if v[i] == commonValues[i] {
newValues = append(newValues, v)
}
}
@@ -60,33 +60,7 @@ func calcCO2(values [][]int) int {
return convertToDecimal(valueStore[len(valueStore)-1][0])
}
func getMostCommonValues(values [][]int) []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 {
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]))
@@ -101,14 +75,26 @@ func getLeastCommonValues(values [][]int) []int {
}
for k := range result {
if ones[k] > zeros[k] {
if least {
result[k] = 0
} else {
result[k] = 1
}
if ones[k] == zeros[k] {
} else {
if least {
result[k] = 1
} else {
result[k] = 0
}
}
if ones[k] == zeros[k] {
if least {
result[k] = 0
} else {
result[k] = 1
}
}
}
return result
}