Skip to content

brucala/AdventOfCode2022.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Advent of Code 2022

Solutions to Advent of Code 2022 edition in Julia.

Benchmarks

To run the benchmarks:

$ julia cli/benchmark.jl
┌─────┬──────┬────────────┬─────────────┬──────────┐
│ day │ part │       time │      memory │   allocs │
├─────┼──────┼────────────┼─────────────┼──────────┤
│   1 │    0 │ 328.739 μs │  400.34 KiB │     3158 │
│   1 │    1 │  27.510 ns │     0 bytes │        0 │
│   1 │    2 │   1.240 μs │    2.14 KiB │        2 │
├─────┼──────┼────────────┼─────────────┼──────────┤
│   2 │    0 │ 590.212 μs │ 1022.09 KiB │     7535 │
│   2 │    1 │  65.009 μs │   19.61 KiB │        2 │
│   2 │    2 │  64.880 μs │   19.61 KiB │        2 │
├─────┼──────┼────────────┼─────────────┼──────────┤
│   3 │    0 │  13.574 μs │   42.70 KiB │       30 │
│   3 │    1 │ 252.105 μs │  508.44 KiB │     5088 │
│   3 │    2 │ 215.286 μs │  299.97 KiB │     3106 │
├─────┼──────┼────────────┼─────────────┼──────────┤
│   4 │    0 │ 946.497 μs │    1.60 MiB │    22034 │
│   4 │    1 │ 552.663 ns │     0 bytes │        0 │
│   4 │    2 │ 622.793 ns │     0 bytes │        0 │
├─────┼──────┼────────────┼─────────────┼──────────┤
│   5 │    0 │ 275.953 μs │  205.25 KiB │     1119 │
│   5 │    1 │ 114.076 μs │    4.44 KiB │       39 │
│   5 │    2 │ 115.189 μs │  148.31 KiB │     2405 │
├─────┼──────┼────────────┼─────────────┼──────────┤
│   6 │    0 │   3.343 μs │    9.70 KiB │       25 │
│   6 │    1 │  55.918 μs │   17.97 KiB │      203 │
│   6 │    2 │  83.378 μs │   12.61 KiB │      101 │
├─────┼──────┼────────────┼─────────────┼──────────┤
│   7 │    0 │ 447.512 μs │    1.02 MiB │     9174 │
│   7 │    1 │  27.268 μs │   65.09 KiB │      954 │
│   7 │    2 │  27.198 μs │   65.09 KiB │      954 │
├─────┼──────┼────────────┼─────────────┼──────────┤
│   8 │    0 │ 143.467 μs │  238.22 KiB │       47 │
│   8 │    1 │ 186.591 μs │  602.62 KiB │     8936 │
│   8 │    2 │ 497.140 μs │  588.06 KiB │     9409 │
├─────┼──────┼────────────┼─────────────┼──────────┤
│   9 │    0 │ 450.641 μs │  741.56 KiB │     4034 │
│   9 │    1 │ 343.980 μs │  364.11 KiB │       24 │
│   9 │    2 │ 548.381 μs │   92.11 KiB │       20 │
├─────┼──────┼────────────┼─────────────┼──────────┤
│  10 │    0 │   7.386 μs │    8.88 KiB │       29 │
│  10 │    1 │  22.547 μs │   35.59 KiB │      268 │
│  10 │    2 │  29.630 μs │   43.78 KiB │      303 │
├─────┼──────┼────────────┼─────────────┼──────────┤
│  11 │    0 │  39.797 μs │   31.33 KiB │      332 │
│  11 │    1 │  98.849 μs │   11.20 KiB │      298 │
│  11 │    2 │  65.143 ms │   37.00 MiB │  2424303 │
├─────┼──────┼────────────┼─────────────┼──────────┤
│  12 │    0 │  38.626 μs │   67.67 KiB │       44 │
│  12 │    1 │   8.142 ms │  667.38 KiB │     5308 │
│  12 │    2 │ 725.146 ms │   79.08 MiB │   629088 │
├─────┼──────┼────────────┼─────────────┼──────────┤
│  13 │    0 │ 128.157 ms │    2.48 MiB │    45864 │
│  13 │    1 │  21.005 μs │    6.44 KiB │      103 │
│  13 │    2 │ 989.404 μs │  460.89 KiB │    20443 │
├─────┼──────┼────────────┼─────────────┼──────────┤
│  14 │    0 │   1.276 ms │    1.74 MiB │    28910 │
│  14 │    1 │ 520.833 μs │   59.20 KiB │       92 │
│  14 │    2 │ 612.435 ms │    1.63 MiB │       97 │
├─────┼──────┼────────────┼─────────────┼──────────┤
│  15 │    0 │  39.526 μs │   45.14 KiB │      722 │
│  15 │    1 │ 856.924 ns │    3.03 KiB │       29 │
│  15 │    2 │ 999.243 ms │    2.77 GiB │ 29601144 │
├─────┼──────┼────────────┼─────────────┼──────────┤
│  16 │    0 │ 122.121 μs │  268.91 KiB │     1865 │
│  16 │    1 │ 106.133 ms │  115.19 MiB │  1125289 │
│  16 │    2 │    1.504 s │  996.45 MiB │  9691898 │
├─────┼──────┼────────────┼─────────────┼──────────┤
│  17 │    0 │  18.329 μs │   60.83 KiB │       27 │
│  17 │    1 │    1.324 s │  322.21 MiB │ 20732215 │
│  17 │    2 │    3.904 s │  936.08 MiB │ 60671021 │
├─────┼──────┼────────────┼─────────────┼──────────┤
│  18 │    0 │   1.236 ms │    2.04 MiB │    22947 │
│  18 │    1 │ 242.202 μs │     0 bytes │        0 │
│  18 │    2 │ 186.965 ms │    2.09 MiB │    12795 │
├─────┼──────┼────────────┼─────────────┼──────────┤
│  19 │    0 │  56.253 μs │   73.48 KiB │      869 │
│  19 │    1 │ 358.019 ms │  816.13 MiB │  8914293 │
│  19 │    2 │    3.422 s │    7.39 GiB │ 82671797 │
├─────┼──────┼────────────┼─────────────┼──────────┤
│  20 │    0 │ 322.262 μs │  458.27 KiB │       35 │
│  20 │    1 │  17.128 ms │  684.03 KiB │    23475 │
│  20 │    2 │ 193.731 ms │  730.69 KiB │    23960 │
├─────┼──────┼────────────┼─────────────┼──────────┤
│  21 │    0 │   1.942 ms │    2.42 MiB │    30085 │
│  21 │    1 │ 119.142 μs │    3.73 KiB │      239 │
│  21 │    2 │   2.303 ms │   24.31 KiB │     1556 │
├─────┼──────┼────────────┼─────────────┼──────────┤
│  22 │    0 │   1.139 ms │    2.03 MiB │    13038 │
│  22 │    1 │  37.728 ms │    5.43 MiB │   147611 │
│  22 │    2 │   7.737 ms │    4.29 MiB │    93726 │
├─────┼──────┼────────────┼─────────────┼──────────┤
│  23 │    0 │  32.821 μs │  125.27 KiB │       36 │
│  23 │    1 │  96.684 ms │  129.90 MiB │  1373837 │
│  23 │    2 │    1.104 s │  736.11 MiB │  7802287 │
├─────┼──────┼────────────┼─────────────┼──────────┤
│  24 │    0 │ 105.384 μs │  417.42 KiB │     3216 │
│  24 │    1 │ 150.075 ms │    8.69 MiB │       41 │
│  24 │    2 │ 474.123 ms │   26.07 MiB │      133 │
├─────┼──────┼────────────┼─────────────┼──────────┤
│  25 │    0 │   6.743 μs │    9.56 KiB │       29 │
│  25 │    1 │  11.031 μs │    6.91 KiB │      176 │
│  25 │    2 │   0.019 ns │     0 bytes │        0 │
└─────┴──────┴────────────┴─────────────┴──────────┘

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 2022 in Julia

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages