diff --git a/day5/day5.go b/day5/day5.go index eef824c..b7c8592 100644 --- a/day5/day5.go +++ b/day5/day5.go @@ -1,22 +1,57 @@ package main import ( + "AoC2020/helper" "fmt" "os" + "sort" ) func main() { args := os.Args[1:] - input := args[0] - fmt.Println(input) - row, column := getRow(input) - fmt.Printf("|%d|%d|\n", row, column) + input, err := helper.GetInput(args[0]) + if err != nil { + fmt.Println(err) + } + ids := getIds(input) + fmt.Println(day5(ids)) + fmt.Println(day5Part2(ids)) } -func getRow(boardingPass string) (int, int) { +func day5(ids []int) int { + var max int + for _, id := range ids { + if id > max { + max = id + } + } + return max +} + +func day5Part2(ids []int) int { + sort.Ints(ids) + for i := 1; i < len(ids) -1; i++ { + id := ids[i] + if id - ids[i-1] > 1 { + return id - 1 + } + } + return 0 +} + +func getIds(boardingPasses []string) []int { + var ids []int + for _, boardingPass := range boardingPasses { + row, column := getSeat(boardingPass) + ids = append(ids, getId(row, column)) + } + return ids +} + +func getSeat(boardingPass string) (int, int) { rowP1 := 0 rowP2 := 127 - for _,char := range boardingPass[:7] { + for _, char := range boardingPass[:7] { if char == 'F' { rowP2 = rowP2 - (rowP2-rowP1)/2 - 1 } @@ -26,7 +61,7 @@ func getRow(boardingPass string) (int, int) { } columnP1 := 0 columnP2 := 7 - for _,char := range boardingPass[7:] { + for _, char := range boardingPass[7:] { if char == 'L' { columnP2 = columnP2 - (columnP2-columnP1)/2 - 1 } @@ -35,4 +70,8 @@ func getRow(boardingPass string) (int, int) { } } return rowP1, columnP1 -} \ No newline at end of file +} + +func getId(row int, column int) int { + return row*8 + column +} diff --git a/day5/day5Input.txt b/day5/day5Input.txt new file mode 100644 index 0000000..3038c40 --- /dev/null +++ b/day5/day5Input.txt @@ -0,0 +1,798 @@ +BBFFFFBRLL +BFBBBBFLLL +FBBBFBFLLR +BFBBBFBLRR +FBBFFBFLRR +FFBFFBFRRR +FBFBBBBLLL +BFFBFFFRLR +BFFBFFFRLL +BFBBFBFRRL +FBFFFFBLRR +BBFFBFBLLR +BBFBFFBRLR +BFBFBFFRLR +FBFFBFBRRL +BFFFFBFRLR +FFBBBBBRLR +BFFFBFBLLR +FBBBBBBRLL +FBBFBFBRRL +FBFBFBFLRL +FFBFBBFRLL +BFBFFBFRRL +FBBBBFBLLR +FFBBFBFLRR +BFBFBBFRRL +FBFFFBBLLR +FBBFFBFRRR +FFFBFBBLRL +FBBBBFBRRL +BFBFBBFLRL +BBFFBFBLRL +BBFFFFFLRL +BBFBBFFRLR +FFBFBBBRRL +FBFFFFFRLR +FFFBBFFLRR +BFFFBFFLRL +BFBFFFBRLR +BBFBFBFLRR +FBBBBFFRRR +FBFFFBFRLL +FBFFFFFLRL +BFFFFFBLRR +FFFBBBFLRL +FBFBBBFRLL +FFBFBBBLRR +FBFFFFFRLL +FFBFFFFLRR +BBFBFBBRRL +FFFBFBBLRR +BFFBFBBRRR +FFBBFFBLRL +BFBBBFFRRL +FFBBFFFRLL +FBFFBFBLRR +FBBFBBBRLL +FBBFFFBRLR +FBFFBFFLRL +FFFBFBBRRR +BBFFFBBRLL +BFBFBBBRRR +BBFFBFFLRR +FFBFFBBLLL +FFFBBBFLLL +FBBFBBBRRL +BBFBFBFLLR +BFBFFFFRLL +BFFBBFFRLR +BFBBFFFRLR +BBFFFBBRRL +BFBFFBFLRR +FBBFFFBRRR +FFBFFFBLLR +BFFFFBBRLR +BBFFBBFRRR +BFBBBFBLLL +FFBBBFBLRR +FFBFFBFLRL +FFFBBBBRLR +BFBFFFBRRR +BBFFBFFRRL +BFFBBFFLRR +FFFBFBBLLL +FBBBBBFLLL +BFBFFBFLLR +BBFBFBBRRR +FBFBBFBRLR +FBBFFBFRLL +BFBBFFBLRL +BFBBFFFRRL +FBFFBBFRLR +FBBFBBBLRL +FBFFBFFLLR +FFFBBFBRLR +FBBFFBBLLR +FFFBBBFRRL +BBFBBFFRRL +FFBBBFFRLR +BFFFFBBRRR +FBBBBBFRLR +BBFBFFBRRR +BFFBFBFRLL +BFBFFFFLRL +FBBBFFBRRR +FBBFBBFLLL +BFFFFBFLLR +BBFFFFBLLR +FFBFBFFLRR +FBBBFBBRRL +BFFFBBFLRL +FBFFFBFLLL +BBFFFFFRLR +FFFBBBFRLL +FFBBBFBRLL +BFFBFFBRLR +BBFFBBFLRR +FBBBBFBLRR +BFFBFFBLRL +FFBFFFFRLR +FBBBBBBRRL +FBBFFFBLLR +FBFFFFFLLR +FBBFBBFRLL +BFFBFFFRRL +FBBFFBFLLR +FFBBFFBLLR +FBBBFBBRLR +BFFBBBFLLR +FFBBFBFRRR +FFFBFBBRLL +FBFFFBBRRL +BFFFBBBLRL +BBFFBBBLLL +FBFBBFBLRL +BBFFFBBLRL +FBBBBFBLRL +BBFFBBFLLL +FBFBBFFRRR +BFBBFBFLRL +FBFFBBFLRL +BFBFBFBLRL +BFBBFBBLRL +FFFBBFBLLR +FFFBFBFRRL +FBBBFBFRRR +FBBBFFBLLR +BFFFBBFLRR +BFFFBFFLRR +BBFFFBFRRR +FFFBBFBLRR +BFFFFFFRRL +FBBFFFFLLR +BBFBFFFRRR +FBBBFFFRRR +BFBFFFFRLR +BFBBFFFRLL +FFBBBFBLLR +BFFBBBFLLL +FBFFFBFRRL +FFBFFFFRRR +FFBBBBFRRL +FFBFFFBLRR +FBBBBFBRRR +BBFFBFFLLL +FBBBBFFLLR +FBFFBBFLLL +BFBBBFBRLL +FBBFFFFRLL +FBBFBFBRLR +BFFBBFBLRR +FFBFBFBRLL +BBFFBBFRLL +FFBFBBFLLL +BFFBBFBLLL +FBFFFFFRRL +FBFFBFBLRL +FFBFFBFRLL +BFBBBBBRRR +FBFFBFBLLR +FFBFFFBLRL +FFBFFBBLRR +BFBFFBBRRL +FFBFBFBRLR +FFBFBFFLRL +BBFBBFFLRL +FFBFFBFLLR +FFFBBBBLRR +BFFBFBBRRL +FFBBFBBRLR +BFFBFBFLLR +FFBBFBBRRR +BBFFBBBRRR +BFFFBFFLLR +BFBBBFFRRR +BFBBFBBLLL +FFBBFBBLLL +FBFBFBBLLR +FFBBBFFLRR +FFBFFBFLLL +BFFBFFBLLL +FBFBBBFLLL +BBFBFBBRLL +FBFFBFBRRR +BBFBFFFRLL +BBFBFFFRRL +BFFFFBBLRL +BFBFFFFRRL +FFBFFBFRRL +FBBFBBFLRR +BFFFBBBRRL +FFBFFFBLLL +FFBBBBBLLR +BFBFBFBLRR +FFBBFFFLRL +FBBBBBBRRR +FBFBFFBLLL +FBFFBBBRRL +BFFBFFFRRR +BFBBFFBRRR +BBFBBFFLRR +BBFBFFBRRL +BBFFBBBLLR +FBFFFFBRLR +BBFFFFFRRR +BFBFFBFRLL +FBBBFBBRLL +FFBBFBFRLR +BFBFBFBRLR +FFBBBFFLLR +FBFFFFFLRR +FBFFBFFRLR +BFBBBBFRLR +FBFBBFBLRR +FBBBBFBRLR +BFBFFBBRLL +FFBBFBFLLL +FFBFBFBLLL +FFBFBFBRRR +BFBFBFBLLR +BFBBBBBRRL +FBBBBBFRRR +BBFBFFBLRL +FBBBBFFRLR +BBFFFFFLLR +FBBFFBBLRR +FBFFFFBRRR +BFFFBBFRLL +FBFBFFBLRR +BFBBFBBRRL +BFFFFBFRRL +FFBFFFBRRR +FFBFBBBRLL +BBFFFFFRRL +BFBBFBBLRR +FBBFBFFRRR +BFFBFFBLRR +BFFFBBFLLL +BFBFFFBRLL +BBFBBFBLLL +BFBFBFFRLL +FFFBBBFLLR +FBBBFFFRLL +BFBFFBFRRR +FFBBFFFRRR +BBFFFBBRRR +BFFFFBFLRR +BFFFFFFRRR +BBFFBFBLRR +FBBBBBBRLR +BBFFBFFLLR +BFFBBBBLLR +FBBBBFFLRR +FFBBBFFRRL +FBFBBFFLLL +BBFFBBBRLL +FBFFBFBLLL +BFFBFBBRLR +FBBFFFBLRL +FFBFBFFLLL +FBBBFBFLRL +FFFBBFFLRL +FBBBBFFRRL +BFBFBBBRRL +BFFFBBBLLR +FBFBFBBLRL +BFBBFFBLRR +BBFBFFFLRR +FBFFBBBLRR +FFBFFBBRLL +BFBFFFFLRR +BBFBFFBRLL +FBBBFBFRLL +BFBBBFFLRL +BFFBBBBRRL +BFFBBBBLRR +FFBBFBFRLL +FBFBFFFLLL +BFFFFFFLRL +BFBBBFBRRL +FFFBBBBRRL +FBFFFFBLRL +FBBBBBFRLL +FFBBFFFLRR +FBBFBBFLLR +BFBFBBFRLL +BFBFFFBLLR +BFBFBBBLRL +FFBFFFBRLR +BFFBBBFRRL +BFBBBBBLRR +FBFFFBBRLL +FBFBFBBRRR +FFFBFBBRLR +BFBFBBFLRR +FBFBFBBLLL +FFBBFFBRLL +FBBFBFBRRR +BFFFFFBRRL +FBBBFBBLLL +BBFBFFBLLL +FFBFBFBLLR +FFBBBFBRRL +FBFBFBFLLL +BFBFBBFRLR +FBBFBFFRLR +FFBFFBBRRR +BFFBFFBLLR +FBFFFBFLRL +FBFFFFFRRR +FFBBFBBRLL +FBFFBFFRLL +BBFFFBFLRR +BFBBBFFRLL +FBFBBBBLRL +FFFBBBBLLL +BBFFFFBRRR +FBBBBBBLLL +FFBFBFBLRL +BFFBFFBRRL +FFBBFBBLRR +BFBFFBFLLL +FBBBBFFRLL +FFFBBFBRLL +BFFFBFBLLL +BBFBBFBRLL +FFBFFBBLLR +BBFFFFBLRL +BBFBBBFLLR +BFBBFFBRLR +BFFFFBFLLL +BBFFBBFLLR +BBFBFFFLLL +FBBBFFFLLL +BFBBFBBRRR +FFBBBBFRRR +BBFBBFBRLR +BFBBFFFLLL +FFBFFFFLLR +FBFBFFBLLR +FBBBFFFLLR +BFBBBBFLRR +FBBFBFFLRR +FBFBBFBRRL +BFFBFFFLLL +FBBFBBFRRR +FBFFBBBRLL +FBFBBBBRRL +FFFBBBFRRR +FBFBFFBRRL +FFBBFBFLLR +BFBFBBBLLL +FFBFFBFLRR +BFBFBBFRRR +FBBBBBBLLR +BFFBFBFRRR +FBFFFBFRRR +BBFFFBFLLL +FBBFFBBRRR +BFBFBFBLLL +BBFFBBBLRR +FFBFFFFRRL +FFBFBBFLLR +FFFBBBFRLR +FFFBBFBLLL +FBFBBFFLLR +FBFBFBFRRR +BFBBFFFRRR +BFBFFBBRRR +FBFBBFFRLR +FFBFBBFRLR +BFFBBFFRRR +BFBFBBFLLL +FFFBBFBRRR +BFFBBFFRLL +FFBFFFFLLL +FFBBBFFRLL +BBFBBFBRRL +BBFBFFBLRR +FFBFFBBRRL +FBBFBBFRRL +BBFFFFBLLL +BFBBFFBRLL +FFBFBFFRLL +BFBBFFFLLR +FBBFFBBRLR +BFBFFBFLRL +BFBBFBBRLL +FFBBBFFRRR +FBFBBFFLRL +BFBBFBFRLR +FFBBFFBRRL +FBFFBBFLLR +FBFBBBFLLR +BFFFBBFRRL +FFFBBBBRRR +BFFFBBBRRR +FBBFBFFRRL +BBFFFFBRRL +BBFFFBBLLR +BFBBFBFRRR +BFFFFBBRRL +FBBFBBFLRL +FBBFBBBRLR +FBFBFFFLRL +BFFBFBFRRL +FBFBBBFLRL +BFBBBBBLRL +FFBFFFBRLL +BFFBBFBLRL +FBFBFBFRLR +BFFBBFFLLL +BFBBBBBLLL +FFBFBBFLRR +BBFBFBFRRR +FFFBBFFRRR +BFFFBFFRRL +BBFBFFFRLR +BBFBFFFLLR +BFFFFFFLRR +FBBFBBFRLR +FFBBBFFLRL +FBFBFFFRLR +FFBFBFFLLR +BFBFFBBLRR +BFFBBBFRLL +FBBFFBBLRL +BFBBFFBLLR +FBFFBFFRRR +BFFBBBFRLR +BFBFBBBLLR +BFFFFBBLLR +BFFBFBFLLL +BFBBFFFLRR +BFFFFFFRLR +BBFFBFFLRL +BFBFBFFLLR +BBFFFFFLRR +FFBFBBFLRL +FBFBFFBRRR +FFBBBBFRLR +BBFBBBFLLL +BFFFFBBRLL +FBFBBBFRRR +BFFBFBFRLR +FFFBBFFLLR +FBBFBFFLLL +FFFBFBBRRL +BFBBBBFLRL +FFBFFBFRLR +FBFFBFBRLL +FBBBFBFLRR +BBFFBBFRLR +FBBBBBFLRR +FBFFFFBRLL +BFFBFFFLRL +BFBFFFFLLL +BBFFBFBRLR +BFBBBFBLLR +FBBFFBBRLL +FBFBFBFRLL +BBFBFBBLRL +BFFBFBBLRL +FFBBBFBLRL +FFBBFBBLLR +BFFBFBFLRR +FBBBFBFRRL +BFFBBBFLRL +BFBBFBBLLR +BFBFFFBLRR +FBFFBBBLRL +FBFFBFFLLL +BBFFBFFRRR +BFFBFBBRLL +BFFFBFFRRR +BFFBBBBLRL +FBBFFBFRLR +FBFFBFFRRL +FBFFFBBRRR +BBFFFFBLRR +FBBBFFFLRL +FFBBBBFLRL +BFFFBFFLLL +BFBBBFFRLR +FFBFBBFRRL +FBFBBBFLRR +FFFBBBFLRR +BFFFBFBRLR +FBBBFBBLRR +FFBBBFFLLL +FFFBFBFRLR +FBBFFFBRLL +FBBFBBBRRR +BFBFFFFRRR +BFBBBFBLRL +BBFFFBBLRR +BFBFFBBLLR +BFBBFBFLLR +BBFFBBBRRL +FBBFFFFLLL +BBFBFFBLLR +BFBBBBBLLR +FFBFFBBRLR +FFBBBFBRLR +FBFBBBBLRR +FBBFBFBLRR +BBFFBBFRRL +BBFFBFFRLL +FBBBFFBLRR +BFFFBFBRRR +BFFBFFFLRR +FFBBFBBRRL +FBFBBBBRRR +BBFBBFFLLL +FBFFBBBLLL +FBBFFFBLRR +BFBBFFBLLL +FBFFFFBLLL +BFBFBBBLRR +BFFFFFBLLR +BFFBBFBLLR +FBFFBFFLRR +FBBFBBBLLR +FFBBBBBRLL +BFFFBBFLLR +FFBFBBBLRL +FBFBBBFRRL +BFFFFBFLRL +FBBFFBFRRL +FFFBBFBRRL +FFBBBBBRRL +BBFFFBFLRL +FBBFFFFLRR +BFBBBBFRLL +BFFBFFBRRR +FFBBFFFLLL +BFFBBBBRLR +BFBBFFFLRL +BFBFFBBLRL +BBFFFBFRLR +FBFBFBFLLR +BBFFFBBRLR +FBBBFFBLLL +FBBBFFFRRL +BFFFFFFRLL +FFBFBFFRRR +BFFFBFBRLL +FBBBFFFRLR +BFBBBFFLLL +FBBFBFBLLL +FFBBFFFLLR +BFFFBBFRLR +BBFFFBFRLL +FBBBBBBLRL +BFBFBFBRLL +FBBBBBFRRL +BBFBFFFLRL +BFBBBBFRRR +BFBFFFBLRL +FFBFBFBRRL +BFBFBFBRRR +FFBFFFFRLL +BBFBBFFLLR +FFBFBBBLLR +BBFBBBFLRL +FBFBBBBRLL +FFBBBBFLRR +FFBFFBBLRL +BBFFBBBRLR +BFBBFBFLLL +FBFBFFBLRL +BFFFFFBLLL +FBFFBFBRLR +FBBBBFBLLL +FBBFFBFLRL +BFFFBBBLLL +FBBFBFFLRL +FFFBBFFLLL +BFBFBFFRRL +BFFFFFBRLL +BFFBFBFLRL +BFFBBFBRRL +BFBBFFBRRL +FFFBBBBLRL +FFBFBBBRRR +FBFBBFBRRR +FFBBBBFLLL +BBFFBFBRLL +FBFFBBFRLL +FBFBFFFLLR +BFFFFBFRRR +FFBBBFBLLL +FBBBFFBLRL +BFFFBBBLRR +FFFBFBFRRR +FBFFFBBRLR +FBFBFFFLRR +FBBBFBBLRL +FBBBFBBRRR +BBFBFBBLRR +BFFBBBFLRR +BFFFFFFLLR +BBFBFBFRLL +BFFBFBBLLL +FFBBBBFLLR +BFFFFBBLRR +FBFBFFFRLL +BFBFFFBRRL +BBFBFBBLLR +FFFBFBBLLR +FBFFBBBRRR +FBBFBFFLLR +FBFBFBBRLL +BFFBBBBRRR +BFFBFFFLLR +BFBFBFBRRL +BFBBBBFLLR +FBBFBFBLLR +BFFFFFBRLR +FBFFFBBLLL +BBFFFFFLLL +FFBBBBBLRR +FFBBFBBLRL +BBFFFFFRLL +FBFBBFFRRL +FFBFBBBLLL +BFFFBBBRLR +FBBBFBFRLR +FBBFFFFLRL +FFBBFFBRRR +FBFBFBFLRR +BFBFBBBRLL +BFBFBFFLLL +FBFFBBBLLR +BFFFBFBLRL +FBBFFFFRRR +FBBBBBFLLR +BFFFFBBLLL +FBBFBFBLRL +BFFFBBFRRR +BBFFBFBRRR +BBFFBFBRRL +FFFBBBBRLL +BBFFBBBLRL +BFBBFBBRLR +BBFBBFBLLR +BFBBFBFLRR +FBFFFFBRRL +BFFBFBBLRR +BBFFBFBLLL +FBBBFBBLLR +FBFBBFBLLL +BBFBFBFRLR +BFFBBBBLLL +BFFBFFBRLL +BBFBBFBLRR +FBFFBBFLRR +BBFFBFFRLR +BFFFBFFRLR +FBFBBFFRLL +BFFBBBFRRR +FBBBFBFLLL +BBFBBBFLRR +FBBFFBFLLL +BBFBBFBLRL +FBFFFBBLRL +FBFBBFBRLL +BFBBBBFRRL +BFFFBFFRLL +BFBFBBBRLR +FFBFFFFLRL +FFBFFFBRRL +FBFFBBFRRR +BBFFFFBRLR +BFFFBFBLRR +BBFFBBFLRL +FFBBFFFRRL +FBFBFBBRLR +FBBFBFFRLL +FBBBFFBRLL +FBBFBBBLLL +FBBFFBBRRL +BFBFBBFLLR +FFBBFFBLRR +FFBBBBBLLL +BBFFFBFLLR +FBFBBBBRLR +BFBFBFFLRL +FFBBBBBRRR +BFBFFBFRLR +FBBBBFBRLL +BFBBBBBRLL +BFBBBBBRLR +FBBBBFFLLL +FBBFFFBLLL +BBFBFBFLLL +BFFFFFBLRL +FBBFBFBRLL +BBFBFBBRLR +BFFBFBBLLR +FFBBFBFLRL +FBFBBBFRLR +FBBBFFBRLR +FBFFFBFLRR +BFBFBFFLRR +BFFFFFBRRR +BFFBBFBRLL +FBFBFBFRRL +BBFBBFFRRR +FBBFBBBLRR +FBFFBBBRLR +BBFBFBBLLL +FFBFBBFRRR +FBFBBFBLLR +BFBFBFFRRR +BBFBBFBRRR +FFBFBBBRLR +FBFBFBBRRL +BFBFFFBLLL +FBFBFFBRLL +FBFFFBFRLR +FBFFFBBLRR +FBBFFFFRLR +BFBBFBFRLL +FBFBFBBLRR +FFBBBFBRRR +FBBFFFFRRL +FBFBBFFLRR +FBBBFFBRRL +FBFFFBFLLR +FFBFBFFRLR +FBBFFBBLLL +FFFBBFFRLR +BFFFFFFLLL +FFFBBBBLLR +FFBFBFFRRL +BBFBBFFRLL +FFFBBFFRLL +BBFFFBFRRL +FFBBFFBLLL +FBFFBBFRRL +BFBBBFBRLR +BFBFFBBRLR +FBFBFFFRRR +BFBBBFFLLR +FBFBFFFRRL +BFFBBFFLLR +FBFBBBBLLR +FFBBFFBRLR +FBFFFFFLLL +BBFBFBFRRL +FBBBBFFLRL +BFBBBFBRRR +BFFBBFFLRL +BFFBBFFRRL +BBFBFBFLRL +FBBFFFBRRL +BFFFBFBRRL +FBFFFFBLLR +FFBBFBFRRL +BFFBBBBRLL +BFBFFFFLLR +FFBBFFFRLR +BFBFFBBLLL +BFFBBFBRRR +BFFFBBBRLL +FFFBBFBLRL +FFBFBFBLRR +FFFBBFFRRL +FFBBBBBLRL +BFBBBFFLRR +FBBBBBFLRL +FBBBFFFLRR +BFFBBFBRLR +BBFFFBBLLL +FBBBBBBLRR +FBFBFFBRLR +FFBBBBFRLL \ No newline at end of file diff --git a/day5/go_build_day5_go.exe b/day5/go_build_day5_go.exe index 8d1998d..9a09062 100644 Binary files a/day5/go_build_day5_go.exe and b/day5/go_build_day5_go.exe differ