advent-of-code-2021

module
v0.37.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 22, 2023 License: Apache-2.0

README

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

Directories

Path Synopsis
Package algorithm provides useful generic algorithms.
Package algorithm provides useful generic algorithms.
cmd
get-puzzle
get-puzzle gets the puzzle for the given day (e.g.
get-puzzle gets the puzzle for the given day (e.g.
day01
day02
day03
day04
day05
day06
day07
day08
day09
day10
day11
day12
day13
day14
day15
day16
day17
day18
day19
day20
day21
day22
day23
day24
day25
Package enum provides handy functional programming -style functions that operate on enumerable data types.
Package enum provides handy functional programming -style functions that operate on enumerable data types.
Package maps provides handy functional programming -style functions that operate on map data types.
Package maps provides handy functional programming -style functions that operate on map data types.
Package mathfn provides curried functional versions of the functions provided by the "math" package so they can be more easily used within "enum" and "maps" functions.
Package mathfn provides curried functional versions of the functions provided by the "math" package so they can be more easily used within "enum" and "maps" functions.
Package must simplifies writing advent-of-code scripts by providing methods that cause fatal errors instead of returning them.
Package must simplifies writing advent-of-code scripts by providing methods that cause fatal errors instead of returning them.
Package stream provides handy functional programming -style functions that operate on enumerable data types using channels.
Package stream provides handy functional programming -style functions that operate on enumerable data types using channels.
Package strfn provides curried functional versions of the functions provided by the "strings" package so they can be more easily used within "enum" and "maps" functions.
Package strfn provides curried functional versions of the functions provided by the "strings" package so they can be more easily used within "enum" and "maps" functions.
Package test provides some handy testing utilities.
Package test provides some handy testing utilities.
Package tuple provides generic tuples.
Package tuple provides generic tuples.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL