This commit is contained in:
2022-12-25 19:03:28 +01:00
parent e49ac1b231
commit 8577bfc57c
2 changed files with 111 additions and 0 deletions

93
day25/common/balloons.go Normal file
View File

@@ -0,0 +1,93 @@
package common
import (
"bufio"
"fmt"
)
type Number []int8
func (number Number) Sum(otherNumber Number) Number {
sum := Number{}
var hold, n, o int8
longest := len(number)
if len(otherNumber) > longest {
longest = len(otherNumber)
}
for i := 0; i < longest; i++ {
n = 0
o = 0
if i < len(number) {
n = number[i]
}
if i < len(otherNumber) {
o = otherNumber[i]
}
current := n + o + hold
if current <= 2 && current >= -2 {
hold = 0
sum = append(sum, current)
} else if current > 2 {
hold = 1
sum = append(sum, current - 5)
} else {
hold = -1
sum = append(sum, 5 + current)
}
}
sum = append(sum, hold)
for sum[len(sum)-1] == 0 {
sum = sum[:len(sum)-1]
}
return sum
}
func (number Number) Print() {
for i := len(number) - 1; i >= 0; i-- {
switch number[i] {
case -2:
fmt.Print("=")
case -1:
fmt.Print("-")
case 0:
fmt.Print("0")
case 1:
fmt.Print("1")
case 2:
fmt.Print("2")
}
}
fmt.Println()
}
func Parse(scanner bufio.Scanner) []Number {
numbers := []Number{}
for scanner.Scan() {
line := scanner.Text()
number := Number{}
for i := len(line) - 1; i >= 0; i-- {
switch line[i] {
case '2':
number = append(number, 2)
case '1':
number = append(number, 1)
case '0':
number = append(number, 0)
case '-':
number = append(number, -1)
case '=':
number = append(number, -2)
}
}
numbers = append(numbers, number)
}
return numbers
}