diff --git a/2021/day3/main.go b/2021/day3/main.go index 79decf9..8724a0e 100644 --- a/2021/day3/main.go +++ b/2021/day3/main.go @@ -38,7 +38,12 @@ func ConvertToUsefulData(s []string) [][]uint { } func main() { 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 { @@ -64,16 +69,15 @@ func Part1(data [][]uint) uint { 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 { - a[i] = make([]uint, len(s[0])) + a[i] = make([]uint, len(data)) } - for i, data := range s { - split := strings.Split(data, "") - for j, data2 := range split { - x, _ := strconv.Atoi(data2) - a[j][i] = uint(x) + for i, row := range data { + for j, dataEntry := range row { + a[j][i] = dataEntry } } return a @@ -96,22 +100,32 @@ func WhichIsMore(data []uint) int { return 0 } -func Part2(data [][]uint) (uint, uint) { - oxygenRate := uint(0) - for _, row := range data { - fmt.Println(row) - more := WhichIsMore(row) - //countOnly := WhichIsMore(row) - switch more { - case 0: - - case 1: +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) { + ordered := dataSliceConvert(data) + oxygenRate := Cycle(ordered, 0) + for i := range ordered[0] { + oxygenRate := Cycle(oxygenRate, i) + fmt.Println(oxygenRate) } - for _, row := range data { - fmt.Println(row) - } + return 0, 0 }