|
#lang iracket/lang #:require racket
(require "../advent.rkt")
|
Rock, Paper, Scissors
For example, suppose you were given the following strategy guide:
A Y
B X
C Z
We’re told that A=Rock, B=Paper and C=Scissors, and it’s proposed that X=Rock, Y=Paper and Z=Scissors.
We’re also told the score is computed as follows: add the score of the shape (1 for Rock, 2 for Paper and 3 for Scissors) to the outcome (0 if we lost, 3 if a draw and 6 if we won).
What would your total score be if everything goes exactly according to your strategy guide?
Each day will have some preliminary setup code:
|
#lang iracket/lang #:require racket
(require "../advent.rkt")
(require threading)
|
We’re given the following sample data:
1000
2000
3000
4000
5000
6000
7000
8000
9000
10000
This list represents the Calories of the food carried by five Elves:
- The first Elf is carrying food with 1000, 2000, and 3000 Calories, a total of 6000 Calories.
- The second Elf is carrying one food item with 4000 Calories.
- The third Elf is carrying food with 5000 and 6000 Calories, a total of 11000 Calories.
- The fourth Elf is carrying food with 7000, 8000, and 9000 Calories, a total of 24000 Calories.
- The fifth Elf is carrying one food item with 10000 Calories.
Find the Elf carrying the most Calories. How many total Calories is that Elf carrying?
I recently started experimenting with the Racket notebook package, IRacket. Notebooks are handy for experimentation and visualization, so I wanted to be able to display a plot. I discovered that (require plot)
did not work, but if I changed that slightly to (require plot/pict)
, I was able to display a plot in the notebook.
Table of Contents
Now that I have a couple years experience with Advent of Code, I’d like to get a little more organized prior to the contest. I’m hoping to create a blog post for most of the days, and I think I’ll make use of Ryan Culpepper’s IRacket package this year. IRacket allows creating Jupyter notebooks, and by exporting them as markdown files, they can be copy/pasted directly into a Frog static site generator file for a blog post. I thought about using only a notebook this year, but I think I would miss having a clutter-free version of just the code.
Advent of Code 2022 will start on December 1. This will be my third year, after participating in 2021 and 2020.
I hope to have time to code all of the solutions in Racket, my favorite programming language, and I should be able to translate some of them into Python and/or Javascript as a learning exercise.
My primary goal is to create an elegant Racket solution for each day’s puzzle that is clear, commented and tested. For some of the days, I may also create variants that emphasize performance or conciseness.
One of Haskell’s features I really liked was list comprehensions. I created a comparison between Haskell and Julia list comprehensions almost exactly a year ago. It appears that Python list comprehensions are as nice as either Haskell’s or Julia’s! Although, having to use Python’s lambda
form to simulate the more concise Haskell/Julia function definition is less than ideal.
Advent of Code 2021 is about to start on December 1.
I recently converted a number of websites over to using Let’s Encrypt for SSL certificates, and the process was much easier than I expected.
I’ve come across the Fourier Transform a number of times, but I don’t think I ever developed a good intuition for what was going on. The following 3Blue1Brown video does a great job of providing that intuition.
One of Haskell’s features that I really liked was list comprehensions, so I was very pleased to discover how nice Julia’s comprehensions are!