# Advent of Code 2020-05 with R

1 minute(s) read

Solving Advent of Code 2020-05 with R.

[Disclaimer] Obviously, this post contains a big spoiler about Advent of Code.

## Instructions

Find the complete instructions at: https://adventofcode.com/2020/day/5.

## R solution

### Part one

``````library(magrittr)
# Read the data
ipt <- read.table("2020-05-aoc.txt", header = FALSE, stringsAsFactors = FALSE)

library(magrittr)
# For chunk2
library(stackoverflow)
library(purrr, warn.conflicts = FALSE)
get_chunks <- function(vec, ext, nms){
# split the vec in two, set the name, and extract the correct chunk
chunk2(vec, 2) %>%
setNames(nms) %>%
pluck(ext)
}

# Prefilling the functions with the correct nms
get_bf<- partial(get_chunks, nms = c("F", "B"))
get_lr <- partial(get_chunks, nms = c("L", "R"))

get_all <- function(entry){
entry <- strsplit(entry, "")[]

# Doing the get_bf on the 7 first letters
row <- get_bf(0:127, entry) %>%
get_bf(entry) %>%
get_bf(entry) %>%
get_bf(entry) %>%
get_bf(entry) %>%
get_bf(entry) %>%
get_bf(entry)

# Doing the get_lr on the 3 last letters
column <- get_lr(0:7, entry) %>%
get_lr(entry) %>%
get_lr(entry)

# Computing the seat id
seatid <- (row * 8) + column

return(seatid)
}

# Getting the max
map_dbl(ipt\$V1, get_all) %>%
max()
``````
``````##  864
``````

### Part two

``````library(dplyr, warn.conflicts = FALSE)
# Extracting all the ids
map_dbl(ipt\$V1, get_all) %>%
# Sorting them in order and turning into a df
sort() %>%
data.frame(
x = .
) %>%
# Computing the diff between all ids
mutate(
y = lag(x),
diff = x - y
) %>%
# My passport ID will be the one between the IDS
# of diff != 1
filter(
diff != 1
)
``````
``````##     x   y diff
## 1 740 738    2
``````

Categories:

Updated: