Solutions to Advent of Code 2022 edition in Julia.
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.
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