Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/gmlewis/advent-of-code-2021

Advent of Code 2021 solutions using Go 1.18 Generics
https://github.com/gmlewis/advent-of-code-2021

functional-programming generics go golang

Last synced: about 2 months ago
JSON representation

Advent of Code 2021 solutions using Go 1.18 Generics

Awesome Lists containing this project

README

        

# advent-of-code-2021

Here are my solutions for [Advent of Code 2021](https://adventofcode.com/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 |
|-------------|--------------------|---------|-------------------|
| day22/part1 | BenchmarkInput-4 | 7 | 161074391 ns/op |
| day22/part2 | BenchmarkInput-4 | 1 | 91770973916 ns/op |
|-------------|--------------------|---------|-------------------|
| day23/part1 | BenchmarkInput-4 | 1 | 19647640120 ns/op |
| day23/part2 | BenchmarkInput-4 | 1 |110287766926 ns/op |
|-------------|--------------------|---------|-------------------|
| day24/part1 | BenchmarkInput-4 | 6079 | 400067 ns/op |
| day24/part2 | BenchmarkInput-4 | 6079 | 400067 ns/op |
|-------------|--------------------|---------|-------------------|
| day25/part1 | BenchmarkInput-4 | 1 | 1119637278 ns/op |
|-------------|--------------------|---------|-------------------|

Several of the algorithms can be improved, obviously, but that was
a lot of fun and you never stop learning when tackling the wide
variety of challenges. Thank you for AOC, http://was.tl/ !

----------------------------------------------------------------------

# 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.