package day25 import ( "bufio" "fmt" "os" ) func valueOf(r rune) int { switch r { case '2': return 2 case '1': return 1 case '0': return 0 case '-': return -1 case '=': return -2 default: fmt.Println("PANIC PANIC") return 23489 } } func Run(filename string) { file, err := os.Open(filename) if err != nil { fmt.Println("Error opening file:", err) return } scanner := bufio.NewScanner(file) scanner.Split(bufio.ScanLines) runningTotal := 0 for scanner.Scan() { line := []rune(scanner.Text()) current := 0 place := 1 for x := len(line) - 1; x >= 0; x-- { r := line[x] current += (place * valueOf(r)) place *= 5 } fmt.Println("Coverted", line, "==>", current) runningTotal += current } file.Close() fmt.Println("Running total", runningTotal) output := "" for runningTotal != 0 { runningTotal += 2 digit := runningTotal % 5 runningTotal /= 5 switch digit { case 4: output = "2" + output case 3: output = "1" + output case 2: output = "0" + output case 1: output = "-" + output case 0: output = "=" + output } } fmt.Println("Which is", output, "in SNAFU.") }