david-ds / adventofcode-2020

Solutions for https://adventofcode.com/2020

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Advent of code 2020 solutions

⁣    🌟
    🎄
   🎄🎄
  🎄🎄🎄
 🎄🎄🎄🎄
🎄🎄🎄🎄🎄
  🎁🎁🎁

These are proposed solutions for the Advent of Code 2020.

The solutions are automatically tested with github-actions.

Build Status

Usage

use ./aoc script

usage: aoc <command> [<args>]

aoc commands are:
   run      Runs submissions
   create   Creates a new submission
   config   Configures user's parameters

Installation

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
# And now aoc can work
./aoc run

Examples

Run last problem

./aoc run
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Running submissions for day 04:

* part 2:
---------------------------------------------------
Avg over all inputs
---------------------------------------------------
----------  ----------  -----------  ---
silvestre      78452        1.99 ms  py
degemer        43695        2.39 ms  py
jules          23037        2.49 ms  py
david          36371        2.94 ms  py
thomas          9763        2.97 ms  py
ayoub         136461        5.85 ms  cpp
evqna          49137        6.65 ms  cpp
badouralix     51232        7.26 ms  go
tpxp           41668      133.63 ms  rb
----------  ----------  -----------  ---

Run specific problems from specific users

./aoc run -d 1 -d 2 -p 1 -a ayoub -a david
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Running submissions for day 01:

* part 1:
---------------------------------------------------
Avg over all inputs
---------------------------------------------------
-----  -------  -----------  ---
david    543        0.46 ms  py
ayoub    445        4.94 ms  cpp
-----  -------  -----------  ---
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Running submissions for day 02:

* part 1:
---------------------------------------------------
Avg over all inputs
---------------------------------------------------
-----  --------  -----------  ---
david    5658        1.22 ms  py
ayoub    6448        4.84 ms  cpp
-----  --------  -----------  ---

You can use -r to run each submission on it's own input, or -e to print non-aggregated results.
see ./aoc run -h for full arguments description.

Contribute

To participate, you'll have to create your own files containing your solutions (see next sections for details on how to create them).

You can add other functions & modules if you need to. Any external dependency should be added to the appropriate files (requirements.txt, package.json, and so on).

Once you tested your solution you can submit it by making a PR and a GitHub action will check that your code generates the same outputs as others' code.

For now we support c, c++, java, javascript (with node and deno), typescript (with deno) , go, python 3 (+ cython), ruby, rust (stable), julia, bash, nim, v,zig and ocamlscripts.

New submission with aoc

You can use ./aoc create tool to create a new empty submission:

usage: aoc create [-h] [-a AUTHOR] [-d DAY] [-p PART]
                  [-l {c,cpp,go,intcode,java,js,deno.js,deno.ts,ml,nim,py,pyx,rb,rs,sh,v,zig}]

Create a new submission

optional arguments:
  -a AUTHOR, --author AUTHOR
                        submission author
  -d DAY, --day DAY     problem day
  -p PART, --part PART  problem part
  -l {c,cpp,go,intcode,java,js,deno.js,deno.ts,ml,nim,py,pyx,rb,rs,sh,v,zig}, --language {c,cpp,go,intcode,java,js,deno.js,deno.ts,ml,nim,py,pyx,rb,rs,sh,v,zig}
                        submission language

you can also use ./aoc config to setup your local profile

usage: aoc config [-h] username {c,cpp,go,intcode,java,js,deno.js,deno.ts,ml,nim,py,pyx,rb,rs,sh,v,zig}

Configures user parameters

positional arguments:
  username              prefered username
  {c,cpp,go,intcode,java,js,deno.js,deno.ts,ml,nim,py,pyx,rb,rs,sh,v,zig}
                        prefered programming language

New submission without aoc

If you don't use ./aoc create tool you should follow this convention:

day-[number]/part-[number]/[username].py    # your submission code
day-[number]/input/[username].txt           # your input file

Your submission code should follow templates written in the tool/templates/ folder (there is one for each language).

Installing runners to try out other people code

Go

brew install go

Rust

Follow: https://www.rust-lang.org/tools/install

Node

brew install node

Deno

brew install deno

or

curl -fsSL https://deno.land/x/install/install.sh | sh

Nim

brew install nim

OCaml

install esy, esy will take care of installing ocaml and building the dependencies on the first execution (might take a while)

npm install -g esy

History

About

Solutions for https://adventofcode.com/2020

License:MIT License


Languages

Language:Python 32.7%Language:Rust 17.3%Language:Go 17.1%Language:C++ 9.5%Language:Zig 6.0%Language:OCaml 4.0%Language:Cython 3.9%Language:Julia 3.5%Language:Nim 2.2%Language:JavaScript 1.9%Language:C 1.2%Language:Java 0.2%Language:Ruby 0.1%Language:Shell 0.1%Language:TypeScript 0.1%Language:V 0.0%