Advent of Code 202009 with R
[This article was first published on Colin Fay, and kindly contributed to Rbloggers]. (You can report issue about the content on this page here)
Want to share your content on Rbloggers? click here if you have a blog, or here if you don't.
Want to share your content on Rbloggers? click here if you have a blog, or here if you don't.
Solving Advent of Code 202009 with R & Neo4j.
[Disclaimer] Obviously, this post contains a big spoiler about Advent of Code.
Instructions
We have a XMAS
code, which:

Start with 25 numbers

Any following number should be the sum of one of the possible pairs from the previous 25

In step 2, find the consecutive set of number that sums to the result of part 1, and add its min and max
Find the complete instructions at: https://adventofcode.com/2020/day/9.
R solution
Part one
# Reading the data input < read.delim( sep = " ", "202009aoc.txt", header = FALSE, stringsAsFactors = FALSE ) for (i in 26:length(input$V1)){ # The 25 starting numbers to_get < (i  25):(i1) # The 26th number should be between the # sum of the two lowest number and the sum # of the two highest lower_bond < sum( head( sort(input$V1[to_get]), 2 ) ) higher_bond < sum( tail( sort( input$V1[to_get] ), 2 ) ) if ( !dplyr:::between(input$V1[i], lower_bond, higher_bond) ){ output1 << input$V1[i] print(output1) break } } ## [1] 530627549
Part Two
for (i in 1:length(input$V1)){ # We will try to find any sequence in 1:n, then 2:n, # then 3:n, etc, that sums to output1 selection < input$V1[i:length(input$V1)] c_s < cumsum(selection) == output1 if ( any(c_s) ){ bounds < selection[1:which(c_s)] print( sum( min(bounds), max(bounds) ) ) break } } ## [1] 77730285
To leave a comment for the author, please follow the link and comment on their blog: Colin Fay.
Rbloggers.com offers daily email updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/datascience job.
Want to share your content on Rbloggers? click here if you have a blog, or here if you don't.