package d3 import ( "strconv" "strings" ) func P2(input string) int64 { binaries := strings.Split(strings.TrimSpace(input), "\n") o2predicate := func(ones, zeroes []string) []string { if len(ones) == len(zeroes) || len(ones) > len(zeroes) { return ones } return zeroes } co2predicate := func(ones, zeroes []string) []string { if len(ones) == len(zeroes) || len(ones) > len(zeroes) { return zeroes } return ones } o2rating, _ := strconv.ParseInt(rating(binaries, 0, o2predicate), 2, 64) co2rating, _ := strconv.ParseInt(rating(binaries, 0, co2predicate), 2, 64) return o2rating * co2rating }