Advent of Code 2021 solutions using Go 1.18 Generics

advent-of-code-2021

Here are my solutions for Advent of Code 2021.

This year, I chose to write my solutions using Go 1.18 with generics (by building the Go compiler from the latest master branch):

$ go version
go version devel go1.18-deb988a286 Fri Dec 3 18:09:19 2021 +0000 linux/amd64

Benchmarks

Benchmarks were run on an Intel i7 laptop running Linux Mint 19.3.

Puzzle Benchmark Iters ns/op
day01/part1 BenchmarkInput-4 8048 144071 ns/op
day01/part2 BenchmarkInput-4 6345 160099 ns/op
------------- -------------------- --------- ------------------
day02/part1 BenchmarkInput-4 7518 142567 ns/op
day02/part2 BenchmarkInput-4 7508 140629 ns/op
------------- -------------------- --------- ------------------
day03/part1 BenchmarkInput-4 24511 43900 ns/op
day03/part2 BenchmarkInput-4 5559 191525 ns/op
------------- -------------------- --------- ------------------
day04/part1 BenchmarkInput-4 270 3782730 ns/op
day04/part2 BenchmarkInput-4 310 3772155 ns/op
------------- -------------------- --------- ------------------
day05/part1 BenchmarkInput-4 26 44208473 ns/op
day05/part2 BenchmarkInput-4 13 88025595 ns/op
------------- -------------------- --------- ------------------
day06/part1 BenchmarkInput-4 14320 77127 ns/op
day06/part2 BenchmarkInput-4 5192 212946 ns/op
------------- -------------------- --------- ------------------
day07/part1 BenchmarkInput-4 340 3504080 ns/op
day07/part2 BenchmarkInput-4 288 4131633 ns/op
------------- -------------------- --------- ------------------
day08/part1 BenchmarkInput-4 11214 107337 ns/op
day08/part2 BenchmarkInput-4 630 1870067 ns/op
------------- -------------------- --------- ------------------
day09/part1 BenchmarkInput-4 595 2000520 ns/op
day09/part2 BenchmarkInput-4 297 4048426 ns/op
------------- -------------------- --------- ------------------
day10/part1 BenchmarkInput-4 8643 119493 ns/op
day10/part2 BenchmarkInput-4 8388 127750 ns/op
------------- -------------------- --------- ------------------
day11/part1 BenchmarkInput-4 874 1359490 ns/op
day11/part2 BenchmarkInput-4 324 3681322 ns/op
------------- -------------------- --------- ------------------
day12/part1 BenchmarkInput-4 27 39919589 ns/op
day12/part2 BenchmarkInput-4 1 1396313129 ns/op
------------- -------------------- --------- ------------------
day13/part1 BenchmarkInput-4 3220 344567 ns/op
day13/part2 BenchmarkInput-4 1161 865072 ns/op
------------- -------------------- --------- ------------------
day14/part1 BenchmarkInput-4 376 3065596 ns/op
day14/part2 BenchmarkInput-4 1483 740865 ns/op
------------- -------------------- --------- ------------------
day15/part1 BenchmarkInput-4 32 37535837 ns/op
day15/part2 BenchmarkInput-4 1 1414612059 ns/op
------------- -------------------- --------- ------------------
day16/part1 BenchmarkInput-4 8124 134785 ns/op
day16/part2 BenchmarkInput-4 7513 136187 ns/op
------------- -------------------- --------- ------------------
day17/part1 BenchmarkInput-4 1644 723567 ns/op
day17/part2 BenchmarkInput-4 1454 816308 ns/op
------------- -------------------- --------- ------------------
day18/part1 BenchmarkInput-4 390 3518750 ns/op
day18/part2 BenchmarkInput-4 81 13735733 ns/op
------------- -------------------- --------- ------------------
day19/part1 BenchmarkInput-4 8 139914205 ns/op
day19/part2 BenchmarkInput-4 8 141170683 ns/op
------------- -------------------- --------- ------------------
day20/part1 BenchmarkInput-4 146 8597374 ns/op
day20/part2 BenchmarkInput-4 3 435822786 ns/op
------------- -------------------- --------- ------------------
day21/part1 BenchmarkInput-4 21853 59397 ns/op
day21/part2 BenchmarkInput-4 2 854468106 ns/op
------------- -------------------- --------- ------------------

