diff --git a/Makefile b/Makefile index 5f82e79..b6efd65 100644 --- a/Makefile +++ b/Makefile @@ -15,6 +15,8 @@ day04: go run main.go day04 input day05: + go run main.go day05 input + day06: day07: day08: diff --git a/day05/example.txt b/day05/example.txt new file mode 100644 index 0000000..b036d3e --- /dev/null +++ b/day05/example.txt @@ -0,0 +1,3 @@ +BFFFBBFRRR +FFFBBBFRRR +BBFFBBFRLL diff --git a/day05/input.txt b/day05/input.txt new file mode 100644 index 0000000..65fdf41 --- /dev/null +++ b/day05/input.txt @@ -0,0 +1,891 @@ +FBBBBBBRRL +BBFFFBBLRL +FBFFBFFLRL +FFBBBFBLRR +FFBFBFFLLL +BFBBBBFLLL +FFBFFFFLLR +FBBFBFBLRR +BBBFFFFRRR +BFBFFFBLLR +BFFBBFBLLL +FBBFFBFLRL +FBBBFBFRLR +BFBBBBBRRL +BBFFBBFLLR +FFBBBFBRRL +FFBBFFBLLL +BFFFFBFLLR +FBBFBBBLRR +FBBBFFFRRR +BFBFFFFLRL +BBFFFBBLRR +FBFBBFBLRR +FBBBBBFLLR +FFBBBFBRRR +BBBFFBBLLL +FFFBBBBLLR +FBBFBBFLLL +FBFFBFFRLL +BFBBFBFLLL +FFBBBBFRLR +BFBBFFBLLL +FFBFFBFLLR +BFBBBBFRLL +BBBBFFFRLR +FBFFFBBRRR +BBBFFBFRLR +BBFBFBFLRL +FBBBBBBRLR +FBBFFFBRRL +BBFBFBBLLL +BBFBFBFLLL +BBFBBBBRRL +BBBFFBFRRL +FBFBBBBLLR +BFFBFFFLLR +FBBBBFFRRR +BBFBFBFRLR +BFFFBBFLLR +BFBFFBFRLL +FFBFFFBRLL +BFFFFFBLRL +BFBFBFBLLR +BBFBBBBLLR +BFFBFBBRRL +FBFBBFBRRR +FBBBFBFRRR +FBFFFBBLLL +FBBFFFFLRL +FFBFFBBLLL +BFBBBFBRLL +BBBBFBFRRL +FFBBFFBRRR +FFFBBBFRRR +FFBBFBFRRR +BBFBBBFRLR +BBBFFFBRRL +FBBFBBFRRL +BFFBFFFRRR +BBFFBFBRRL +BFBBBFBLRL +FFFBBBBRLL +FFBFFFFRLR +BBFBFBFLLR +FBBBFBFLLR +BFFBBFFRRL +BFFFBFBLLR +FFBFFBFRLL +FFBBBBFLLL +FFFBBFFRRR +FBFFBBBLRR +FFFBBBBRLR +FBFBBBBRRL +FBFBBFBRLR +BBFFBBFLRR +BBBFFFBLRR +BBFBFFBLRL +FBFBFBBRLL +BFBFBBFRRR +BBFFBFFLLR +FBFFFBBLRL +FBFFFBBRLR +FBFFBFBLLR +FBBFFFFRLR +FBFBFFBRRL +BBFBFFBRLR +FBBBBBFRRR +FBFBFBFLLL +BFBFFFBRLR +FFFBBBBLLL +FFBFFFFLRL +BFFFFBFRRR +BBBFFFFLLR +BFBFBBFRLL +FFBBBBFRRL +BFBBBFFRLL +FBFFFFBRRR +FBFFBBFRRR +BBFBFFFLLR +FFBFFBBRLL +FBBFBFFRLL +FFBBFFBLRR +FBBFBFFRRL +FBFFFFFLRL +BBBFBFBRLR +FBBBBFBLLL +BFFFFBBRLL +FBBFBFBRLL +BBBFBFFRRL +BBBFFFBLLL +FBBBBBBRLL +FBFBBBBLLL +BBBFFFBRLR +BFFFBBFRLL +BFFBFFBLRL +BFBBBBBLLR +FBBFFBBRRR +FBBFFFFLLR +BFBBFFFRLR +FBFFFBBLRR +BBFBBFFRLR +BFFFFBFLRL +FFBBBFFRRR +FBFFFFFRLL +BBFFBFFRLR +FFBBBBBRRR +FFBBBBFRLL +FBFFFFFLRR +FFBFFBFLRR +BBFBBFFRRR +BFBFBBBRRL +FBBFBFFLRL +FBBFFBBLLR +BFFFFBBLLL +BBFBBBBLRR +BFBBFBFRRL +BFBBFFFLRL +FFBBFFBLRL +BBFFBBFLLL +BBBFBBBRLL +BBFBFBBLRR +BFFBFBBRLR +FBFFBFBRLL +FBFBBFFRLL +BBFBBBBLRL +BBFBFFBLLR +FBBFFBFRRL +FFBBFBFRRL +BFFBBBBRRR +BFFBBFFLRR +BFFFFBFLLL +FBFBBFFLRL +FBFBFFFLRL +FFBBFFFLRL +FBBFBFFLRR +BBFFFFBLLL +BFBBBFFLLL +BFFBBBBLLR +BBBFBFFRLL +BBFFFBFRLR +FFBBFFFRLR +FFFBBFBRLR +BFBFBFFRRR +BBFFFBBRLR +BBBFFBBRRR +FFBFFBFRRR +BFBBBBBLRR +FBBFBFBRRR +BBFFFFFLLR +FFBFBBBLRR +BBFFFFFRRR +FBFBBFFLLR +BFBFFBFLLR +FFBFBFBRLL +BBBFFBBRLR +FBBBBBFRLL +FBFBBBFLLL +BBBBFBBLRR +BBBBFFBLRL +BFBFBFBLLL +BBFFBBBRLL +BFBBFFFRLL +BBBBFBFLRL +FFBFBBFLLR +BFBFFBFRRR +BBFFFBFLLL +FFBFBBBRRL +FBFBFFFLLR +FFBFBBFLRL +BFFFBFFRLL +FBFBFBFRLL +FBBBFFBLLR +FFBBBFFLRR +BFFFFFFLRL +FFBFBFFRLL +BBBFBBFRRR +FFBBFFBRLR +BBFBBFBRLL +FBBFBBBRLR +FBFBFFBLRL +FBBBFFFRRL +BBBFBFFLRR +FBFBBFBRRL +BFBFBBFRLR +BFFFFBBLLR +BBBFBBBLRR +FFBBBFFRRL +FBFBFBBRRL +FFFBBBFLLR +BFFFFFFRRR +FBFBFBBLRR +BFFFBFFRRL +FBBFBBFRRR +FBFBFFBLRR +FBBBBFBLLR +BBBBFBBLRL +BFFFBBFLRL +BFBBBFBRRL +BFBFBFBLRR +FBBBBBBRRR +FFBFBBBRLR +FBFFFBBRRL +BFFFFBFLRR +BBFBFFFRRR +FFBBFFFLRR +BFBBBBFRRR +FBFBFBFRRL +BBFFFBFRRR +BBBBFFBLLL +BFFBBFBLLR +FBFFFFBRRL +FBBBFBFLRR +FBBFFBFRLR +FFBBBBFLRR +BBFFFBBLLR +FFBFBFFLLR +BFFBFFBLLL +BFFFBBFRLR +BBFFFFBRRL +BBFBFBFRLL +FBFFFBFLRL +BBFFBBBLRR +BFBFBBFRRL +BBBFFBFLRR +BFFFBFBRLL +BBBFBBBLRL +BBFBBFFLLR +BFBBBBFRRL +FBBFFFBRLL +BBBFBFFLRL +BFBFFFBLRR +BBBFBBFRLR +BFBFBBBRLL +FBBFBFFLLL +FFBFBBFLRR +BFBBFFFLRR +BFFBBBFRRL +FFFBBFBLRL +FBFFBBFLRL +FBFFFBFLLL +FFBBBBBLRL +FFFBBFFRLL +BBFFBBBRRR +BFBBFBBLRR +BFBBBFFRRR +BFBFFBFLLL +BBBFFBFLRL +BBFFFFBLRL +FBFBBBFLRR +FBFFBBBLLL +FBBBBFFRRL +BBBFFBFLLR +BFFBFBFRRL +BFFFBFFRRR +BFBFBFBLRL +BFBFBFFLLL +FBFFBFBRRR +BFFBFFBRLL +BBBFBBBRRR +FBFBFFBRRR +FBFFFFFLLR +FFBFBFFRRL +BBFBBBFLLR +FBFFBBBLRL +BBFFFFBLRR +FFFBBBBRRL +FBFBFBBRLR +FFBBBBFLLR +FBFBBFBLRL +FBFFBFFRRL +FBBBFBBLLR +FBFBBFFRRR +BFBFBBBRLR +BBFBBBBRRR +FBFBBBFRRL +BBFBBBBRLR +FBFFBFFLLL +FBBBFFBRLR +FBFFFBFLRR +BBFBFFFLRR +FBFFFFBLRR +FBFFBBFRLR +FFFBBBFLLL +BFFFBFBLRL +FFBFFFFRRL +BBFFBFBRLL +BBFBBFFLRL +BBBBFFFLRR +FBBBBBBLRL +BFBFBFBRRL +BBBFFBBRRL +FBBFBBBLLL +FFBBFFFRLL +FBFFFFFLLL +FBBFBBFRLR +FBFFBFFRRR +BBFFFBBRLL +FFFBBFFLLR +BFFBFFBLRR +BFBBBBBLRL +FBBBFBFRRL +BFFFFFFLRR +FBFBFBBLRL +BFBFFFBLRL +FBBFFFBLRR +BFFBFBFLRR +FFBFBFBLLL +BFBFFBFLRL +FBBBFFBRLL +FFBBBFBLLL +FBFFFFFRLR +BBBFFFFRRL +FBFFBFFLRR +BFBFFBBLLR +BFBFFBFLRR +BBBBFBFRRR +FBFBBBFRRR +FBFFBBBRLR +BBFBFBBLLR +FBFBBBBLRR +BBBFBFBLLL +BFFFBBBLLR +BFFFBFFLLL +BFFFFFBLLL +FBFFBBBLLR +FBBFFBFRRR +FBFBFFBRLR +BBBFFFFLRR +FFBFFBBLRL +FBBFBBBLRL +FBFFFFFRRR +FFBBBFBRLR +BFBFFFFRRL +FFBFBFBLLR +BBFFFBFLLR +BBFFBBFRRL +BFBFBFBRRR +BFBFBFFLRR +BFFFFFBLLR +FBBBBBFLRL +FBBBFFBLRR +BBFFBBFLRL +BFBFBFFRLR +BFBFBBFLLR +BFFFBBBRLR +BFBBFBFRLL +BFFBBBBLRL +BBBFBBBRLR +BFFFBFFLRR +FFBBBBBRLR +BBFBFBBRRL +BFBBBFBLLL +FBFBBFFRLR +FFBFBFFRLR +FFBBFBBRLL +FBFFBBFLLR +BBBBFBFLRR +FFFBBFBLLL +BFFFBBFLLL +FFBFFFFRLL +FBBFBFBLRL +FFBBFBFLLR +BFBFBFBRLL +BFFBFBFRRR +BBFBFBFRRL +FFBFBFFRRR +BBBFFBBLRL +FBFFBFBLRL +BBFFBFFLRL +FBFFBFBLLL +BFFFBBBLRL +BFBFBFFLRL +FBBBBFFLLR +BBFFBBFRLL +BBFFBFBRLR +BFBBFFBLRR +BBFBBFBRRL +FBFFBBBRRL +FFBFBBBLLL +FFBFBFFLRR +BBBBFFBLLR +BBFFBBBLLL +BBFBBFFLRR +FBBBFBFLLL +FFFBBBBLRR +FFBBFBFLLL +BBFBBFBLRL +BFFBFBFLRL +BFFFBBBLRR +FBFBFBBRRR +FBBBFFFRLL +FBBBBBBLLL +BFFBFBBLLL +BBFFFBFRRL +FBBFBBBLLR +BFFBBBFLRR +FFFBBFBLLR +FBFFFBFRRL +BFBFBBBRRR +FBFBFFFRLL +BFFFBFBLRR +FBBBFBBLLL +BBBFBFFRLR +BFBBBFFLRR +BFFBBBFLLR +BBBBFFFRRL +BBFBBFFRRL +BFBBFBBRRL +FBBBBBFRRL +BFFBFBBRLL +FFBFFFBLLL +FFFBBBFLRR +FFBBBFBRLL +FBBFFBBRRL +BFFFBFBRRL +BFBBFBBLLL +BFFFFFFRRL +FFBFFFBRRR +BFFBFBFRLL +FBBFBBFLRR +BBFFFFBRRR +BFBFFFFLLL +FBBFFFBLLR +BBFFBFBLLL +BBFBFFBRLL +BBFBFFFLRL +FBBBFFFLLL +FFBFFBFRLR +FBFBFFFLLL +FBBBFBBLRL +FFBFBBFRLL +BFBFFFFRRR +FBFFFFBLLR +BFBBFBBLLR +FBFFBBFLRR +FBFBFFFRRL +BFBFFBFRLR +BBBBFFFLLR +BFBBBFFRRL +FBFBFFBRLL +FBBBBFBLRR +BBFFFFFRRL +BFFFFFFLLR +FBFFBBFLLL +BBFBBBFRRL +FBFFFFBRLR +FFBBBBBLLR +BBBBFBBLLR +BBFBFBBRLL +FBFFFBFRRR +FBBFBFBLLL +FBBFFFFLRR +FFFBBFFLRL +FBBBBFFRLR +FFBBBFFLRL +FBBBBBFLRR +FBBBBBFLLL +BFFFBFBLLL +BFBBBBBRLL +FBBBFBBRRR +FBFFBBFRRL +BFFBFFBRLR +BBFBBFBRRR +BBFFFBFLRL +FFBFFFBRLR +BFBFFFFRLR +FBBBBFFLRR +BFBFFBFRRL +BFFFFBBRLR +BFFBBBFRLL +BBFFFFFLLL +FBBFFFBRRR +BFBFBBFLRR +BFFBFBBLLR +BFFFBBFLRR +FFBBFFFLLR +FBFFFFFRRL +FBBBFFBLRL +FBFBBFBRLL +BFBBFBFLLR +BBBBFBFLLL +FBBFFFBRLR +BFFBFFFLRL +BBBFBFBRLL +FBBBBFBRRR +BBBFBBFLRR +BBFFBFFRRL +FBFBFBFRRR +BFBBBFFRLR +BBBFBBBLLR +FBFBBBBRRR +BFFBBBFLRL +FFBFFFFLLL +FBFFBFBRRL +FBFFFFBLLL +BFFFFFBRRR +BBBFFBFRRR +BFFFFFFRLL +BFBFFBBRRL +FBBBBBFRLR +BBFFBBBRLR +FFBFFBBLLR +BBFFBBBLRL +BBBFFBFLLL +BBBBFFBRRR +BBBFBBFLLL +FBFFFBFRLR +FBBFBBFRLL +FFBBBFFLLL +FFBBBBFLRL +FFBBBBFRRR +FFBBFBBLRL +FBFBBBFLLR +BFFFBBFRRL +BBBFBBFRLL +BFBBFFBRLL +BBFBBBFLLL +FFBBBBBLRR +BFFFFBBRRR +BBFFFFFRLL +FBBBFBBRLR +FFBFBBBLLR +BFFFFFFLLL +FBBFBBBRRR +FBFBFBFLRL +BFBFFFFLLR +BFFFFFBLRR +FBFBFFFRLR +BBBBFBFLLR +BBBBFFBRLR +BFFFFBFRLL +BFBFBBFLLL +FFBBBFFRLL +FFBBBBBRLL +BFBBFBFLRL +FFBBFBBLRR +BFBBBFBRLR +BBFFBFBRRR +BFFFBFFRLR +FFBFBFBRRR +BBFFFBFRLL +BFBBFFBRRR +FBFBBFFLLL +FBBFFBFLLR +BBFBBBFLRR +BFFBFFFRLR +BFFBFFBLLR +BFFBBFBRRL +BBBFFBBLRR +BFFFBFBRRR +FBFFFFBLRL +BBFFFFFLRR +FFBFFBBRLR +BBFBFBFRRR +BFBBFBBLRL +BFFBFFBRRL +FFBFFBBLRR +BFBBFFFRRR +BFBBBFFLLR +BBFBFFBRRR +BBBFBFBLRR +FFBFFFBLRR +BFFBBBBRLR +BFBFFBBLLL +BFBFBBBLLL +BBBFBFBLRL +FBBFBFBRRL +FBBBFFFLLR +BFFFFBFRRL +BFBBFBFLRR +BBFBFFBLLL +BBFBFFFRLL +BBBFFFFLRL +BFFBBBBLLL +FBFBBFFRRL +FBFFBFFRLR +BBBBFFFLRL +BFBFBFBRLR +BFBBBBFLLR +BBFFFFFLRL +BBBBFFFRLL +FFFBBBFRRL +FFBFFBFLRL +BBFBFFBRRL +BFFFFBFRLR +BFBBBBBRRR +BFFFBBBRRL +BBFBFFFLLL +FFBBFBFLRR +BFFBFBBRRR +FFBFFBFRRL +FBFFBFBLRR +FFBFFFBLLR +BFBFBBBLRR +BFFFFFBRLL +FBBFFBBLLL +BFFBBBFRRR +FBFBBBBLRL +BFBBBBFRLR +FBFFBBFRLL +BFBBBFBLRR +FBBFBFFRRR +FBBFFBFRLL +FFBFBBFRLR +BBBFFBBRLL +BBFFBFBLLR +BFBBFBFRRR +FBBFBBBRLL +FBBFFFFLLL +BFFBBFBRLR +FBBFBBBRRL +FBBFFFBLLL +BBFBBFFRLL +BBBBFBFRLL +BFFFFFBRRL +FBBBFBFRLL +BFFBBFFRLL +BBFFFFFRLR +FFBFBFFLRL +BFBBFBBRLL +FBBBFFBRRL +FFBFBBFLLL +BFBFFFFRLL +BBBFBBFLLR +BFBBFFBRLR +BBFFBFFLRR +FFBFBBFRRR +BBBFBFFLLL +FBBFFFFRRL +FFFBBFFLLL +FBBBFBBLRR +BFBFBBBLLR +FBFBBBFLRL +FFBBBFFLLR +BFBFBFFRLL +BFBBFFFRRL +BBBBFBFRLR +BFFBFFFRLL +FBFBBBBRLL +BBFBFFFRLR +FBBFBFFLLR +BFBBFFFLLR +BBFBBFFLLL +BFFBBFBRRR +FBBBFBFLRL +FFBBBFFRLR +BFBBBBBRLR +BBFBBFBLRR +FFBFFFFRRR +BFBFBFFRRL +FFBFBBBLRL +BBBFFFFRLR +FBBBFFBRRR +BFBFBBFLRL +BFBBBFBRRR +BFFBBFFRLR +FFBFFBBRRR +BBFFBFFRLL +BFBFFBBLRR +BBFBBBBLLL +BBFFBBFRLR +BFFBFFFRRL +BFBBFBBRLR +BBBBFFBLRR +FBFBFFFLRR +BFFFFBBLRR +BBBFFFBLRL +BBBFBBBRRL +FFBBFBFRLR +BBFBBFBRLR +BFFFBBBLLL +BFFBBBFRLR +BFBBBBBLLL +FBBFBFFRLR +BFFFFFBRLR +BBFBBFBLLL +BBFFBBBRRL +FFBFBFBLRR +BBFBFBBLRL +FBBBBFBLRL +BBFFFBBRRL +FBBBBFBRLR +FFBBBBBLLL +FBFBBFBLLR +BBFFBBFRRR +BFFFBBBRLL +BFBBFBBRRR +BBFBFBFLRR +FFBFBFBRRL +FFBBBFBLRL +BFFFBBBRRR +BFFBBFFRRR +FBBFFBBRLL +FBBFFBBRLR +FBBFFBFLRR +BBBBFFFRRR +BFFFFFFRLR +FBBBFFFRLR +BBBFBFBLLR +BFFBBFFLRL +FBFBBBFRLL +BFBFBBBLRL +BFBFFFBRRL +FBBBFFFLRR +BBFFBFFRRR +BBFBBBFLRL +FBBFBBFLRL +FBFBFBBLLL +FFBBFBFRLL +FBFFFBFRLL +BBFBFFBLRR +BFBBBFBLLR +FBFBFBFRLR +BFFFFBBLRL +FFBFFFFLRR +FBBFFFBLRL +BFFFBFBRLR +BBBBFFFLLL +BBFBBFBLLR +FFBBFBBLLL +FFBBFFFRRL +FFBFBFBRLR +BFFBBBFLLL +BBBFFFBLLR +BFFBFFBRRR +FFFBBFBRRR +FFFBBFFRRL +BBFBFFFRRL +FBBFBFBRLR +FBFBBFFLRR +BBFFBBBLLR +FFFBBFBRLL +FBBFFBBLRR +FFFBBBFRLL +FFBBFFFRRR +FBFBFBFLRR +FBFFFBBLLR +FBFFFFBRLL +BBFBBBFRRR +BFFBBBBRLL +FBFFFBBRLL +FFBBBBBRRL +FFBBFBBRLR +BFFBFBFLLL +FFBBBFBLLR +BFFBFBBLRL +FBBFFFFRRR +FBBBFBBRRL +FBFFBFFLLR +FFBBFFBRRL +BBFBBBFRLL +FFBFFFBRRL +BBFBFBBRLR +FBFFBBBRLL +BFFFBFFLRL +BFFBBBBLRR +BFBFFFBRLL +FFBFBBFRRL +BBBBFBBLLL +FBBBBFFLLL +FBFBBBBRLR +BFBBBBFLRL +FFFBBFFLRR +BFFBFBFLLR +BBFFFBBLLL +FBFBFFFRRR +FBBFFBFLLL +BFBFFFFLRR +BBBFFFBRRR +FBBBBFFLRL +FFBFBBBRRR +BFFBBFFLLL +FFBBFBBRRR +FBBBFBBRLL +BBBFBFBRRL +FBBBBFBRRL +FFBFBBBRLL +FBFBFBFLLR +BBFFBFBLRR +BFFBFBFRLR +BBBFBBFRRL +BBBFBBFLRL +FBFBFFBLLR +BFBFFBBRRR +FBFFFBFLLR +BBBFBFBRRR +BBBFFFFLLL +BBBFFBFRLL +BFBFFBBRLR +BFFFBBFRRR +BBBFFBBLLR +BFBFFFBLLL +FFFBBFBLRR +FBBFFBBLRL +FBBBBFFRLL +BFBFFBBRLL +BFFBBFBLRL +BBBBFFBRLL +BBFFFFBLLR +FFFBBBFLRL +FFFBBBBLRL +BBFFFFBRLL +FFFBBBFRLR +BBBFFFBRLL +FFBBFFBLLR +FFFBBBBRRR +BBFFBFFLLL +BFBBFBFRLR +BBBFBFFRRR +BFFBFFFLLL +BFBBFFBLLR +BBBFBBBLLL +FBBBBBBLLR +BBBFFFFRLL +FFBBFFBRLL +FBFBBBFRLR +BBFFFBFLRR +BBFBFBBRRR +BFBBFFFLLL +FBBFBBFLLR +FBFBBFBLLL +BFBBBBFLRR +BBBFBFFLLR +BFFBBBBRRL +BFBFFBBLRL +FFBFFBFLLL +FFBBFFFLLL +BFBBBFFLRL +BFFFFBBRRL +FFBBFBFLRL +FBBBBBBLRR +FFBFFBBRRL +BFFBBFBLRR +BBBBFFBRRL +BFFBBFFLLR +BFBBFFBRRL +FFFBBFBRRL +BFBBFFBLRL +FFBBFBBLLR +BFFFBFFLLR +BBFFBFBLRL +FBBBBFBRLL +FBBFBFBLLR +FFBFFFBLRL +FFBBFBBRRL +BBFFFFBRLR +FBFBFFBLLL +BFFBFFFLRR +BFBFBFFLLR +FFBFBFBLRL +BBFFFBBRRR +FBFBFBBLLR +FBFFBFBRLR +FBFFBBBRRR +FBBBFFBLLL +BBFBBBBRLL +FBBBFFFLRL +FFFBBFFRLR +BFBFFFBRRR +BFFBBFBRLL +FBBFFFFRLL diff --git a/day05/lib.go b/day05/lib.go new file mode 100644 index 0000000..61b135b --- /dev/null +++ b/day05/lib.go @@ -0,0 +1,23 @@ +package day05 + +import ( + "log" + "strconv" + "strings" +) + +func getSeatId(instruction string) int { + instruction = strings.ReplaceAll(instruction, "F", "0") + instruction = strings.ReplaceAll(instruction, "B", "1") + + instruction = strings.ReplaceAll(instruction, "L", "0") + instruction = strings.ReplaceAll(instruction, "R", "1") + + seatId, err := strconv.ParseInt(instruction, 2, 32) + + if err != nil { + log.Fatal("Couldn't parse integer: ", err) + } + + return int(seatId) +} diff --git a/day05/parse.go b/day05/parse.go new file mode 100644 index 0000000..7186194 --- /dev/null +++ b/day05/parse.go @@ -0,0 +1,14 @@ +package day05 + +import ( + "git.elis.nu/etu/aoc2020/utils" +) + +var rows []string + +func ParseFile(input string) { + // Parse file + for _, line := range utils.GetLinesFromFile("day05/" + input + ".txt") { + rows = append(rows, line) + } +} diff --git a/day05/solve1.go b/day05/solve1.go new file mode 100644 index 0000000..58cde3e --- /dev/null +++ b/day05/solve1.go @@ -0,0 +1,18 @@ +package day05 + +import ( + "log" + "sort" +) + +func Solve1() { + var seatIds []int + + for _, row := range rows { + seatIds = append(seatIds, getSeatId(row)) + } + + sort.Ints(seatIds) + + log.Printf("2020-12-05.01: Answer: %d\n", seatIds[len(seatIds)-1]) +} diff --git a/day05/solve2.go b/day05/solve2.go new file mode 100644 index 0000000..5d19ff0 --- /dev/null +++ b/day05/solve2.go @@ -0,0 +1,28 @@ +package day05 + +import ( + "log" + "sort" +) + +func Solve2() { + var seatIds []int + var missingSeat int + + for _, row := range rows { + seatIds = append(seatIds, getSeatId(row)) + } + + sort.Ints(seatIds) + + lastId := seatIds[0] - 1 + for _, seatId := range seatIds { + if lastId != seatId-1 { + missingSeat = seatId - 1 + break + } + lastId = seatId + } + + log.Printf("2020-12-05.02: Answer: %d\n", missingSeat) +} diff --git a/main.go b/main.go index 1377731..7c80a76 100644 --- a/main.go +++ b/main.go @@ -8,6 +8,7 @@ import ( "git.elis.nu/etu/aoc2020/day02" "git.elis.nu/etu/aoc2020/day03" "git.elis.nu/etu/aoc2020/day04" + "git.elis.nu/etu/aoc2020/day05" "git.elis.nu/etu/aoc2020/utils" ) @@ -28,5 +29,8 @@ func main() { case "day04": utils.Perf("2020-12-04", day04.ParseFile, day04.Solve1, day04.Solve2) + + case "day05": + utils.Perf("2020-12-05", day05.ParseFile, day05.Solve1, day05.Solve2) } }