Advent of Code - Day 3: Rucksack Reorganization

Third day of the advent of code using R

advent of code
Published

December 3, 2022

Part 1

Input

input <- readLines("input.txt")

head(input, 10)
 [1] "zBBtHnnHtwwHplmlRlzPLCpp"                        
 [2] "vvhJccJFGFcNsdNNJbhJsJQplQMRLQMlfdfTPCLfQQCT"    
 [3] "GPhjcjhZDjWtnSVH"                                
 [4] "BNhHVhrGNVTbDHdDJdJRPJdSQQSJwPjR"                
 [5] "lvtsfbsqzwSnJcvjSm"                              
 [6] "MftttFLftZMLgtgMbltMqZzbDNrTpVGhNWrDTrpTGNpZGZhD"
 [7] "VSSHcTgTtTdtllZlzmmbljTn"                        
 [8] "RqMqsFfQLLFLQFMMfRLPZLvPpCfWrbpmCbjCnfjlWmnrmmnm"
 [9] "hqRDqPDRsqNHwtHSNBZtJd"                          
[10] "tNFDpDFrtdjfmjjjFmFFdScpZhZScTJgpHccHhMJgS"      

Libraries

Code

find_common <- function(rucksack){
  len <- nchar(rucksack)
  chars <- unlist(strsplit(rucksack, ""))
  first_part <- chars[1:(len/2)]
  second_part <- chars[(len/2)+1:len]
  return(intersect(first_part, second_part))
}

get_priority <- function(item){
  if(item %in% LETTERS){
    priority <- 26 + match(item, LETTERS)
  } else {
    priority <- match(item, letters)
  }
  return(priority)
}
sum_priority <- 0

for (i in input) {
  common_item <- find_common(i)
  priority <- get_priority(common_item)
  sum_priority <- sum_priority + priority
}

Result

Total sum of all priorities is 7597.

Part 2

find_identifier <- function(rucksacks) {
  
  rucksacks_content <- list(unlist(strsplit(rucksacks[[1]], "")),
                            unlist(strsplit(rucksacks[[2]], "")),
                            unlist(strsplit(rucksacks[[3]], "")))
  identifier <- purrr::reduce(rucksacks_content, intersect)
  
  
  
  return(identifier)
  
}

total_priority <- 0

for (i in seq(1,length(input), by = 3)) {
  rucksacks <- list(input[i],
                    input[i+1],
                    input[i+2])
  
  identifier <- find_identifier(rucksacks)
  priority <- get_priority(identifier)
  total_priority <- total_priority + priority
}

total_priority
[1] 2607

Result

Total sum of all priorities is 2607.