2017 Day 16 & Day 17 Complete
This commit is contained in:
@@ -15,24 +15,33 @@ func main() {
|
||||
iters := 1000000000
|
||||
if len(os.Args) > 1 {
|
||||
length = Atoi(os.Args[1])
|
||||
if len(os.Args) > 2 {
|
||||
iters = Atoi(os.Args[2])
|
||||
}
|
||||
}
|
||||
|
||||
// Create a starting string
|
||||
for i := 0; i < length; i++ {
|
||||
progs += string('a' + i)
|
||||
}
|
||||
|
||||
inp := StdinToString()
|
||||
moves := strings.Split(inp, ",")
|
||||
for i := 0; i < iters; i++ {
|
||||
if i%(iters/100) == 0 {
|
||||
// Clear the screen
|
||||
fmt.Print("\033[H\033[2J")
|
||||
// Percent Complete
|
||||
fResult := ((float64(i) / float64(iters)) * 100)
|
||||
sResult2 := strconv.FormatFloat(fResult, 'f', 2, 64)
|
||||
fmt.Println(sResult2)
|
||||
|
||||
var loopEnd int
|
||||
var state []string
|
||||
doneProgs := progs
|
||||
state = append(state, progs)
|
||||
for loopEnd = 1; loopEnd < (iters / 2); loopEnd++ {
|
||||
doneProgs = doDance(doneProgs, moves)
|
||||
state = append(state, doneProgs)
|
||||
if doneProgs == progs {
|
||||
fmt.Println("Loops at", loopEnd)
|
||||
pos := (iters / loopEnd) * loopEnd
|
||||
fmt.Println("Final State", state[iters-pos])
|
||||
break
|
||||
}
|
||||
progs = doDance(progs, moves)
|
||||
}
|
||||
fmt.Println(progs)
|
||||
}
|
||||
|
||||
func doDance(progs string, moves []string) string {
|
||||
|
||||
Reference in New Issue
Block a user