Skip to content

brucala/AdventOfCode2021.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

Solutions to Advent of Code 2021 in Julia

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages