Skip to content

Latest commit

 

History

History
142 lines (129 loc) · 9.61 KB

README.md

File metadata and controls

142 lines (129 loc) · 9.61 KB

Advent of Code 2021

Solutions to Advent of Code 2021 edition in Julia.

Benchmarks

To run the benchmarks:

$ julia cli/benchmark.jl
┌─────┬──────┬────────────┬────────────┬──────────┐
│ day │ part │       time │     memory │   allocs │
├─────┼──────┼────────────┼────────────┼──────────┤
│   1 │    0 │ 127.483 μs │ 434.36 KiB │     6035 │
│   1 │    1 │   1.608 μs │  20.30 KiB │        4 │
│   1 │    2 │  43.942 μs │ 192.14 KiB │     2003 │
├─────┼──────┼────────────┼────────────┼──────────┤
│   2 │    0 │ 277.509 μs │ 371.02 KiB │     2033 │
│   2 │    1 │ 678.843 ns │    0 bytes │        0 │
│   2 │    2 │ 783.379 ns │    0 bytes │        0 │
├─────┼──────┼────────────┼────────────┼──────────┤
│   3 │    0 │ 229.407 μs │ 308.42 KiB │       51 │
│   3 │    1 │   4.280 μs │   3.34 KiB │       63 │
│   3 │    2 │  55.354 μs │  18.66 KiB │      331 │
├─────┼──────┼────────────┼────────────┼──────────┤
│   4 │    0 │ 511.318 μs │ 565.81 KiB │     8254 │
│   4 │    1 │ 159.582 μs │  80.05 KiB │     1516 │
│   4 │    2 │ 159.688 μs │  80.48 KiB │     1516 │
├─────┼──────┼────────────┼────────────┼──────────┤
│   5 │    0 │ 789.002 μs │ 916.69 KiB │    14005 │
│   5 │    1 │   6.964 ms │  10.68 MiB │      369 │
│   5 │    2 │  13.882 ms │  12.45 MiB │      542 │
├─────┼──────┼────────────┼────────────┼──────────┤
│   6 │    0 │  24.824 μs │  27.30 KiB │       31 │
│   6 │    1 │  26.635 μs │  45.62 KiB │      326 │
│   6 │    2 │  67.999 μs │ 139.12 KiB │     1030 │
├─────┼──────┼────────────┼────────────┼──────────┤
│   7 │    0 │  83.004 μs │  82.14 KiB │       32 │
│   7 │    1 │   2.314 μs │  15.88 KiB │        2 │
│   7 │    2 │   1.426 μs │  15.88 KiB │        2 │
├─────┼──────┼────────────┼────────────┼──────────┤
│   8 │    0 │   1.094 ms │   1.38 MiB │    13834 │
│   8 │    1 │  13.555 μs │  37.50 KiB │      400 │
│   8 │    2 │   1.322 ms │   1.66 MiB │    19232 │
├─────┼──────┼────────────┼────────────┼──────────┤
│   9 │    0 │ 209.610 μs │ 307.77 KiB │       48 │
│   9 │    1 │   1.927 ms │   6.85 MiB │    80000 │
│   9 │    2 │   3.384 ms │  12.71 MiB │   116597 │
├─────┼──────┼────────────┼────────────┼──────────┤
│  10 │    0 │  97.995 μs │  28.53 KiB │       29 │
│  10 │    1 │ 130.774 μs │  30.94 KiB │      330 │
│  10 │    2 │ 166.011 μs │  38.97 KiB │      389 │
├─────┼──────┼────────────┼────────────┼──────────┤
│  11 │    0 │   5.892 μs │   5.98 KiB │       39 │
│  11 │    1 │ 235.263 μs │ 442.89 KiB │     5052 │
│  11 │    2 │ 597.653 μs │   1.08 MiB │    12595 │
├─────┼──────┼────────────┼────────────┼──────────┤
│  12 │    0 │  15.251 μs │  20.77 KiB │      314 │
│  12 │    1 │   3.193 ms │   6.39 MiB │    91585 │
│  12 │    2 │ 125.915 ms │ 204.99 MiB │  2938737 │
├─────┼──────┼────────────┼────────────┼──────────┤
│  13 │    0 │ 483.460 μs │ 604.05 KiB │     9553 │
│  13 │    1 │ 228.488 μs │ 245.12 KiB │     8852 │
│  13 │    2 │   1.152 ms │ 923.81 KiB │    27387 │
├─────┼──────┼────────────┼────────────┼──────────┤
│  14 │    0 │  47.717 μs │ 100.00 KiB │     1537 │
│  14 │    1 │ 214.679 μs │ 464.92 KiB │     2880 │
│  14 │    2 │   1.305 ms │   1.94 MiB │    12486 │
├─────┼──────┼────────────┼────────────┼──────────┤
│  15 │    0 │ 193.718 μs │ 431.72 KiB │       46 │
│  15 │    1 │   6.076 ms │   4.24 MiB │    40099 │
│  15 │    2 │ 192.774 ms │ 105.34 MiB │  1000641 │
├─────┼──────┼────────────┼────────────┼──────────┤
│  16 │    0 │   3.533 μs │   4.38 KiB │       25 │
│  16 │    1 │ 812.626 μs │   2.11 MiB │     7574 │
│  16 │    2 │ 770.983 μs │   2.03 MiB │     6237 │
├─────┼──────┼────────────┼────────────┼──────────┤
│  17 │    0 │   4.238 μs │   3.67 KiB │       51 │
│  17 │    1 │   1.697 ns │    0 bytes │        0 │
│  17 │    2 │  16.407 ms │ 363.98 KiB │       22 │
├─────┼──────┼────────────┼────────────┼──────────┤
│  18 │    0 │ 177.818 μs │ 134.86 KiB │     2418 │
│  18 │    1 │  15.081 ms │  10.65 MiB │   349089 │
│  18 │    2 │ 239.023 ms │ 150.38 MiB │  4927526 │
├─────┼──────┼────────────┼────────────┼──────────┤
│  19 │    0 │   1.830 ms │   2.88 MiB │    18082 │
│  19 │    1 │ 413.023 ms │  78.42 MiB │  1071291 │
│  19 │    2 │  22.885 μs │  62.92 KiB │      781 │
├─────┼──────┼────────────┼────────────┼──────────┤
│  20 │    0 │ 243.043 μs │  91.98 KiB │      159 │
│  20 │    1 │   1.155 ms │  16.81 KiB │      108 │
│  20 │    2 │  71.648 ms │ 751.11 KiB │     2700 │
├─────┼──────┼────────────┼────────────┼──────────┤
│  21 │    0 │   3.630 μs │   1.97 KiB │       28 │
│  21 │    1 │ 757.795 ns │  160 bytes │        2 │
│  21 │    2 │   7.492 ms │  10.58 MiB │    93857 │
├─────┼──────┼────────────┼────────────┼──────────┤
│  22 │    0 │   1.477 ms │   1.17 MiB │    17540 │
│  22 │    1 │   2.345 ms │ 427.78 KiB │     7143 │
│  22 │    2 │    1.147 s │   1.15 GiB │ 15635123 │
├─────┼──────┼────────────┼────────────┼──────────┤
│  23 │    0 │   4.070 μs │   2.81 KiB │       34 │
│  23 │    1 │    1.215 s │ 598.96 MiB │  7341533 │
│  23 │    2 │    1.829 s │   1.12 GiB │ 11437893 │
├─────┼──────┼────────────┼────────────┼──────────┤
│  24 │    0 │ 204.136 μs │ 141.81 KiB │     1195 │
│  24 │    1 │   9.692 ms │   4.65 MiB │   125898 │
│  24 │    2 │    2.103 s │ 798.28 MiB │ 22536832 │
├─────┼──────┼────────────┼────────────┼──────────┤
│  25 │    0 │ 285.275 μs │ 296.20 KiB │       52 │
│  25 │    1 │  96.228 ms │  16.89 MiB │    14616 │
└─────┴──────┴────────────┴────────────┴──────────┘

Part 0 refers to the parsing of the input data.

Other CLI tools

To generate (src and test) templates for a given day:

$ julia cli/generate_day.jl -h
usage: generate_day.jl [-h] nday

positional arguments:
  nday        day number for files to be generated

optional arguments:
  -h, --help  show this help message and exit

To download the input data of a given day:

$ julia cli/get_input.jl -h
usage: get_input.jl [-d DAY] [-h]

optional arguments:
  -d, --day DAY  day number for the input to be downloaded. If not
                 given take today's input (type: Int64)
  -h, --help     show this help message and exit