Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import "math"
- func PartOne(values []int) int {
- var media int
- smaller := math.MaxInt
- for _, v := range values {
- media += v
- if v < smaller {
- smaller = v
- }
- }
- media /= len(values)
- min := math.MaxInt
- for i := 0; i < media+1; i++ {
- f := 0
- for _, v := range values {
- f += int(math.Abs(float64(v) - float64(i)))
- }
- if f < min {
- min = f
- }
- }
- return min
- }
- func PartTwo(values []int) int {
- var media int
- smaller := math.MaxInt
- for _, v := range values {
- media += v
- if v < smaller {
- smaller = v
- }
- }
- media /= len(values)
- min := math.MaxInt
- sum := func(a int) int {
- return a * (a + 1) / 2
- }
- for i := smaller; i < media+1; i++ {
- f := 0
- for _, v := range values {
- f += sum(int(math.Abs(float64(v) - float64(i))))
- }
- if f < min {
- min = f
- }
- }
- return min
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement