2022 day 25 complete
This commit is contained in:
50
2022/day25/main.go
Normal file
50
2022/day25/main.go
Normal file
@@ -0,0 +1,50 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
|
||||
h "git.bullercodeworks.com/brian/adventofcode/helpers"
|
||||
)
|
||||
|
||||
func main() {
|
||||
inp := h.StdinToStringSlice()
|
||||
part1(inp)
|
||||
}
|
||||
|
||||
func part1(inp []string) {
|
||||
var v int
|
||||
for i := range inp {
|
||||
v = v + SNAFUToDec(inp[i])
|
||||
}
|
||||
fmt.Println("# Part 1")
|
||||
fmt.Println(DecToSNAFU(v))
|
||||
}
|
||||
|
||||
func SNAFUToDec(inp string) int {
|
||||
var res int
|
||||
var place float64
|
||||
for i := len(inp) - 1; i >= 0; i-- {
|
||||
var v int
|
||||
if inp[i] == '-' {
|
||||
v = -1
|
||||
} else if inp[i] == '=' {
|
||||
v = -2
|
||||
} else {
|
||||
v = int(inp[i] - '0')
|
||||
}
|
||||
v = v * int(math.Pow(5, place))
|
||||
place++
|
||||
res = res + v
|
||||
}
|
||||
return res
|
||||
}
|
||||
|
||||
func DecToSNAFU(v int) string {
|
||||
var res string
|
||||
for v > 0 {
|
||||
res = string("=-012"[(v+2)%5]) + res
|
||||
v = (v + 2) / 5
|
||||
}
|
||||
return res
|
||||
}
|
||||
Reference in New Issue
Block a user