2021/03 part 1 finished started with part 2

This commit is contained in:
ZennDev1337 2023-11-21 15:29:07 +01:00
parent 2d8a3d5780
commit 80cd2210a3

View file

@ -38,7 +38,12 @@ func ConvertToUsefulData(s []string) [][]uint {
} }
func main() { func main() {
result := Part1(ConvertToUsefulData(GetData("./data"))) result := Part1(ConvertToUsefulData(GetData("./data")))
fmt.Printf("The Power consumption is: %d", result) fmt.Printf("The Power consumption is: %d\n", result)
data := ConvertToUsefulData(GetData("./test-data"))
for _, f := range data {
fmt.Println(f)
}
} }
func Part1(data [][]uint) uint { func Part1(data [][]uint) uint {
@ -64,16 +69,15 @@ func Part1(data [][]uint) uint {
return gammaRate * epsilonRate return gammaRate * epsilonRate
} }
func ConvertToUsefulDataPart2(s []string) [][]uint {
a := make([][]uint, len(s)) func dataSliceConvert(data [][]uint) [][]uint {
a := make([][]uint, len(data[0]))
for i := range a { for i := range a {
a[i] = make([]uint, len(s[0])) a[i] = make([]uint, len(data))
} }
for i, data := range s { for i, row := range data {
split := strings.Split(data, "") for j, dataEntry := range row {
for j, data2 := range split { a[j][i] = dataEntry
x, _ := strconv.Atoi(data2)
a[j][i] = uint(x)
} }
} }
return a return a
@ -96,22 +100,32 @@ func WhichIsMore(data []uint) int {
return 0 return 0
} }
func Cycle(data [][]uint, i int) [][]uint {
var result [][]uint
test := make([]uint, len(data))
for j := range data {
test[j] = data[j][i]
}
more := uint(WhichIsMore(test))
//fmt.Println(more)
//fmt.Println(test)
for _, odata := range data {
if odata[i] == more {
result = append(result, odata)
}
}
return result
}
func Part2(data [][]uint) (uint, uint) { func Part2(data [][]uint) (uint, uint) {
oxygenRate := uint(0) ordered := dataSliceConvert(data)
for _, row := range data { oxygenRate := Cycle(ordered, 0)
fmt.Println(row) for i := range ordered[0] {
more := WhichIsMore(row) oxygenRate := Cycle(oxygenRate, i)
//countOnly := WhichIsMore(row) fmt.Println(oxygenRate)
switch more {
case 0:
case 1:
} }
}
for _, row := range data {
fmt.Println(row)
}
return 0, 0 return 0, 0
} }