Day 25
This commit is contained in:
93
day25/common/balloons.go
Normal file
93
day25/common/balloons.go
Normal 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
|
||||
}
|
||||
Reference in New Issue
Block a user