3 minute read

Beberapa jam yang lalu, saya mendapatkan informasi di komunitas R Indo terkait satu event menarik terkait programming puzzle bernama Advent of Code 2022.

Setelah saya buka dan registrasi, ternyata isinya sangat menarik dan menantang. Tidak rumit, tapi lumayan bisa mengasah beberapa skill set yang diperlukan dalam bidang data atau programming. Kita bisa menyelesaikan semua puzzle yang ada dengan cara kita sendiri.

Puzzle akan dibuka setiap harinya sejak 1 Desember hingga nanti tanggal 25 Desember.

Saya akan coba keep up dengan mengerjakan semuanya dan meng-_update_-nya di blog ini. Semoga saja sempat yah. hehe.


Day 1

Part One

Kita diberikan satu dataset sederhana dan disuruh mencari elf dengan kalori terbesar.

Berikut adalah R script yang saya gunakan untuk menjawab:

# kita mulai dari hati yang suci
rm(list=ls())

# libraries yang digunakan
library(dplyr)

# input data
df = readLines("input.txt")

# buat dalam dataframe
df = data.frame(id = NA,
                calories = as.numeric(df))
df$id[1] = 1

# kita akan selesaikan dengan iterasi saja ya
# sepertinya simpel
iter_max = nrow(df)
for(i in 2:iter_max){
  if(!is.na(df$calories[i])){df$id[i] = df$id[i-1]}
  else if(is.na(df$calories[i])){df$id[i] = df$id[i-1] + 1}
}

# sekarang kita akan cari elf mana yang paling banyak memiliki kalori
df %>%
  filter(!is.na(calories)) %>%
  group_by(id) %>%
  summarise(kalori = sum(calories)) %>%
  ungroup() %>%
  filter(kalori == max(kalori))

Saya menggunakan iterasi sederhana dalam dataframe untuk memberikan label setiap elf.

Berikut adalah video yang saat saya menyelesaikan puzzle-nya:

Alt text

Part Two

Berikut adalah R script untuk bagian kedua dari puzzle ini:

# sekarang kita akan cari top 3 elves
top_3 = 
  df %>%
  filter(!is.na(calories)) %>%
  group_by(id) %>%
  summarise(kalori = sum(calories)) %>%
  ungroup() %>%
  arrange(desc(kalori)) %>%
  head(3)

sum(top_3$kalori)