This is a TypeScript boilerplate for Advent of Code.
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)
install all required dependencies with npm i
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 puzzlesindex.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
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.
You can ran test for all puzzles agains their expected output with npm t
this will test all the solutions in the days
folder
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.