Day25
This commit is contained in:
parent
217990eb15
commit
01ae5e3d11
79
day25/day25.go
Normal file
79
day25/day25.go
Normal file
@ -0,0 +1,79 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"AOC2022/helper"
|
||||
"fmt"
|
||||
"math"
|
||||
"os"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
func main() {
|
||||
args := os.Args[1:]
|
||||
lines := helper.ReadTextFile(args[0])
|
||||
sum := 0
|
||||
for _, line := range lines {
|
||||
sum += toNormal(line)
|
||||
}
|
||||
fmt.Println(sum)
|
||||
fmt.Println(toSNAFU(sum))
|
||||
}
|
||||
|
||||
func toNormal(SNAFU string) int {
|
||||
returnValue := float64(0)
|
||||
for i := 0; i < len(SNAFU); i++ {
|
||||
currentChar := SNAFU[len(SNAFU)-1-i]
|
||||
amount := float64(0)
|
||||
switch currentChar {
|
||||
case '2':
|
||||
amount = 2
|
||||
case '1':
|
||||
amount = 1
|
||||
case '-':
|
||||
amount = -1
|
||||
case '=':
|
||||
amount = -2
|
||||
}
|
||||
returnValue += amount * math.Pow(float64(5), float64(i))
|
||||
}
|
||||
return int(returnValue)
|
||||
}
|
||||
|
||||
func toSNAFU(input int) string {
|
||||
returnValue := ""
|
||||
highestFitting := 99
|
||||
i := 10
|
||||
for highestFitting == 99 {
|
||||
i--
|
||||
amount := int(math.Pow(5, float64(i)))
|
||||
if amount < input {
|
||||
highestFitting = i + 1
|
||||
}
|
||||
}
|
||||
fitIns := 0
|
||||
for input > 0 {
|
||||
remains := input % 5
|
||||
remains += fitIns
|
||||
fitIns = 0
|
||||
input = input / 5
|
||||
if remains > 2 {
|
||||
remainsRemains := remains % 5
|
||||
fitIns = remains / 5
|
||||
if remainsRemains > 2 {
|
||||
fitIns++
|
||||
switch remainsRemains {
|
||||
case 3:
|
||||
returnValue = "=" + returnValue
|
||||
case 4:
|
||||
returnValue = "-" + returnValue
|
||||
|
||||
}
|
||||
} else {
|
||||
returnValue = strconv.Itoa(remainsRemains) + returnValue
|
||||
}
|
||||
} else {
|
||||
returnValue = strconv.Itoa(remains) + returnValue
|
||||
}
|
||||
}
|
||||
return returnValue
|
||||
}
|
141
day25/input
Normal file
141
day25/input
Normal file
@ -0,0 +1,141 @@
|
||||
121=10120=1022=2=0
|
||||
10==--=-=2
|
||||
2=11
|
||||
120221-1-
|
||||
2002011
|
||||
1-00-11=0
|
||||
1==2=-200101===
|
||||
2122=-10
|
||||
1=1=2=-1
|
||||
11--=-10-0-0
|
||||
2=-210=
|
||||
2-==1221011=021==-
|
||||
2
|
||||
1-2==212
|
||||
1-2=0=12--0111010=0
|
||||
1220-20=1=1
|
||||
1211=1
|
||||
10-22=-212--00
|
||||
1=---021
|
||||
1-010-21-2-
|
||||
10-==00122-=0--
|
||||
10=-
|
||||
1=20=-=---1=1
|
||||
1-0-0
|
||||
2===11=12200=2
|
||||
1===1
|
||||
1002
|
||||
10=-==-02
|
||||
12---2-==-020122
|
||||
11=-=2
|
||||
1-==2-=--2
|
||||
1-1112
|
||||
210-212-=20220-1
|
||||
1=-0111=0==
|
||||
100=20==-
|
||||
200==22-2=
|
||||
2-
|
||||
21-=1012=2=01=
|
||||
1=-=0=0-01=0
|
||||
1-2
|
||||
1121==0=
|
||||
2--21
|
||||
212111=00=-1-=1=
|
||||
10-021-
|
||||
2=
|
||||
2=0=12-
|
||||
1-0--
|
||||
2-0=21012==112=-1=
|
||||
1222==01=100121=0-=
|
||||
1011=01
|
||||
12102-
|
||||
10012=0-11021
|
||||
1-=01-
|
||||
12=010=12-0=02=11
|
||||
1-22=2--1-
|
||||
100=010-1
|
||||
210
|
||||
1-
|
||||
22--011--1212101
|
||||
11201
|
||||
1=2=-122=---1
|
||||
1===2122=-01=0=2
|
||||
1011--0--=20
|
||||
202-2-1=2
|
||||
2=000=10=-0
|
||||
110-=00-1211
|
||||
2==0=--00-2===
|
||||
110
|
||||
2=-02-1220012-
|
||||
1=21----=-=
|
||||
1=1
|
||||
12=--2=012-21
|
||||
1=0020-1--=0-=
|
||||
1==
|
||||
11-01101221=-02
|
||||
1=0201-2==0--01
|
||||
1=120120-=1
|
||||
1-121=====2-0=-
|
||||
201=1=1101-=02==
|
||||
1-00--0-
|
||||
10-202
|
||||
22-
|
||||
1==1=-2==-0-110
|
||||
1==21=1=20-1210=12
|
||||
20112-1=0--0=
|
||||
1=-=2021--0===21
|
||||
1-==-2
|
||||
1==120-0-
|
||||
1=0111=21-00-0=2
|
||||
1-110-=11-1021
|
||||
22
|
||||
1=1212=20=
|
||||
212=1=-12---122
|
||||
2=2
|
||||
2220-1=2==022=--0=
|
||||
2-02222
|
||||
1--0=0-22=-1
|
||||
120==2100
|
||||
10==201121==2-1221-0
|
||||
12210--==2--01022
|
||||
211120-21202
|
||||
22021011
|
||||
21---0=2-10=22
|
||||
1-22=-0
|
||||
12201=-2121-=-1
|
||||
11122-=202-
|
||||
1-2---=
|
||||
1-22=01=10-10
|
||||
1-0=0=21211011-0-
|
||||
2---
|
||||
1==12100
|
||||
112=1121
|
||||
120--1
|
||||
1-11=-2=-0
|
||||
1--=02-02
|
||||
2000-22==0221=2=
|
||||
1=1-10-1-==100=1
|
||||
202-011011
|
||||
20=10=-0002=00=
|
||||
2=1-2
|
||||
220
|
||||
11==-0=120--0-10=
|
||||
1=112-22202=2
|
||||
10=-0
|
||||
1=1=2=0
|
||||
2222--11---011-1
|
||||
1=-1=2=1-2122--10-1
|
||||
11021
|
||||
101
|
||||
11=2101222==
|
||||
100112-2011
|
||||
1=1=
|
||||
2-021--
|
||||
12211-1122=2-
|
||||
2--2=-1=-
|
||||
21012=2---2=2120=1
|
||||
1-010-==--2
|
||||
12=-22000-
|
||||
2-===1-1
|
||||
22=-=122=--1=
|
||||
2-2=-0-021
|
13
day25/testinput
Normal file
13
day25/testinput
Normal file
@ -0,0 +1,13 @@
|
||||
1=-0-2
|
||||
12111
|
||||
2=0=
|
||||
21
|
||||
2=01
|
||||
111
|
||||
20012
|
||||
112
|
||||
1=-1=
|
||||
1-12
|
||||
12
|
||||
1=
|
||||
122
|
Loading…
Reference in New Issue
Block a user