Archived
Compare commits
2
Commits
a7474d703c
...
e6563a9ad7
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e6563a9ad7 | ||
|
|
062cc5c7cb |
+4
-3
@@ -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
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user