package main import ( "fmt" h "git.bullercodeworks.com/brian/adventofcode/helpers" ) func main() { inp := h.StdinToStringSlice() part1(inp) fmt.Println() part2(inp) } func part1(inp []string) { var res int for i := range inp { best := []byte{'0', '0'} res += solve(inp[i], best) } fmt.Println("# Part 1") fmt.Println(res) } func part2(inp []string) { var res int for i := range inp { best := []byte{'0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'} res += solve(inp[i], best) } fmt.Println("# Part 2") fmt.Println(res) } func solve(inp string, best []byte) int { var tPos int for j := range best { best[j], tPos = findBest(inp, (len(best)-j)-1) inp = inp[tPos+1:] } return h.Atoi(string(best)) } func findBest(inp string, rem int) (byte, int) { var best byte var pos int for i := 0; i < len(inp)-rem; i++ { if inp[i] > best { best, pos = inp[i], i } } return best, pos }