License

Copyright 2021 Glenn M. Lewis. All Rights Reserved.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Owner
Glenn Lewis
Glenn is a software developer currently intrigued by IRMF, A-Frame, Wasm, V, Flutter, and Go. Contact him via https://keybase.io/gmlewis
Glenn Lewis
Similar Resources

Solutions to the excellent yearly Advent Of Code puzzles

adventofcode Solutions to the excellent yearly Advent of Code puzzles - https://adventofcode.com I'll try to solve the previous years before 2022's Ad

Dec 13, 2022

Finished snippets I did for Advent of Code 2021.

Advent of Code 2021 This repository includes my Go code for the Advent of Code 2021. If you want to solve the puzzles yourself first, do so, then look

Dec 25, 2021

Advent of Code 2021 - Time to learn Go

aoc2021 Advent of Code 2021 - Time to learn Go Will contain my solutions for aoc2021, so avoid reading the files in .src/aoc2021/ unless you want spoi

Dec 22, 2021

Advent of Code 2021, experiment in learning Go

aoc_2021 Advent of Code 2021, experiment in learning Go To run, open a terminal in the root folder of the project and run with go run . day to run

Mar 1, 2022

Advent of Code 2021, this time in Go

Go Lang Notes Advent of Code Day 3 The distinction between chars and bytes is a bit annoying. I got tripped up by doing: int(str[pos]) which gives yo

Dec 10, 2022

Advent of Code 2021 (Go)

Advent of Code 2021 (Go) This project includes an implementation of the Advent of Code 2021 problems, implemented in Go. These are ports from my C# so

Dec 18, 2021

🎅 A programming language for Advent of Code.

🎅 Adventlang My blog post: Designing a Programming Language for Advent of Code A strongly typed but highly dynamic programming language interpreter w

Dec 28, 2022

Personal Advent of Code challenges to force me to learn Go.

Advent of Code 2021 A list of 31 challenges I am completing using Golang for the month of December. Day 1: Quicksort Variables Constants Lists Comment

Dec 16, 2021

A non-go engineer tries to write Go to solve Advent of Code

Wherein an engineer (who primarily uses Kotlin, Java, Scala and C#) tries to teach themselves Go by solving Advent of Code challenges. It's... not pre

Dec 9, 2021
My solutions for 2021's Advent of Code

Advent of Code 2021 These are my solutions to this year's Advent of Code. I used it as an excuse to practice with a language which I'm not yet very fa

Dec 27, 2021
Solutions to Advent-of-Code 2021, in Go.

?? advent-of-code-2021 ?? Solutions to 2021 Advent of code. Summary Advent of Code is an annual advent-calendar of programming puzzles. Here are my 20

Dec 14, 2022
Advent of code 2021 solutions by: me :)

Advent of code 2021 These are my solutions for the advent of code 2021 event. My idea is to solve all the problems in go, but I may use another langua

Dec 27, 2021
A little repository for my Advent of Code 2021 solutions in Go

Advent of Code 2021 What's this repo all about? Well, this is a collection of code written in Golang to solve the daily problems presented in Advent o

Dec 12, 2021
My solutions for Advent of Code 2021.

My solutions for Advent of Code 2021 in go. The solution and input data (i.e. my custom input data) for day XX is contained in the subdirectory dayXX.

Dec 22, 2021
Advent of Code 2021 https://adventofcode.com/2021

AOC 2021 How to use Not sure yet. Maybe cd into your day folder and go run, or maybe better to try go test Dev environment Open in VSCode, enable (Rem

Apr 22, 2022
🎄 My code for the Advent of Code of year 2021 in Go.

Advent of Code 2021 This repository contains all code that I wrote for the Advent of Code 2021. This year I chose to try and learn Go. Enjoy! Built wi

Dec 9, 2021
Advent of Code is an Advent calendar of small programming puzzles for a variety of skill sets and skill levels that can be solved in any programming language you like.

Advent of Code 2021 Advent of Code is an Advent calendar of small programming puzzles for a variety of skill sets and skill levels that can be solved

Dec 2, 2021
Jan 4, 2022
Advent of code solutions in Golang

Advent of Code go solutions This repo contains my solutions in Golang for advent of code (P.S: I am using this opportunity to learn new language most

Dec 21, 2021