Documentation ¶
Index ¶
- Constants
- func AOC_2020_01(cli *cli.CLI)
- func AOC_2020_01_part1_attempt1(cli *cli.CLI, logger *goutils.Logger)
- func AOC_2020_01_part1_attempt2(cli *cli.CLI, logger *goutils.Logger)
- func AOC_2020_01_part2_attempt1(cli *cli.CLI, logger *goutils.Logger)
- func AOC_2020_02(cli *cli.CLI)
- func AOC_2020_02_part1_attempt1(cli *cli.CLI, verbose bool)
- func AOC_2020_02_part2_attempt1(cli *cli.CLI, verbose bool)
- func AOC_2020_03_part1_attempt1(cli *cli.CLI, verbose bool)
- func AOC_2020_03_part1_attempt2(cli *cli.CLI, verbose bool)
- func AOC_2020_04_part1_attempt1(app *Application)
- func AOC_2020_04_part2_attempt1(app *Application)
- func AOC_2020_06_part1_attempt1(app *Application)
- func AOC_2020_06_part2_attempt1(app *Application)
- func AOC_2020_07_part1_attempt1(app *Application)
- func AOC_2020_07_part2_attempt1(app *Application)
- func AOC_2020_08_part1_attempt1(app *Application)
- func AOC_2020_08_part2_attempt1(app *Application)
- func AOC_2020_09_part1_attempt1(app *Application)
- func AOC_2020_09_part2_attempt1(app *Application)
- func AOC_2020_10_part1_attempt1(ints []int) map[int]int
- func AOC_2020_10_part1_attempt1_from_cli(app *Application)
- func AOC_2020_10_part2_attempt2(app *Application)
- func AOC_2020_13_part1_attempt1(cli *cli.CLI)
- func AOC_2020_13_part2_attempt1(cli *cli.CLI)
- func AOC_2020_19_part1_attempt1(cli *cli.CLI)
- func AOC_2020_22_part2_attempt1(cli *cli.CLI)
- func AOC_2020_24_part1_attempt1(cli *cli.CLI)
- func AOC_2020_24_part2_attempt1(cli *cli.CLI)
- func AOC_2020_25_part2_attempt1(cli *cli.CLI)
- func CheckGroupAnwsers(groupSize int, answers map[string]int) int
- func Day13Logic(time int, buses []int) (int, int)
- func DebugLine(currentCup int, data []int) string
- func DebugMatrix(matrix map[string]*Tile, showPositions bool) string
- func FindLoopSize(subject_number int, target int) int
- func FindPrivateKey(subject_number int, max_loop_size int) int
- func FlipMatrixVertical(input map[string]*Tile) map[string]*Tile
- func IndexOf(value int, data []int) int
- func NewGameHand(player1 *Player, player2 *Player) string
- func NextInDay15Part1Sequence(sequence string, iterations int) int
- func NormaliseTileMap(source map[string]*Tile) map[string]*Tile
- func ParseDay13FilePart1(filename string) (int, []int)
- func ParseDay13FilePart2(filename string) ([]int, []int)
- func PlayRecursive(player1 *Player, player2 *Player, gameNumber int) bool
- func Regex(value string, pattern string) map[string]string
- func RotateMatrix(input map[string]*Tile) map[string]*Tile
- func Shuffle(currentCup int, newIndexRequired int, data []int) []int
- func ToXY(key string) (float64, int)
- func ValidateMatrix(matrix map[string]*Tile) (string, bool)
- type Allergen
- type Application
- func (app *Application) AOC_2020_05_part1_attempt1(cli *cli.CLI)
- func (app *Application) AOC_2020_05_part2_attempt1(cli *cli.CLI)
- func (app Application) Api(day int) string
- func (app Application) GetMethod(methodName string) (reflect.Value, reflect.Value, bool)
- func (app Application) GetName() string
- func (app Application) GetPuzzle(year int, day int) utils.Puzzle
- func (app Application) Help(cli *cli.CLI)
- func (app Application) List() string
- func (app Application) Render(cli *cli.CLI)
- func (app Application) Run(cli *cli.CLI)
- func (app Application) Summary(year int, day int) *utils.Summary
- func (app *Application) Y2020D01P1()
- func (app *Application) Y2020D01P2()
- func (app *Application) Y2020D01_Summary() *utils.Summary
- func (app *Application) Y2020D02P1()
- func (app *Application) Y2020D02P2()
- func (app *Application) Y2020D02_Summary() *utils.Summary
- func (app *Application) Y2020D03P1()
- func (app *Application) Y2020D03P2()
- func (app *Application) Y2020D03_Summary() *utils.Summary
- func (app *Application) Y2020D04P1()
- func (app *Application) Y2020D04P2()
- func (app *Application) Y2020D04_Summary() *utils.Summary
- func (app *Application) Y2020D05()
- func (app *Application) Y2020D05P1()
- func (app *Application) Y2020D05P2()
- func (app *Application) Y2020D05_Summary() *utils.Summary
- func (app *Application) Y2020D06P1()
- func (app *Application) Y2020D06P2()
- func (app *Application) Y2020D06_Summary() *utils.Summary
- func (app *Application) Y2020D07P1()
- func (app *Application) Y2020D07P2()
- func (app *Application) Y2020D07_Summary() *utils.Summary
- func (app *Application) Y2020D08P1()
- func (app *Application) Y2020D08P2()
- func (app *Application) Y2020D08_Summary() *utils.Summary
- func (app *Application) Y2020D09P1()
- func (app *Application) Y2020D09P2()
- func (app *Application) Y2020D09_Summary() *utils.Summary
- func (app *Application) Y2020D10P1()
- func (app *Application) Y2020D10P2()
- func (app *Application) Y2020D10_Summary() *utils.Summary
- func (app *Application) Y2020D11()
- func (app *Application) Y2020D11P1()
- func (app *Application) Y2020D11P2()
- func (app *Application) Y2020D11_Summary() *utils.Summary
- func (app *Application) Y2020D12()
- func (app *Application) Y2020D12P1()
- func (app *Application) Y2020D12P1_x(cli *cli.CLI)
- func (app *Application) Y2020D12P2()
- func (app *Application) Y2020D12_Summary() *utils.Summary
- func (app *Application) Y2020D13()
- func (app *Application) Y2020D13P1()
- func (app *Application) Y2020D13P2()
- func (app *Application) Y2020D13_Summary() *utils.Summary
- func (app *Application) Y2020D14()
- func (app *Application) Y2020D14P1()
- func (app *Application) Y2020D14P2()
- func (app *Application) Y2020D14_Summary() *utils.Summary
- func (app *Application) Y2020D15()
- func (app *Application) Y2020D15P1()
- func (app *Application) Y2020D15P2()
- func (app *Application) Y2020D15_Summary() *utils.Summary
- func (app *Application) Y2020D16()
- func (app *Application) Y2020D16P1()
- func (app *Application) Y2020D16P2()
- func (app *Application) Y2020D16_Summary() *utils.Summary
- func (app *Application) Y2020D17()
- func (app *Application) Y2020D17P1()
- func (app *Application) Y2020D17P2()
- func (app *Application) Y2020D17_Summary() *utils.Summary
- func (app *Application) Y2020D18()
- func (app *Application) Y2020D18P1()
- func (app *Application) Y2020D18P2()
- func (app *Application) Y2020D18_Summary() *utils.Summary
- func (app *Application) Y2020D19()
- func (app *Application) Y2020D19P1()
- func (app *Application) Y2020D19P2()
- func (app *Application) Y2020D19_Summary() *utils.Summary
- func (app *Application) Y2020D20()
- func (app *Application) Y2020D20P1()
- func (app *Application) Y2020D20P2()
- func (app *Application) Y2020D20_Summary() *utils.Summary
- func (app *Application) Y2020D21()
- func (app *Application) Y2020D21P1()
- func (app *Application) Y2020D21P2()
- func (app *Application) Y2020D21_Summary() *utils.Summary
- func (app *Application) Y2020D22()
- func (app *Application) Y2020D22P1()
- func (app *Application) Y2020D22P2()
- func (app *Application) Y2020D22_Summary() *utils.Summary
- func (app *Application) Y2020D23()
- func (app *Application) Y2020D23P1()
- func (app *Application) Y2020D23P2()
- func (app *Application) Y2020D23_Summary() *utils.Summary
- func (app *Application) Y2020D24()
- func (app *Application) Y2020D24P1()
- func (app *Application) Y2020D24P2()
- func (app *Application) Y2020D24P2Render()
- func (app *Application) Y2020D24_Summary() *utils.Summary
- func (app *Application) Y2020D25()
- func (app *Application) Y2020D25P1()
- func (app *Application) Y2020D25P2()
- func (app *Application) Y2020D25_Summary() *utils.Summary
- type Bag
- type BagGraph
- type BagRelation
- type BoardingPass
- type Combat
- type CrabCups
- type CrabCups2
- type Cup
- type Day14Program
- func (p *Day14Program) ConvertToBinary(value string) string
- func (p *Day14Program) ConvertToBitSet(value string) *goutils.BitSet
- func (p *Day14Program) Debug()
- func (p *Day14Program) ExecuteV1(instruction string)
- func (p *Day14Program) ExecuteV2(instruction string)
- func (p *Day14Program) IsMask(instruction string) bool
- func (p *Day14Program) IsMem(instruction string) bool
- func (p *Day14Program) ParseMask(instruction string) *goutils.Mask
- func (p *Day14Program) ParseMem(instruction string) (string, string)
- func (p *Day14Program) RunV1()
- func (p *Day14Program) RunV2()
- func (p *Day14Program) Sum() int64
- type Day16
- type Food
- func (food *Food) AddAllergen(allergen *Allergen)
- func (food *Food) AddIngredient(ingredient *Ingredient)
- func (food *Food) ContainsAllergen(value string) bool
- func (food *Food) ContainsIngredient(value string) bool
- func (food *Food) NumberOfAllergens() int
- func (food *Food) NumberOfIngredients() int
- func (food *Food) RemoveAllergen(value string)
- func (food *Food) RemoveIngredient(value string)
- type FoodDB
- func (db *FoodDB) AddFood(index int, line string) *Food
- func (db *FoodDB) Analyse()
- func (db *FoodDB) BuildIngredientAllergyMap() map[string]string
- func (db *FoodDB) Debug() string
- func (db *FoodDB) GetAllergen(value string) *Allergen
- func (db *FoodDB) GetIngredient(value string) *Ingredient
- func (db *FoodDB) GetIngredientsWithoutAllergens() []*Ingredient
- func (db *FoodDB) RemoveAllergen(value string)
- func (db *FoodDB) RemoveIngredient(value string)
- type Grid3D
- func (g *Grid3D) CountActiveNeighbours(parentKey string) int
- func (g *Grid3D) CountActiveTotal() int
- func (g *Grid3D) Cycle()
- func (g *Grid3D) DebugZ(z int) string
- func (g *Grid3D) Dimensions() (goutils.Point3D, goutils.Point3D)
- func (g *Grid3D) Get(key string) string
- func (g *Grid3D) Neighbours(parentKey string) []string
- func (g *Grid3D) ParseKey(key string) (int, int, int)
- func (g *Grid3D) Set(key string, value string)
- type Grid4D
- func (g *Grid4D) CountActiveNeighbours(parentKey string) int
- func (g *Grid4D) CountActiveTotal() int
- func (g *Grid4D) Cycle()
- func (g *Grid4D) DebugZ(z int) string
- func (g *Grid4D) Dimensions() (goutils.Point4D, goutils.Point4D)
- func (g *Grid4D) Get(key string) string
- func (g *Grid4D) Neighbours(parentKey string) []string
- func (g *Grid4D) ParseKey(key string) (int, int, int, int)
- func (g *Grid4D) Set(key string, value string)
- type Hex
- type HexGrid
- func (grid *HexGrid) BlackCount() int
- func (grid *HexGrid) CoordinatesCreateHexesAlongTheWay(fullAddress string) (float64, int)
- func (grid *HexGrid) CoordinatesDontCreateHexesAlongTheWay(fullAddress string) (float64, int)
- func (grid *HexGrid) Dimensions() (int, int)
- func (grid *HexGrid) FindByAddress(address string) *Hex
- func (grid *HexGrid) FindByCoordinates(key string) *Hex
- func (grid *HexGrid) Keys() []string
- func (g *HexGrid) ParseAddress(address string) []string
- func (grid *HexGrid) PlayPart1(instructions string)
- func (grid *HexGrid) PlayPart2(day int) (int, int, int, int)
- func (grid *HexGrid) Render(day int, filename string)
- func (grid *HexGrid) RenderAnimation(data string, filename string, days int, Delay int)
- func (grid *HexGrid) RenderFrame(dc *gg.Context, day int) image.Image
- type Image
- type Ingredient
- type Instruction
- type Memory
- type Movement
- type Passport
- func (p *Passport) Add(line string)
- func (p *Passport) Debug()
- func (p *Passport) Get(key string) (string, bool)
- func (p *Passport) IsValid() bool
- func (p *Passport) IsValidECL() bool
- func (p *Passport) IsValidHCL() bool
- func (p *Passport) IsValidHGT() bool
- func (p *Passport) IsValidPID() bool
- func (p *Passport) IsValidPart2() bool
- func (p *Passport) Size() int
- type PassportControl
- type Path
- type Player
- type Program
- func (p *Program) Debug()
- func (p *Program) FindInstructionIndexes(operation string) []int
- func (p *Program) GetCurrentInstruction() *Instruction
- func (p *Program) GetInstructionAtIndex(index int) *Instruction
- func (p *Program) IsComplete() bool
- func (p *Program) Reset()
- func (p *Program) Size() int
- func (p *Program) Step() bool
- type QandA
- type RegexRule
- type RegexRuleEngine
- func (r *RegexRuleEngine) Apply(ruleId string, debug bool) (int, []string)
- func (r *RegexRuleEngine) CheckMessage(message string) (*RegexRule, bool)
- func (r *RegexRuleEngine) Debug()
- func (r *RegexRuleEngine) ParseRules(DEBUG bool)
- func (r *RegexRuleEngine) ParseRulesV2()
- func (r *RegexRuleEngine) ParseRulesV3()
- func (rre *RegexRuleEngine) RemoveMessages(messages []string)
- type Ring
- type Rule
- type SeatingPlan
- func (sp *SeatingPlan) ColRowFromIndex(index int) (int, int)
- func (sp *SeatingPlan) ConvertAtIndex(index int) int
- func (sp *SeatingPlan) CountAdjacentOccupied(index int) int
- func (sp *SeatingPlan) Debug() string
- func (sp *SeatingPlan) Get(col int, row int) int
- func (sp *SeatingPlan) GetOccupiedCount() int
- func (sp *SeatingPlan) IndexFromColRow(col int, row int) int
- func (sp *SeatingPlan) Put(position int, value int)
- func (sp *SeatingPlan) Tick() int
- func (sp *SeatingPlan) Translate(value int) string
- type Sequence
- func (s *Sequence) ContainsCombination(totalToFind int) (bool, int, int)
- func (s *Sequence) ContainsValue(valueToFind int) (bool, int)
- func (s *Sequence) Get(index int) int
- func (s *Sequence) IndexOf(valueToFind int) int
- func (s *Sequence) IsValid(index int) bool
- func (s *Sequence) Size() int
- func (s *Sequence) Subsequence(position int) *Sequence
- type Ship
- type Ship2
- type Ticket
- type Tile
- func (t *Tile) AttachAnyConnection(candidate *Tile) int
- func (t *Tile) AttachEast(candidate *Tile)
- func (t *Tile) AttachNorth(candidate *Tile)
- func (t *Tile) AttachSouth(candidate *Tile)
- func (t *Tile) AttachWest(candidate *Tile)
- func (t *Tile) CanRotateOrFlip() bool
- func (toCopy *Tile) Copy() *Tile
- func (t *Tile) Debug(hideEdges bool) string
- func (tile *Tile) Detach()
- func (tile *Tile) FindSeaMonsters() map[string][][]string
- func (t *Tile) FlipHorizontal() *Tile
- func (t *Tile) FlipVertical() *Tile
- func (t *Tile) Get(col int, row int) string
- func (t *Tile) GetConnectionName(other *Tile) string
- func (t *Tile) IsBottomLeftCorner() bool
- func (t *Tile) IsBottomRightCorner() bool
- func (t *Tile) IsComplete() bool
- func (t *Tile) IsEastOf(candidate *Tile) bool
- func (t *Tile) IsNorthOf(candidate *Tile) bool
- func (tile *Tile) IsSeaMonster(candidate []string) (bool, []string, []string, []string)
- func (t *Tile) IsSouthOf(candidate *Tile) bool
- func (t *Tile) IsTopLeftCorner() bool
- func (t *Tile) IsTopRightCorner() bool
- func (t *Tile) IsWestOf(candidate *Tile) bool
- func (tile *Tile) KeyValue(key string) int
- func (tile *Tile) Keys() []string
- func (t *Tile) Rekey() *Tile
- func (t *Tile) Rotate() *Tile
- func (tile *Tile) RotateUntilAllRegexMatch() bool
- func (t *Tile) SetCanRotateOrFlip(canRotateOrFlip bool)
- func (tile *Tile) Snapshot(x int, y int, width int, height int, content []string) []string
- func (t *Tile) TotalConnections() int
- type TobogganMap
- func (tm *TobogganMap) Add(line string) int
- func (tm *TobogganMap) CountTreesWeEncounter(moveColsBy int, moveRowsBy int) int
- func (tm *TobogganMap) Debug()
- func (tm *TobogganMap) Get(col int, row int) string
- func (tm *TobogganMap) GetRow(row int) *TobogganMapRow
- func (tm *TobogganMap) IsTree(col int, row int) bool
- func (tm *TobogganMap) Size() int
- type TobogganMapRow
- type ValueData
- type ValueStore
- type Waypoint
- type WeirdCalculator
Constants ¶
const ACTIVE = "#"
const DAY_16_INPUT_1 = `` /* 19999-byte string literal not displayed */
const DAY_16_INPUT_1_TEST_DATA = `` /* 126-byte string literal not displayed */
const DAY_16_INPUT_2_TEST_DATA = `class: 0-1 or 4-19
row: 0-5 or 8-19
seat: 0-13 or 16-19
your ticket:
11,12,13
nearby tickets:
3,9,18
15,1,5
5,14,9`
const DAY_17_INPUT = `.#.####.
.#...##.
..###.##
#..#.#.#
#..#....
#.####..
##.##..#
#.#.#..#`
const DAY_17_TEST_INPUT = `.#.
..#
###`
const DAY_18_INPUT = `` /* 19585-byte string literal not displayed */
const DAY_19_INPUT_PART_1 = `` /* 18441-byte string literal not displayed */
const DAY_19_INPUT_PART_2 = `` /* 18463-byte string literal not displayed */
const DAY_1_DATA = `` /* 988-byte string literal not displayed */
const DAY_20_DATA = `` /* 17567-byte string literal not displayed */
const DAY_20_IMAGE = `` /* 9320-byte string literal not displayed */
const DAY_20_NESSIE_REGEX_LINE1 = `(..................)#(.)`
20 wide
const DAY_20_NESSIE_REGEX_LINE2 = `#(....)##(....)##(....)###`
const DAY_20_NESSIE_REGEX_LINE3 = `(.)#(..)#(..)#(..)#(..)#(..)#`
const DAY_20_TEST_DATA = `` /* 1097-byte string literal not displayed */
const DAY_21_DATA = `` /* 11752-byte string literal not displayed */
const DAY_21_TEST_DATA = `` /* 151-byte string literal not displayed */
const DAY_22_DATA = `` /* 161-byte string literal not displayed */
const DAY_22_PART_2_EXAMPLE_17_ROUND_GAME = `` /* 5075-byte string literal not displayed */
const DAY_22_PART_2_INFINITE_LOOP_GAME_DATA = `Player 1:
43
19
Player 2:
2
29
14`
const DAY_22_TEST_DATA = `Player 1:
9
2
6
3
1
Player 2:
5
8
4
7
10`
const DAY_24_INPUT = `` /* 18828-byte string literal not displayed */
const DAY_25_CARD_PUBLIC_KEY = 335121
const DAY_25_DIVIDE_BY = 20201227
const DAY_25_DOOR_PUBLIC_KEY = 363891
const DAY_25_TEST_CARD_LOOP_SIZE = 8
const DAY_25_TEST_CARD_PUBLIC_KEY = 5764801
const DAY_25_TEST_CARD_SUBJECT_NUMBER = 7
const EMPTY = 1 // L
const FLOOR = 2 // .
const INACTIVE = "."
const NONE = -1 // ?
const OCCUPIED = 0 // #
Variables ¶
This section is empty.
Functions ¶
func AOC_2020_01 ¶
AOC_2020_01 is the entrypoint to the various attempts for day one
func AOC_2020_01_part1_attempt1 ¶
AOC_2020_01_part1_attempt1 this is part 1 of day 1, attempt 1 a brute-force attempt which as the volume is small works fine we have an inner loop giving o(n^2) which again works but is not fast
func AOC_2020_01_part1_attempt2 ¶
AOC_2020_01_part1_attempt2 in this atempt I preload an "inty" map affording go's own probably binsearch by keying on the int value itself this uses more memory (the inty map in addition to the list) but avoids an initial sort and binsearch I intend to do my own sort and binsearch as an attempt3
func AOC_2020_01_part2_attempt1 ¶
AOC_2020_01_part2_attempt1 the second part of day 1, attempt1 this is a brute-force attempt that gets over the line in the spirit of make it work, make it fast, this is make it work so this is 3 inner loops, giving o(n^3) performance I believe - it works, it is not fast.
func AOC_2020_02 ¶
AOC_2020_02 is the entrypoint to the various attempts for day two
func AOC_2020_02_part1_attempt1 ¶
AOC_2020_01_part1_attempt1 this is part 1 of day 1, attempt 1 a brute-force attempt which as the volume is small works fine we have an inner loop giving o(n^2) which again works but is not fast
func AOC_2020_03_part1_attempt1 ¶
AOC_2020_01_part3_attempt1 this is part 1 of day 3, attempt 1
func AOC_2020_04_part1_attempt1 ¶
func AOC_2020_04_part1_attempt1(app *Application)
func AOC_2020_04_part2_attempt1 ¶
func AOC_2020_04_part2_attempt1(app *Application)
func AOC_2020_06_part1_attempt1 ¶
func AOC_2020_06_part1_attempt1(app *Application)
func AOC_2020_06_part2_attempt1 ¶
func AOC_2020_06_part2_attempt1(app *Application)
func AOC_2020_07_part1_attempt1 ¶
func AOC_2020_07_part1_attempt1(app *Application)
func AOC_2020_07_part2_attempt1 ¶
func AOC_2020_07_part2_attempt1(app *Application)
func AOC_2020_08_part1_attempt1 ¶
func AOC_2020_08_part1_attempt1(app *Application)
func AOC_2020_08_part2_attempt1 ¶
func AOC_2020_08_part2_attempt1(app *Application)
func AOC_2020_09_part1_attempt1 ¶
func AOC_2020_09_part1_attempt1(app *Application)
func AOC_2020_09_part2_attempt1 ¶
func AOC_2020_09_part2_attempt1(app *Application)
func AOC_2020_10_part1_attempt1_from_cli ¶
func AOC_2020_10_part1_attempt1_from_cli(app *Application)
func AOC_2020_10_part2_attempt2 ¶
func AOC_2020_10_part2_attempt2(app *Application)
func FindLoopSize ¶
Finds the loop size or breaks after CIRCUIT_BREAKER times (1000)
func FindPrivateKey ¶
func FlipMatrixVertical ¶
Rotates the tile 90 degrees clockwise, removing any relationships this tile has
func NewGameHand ¶
func ParseDay13FilePart1 ¶
func ParseDay13FilePart2 ¶
ParseDay13FilePart2 returns two []int - one of the buses one of their indexes
func RotateMatrix ¶
Rotates the tile 90 degrees clockwise, removing any relationships this tile has
Types ¶
type Allergen ¶
type Allergen struct { Value string Foods map[string]*Food Ingredients map[string]*Ingredient }
func (*Allergen) AddIngredient ¶
func (allergen *Allergen) AddIngredient(ingredient *Ingredient)
func (*Allergen) CreateSharedIngredientsAcrossFoods ¶
func (*Allergen) RemoveIngredient ¶
type Application ¶
func NewApplication ¶
func NewApplication(cli *cli.CLI) Application
func (*Application) AOC_2020_05_part1_attempt1 ¶
func (app *Application) AOC_2020_05_part1_attempt1(cli *cli.CLI)
func (*Application) AOC_2020_05_part2_attempt1 ¶
func (app *Application) AOC_2020_05_part2_attempt1(cli *cli.CLI)
func (Application) Api ¶
func (app Application) Api(day int) string
func (Application) GetName ¶
func (app Application) GetName() string
func (Application) Help ¶
func (app Application) Help(cli *cli.CLI)
func (Application) List ¶
func (app Application) List() string
func (Application) Render ¶
func (app Application) Render(cli *cli.CLI)
func (Application) Run ¶
func (app Application) Run(cli *cli.CLI)
func (*Application) Y2020D01P1 ¶
func (app *Application) Y2020D01P1()
func (*Application) Y2020D01P2 ¶
func (app *Application) Y2020D01P2()
func (*Application) Y2020D01_Summary ¶
func (app *Application) Y2020D01_Summary() *utils.Summary
func (*Application) Y2020D02P1 ¶
func (app *Application) Y2020D02P1()
func (*Application) Y2020D02P2 ¶
func (app *Application) Y2020D02P2()
func (*Application) Y2020D02_Summary ¶
func (app *Application) Y2020D02_Summary() *utils.Summary
func (*Application) Y2020D03P2 ¶
func (app *Application) Y2020D03P2()
func (*Application) Y2020D03_Summary ¶
func (app *Application) Y2020D03_Summary() *utils.Summary
func (*Application) Y2020D04P2 ¶
func (app *Application) Y2020D04P2()
func (*Application) Y2020D04_Summary ¶
func (app *Application) Y2020D04_Summary() *utils.Summary
func (*Application) Y2020D05 ¶
func (app *Application) Y2020D05()
func (*Application) Y2020D05P1 ¶
func (app *Application) Y2020D05P1()
func (*Application) Y2020D05P2 ¶
func (app *Application) Y2020D05P2()
func (*Application) Y2020D05_Summary ¶
func (app *Application) Y2020D05_Summary() *utils.Summary
func (*Application) Y2020D06P2 ¶
func (app *Application) Y2020D06P2()
func (*Application) Y2020D06_Summary ¶
func (app *Application) Y2020D06_Summary() *utils.Summary
func (*Application) Y2020D07P2 ¶
func (app *Application) Y2020D07P2()
func (*Application) Y2020D07_Summary ¶
func (app *Application) Y2020D07_Summary() *utils.Summary
func (*Application) Y2020D08P2 ¶
func (app *Application) Y2020D08P2()
func (*Application) Y2020D08_Summary ¶
func (app *Application) Y2020D08_Summary() *utils.Summary
func (*Application) Y2020D09P2 ¶
func (app *Application) Y2020D09P2()
func (*Application) Y2020D09_Summary ¶
func (app *Application) Y2020D09_Summary() *utils.Summary
func (*Application) Y2020D10P2 ¶
func (app *Application) Y2020D10P2()
func (*Application) Y2020D10_Summary ¶
func (app *Application) Y2020D10_Summary() *utils.Summary
func (*Application) Y2020D11 ¶
func (app *Application) Y2020D11()
func (*Application) Y2020D11P1 ¶
func (app *Application) Y2020D11P1()
func (*Application) Y2020D11P2 ¶
func (app *Application) Y2020D11P2()
func (*Application) Y2020D11_Summary ¶
func (app *Application) Y2020D11_Summary() *utils.Summary
func (*Application) Y2020D12 ¶
func (app *Application) Y2020D12()
func (*Application) Y2020D12P1 ¶
func (app *Application) Y2020D12P1()
func (*Application) Y2020D12P1_x ¶
func (app *Application) Y2020D12P1_x(cli *cli.CLI)
func (*Application) Y2020D12P2 ¶
func (app *Application) Y2020D12P2()
func (*Application) Y2020D12_Summary ¶
func (app *Application) Y2020D12_Summary() *utils.Summary
func (*Application) Y2020D13P1 ¶
func (app *Application) Y2020D13P1()
func (*Application) Y2020D13P2 ¶
func (app *Application) Y2020D13P2()
func (*Application) Y2020D13_Summary ¶
func (app *Application) Y2020D13_Summary() *utils.Summary
func (*Application) Y2020D14 ¶
func (app *Application) Y2020D14()
func (*Application) Y2020D14P1 ¶
func (app *Application) Y2020D14P1()
func (*Application) Y2020D14P2 ¶
func (app *Application) Y2020D14P2()
func (*Application) Y2020D14_Summary ¶
func (app *Application) Y2020D14_Summary() *utils.Summary
func (*Application) Y2020D15 ¶
func (app *Application) Y2020D15()
func (*Application) Y2020D15P1 ¶
func (app *Application) Y2020D15P1()
func (*Application) Y2020D15P2 ¶
func (app *Application) Y2020D15P2()
func (*Application) Y2020D15_Summary ¶
func (app *Application) Y2020D15_Summary() *utils.Summary
func (*Application) Y2020D16 ¶
func (app *Application) Y2020D16()
func (*Application) Y2020D16P1 ¶
func (app *Application) Y2020D16P1()
func (*Application) Y2020D16P2 ¶
func (app *Application) Y2020D16P2()
func (*Application) Y2020D16_Summary ¶
func (app *Application) Y2020D16_Summary() *utils.Summary
func (*Application) Y2020D17 ¶
func (app *Application) Y2020D17()
func (*Application) Y2020D17P1 ¶
func (app *Application) Y2020D17P1()
func (*Application) Y2020D17P2 ¶
func (app *Application) Y2020D17P2()
func (*Application) Y2020D17_Summary ¶
func (app *Application) Y2020D17_Summary() *utils.Summary
func (*Application) Y2020D18 ¶
func (app *Application) Y2020D18()
func (*Application) Y2020D18P1 ¶
func (app *Application) Y2020D18P1()
func (*Application) Y2020D18P2 ¶
func (app *Application) Y2020D18P2()
func (*Application) Y2020D18_Summary ¶
func (app *Application) Y2020D18_Summary() *utils.Summary
func (*Application) Y2020D19 ¶
func (app *Application) Y2020D19()
func (*Application) Y2020D19P1 ¶
func (app *Application) Y2020D19P1()
func (*Application) Y2020D19P2 ¶
func (app *Application) Y2020D19P2()
func (*Application) Y2020D19_Summary ¶
func (app *Application) Y2020D19_Summary() *utils.Summary
func (*Application) Y2020D20 ¶
func (app *Application) Y2020D20()
func (*Application) Y2020D20P1 ¶
func (app *Application) Y2020D20P1()
func (*Application) Y2020D20P2 ¶
func (app *Application) Y2020D20P2()
func (*Application) Y2020D20_Summary ¶
func (app *Application) Y2020D20_Summary() *utils.Summary
func (*Application) Y2020D21 ¶
func (app *Application) Y2020D21()
func (*Application) Y2020D21P1 ¶
func (app *Application) Y2020D21P1()
func (*Application) Y2020D21P2 ¶
func (app *Application) Y2020D21P2()
func (*Application) Y2020D21_Summary ¶
func (app *Application) Y2020D21_Summary() *utils.Summary
func (*Application) Y2020D22 ¶
func (app *Application) Y2020D22()
func (*Application) Y2020D22P1 ¶
func (app *Application) Y2020D22P1()
func (*Application) Y2020D22P2 ¶
func (app *Application) Y2020D22P2()
func (*Application) Y2020D22_Summary ¶
func (app *Application) Y2020D22_Summary() *utils.Summary
func (*Application) Y2020D23 ¶
func (app *Application) Y2020D23()
func (*Application) Y2020D23P1 ¶
func (app *Application) Y2020D23P1()
func (*Application) Y2020D23P2 ¶
func (app *Application) Y2020D23P2()
func (*Application) Y2020D23_Summary ¶
func (app *Application) Y2020D23_Summary() *utils.Summary
func (*Application) Y2020D24 ¶
func (app *Application) Y2020D24()
func (*Application) Y2020D24P1 ¶
func (app *Application) Y2020D24P1()
func (*Application) Y2020D24P2 ¶
func (app *Application) Y2020D24P2()
func (*Application) Y2020D24P2Render ¶
func (app *Application) Y2020D24P2Render()
func (*Application) Y2020D24_Summary ¶
func (app *Application) Y2020D24_Summary() *utils.Summary
func (*Application) Y2020D25 ¶
func (app *Application) Y2020D25()
func (*Application) Y2020D25P1 ¶
func (app *Application) Y2020D25P1()
func (*Application) Y2020D25P2 ¶
func (app *Application) Y2020D25P2()
func (*Application) Y2020D25_Summary ¶
func (app *Application) Y2020D25_Summary() *utils.Summary
type Bag ¶
type Bag struct { Colour string Children []*BagRelation Parents []*Bag }
Bag is my own impl of a simple Tree I can walk later
type BagGraph ¶
type BagGraph struct {
// contains filtered or unexported fields
}
func NewBagGraphFromFilename ¶
func NewBagGraphFromStrings ¶
func (*BagGraph) GetBagsThatCanContain ¶
func (*BagGraph) GetOrCreate ¶
func (*BagGraph) GetTotalBagsContainedBy ¶
type BagRelation ¶
type BoardingPass ¶
type BoardingPass struct {
// contains filtered or unexported fields
}
func LoadBoardingPassesFromFile ¶
func LoadBoardingPassesFromFile(filename string) []*BoardingPass
func NewBoardingPass ¶
func NewBoardingPass(line string) *BoardingPass
func (*BoardingPass) GetCol ¶
func (bp *BoardingPass) GetCol() int
func (*BoardingPass) GetRow ¶
func (bp *BoardingPass) GetRow() int
func (*BoardingPass) GetSeatId ¶
func (bp *BoardingPass) GetSeatId() int
type CrabCups ¶
func NewCrabCups ¶
func (*CrabCups) StringValue ¶
func (*CrabCups) StringValueAfter ¶
type CrabCups2 ¶
func NewCrabCups2 ¶
type Cup ¶
func (*Cup) AttachRight ¶
Attaches / Inserts the passed cup to the right on this cup
type Day14Program ¶
func NewDay14ProgramFromFilename ¶
func NewDay14ProgramFromFilename(filename string) *Day14Program
func NewDay14ProgramFromStrings ¶
func NewDay14ProgramFromStrings(instructions []string) *Day14Program
func (*Day14Program) ConvertToBinary ¶
func (p *Day14Program) ConvertToBinary(value string) string
func (*Day14Program) ConvertToBitSet ¶
func (p *Day14Program) ConvertToBitSet(value string) *goutils.BitSet
func (*Day14Program) Debug ¶
func (p *Day14Program) Debug()
func (*Day14Program) ExecuteV1 ¶
func (p *Day14Program) ExecuteV1(instruction string)
func (*Day14Program) ExecuteV2 ¶
func (p *Day14Program) ExecuteV2(instruction string)
func (*Day14Program) IsMask ¶
func (p *Day14Program) IsMask(instruction string) bool
func (*Day14Program) IsMem ¶
func (p *Day14Program) IsMem(instruction string) bool
func (*Day14Program) ParseMem ¶
func (p *Day14Program) ParseMem(instruction string) (string, string)
func (*Day14Program) RunV1 ¶
func (p *Day14Program) RunV1()
func (*Day14Program) RunV2 ¶
func (p *Day14Program) RunV2()
func (*Day14Program) Sum ¶
func (p *Day14Program) Sum() int64
type Day16 ¶
func (*Day16) CalculateTicketOrder ¶
func (*Day16) CalculateTicketOrderV1 ¶
func (*Day16) DiscardInvalidTickets ¶
func (d *Day16) DiscardInvalidTickets()
type Food ¶
type Food struct { Key string Value string Ingredients map[string]*Ingredient Allergens map[string]*Allergen }
func (*Food) AddAllergen ¶
func (*Food) AddIngredient ¶
func (food *Food) AddIngredient(ingredient *Ingredient)
func (*Food) ContainsAllergen ¶
func (*Food) ContainsIngredient ¶
func (*Food) NumberOfAllergens ¶
func (*Food) NumberOfIngredients ¶
func (*Food) RemoveAllergen ¶
func (*Food) RemoveIngredient ¶
type FoodDB ¶
type FoodDB struct { Food map[string]*Food Ingredients map[string]*Ingredient Allergens map[string]*Allergen NoAllergens map[string]bool IdentifiedAllergens map[string]string }
func (*FoodDB) BuildIngredientAllergyMap ¶
func (*FoodDB) GetAllergen ¶
func (*FoodDB) GetIngredient ¶
func (db *FoodDB) GetIngredient(value string) *Ingredient
func (*FoodDB) GetIngredientsWithoutAllergens ¶
func (db *FoodDB) GetIngredientsWithoutAllergens() []*Ingredient
func (*FoodDB) RemoveAllergen ¶
func (*FoodDB) RemoveIngredient ¶
type Grid3D ¶
type Grid3D struct {
// contains filtered or unexported fields
}
func (*Grid3D) CountActiveNeighbours ¶
func (*Grid3D) CountActiveTotal ¶
func (*Grid3D) Dimensions ¶
Dimensions returns the min/max points that exist
func (*Grid3D) Neighbours ¶
type Grid4D ¶
type Grid4D struct {
// contains filtered or unexported fields
}
func (*Grid4D) CountActiveNeighbours ¶
func (*Grid4D) CountActiveTotal ¶
func (*Grid4D) Dimensions ¶
Dimensions returns the min/max points that exist
func (*Grid4D) Neighbours ¶
type Hex ¶
func (*Hex) Neighbours ¶
type HexGrid ¶
func NewHexGrid ¶
func NewHexGrid() *HexGrid
func (*HexGrid) BlackCount ¶
func (*HexGrid) CoordinatesCreateHexesAlongTheWay ¶
func (*HexGrid) CoordinatesDontCreateHexesAlongTheWay ¶
Coordinates returns the relative x,y of this address from the centre
func (*HexGrid) Dimensions ¶
TileHeight returns the number of tiles high this grid is
func (*HexGrid) FindByAddress ¶
func (*HexGrid) FindByCoordinates ¶
func (*HexGrid) ParseAddress ¶
ParseAddress takes an address e.g. neeswseenwwswnwswswnw to [ ne, e, sw, se, e, nw, w, sw, nw, sw, sw, nw ]
func (*HexGrid) RenderAnimation ¶
type Image ¶
func NewImageFromString ¶
func (*Image) Arrange ¶
Arrange in this attempt will take the first tile and assign it 0,0 on my grid any connected tile will then have coordinates relative to this image
func (*Image) AttemptAttach ¶
AttemptAttach will attempt to attach on any side to a Tile The tile will be rotated and flipped in all combinations to attempt to attach on any side then it will FlipHorizontal and attempt 4 times, then it will FlipVertical and attempt 4 times
func (*Image) Debug ¶
func (image *Image) Debug(hideTileEdges bool, showBorderBetweenTiles bool, showCoordinates bool) string
Debug prints the arranged image out
type Ingredient ¶
func (*Ingredient) AddAllergen ¶
func (ingredient *Ingredient) AddAllergen(allergen *Allergen)
func (*Ingredient) AddFood ¶
func (ingredient *Ingredient) AddFood(food *Food)
func (*Ingredient) RemoveAllergen ¶
func (ingredient *Ingredient) RemoveAllergen(value string)
type Instruction ¶
func NewInstruction ¶
func NewInstruction(line string) *Instruction
func (*Instruction) Debug ¶
func (i *Instruction) Debug()
type Passport ¶
type Passport struct {
// contains filtered or unexported fields
}
func NewPassport ¶
func NewPassport() *Passport
func (*Passport) IsValidECL ¶
func (*Passport) IsValidHCL ¶
func (*Passport) IsValidHGT ¶
func (*Passport) IsValidPID ¶
func (*Passport) IsValidPart2 ¶
type PassportControl ¶
type PassportControl struct {
// contains filtered or unexported fields
}
TobogganMap represents the whole snow field
func NewPassportControlFromFile ¶
func NewPassportControlFromFile(filename string) *PassportControl
NewPassportControlFromString constructs and populates a snowy field from the passed filename
func NewPassportControlFromString ¶
func NewPassportControlFromString(lines []string) *PassportControl
func (*PassportControl) Get ¶
func (pc *PassportControl) Get(index int) *Passport
func (*PassportControl) Size ¶
func (pc *PassportControl) Size() int
type Player ¶
type Player struct {
Cards []int
}
type Program ¶
type Program struct { Instructions []*Instruction Accumulator int Index int CurrentStep int }
func NewProgram ¶
func NewProgramFromFilename ¶
func (*Program) FindInstructionIndexes ¶
Returns the posiiton of all Instructions with the specified Operation type
func (*Program) GetCurrentInstruction ¶
func (p *Program) GetCurrentInstruction() *Instruction
GetCurrentInstruct returns the Instruction at the current Index
func (*Program) GetInstructionAtIndex ¶
func (p *Program) GetInstructionAtIndex(index int) *Instruction
GetInstructionAtIndex returns the instruct at any index
func (*Program) IsComplete ¶
IsComplete indicates if the program has completed
type QandA ¶
type QandA struct {
// contains filtered or unexported fields
}
func NewQandAFromFile ¶
func (*QandA) SecondTotalForAllGroups ¶
func (*QandA) TotalForAllGroups ¶
parse queries the content in QandA to store total answer
func (*QandA) ValidCharacter ¶
type RegexRule ¶
type RegexRule struct { Line string // the original line 1: 2 3 | 3 2 Key string // the rule id 1 Value string // the 2 3 | 3 2 Evaluated bool // indicates if the regex has been evaluated Regex string // the regex for this rule FullRegex string // the "full" regex composing all regexes (after evaluation) Attempt int IsLooping bool }
func NewRegexRule ¶
func (*RegexRule) IsMessageValid ¶
type RegexRuleEngine ¶
func NewRegexRuleEngine ¶
func NewRegexRuleEngine(input string) *RegexRuleEngine
func (*RegexRuleEngine) Apply ¶
func (r *RegexRuleEngine) Apply(ruleId string, debug bool) (int, []string)
func (*RegexRuleEngine) CheckMessage ¶
func (r *RegexRuleEngine) CheckMessage(message string) (*RegexRule, bool)
func (*RegexRuleEngine) Debug ¶
func (r *RegexRuleEngine) Debug()
func (*RegexRuleEngine) ParseRules ¶
func (r *RegexRuleEngine) ParseRules(DEBUG bool)
Init parses all Rules to create RegexRules
func (*RegexRuleEngine) ParseRulesV2 ¶
func (r *RegexRuleEngine) ParseRulesV2()
Init parses all Rules to create RegexRules
func (*RegexRuleEngine) ParseRulesV3 ¶
func (r *RegexRuleEngine) ParseRulesV3()
func (*RegexRuleEngine) RemoveMessages ¶
func (rre *RegexRuleEngine) RemoveMessages(messages []string)
type Rule ¶
type Rule struct { Name string // contains filtered or unexported fields }
type SeatingPlan ¶
type SeatingPlan struct { TickCount int // the number of ticks that have happened // contains filtered or unexported fields }
func NewSeatingPlanFromFile ¶
func NewSeatingPlanFromFile(filename string, tolerance int, searchFar bool) *SeatingPlan
func NewSeatingPlanFromStrings ¶
func NewSeatingPlanFromStrings(lines []string, tolerance int, searchFar bool) *SeatingPlan
func (*SeatingPlan) ColRowFromIndex ¶
func (sp *SeatingPlan) ColRowFromIndex(index int) (int, int)
func (*SeatingPlan) ConvertAtIndex ¶
func (sp *SeatingPlan) ConvertAtIndex(index int) int
func (*SeatingPlan) CountAdjacentOccupied ¶
func (sp *SeatingPlan) CountAdjacentOccupied(index int) int
CountOccupied checks occupancy in all directions
func (*SeatingPlan) Debug ¶
func (sp *SeatingPlan) Debug() string
func (*SeatingPlan) GetOccupiedCount ¶
func (sp *SeatingPlan) GetOccupiedCount() int
func (*SeatingPlan) IndexFromColRow ¶
func (sp *SeatingPlan) IndexFromColRow(col int, row int) int
func (*SeatingPlan) Put ¶
func (sp *SeatingPlan) Put(position int, value int)
func (*SeatingPlan) Tick ¶
func (sp *SeatingPlan) Tick() int
Tick performs one round of the seating change logic, returning the number of changes made in this round
func (*SeatingPlan) Translate ¶
func (sp *SeatingPlan) Translate(value int) string
type Sequence ¶
type Sequence struct {
// contains filtered or unexported fields
}
func NewSequenceFromFilename ¶
func NewSequenceFromInts ¶
func (*Sequence) ContainsCombination ¶
Searches this sequence for the combination, indicating true/false, index1, index2
func (*Sequence) Subsequence ¶
Returns the previous N entries from index X. ordered ascending
type Ticket ¶
type Ticket struct { PassedRules []*Rule FailedRules []*Rule IntMap *goutils.IntMap // contains filtered or unexported fields }
type Tile ¶
type Tile struct { TileId string Matrix map[string]string Size int NorthEdge string // the string "edge" of teh tile e.g. #....##.## SouthEdge string EastEdge string WestEdge string NorthTile *Tile // when joined to another tile, this is the relationship SouthTile *Tile EastTile *Tile WestTile *Tile Rotation int IsEvaluated bool // contains filtered or unexported fields }
func NewTileFromString ¶
func (*Tile) AttachAnyConnection ¶
AttachAnyConnection attaches to the candidate either NSEW, bool indicates if it attached does NOT rotate any tile, will just attach if it can, will not attach if already attached
func (*Tile) AttachEast ¶
func (*Tile) AttachNorth ¶
func (*Tile) AttachSouth ¶
Attaches to the South of the passed tile
func (*Tile) AttachWest ¶
func (*Tile) CanRotateOrFlip ¶
func (*Tile) Detach ¶
func (tile *Tile) Detach()
Detach removes all connections between the passed Tile and the NSEW tiles it has
func (*Tile) FindSeaMonsters ¶
func (*Tile) FlipHorizontal ¶
FlipHorizontal Performs a Horizontal 'flip' of the Tile
func (*Tile) FlipVertical ¶
FlipVertical Performs a Vertical 'flip' of the Tile
func (*Tile) GetConnectionName ¶
func (*Tile) IsBottomLeftCorner ¶
func (*Tile) IsBottomRightCorner ¶
func (*Tile) IsComplete ¶
func (*Tile) IsSeaMonster ¶
func (*Tile) IsTopLeftCorner ¶
func (*Tile) IsTopRightCorner ¶
func (*Tile) Rotate ¶
Rotates the tile 90 degrees clockwise, removing any relationships this tile has
func (*Tile) RotateUntilAllRegexMatch ¶
func (*Tile) SetCanRotateOrFlip ¶
func (*Tile) TotalConnections ¶
TotalConnections - returns the nnuber of connections this tile has
type TobogganMap ¶
type TobogganMap struct {
// contains filtered or unexported fields
}
TobogganMap represents the whole snow field
func NewTobogganMap ¶
func NewTobogganMap() *TobogganMap
NewTobogganMap constructs a new empty snowy field
func NewTobogganMapFromFile ¶
func NewTobogganMapFromFile(filename string) *TobogganMap
NewTobogganMapFromFile constructs and populates a snowy field from the passed filename
func (*TobogganMap) Add ¶
func (tm *TobogganMap) Add(line string) int
Add appends a snowy line to the Map
func (*TobogganMap) CountTreesWeEncounter ¶
func (tm *TobogganMap) CountTreesWeEncounter(moveColsBy int, moveRowsBy int) int
CountTreesWeEncounter a general purpose walk to the bottom and keep moving right where I moduluse the move right
func (*TobogganMap) Get ¶
func (tm *TobogganMap) Get(col int, row int) string
Get returns the entry at col/row
func (*TobogganMap) GetRow ¶
func (tm *TobogganMap) GetRow(row int) *TobogganMapRow
GetRow returns a specific 0-indexed row from the snowy field
type TobogganMapRow ¶
type TobogganMapRow struct {
// contains filtered or unexported fields
}
TobogganMapRow represents a single line of snow and trees
func (*TobogganMapRow) Debug ¶
func (row *TobogganMapRow) Debug()
Debug prints this snowly line out to STDOUT
func (*TobogganMapRow) Get ¶
func (row *TobogganMapRow) Get(index int) string
Get returns the thing that exists at position index; modulus the index as the row repeats
func (*TobogganMapRow) IsTree ¶
func (row *TobogganMapRow) IsTree(col int) bool
IsTree indicates if we have landed on a tree
type ValueData ¶
func NewValueData ¶
type ValueStore ¶
func NewValueStore ¶
func NewValueStore() *ValueStore
func (*ValueStore) Get ¶
func (v *ValueStore) Get(key int) *ValueData
type WeirdCalculator ¶
type WeirdCalculator struct { }
func NewWeirdCalculator ¶
func NewWeirdCalculator() *WeirdCalculator
func (*WeirdCalculator) Calculate ¶
func (c *WeirdCalculator) Calculate(sum string) int
func (*WeirdCalculator) CalculateV2 ¶
func (c *WeirdCalculator) CalculateV2(sum string) int
func (*WeirdCalculator) Debug ¶
func (c *WeirdCalculator) Debug(sum string, expected int)
func (*WeirdCalculator) DebugV2 ¶
func (c *WeirdCalculator) DebugV2(sum string, expected int)
Source Files ¶
- aoc2020_01.go
- aoc2020_01_data.go
- aoc2020_02.go
- aoc2020_03.go
- aoc2020_04.go
- aoc2020_05.go
- aoc2020_06.go
- aoc2020_07.go
- aoc2020_08.go
- aoc2020_09.go
- aoc2020_10.go
- aoc2020_11.go
- aoc2020_12.go
- aoc2020_13.go
- aoc2020_14.go
- aoc2020_14_part2.go
- aoc2020_15.go
- aoc2020_16.go
- aoc2020_17.go
- aoc2020_17_part2.go
- aoc2020_18.go
- aoc2020_19 data.go
- aoc2020_19.go
- aoc2020_20.go
- aoc2020_20_data.go
- aoc2020_20_image.go
- aoc2020_20_tile.go
- aoc2020_21.go
- aoc2020_21_data.go
- aoc2020_22_data.go
- aoc2020_22_part1.go
- aoc2020_22_part2.go
- aoc2020_23_part1.go
- aoc2020_23_part2.go
- aoc2020_23_part3.go
- aoc2020_24.go
- aoc2020_24_data.go
- aoc2020_25.go
- app.go