Skip to content

My Advent of Code solutions for 2022. I make no guarantees for the efficiency of this code. I can, however, guarantee that it has O(gets it done) complexity.

License

Notifications You must be signed in to change notification settings

samollari/advent-of-code-2022

Repository files navigation

🎄 AdventOfCode-typescript-template 🎄

This is a TypeScript boilerplate for Advent of Code.

👷‍♂️ Project structure

the project has the following structure:

src
- days: contains the solutions for the puzzles
- scripts: utility scripts for development lifecycle
- types: types and interfaces
- utils: utility scripts used for development and problem solving (i.e read an input file)

🚀 Getting started

install all required dependencies with npm i

🎄 Adding a new puzzle

when the new AoC puzzle is available run npm run init-day {day}

replace {day} with the number of the advent day, i.e. npm run init-day 2.

This command will create a new directory in the days folder with the following content

  • Puzzle.ts: the boilerplate class with the placeholder methods for solving both daily puzzles
  • index.txt: the input file where to add the puzzle input

The structure of the boilerplate class is the following:

import Puzzle from '../../types/AbstractPuzzle';

export default class ConcretePuzzle extends Puzzle {
  public solveFirst(): string {
    /*
     *
     * HERE GOES THE SOLUTION FOR THE FIRST PUZZLE
     *
     */
    return 'day 1 solution 1';
  }

  public getFirstExpectedResult(): string {
    /*
     *
     * RETURN THE EXPECTED SOLUTION FOR THE FIRST TEST INPUT
     * USEFULL FOR TEST RUNNING
     *
     */
    return 'day 1 solution 1';
  }

  public solveSecond(): string {
    /*
     *
     * HERE GOES THE SOLUTION FOR THE SECOND PUZZLE
     *
     */
    return 'day 1 solution 2';
  }

  public getSecondExpectedResult(): string {
    /*
     *
     * RETURN THE EXPECTED SOLUTION FOR THE SECOND TEST INPUT
     * USEFULL FOR TEST RUNNING
     *
     */
    return 'day 1 solution 2';
  }
}

in each method of the class you can access the test input with this.input

🔧 Development

When your solution is ready, or when you want to start developing incrementally run npm run dev {day} where {day} is the day you are working on, i.e. npm run dev 1 will run the puzzle class for day 1.

🧪 Testing

You can ran test for all puzzles agains their expected output with npm t this will test all the solutions in the days folder

🛫 Contributing

Every contribution is welcome. Just fork this repo and open a MR with your changes, and don't forget to add your name to the contributors section of this README.

👨👩 Contributors

Francesco Maida

About

My Advent of Code solutions for 2022. I make no guarantees for the efficiency of this code. I can, however, guarantee that it has O(gets it done) complexity.

Topics

Resources

License

Stars

Watchers

Forks

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy