Day 13
This commit is contained in:
parent
3c00fde640
commit
576b414008
|
@ -0,0 +1,2 @@
|
|||
1002561
|
||||
17,x,x,x,x,x,x,x,x,x,x,37,x,x,x,x,x,409,x,29,x,x,x,x,x,x,x,x,x,x,13,x,x,x,x,x,x,x,x,x,23,x,x,x,x,x,x,x,373,x,x,x,x,x,x,x,x,x,41,x,x,x,x,x,x,x,x,19
|
|
@ -0,0 +1,56 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"fmt"
|
||||
"math"
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func main() {
|
||||
var earliest int
|
||||
var buslines []int
|
||||
|
||||
file, _ := os.Open("input.txt")
|
||||
defer file.Close()
|
||||
scanner := bufio.NewScanner(file)
|
||||
scanner.Scan()
|
||||
earliest, _ = strconv.Atoi(scanner.Text())
|
||||
scanner.Scan()
|
||||
for _, s := range strings.Split(scanner.Text(), ",") {
|
||||
if s != "x" {
|
||||
line, _ := strconv.Atoi(s)
|
||||
buslines = append(buslines, line)
|
||||
} else {
|
||||
buslines = append(buslines, -1)
|
||||
}
|
||||
}
|
||||
|
||||
favLine := 0
|
||||
waitTime := math.MaxInt64
|
||||
for _, l := range buslines {
|
||||
if l != -1 {
|
||||
if t := l - earliest%l; t < waitTime {
|
||||
favLine = l
|
||||
waitTime = t
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fmt.Println("Part 1:", favLine*waitTime)
|
||||
|
||||
t, step := 0, 1
|
||||
for i, l := range buslines {
|
||||
if l == -1 {
|
||||
continue
|
||||
}
|
||||
for (t+i)%l != 0 {
|
||||
t += step
|
||||
}
|
||||
step *= l
|
||||
}
|
||||
|
||||
fmt.Println("Part 2:", t)
|
||||
}
|
Reference in New Issue