2023-02
Mix.install(
[
{:benchee, "~> 1.2"},
{:exla, "~> 0.6.0"},
{:kino, "~> 0.11.0"},
{:kino_aoc, "~> 0.1.5"},
{:nx, "~> 0.6.0"}
],
config: [
nx: [
default_backend: EXLA.Backend,
default_defn_options: [compiler: EXLA]
],
exla: [
default_client: :host,
clients: [
host: [platform: :host],
cuda: [platform: :cuda]
]
]
],
system_env: [
XLA_TARGET: "cuda120"
]
)
Nx.global_default_backend(EXLA.Backend)
Problem
{:ok, input} = KinoAOC.download_puzzle("2023", "2", System.fetch_env!("LB_AOC_SESSION"))
{:ok,
"Game 1: 12 red, 2 green, 5 blue; 9 red, 6 green, 4 blue; 10 red, 2 green, 5 blue; 8 blue, 9 red\nGame 2: 3 green, 7 red; 3 blue, 5 red; 2 green, 1 blue, 6 red; 3 green, 2 red, 3 blue\nGame 3: 12 red, 18 blue, 3 green; 14 red, 4 blue, 2 green; 4 green, 15 red\nGame 4: 14 blue, 8 red, 10 green; 7 green, 9 blue, 4 red; 4 green, 5 red\nGame 5: 2 red, 1 blue, 4 green; 1 blue, 1 red, 5 green; 6 green, 3 red; 10 blue, 4 green, 1 red\nGame 6: 5 red, 5 blue, 1 green; 5 blue, 15 red, 2 green; 3 green, 1 red, 9 blue\nGame 7: 9 red, 8 blue, 13 green; 9 red, 7 blue, 10 green; 7 blue, 2 red, 11 green; 4 red, 6 blue, 10 green; 3 blue, 12 green, 1 red\nGame 8: 20 red, 5 green, 10 blue; 14 red, 8 blue, 5 green; 5 green, 4 blue, 9 red; 18 red, 1 green; 2 blue, 1 green, 5 red\nGame 9: 3 blue; 3 blue, 4 green, 1 red; 8 green, 2 blue, 4 red; 5 green, 4 red\nGame 10: 18 red, 11 green, 3 blue; 2 blue, 19 red, 7 green; 4 green, 1 blue, 6 red; 4 green, 2 red, 4 blue; 10 green, 5 red, 2 blue; 13 red, 12 green, 4 blue\nGame 11: 5 green, 5 blue, 3 red; 2 red, 8 blue, 4 green; 4 blue, 4 green, 2 red; 1 blue, 3 red, 2 green; 4 blue, 4 green; 6 blue, 2 red\nGame 12: 6 blue, 1 green, 4 red; 12 blue, 4 red; 12 blue, 2 red, 6 green\nGame 13: 11 red, 17 blue, 7 green; 20 red, 12 green, 9 blue; 15 red, 15 green, 14 blue; 7 red, 6 green, 3 blue\nGame 14: 8 red, 17 green, 6 blue; 5 red, 13 blue, 7 green; 2 red, 15 green, 4 blue; 9 blue, 2 green; 7 green, 2 blue, 8 red; 10 green, 14 blue, 10 red\nGame 15: 14 red, 4 green, 4 blue; 14 red, 2 green, 16 blue; 10 blue, 2 green, 6 red\nGame 16: 2 red, 3 green; 5 green; 1 red, 1 blue; 2 red, 3 green, 1 blue; 5 red, 4 green; 5 red, 4 green\nGame 17: 4 blue, 3 green, 9 red; 3 blue, 8 red, 1 green; 1 blue, 5 green; 8 green, 2 red; 10 red, 1 green\nGame 18: 10 blue, 5 red; 1 green, 9 red, 9 blue; 5 blue, 3 red; 3 red, 1 blue; 2 blue, 9 red, 1 green; 6 red, 7 blue, 1 green\nGame 19: 9 green, 2 red, 12 blue; 3 green, 9 red, 16 blue; 2 green, 17 blue; 11 green, 3 blue, 7 red; 2 red, 10 blue, 11 green\nGame 20: 17 blue, 16 green; 13 green, 12 blue, 13 red; 6 red, 9 green, 6 blue\nGame 21: 1 green, 3 red, 1 blue; 1 blue, 2 green, 2 red; 2 green, 1 blue, 3 red\nGame 22: 7 green, 3 blue, 5 red; 2 green, 14 red, 3 blue; 2 green, 17 red; 2 blue, 15 red, 6 green; 4 green, 1 blue, 17 red\nGame 23: 4 blue, 2 red; 2 red, 7 blue, 1 green; 6 red, 5 blue, 5 green; 9 red, 4 blue; 10 blue, 8 red, 11 green\nGame 24: 1 red, 9 green, 5 blue; 14 green, 4 blue, 2 red; 5 blue, 1 red, 11 green; 3 blue, 2 red, 4 green\nGame 25: 3 green, 2 red, 1 blue; 2 blue, 10 green, 1 red; 8 red, 4 green, 1 blue; 3 blue, 15 red, 6 green; 2 blue, 13 red, 8 green; 2 red, 5 blue, 5 green\nGame 26: 5 green, 5 red; 12 green; 5 green, 3 blue, 4 red; 1 blue, 1 red, 17 green; 2 blue, 18 green\nGame 27: 1 blue, 7 green, 3 red; 3 red, 1 green, 13 blue; 4 green, 8 blue; 1 red, 3 green, 4 blue; 9 blue, 2 red\nGame 28: 9 red, 2 green, 5 blue; 5 red, 9 green; 5 blue, 1 red\nGame 29: 4 green, 10 blue, 13 red; 2 red, 5 green, 5 blue; 2 red, 9 green, 11 blue; 9 blue, 9 red, 13 green; 13 blue, 2 green, 14 red; 3 green, 8 blue, 5 red\nGame 30: 3 green, 7 red, 3 blue; 5 green, 5 blue, 12 red; 14 red, 6 green, 11 blue; 7 blue, 9 green, 11 red; 10 red, 1 blue, 4 green\nGame 31: 6 green, 5 blue, 17 red; 16 blue, 17 green, 14 red; 13 green, 13 blue, 3 red; 18 red, 8 green, 14 blue; 18 green, 1 blue; 16 red, 6 blue\nGame 32: 12 green, 2 blue; 6 blue, 5 red, 10 green; 13 green, 2 blue; 2 red, 6 blue, 6 green; 9 green, 8 red\nGame 33: 4 blue, 6 red, 2 green; 7 red, 5 blue; 3 blue, 1 red, 1 green\nGame 34: 2 red, 7 blue, 1 green; 2 blue, 1 green, 6 red; 6 red, 3 green, 7 blue; 4 green, 13 red, 1 blue; 15 blue, 1 green, 5 red\nGame 35: 8 blue, 12 red, 7 green; 2 blue, 14 red, 3 green; 14 green, 8 blue, 7 red; 15 red, 12 blue, 12 green; 11 blue, 14 red, 1 green\nGame 36: 11 red, 8 green, 2 blue; 17 red, 2 blue; 3 blue, 8 green, 19 red; 6 red, 3 blue, 3 green; 8 red, 5 green\nGame 37: 2 blue, 3 red, 12 green; 3 red, 7 green, 4 blue; 7 blue, 3 red, 8 green; 13 green, 3 red, 2 blue; 2 green\nGame 38: 2 blue, 14 red, 17 green; 1" <> ...}
Solvers
defmodule PartOne do
@doc ~S"""
iex> PartOne.parse("Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green")
[{1, 4, 2, 6}]
iex> PartOne.parse("Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green\nGame 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue")
[{1, 4, 2, 6}, {2, 1, 3, 4}]
"""
def parse(input) do
input
|> String.split("\n", trim: true)
|> Enum.map(&parse_line/1)
end
defp parse_line(<<"Game ", rest::binary>>) do
[game, rest] = String.split(rest, ": ", parts: 2)
rest
|> String.split("; ")
|> Stream.map(&parse_pull/1)
|> Enum.reduce({0, 0, 0}, fn {lr, lg, lb}, {r, g, b} ->
{max(lr, r), max(lg, g), max(lb, b)}
end)
|> Tuple.insert_at(0, String.to_integer(game))
end
defp parse_pull(pull) do
for count <- String.split(pull, ", "),
[count, color] = String.split(count, " ", parts: 2),
count = String.to_integer(count),
reduce: {0, 0, 0} do
{r, g, b} ->
case color do
"red" ->
{max(r, count), g, b}
"green" ->
{r, max(g, count), b}
"blue" ->
{r, g, max(b, count)}
end
end
end
def process(input) do
input
|> Stream.filter(fn {_game, red, green, blue} ->
red <= 12 and green <= 13 and blue <= 14
end)
|> Stream.map(&elem(&1, 0))
|> Enum.sum()
end
def solve(input) do
input
|> parse()
|> process()
end
end
{:module, PartOne, <<70, 79, 82, 49, 0, 0, 17, ...>>, {:solve, 1}}
defmodule PartTwo do
import PartOne, only: [parse: 1]
def process(input) do
Enum.reduce(input, 0, fn {_game, red, blue, green}, sum ->
sum + red * blue * green
end)
end
def solve(input) do
input
|> parse()
|> process()
end
end
{:module, PartTwo, <<70, 79, 82, 49, 0, 0, 8, ...>>, {:solve, 1}}
Solutions
PartOne.solve(input)
2600
PartTwo.solve(input)
86036
Tests
ExUnit.start(auto_run: false, seed: 12345, timeout: 5000)
defmodule PartOneTest do
use ExUnit.Case, async: true
doctest PartOne
describe "Part One" do
@test_input """
Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green
Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue
Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red
Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red
Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green
"""
test "sums game IDs that match criteria" do
assert PartOne.solve(@test_input) == 8
end
end
end
defmodule PartTwoTest do
use ExUnit.Case, async: true
doctest PartOne
describe "Part Two" do
@test_input """
Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green
Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue
Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red
Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red
Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green
"""
test "sums product of cube counts" do
assert PartTwo.solve(@test_input) == 2286
end
end
end
ExUnit.run()
......
Finished in 0.00 seconds (0.00s async, 0.00s sync)
4 doctests, 2 tests, 0 failures
Randomized with seed 12345
%{total: 6, skipped: 0, failures: 0, excluded: 0}
Golfing
defmodule PartOneNx do
def parse(input) do
input
|> String.split("\n", trim: true)
|> Enum.map(&parse_line/1)
|> Nx.stack(name: :games)
end
defp parse_line(<<"Game ", rest::binary>>) do
[game, rest] = String.split(rest, ": ", parts: 2)
rest
|> String.split("; ")
|> Enum.map(&parse_pull/1)
|> Nx.tensor(names: [:pulls, :counts])
|> Nx.reduce_max(axes: [:pulls])
|> Nx.pad(String.to_integer(game), [{1, 0, 0}])
end
defp parse_pull(pull) do
for count <- String.split(pull, ", "),
[count, color] = String.split(count, " ", parts: 2),
count = String.to_integer(count),
reduce: {0, 0, 0} do
{r, g, b} ->
case color do
"red" ->
{max(r, count), g, b}
"green" ->
{r, max(g, count), b}
"blue" ->
{r, g, max(b, count)}
end
end
|> Tuple.to_list()
end
def process(input) do
count = Nx.axis_size(input, :games)
mask =
input
|> Nx.less_equal(Nx.tensor([count, 12, 13, 14]))
|> Nx.all(axes: [:counts])
ids =
input
|> Nx.slice_along_axis(0, 1, axis: :counts)
|> Nx.squeeze()
mask |> Nx.multiply(ids) |> Nx.sum() |> Nx.to_number()
end
def solve(input) do
input
|> parse()
|> process()
end
end
{:module, PartOneNx, <<70, 79, 82, 49, 0, 0, 16, ...>>, {:solve, 1}}
defmodule PartTwoNx do
import PartOneNx, only: [parse: 1]
def process(input) do
input
|> Nx.slice_along_axis(1, 3, axis: :counts)
|> Nx.product(axes: [:counts])
|> Nx.sum()
|> Nx.to_number()
end
def solve(input) do
input
|> parse()
|> process()
end
end
{:module, PartTwoNx, <<70, 79, 82, 49, 0, 0, 7, ...>>, {:solve, 1}}
PartOneNx.solve(input)
10:09:53.325 [info] TfrtCpuClient created.
2600
PartTwoNx.solve(input)
86036
Benchmarks
Benchee.run(
%{
"PartOne" => &PartOne.solve/1,
"PartTwo" => &PartTwo.solve/1,
"PartOneNx" => &PartOneNx.solve/1,
"PartTwoNx" => &PartTwoNx.solve/1
},
inputs: %{
input: input,
test_input: """
Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green
Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue
Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red
Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red
Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green
"""
},
warmup: 2,
time: 3,
memory_time: 3,
reduction_time: 3
)
Operating System: Linux
CPU Information: AMD Ryzen 9 5950X 16-Core Processor
Number of Available Cores: 32
Available memory: 62.71 GB
Elixir 1.15.7
Erlang 26.1.2
Benchmark suite executing with the following configuration:
warmup: 2 s
time: 3 s
memory time: 3 s
reduction time: 3 s
parallel: 1
inputs: input, test_input
Estimated total run time: 1.47 min
Benchmarking PartOne with input input ...
Benchmarking PartOne with input test_input ...
Benchmarking PartOneNx with input input ...
Benchmarking PartOneNx with input test_input ...
Benchmarking PartTwo with input input ...
Benchmarking PartTwo with input test_input ...
Benchmarking PartTwoNx with input input ...
Benchmarking PartTwoNx with input test_input ...
##### With input input #####
Name ips average deviation median 99th %
PartOne 1.77 K 0.57 ms ±3.25% 0.56 ms 0.65 ms
PartTwo 1.68 K 0.59 ms ±6.76% 0.58 ms 0.73 ms
PartTwoNx 0.106 K 9.41 ms ±2.74% 9.37 ms 10.25 ms
PartOneNx 0.102 K 9.80 ms ±5.48% 9.58 ms 10.93 ms
Comparison:
PartOne 1.77 K
PartTwo 1.68 K - 1.05x slower +0.0284 ms
PartTwoNx 0.106 K - 16.63x slower +8.84 ms
PartOneNx 0.102 K - 17.32x slower +9.24 ms
Memory usage statistics:
Name average deviation median 99th %
PartOne 0.35 MB ±0.00% 0.35 MB 0.35 MB
PartTwo 0.35 MB ±0.00% 0.35 MB 0.35 MB
PartTwoNx 2.57 MB ±0.00% 2.57 MB 2.57 MB
PartOneNx 2.59 MB ±0.00% 2.59 MB 2.59 MB
Comparison:
PartOne 0.35 MB
PartTwo 0.35 MB - 0.99x memory usage -0.00473 MB
PartTwoNx 2.57 MB - 7.24x memory usage +2.21 MB
PartOneNx 2.59 MB - 7.30x memory usage +2.23 MB
Reduction count statistics:
Name average deviation median 99th %
PartOne 36.37 K ±0.00% 36.37 K 36.37 K
PartTwo 35.84 K ±0.00% 35.84 K 35.84 K
PartTwoNx 232.64 K ±0.04% 232.60 K 233.00 K
PartOneNx 234.35 K ±0.04% 234.33 K 235.17 K
Comparison:
PartOne 36.37 K
PartTwo 35.84 K - 0.99x reduction count -0.53300 K
PartTwoNx 232.64 K - 6.40x reduction count +196.27 K
PartOneNx 234.35 K - 6.44x reduction count +197.98 K
##### With input test_input #####
Name ips average deviation median 99th %
PartOne 54.22 K 18.44 μs ±22.45% 17.96 μs 26.80 μs
PartTwo 54.10 K 18.48 μs ±19.11% 18.13 μs 24.47 μs
PartTwoNx 1.77 K 566.04 μs ±6.01% 555.32 μs 661.83 μs
PartOneNx 1.49 K 669.45 μs ±7.19% 658.66 μs 794.81 μs
Comparison:
PartOne 54.22 K
PartTwo 54.10 K - 1.00x slower +0.0415 μs
PartTwoNx 1.77 K - 30.69x slower +547.60 μs
PartOneNx 1.49 K - 36.30x slower +651.01 μs
Memory usage statistics:
Name Memory usage
PartOne 12.83 KB
PartTwo 12.05 KB - 0.94x memory usage -0.78125 KB
PartTwoNx 140.93 KB - 10.99x memory usage +128.10 KB
PartOneNx 162.60 KB - 12.68x memory usage +149.77 KB
**All measurements for memory usage were the same**
Reduction count statistics:
Name average deviation median 99th %
PartOne 1.26 K ±0.00% 1.26 K 1.26 K
PartTwo 1.20 K ±0.00% 1.20 K 1.20 K
PartTwoNx 12.51 K ±0.23% 12.50 K 12.63 K
PartOneNx 14.22 K ±0.21% 14.21 K 14.34 K
Comparison:
PartOne 1.26 K
PartTwo 1.20 K - 0.95x reduction count -0.06100 K
PartTwoNx 12.51 K - 9.96x reduction count +11.26 K
PartOneNx 14.22 K - 11.32x reduction count +12.97 K
%Benchee.Suite{
system: %{
erlang: "26.1.2",
os: :Linux,
elixir: "1.15.7",
num_cores: 32,
cpu_speed: "AMD Ryzen 9 5950X 16-Core Processor",
available_memory: "62.71 GB"
},
configuration: %Benchee.Configuration{
parallel: 1,
time: 3000000000.0,
warmup: 2000000000.0,
memory_time: 3000000000.0,
reduction_time: 3000000000.0,
pre_check: false,
formatters: [Benchee.Formatters.Console],
percentiles: ~c"2c",
print: %{configuration: true, fast_warning: true, benchmarking: true},
inputs: [
{"input",
"Game 1: 12 red, 2 green, 5 blue; 9 red, 6 green, 4 blue; 10 red, 2 green, 5 blue; 8 blue, 9 red\nGame 2: 3 green, 7 red; 3 blue, 5 red; 2 green, 1 blue, 6 red; 3 green, 2 red, 3 blue\nGame 3: 12 red, 18 blue, 3 green; 14 red, 4 blue, 2 green; 4 green, 15 red\nGame 4: 14 blue, 8 red, 10 green; 7 green, 9 blue, 4 red; 4 green, 5 red\nGame 5: 2 red, 1 blue, 4 green; 1 blue, 1 red, 5 green; 6 green, 3 red; 10 blue, 4 green, 1 red\nGame 6: 5 red, 5 blue, 1 green; 5 blue, 15 red, 2 green; 3 green, 1 red, 9 blue\nGame 7: 9 red, 8 blue, 13 green; 9 red, 7 blue, 10 green; 7 blue, 2 red, 11 green; 4 red, 6 blue, 10 green; 3 blue, 12 green, 1 red\nGame 8: 20 red, 5 green, 10 blue; 14 red, 8 blue, 5 green; 5 green, 4 blue, 9 red; 18 red, 1 green; 2 blue, 1 green, 5 red\nGame 9: 3 blue; 3 blue, 4 green, 1 red; 8 green, 2 blue, 4 red; 5 green, 4 red\nGame 10: 18 red, 11 green, 3 blue; 2 blue, 19 red, 7 green; 4 green, 1 blue, 6 red; 4 green, 2 red, 4 blue; 10 green, 5 red, 2 blue; 13 red, 12 green, 4 blue\nGame 11: 5 green, 5 blue, 3 red; 2 red, 8 blue, 4 green; 4 blue, 4 green, 2 red; 1 blue, 3 red, 2 green; 4 blue, 4 green; 6 blue, 2 red\nGame 12: 6 blue, 1 green, 4 red; 12 blue, 4 red; 12 blue, 2 red, 6 green\nGame 13: 11 red, 17 blue, 7 green; 20 red, 12 green, 9 blue; 15 red, 15 green, 14 blue; 7 red, 6 green, 3 blue\nGame 14: 8 red, 17 green, 6 blue; 5 red, 13 blue, 7 green; 2 red, 15 green, 4 blue; 9 blue, 2 green; 7 green, 2 blue, 8 red; 10 green, 14 blue, 10 red\nGame 15: 14 red, 4 green, 4 blue; 14 red, 2 green, 16 blue; 10 blue, 2 green, 6 red\nGame 16: 2 red, 3 green; 5 green; 1 red, 1 blue; 2 red, 3 green, 1 blue; 5 red, 4 green; 5 red, 4 green\nGame 17: 4 blue, 3 green, 9 red; 3 blue, 8 red, 1 green; 1 blue, 5 green; 8 green, 2 red; 10 red, 1 green\nGame 18: 10 blue, 5 red; 1 green, 9 red, 9 blue; 5 blue, 3 red; 3 red, 1 blue; 2 blue, 9 red, 1 green; 6 red, 7 blue, 1 green\nGame 19: 9 green, 2 red, 12 blue; 3 green, 9 red, 16 blue; 2 green, 17 blue; 11 green, 3 blue, 7 red; 2 red, 10 blue, 11 green\nGame 20: 17 blue, 16 green; 13 green, 12 blue, 13 red; 6 red, 9 green, 6 blue\nGame 21: 1 green, 3 red, 1 blue; 1 blue, 2 green, 2 red; 2 green, 1 blue, 3 red\nGame 22: 7 green, 3 blue, 5 red; 2 green, 14 red, 3 blue; 2 green, 17 red; 2 blue, 15 red, 6 green; 4 green, 1 blue, 17 red\nGame 23: 4 blue, 2 red; 2 red, 7 blue, 1 green; 6 red, 5 blue, 5 green; 9 red, 4 blue; 10 blue, 8 red, 11 green\nGame 24: 1 red, 9 green, 5 blue; 14 green, 4 blue, 2 red; 5 blue, 1 red, 11 green; 3 blue, 2 red, 4 green\nGame 25: 3 green, 2 red, 1 blue; 2 blue, 10 green, 1 red; 8 red, 4 green, 1 blue; 3 blue, 15 red, 6 green; 2 blue, 13 red, 8 green; 2 red, 5 blue, 5 green\nGame 26: 5 green, 5 red; 12 green; 5 green, 3 blue, 4 red; 1 blue, 1 red, 17 green; 2 blue, 18 green\nGame 27: 1 blue, 7 green, 3 red; 3 red, 1 green, 13 blue; 4 green, 8 blue; 1 red, 3 green, 4 blue; 9 blue, 2 red\nGame 28: 9 red, 2 green, 5 blue; 5 red, 9 green; 5 blue, 1 red\nGame 29: 4 green, 10 blue, 13 red; 2 red, 5 green, 5 blue; 2 red, 9 green, 11 blue; 9 blue, 9 red, 13 green; 13 blue, 2 green, 14 red; 3 green, 8 blue, 5 red\nGame 30: 3 green, 7 red, 3 blue; 5 green, 5 blue, 12 red; 14 red, 6 green, 11 blue; 7 blue, 9 green, 11 red; 10 red, 1 blue, 4 green\nGame 31: 6 green, 5 blue, 17 red; 16 blue, 17 green, 14 red; 13 green, 13 blue, 3 red; 18 red, 8 green, 14 blue; 18 green, 1 blue; 16 red, 6 blue\nGame 32: 12 green, 2 blue; 6 blue, 5 red, 10 green; 13 green, 2 blue; 2 red, 6 blue, 6 green; 9 green, 8 red\nGame 33: 4 blue, 6 red, 2 green; 7 red, 5 blue; 3 blue, 1 red, 1 green\nGame 34: 2 red, 7 blue, 1 green; 2 blue, 1 green, 6 red; 6 red, 3 green, 7 blue; 4 green, 13 red, 1 blue; 15 blue, 1 green, 5 red\nGame 35: 8 blue, 12 red, 7 green; 2 blue, 14 red, 3 green; 14 green, 8 blue, 7 red; 15 red, 12 blue, 12 green; 11 blue, 14 red, 1 green\nGame 36: 11 red, 8 green, 2 blue; 17 red, 2 blue; 3 blue, 8 green, 19 red; 6 red, 3 blue, 3 green; 8 red, 5 green\nGame 37: 2 blue, 3 red, 12 green; 3 red, 7 green, 4 blue; 7 blue, 3 red, 8 green; 13 green, 3 red, 2 blue; 2 green\nGame 38: 2 blue, 14 red, 17 green; 1" <> ...},
{"test_input",
"Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green\nGame 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue\nGame 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red\nGame 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red\nGame 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green\n"}
],
save: false,
load: false,
unit_scaling: :best,
assigns: %{},
before_each: nil,
after_each: nil,
before_scenario: nil,
after_scenario: nil,
measure_function_call_overhead: false,
title: nil,
profile_after: false
},
scenarios: [
%Benchee.Scenario{
name: "PartOne",
job_name: "PartOne",
function: &PartOne.solve/1,
input_name: "input",
input: "Game 1: 12 red, 2 green, 5 blue; 9 red, 6 green, 4 blue; 10 red, 2 green, 5 blue; 8 blue, 9 red\nGame 2: 3 green, 7 red; 3 blue, 5 red; 2 green, 1 blue, 6 red; 3 green, 2 red, 3 blue\nGame 3: 12 red, 18 blue, 3 green; 14 red, 4 blue, 2 green; 4 green, 15 red\nGame 4: 14 blue, 8 red, 10 green; 7 green, 9 blue, 4 red; 4 green, 5 red\nGame 5: 2 red, 1 blue, 4 green; 1 blue, 1 red, 5 green; 6 green, 3 red; 10 blue, 4 green, 1 red\nGame 6: 5 red, 5 blue, 1 green; 5 blue, 15 red, 2 green; 3 green, 1 red, 9 blue\nGame 7: 9 red, 8 blue, 13 green; 9 red, 7 blue, 10 green; 7 blue, 2 red, 11 green; 4 red, 6 blue, 10 green; 3 blue, 12 green, 1 red\nGame 8: 20 red, 5 green, 10 blue; 14 red, 8 blue, 5 green; 5 green, 4 blue, 9 red; 18 red, 1 green; 2 blue, 1 green, 5 red\nGame 9: 3 blue; 3 blue, 4 green, 1 red; 8 green, 2 blue, 4 red; 5 green, 4 red\nGame 10: 18 red, 11 green, 3 blue; 2 blue, 19 red, 7 green; 4 green, 1 blue, 6 red; 4 green, 2 red, 4 blue; 10 green, 5 red, 2 blue; 13 red, 12 green, 4 blue\nGame 11: 5 green, 5 blue, 3 red; 2 red, 8 blue, 4 green; 4 blue, 4 green, 2 red; 1 blue, 3 red, 2 green; 4 blue, 4 green; 6 blue, 2 red\nGame 12: 6 blue, 1 green, 4 red; 12 blue, 4 red; 12 blue, 2 red, 6 green\nGame 13: 11 red, 17 blue, 7 green; 20 red, 12 green, 9 blue; 15 red, 15 green, 14 blue; 7 red, 6 green, 3 blue\nGame 14: 8 red, 17 green, 6 blue; 5 red, 13 blue, 7 green; 2 red, 15 green, 4 blue; 9 blue, 2 green; 7 green, 2 blue, 8 red; 10 green, 14 blue, 10 red\nGame 15: 14 red, 4 green, 4 blue; 14 red, 2 green, 16 blue; 10 blue, 2 green, 6 red\nGame 16: 2 red, 3 green; 5 green; 1 red, 1 blue; 2 red, 3 green, 1 blue; 5 red, 4 green; 5 red, 4 green\nGame 17: 4 blue, 3 green, 9 red; 3 blue, 8 red, 1 green; 1 blue, 5 green; 8 green, 2 red; 10 red, 1 green\nGame 18: 10 blue, 5 red; 1 green, 9 red, 9 blue; 5 blue, 3 red; 3 red, 1 blue; 2 blue, 9 red, 1 green; 6 red, 7 blue, 1 green\nGame 19: 9 green, 2 red, 12 blue; 3 green, 9 red, 16 blue; 2 green, 17 blue; 11 green, 3 blue, 7 red; 2 red, 10 blue, 11 green\nGame 20: 17 blue, 16 green; 13 green, 12 blue, 13 red; 6 red, 9 green, 6 blue\nGame 21: 1 green, 3 red, 1 blue; 1 blue, 2 green, 2 red; 2 green, 1 blue, 3 red\nGame 22: 7 green, 3 blue, 5 red; 2 green, 14 red, 3 blue; 2 green, 17 red; 2 blue, 15 red, 6 green; 4 green, 1 blue, 17 red\nGame 23: 4 blue, 2 red; 2 red, 7 blue, 1 green; 6 red, 5 blue, 5 green; 9 red, 4 blue; 10 blue, 8 red, 11 green\nGame 24: 1 red, 9 green, 5 blue; 14 green, 4 blue, 2 red; 5 blue, 1 red, 11 green; 3 blue, 2 red, 4 green\nGame 25: 3 green, 2 red, 1 blue; 2 blue, 10 green, 1 red; 8 red, 4 green, 1 blue; 3 blue, 15 red, 6 green; 2 blue, 13 red, 8 green; 2 red, 5 blue, 5 green\nGame 26: 5 green, 5 red; 12 green; 5 green, 3 blue, 4 red; 1 blue, 1 red, 17 green; 2 blue, 18 green\nGame 27: 1 blue, 7 green, 3 red; 3 red, 1 green, 13 blue; 4 green, 8 blue; 1 red, 3 green, 4 blue; 9 blue, 2 red\nGame 28: 9 red, 2 green, 5 blue; 5 red, 9 green; 5 blue, 1 red\nGame 29: 4 green, 10 blue, 13 red; 2 red, 5 green, 5 blue; 2 red, 9 green, 11 blue; 9 blue, 9 red, 13 green; 13 blue, 2 green, 14 red; 3 green, 8 blue, 5 red\nGame 30: 3 green, 7 red, 3 blue; 5 green, 5 blue, 12 red; 14 red, 6 green, 11 blue; 7 blue, 9 green, 11 red; 10 red, 1 blue, 4 green\nGame 31: 6 green, 5 blue, 17 red; 16 blue, 17 green, 14 red; 13 green, 13 blue, 3 red; 18 red, 8 green, 14 blue; 18 green, 1 blue; 16 red, 6 blue\nGame 32: 12 green, 2 blue; 6 blue, 5 red, 10 green; 13 green, 2 blue; 2 red, 6 blue, 6 green; 9 green, 8 red\nGame 33: 4 blue, 6 red, 2 green; 7 red, 5 blue; 3 blue, 1 red, 1 green\nGame 34: 2 red, 7 blue, 1 green; 2 blue, 1 green, 6 red; 6 red, 3 green, 7 blue; 4 green, 13 red, 1 blue; 15 blue, 1 green, 5 red\nGame 35: 8 blue, 12 red, 7 green; 2 blue, 14 red, 3 green; 14 green, 8 blue, 7 red; 15 red, 12 blue, 12 green; 11 blue, 14 red, 1 green\nGame 36: 11 red, 8 green, 2 blue; 17 red, 2 blue; 3 blue, 8 green, 19 red; 6 red, 3 blue, 3 green; 8 red, 5 green\nGame 37: 2 blue, 3 red, 12 green; 3 red, 7 green, 4 blue; 7 blue, 3 red, 8 green; 13 green, 3 red, 2 blue; 2 green\nGame 38: 2 blue, 14 red, 17 green; 1" <> ...,
before_each: nil,
after_each: nil,
before_scenario: nil,
after_scenario: nil,
tag: nil,
run_time_data: %Benchee.CollectionData{
statistics: %Benchee.Statistics{
average: 565894.9983012457,
ips: 1767.1122787829713,
std_dev: 18411.030727022684,
std_dev_ratio: 0.03253435846277236,
std_dev_ips: 57.49186432189172,
median: 563886.5,
percentiles: %{50 => 563886.5, 99 => 651216.4000000003},
mode: [565156, 564856],
minimum: 542416,
maximum: 843349,
relative_more: nil,
relative_less: nil,
absolute_difference: nil,
sample_size: 5298
},
samples: [584106, 576896, 576107, 561606, 557246, 559806, 560206, 565557, 574166, 576316,
576817, 566436, 570886, 566057, 574926, 562096, 573647, 572836, 572856, 567637, 566626,
563326, 560866, 571146, 563236, 585767, 577736, 575546, 574497, 574466, 564976, 563496,
574037, ...]
},
memory_usage_data: %Benchee.CollectionData{
statistics: %Benchee.Statistics{
average: 371712.0867320599,
ips: nil,
std_dev: 5.3983304939429155,
std_dev_ratio: 1.4522881247695821e-5,
std_dev_ips: nil,
median: 371712.0,
percentiles: %{50 => 371712.0, 99 => 371712.0},
mode: 371712,
minimum: 371712,
maximum: 372048,
relative_more: nil,
relative_less: nil,
absolute_difference: nil,
sample_size: 3874
},
samples: [371712, 371712, 371712, 371712, 371712, 371712, 371712, 371712, 371712, 371712,
371712, 371712, 371712, 371712, 371712, 371712, 371712, 371712, 371712, 371712, 371712,
371712, 371712, 371712, 371712, 371712, 371712, 371712, 371712, 371712, 371712, 371712,
...]
},
reductions_data: %Benchee.CollectionData{
statistics: %Benchee.Statistics{
average: 36372.0,
ips: nil,
std_dev: 0.0,
std_dev_ratio: 0.0,
std_dev_ips: nil,
median: 36372.0,
percentiles: %{50 => 36372.0, 99 => 36372.0},
mode: 36372,
minimum: 36372,
maximum: 36372,
relative_more: nil,
relative_less: nil,
absolute_difference: nil,
sample_size: 5013
},
samples: [36372, 36372, 36372, 36372, 36372, 36372, 36372, 36372, 36372, 36372, 36372,
36372, 36372, 36372, 36372, 36372, 36372, 36372, 36372, 36372, 36372, 36372, 36372, 36372,
36372, 36372, 36372, 36372, 36372, 36372, 36372, ...]
}
},
%Benchee.Scenario{
name: "PartTwo",
job_name: "PartTwo",
function: &PartTwo.solve/1,
input_name: "input",
input: "Game 1: 12 red, 2 green, 5 blue; 9 red, 6 green, 4 blue; 10 red, 2 green, 5 blue; 8 blue, 9 red\nGame 2: 3 green, 7 red; 3 blue, 5 red; 2 green, 1 blue, 6 red; 3 green, 2 red, 3 blue\nGame 3: 12 red, 18 blue, 3 green; 14 red, 4 blue, 2 green; 4 green, 15 red\nGame 4: 14 blue, 8 red, 10 green; 7 green, 9 blue, 4 red; 4 green, 5 red\nGame 5: 2 red, 1 blue, 4 green; 1 blue, 1 red, 5 green; 6 green, 3 red; 10 blue, 4 green, 1 red\nGame 6: 5 red, 5 blue, 1 green; 5 blue, 15 red, 2 green; 3 green, 1 red, 9 blue\nGame 7: 9 red, 8 blue, 13 green; 9 red, 7 blue, 10 green; 7 blue, 2 red, 11 green; 4 red, 6 blue, 10 green; 3 blue, 12 green, 1 red\nGame 8: 20 red, 5 green, 10 blue; 14 red, 8 blue, 5 green; 5 green, 4 blue, 9 red; 18 red, 1 green; 2 blue, 1 green, 5 red\nGame 9: 3 blue; 3 blue, 4 green, 1 red; 8 green, 2 blue, 4 red; 5 green, 4 red\nGame 10: 18 red, 11 green, 3 blue; 2 blue, 19 red, 7 green; 4 green, 1 blue, 6 red; 4 green, 2 red, 4 blue; 10 green, 5 red, 2 blue; 13 red, 12 green, 4 blue\nGame 11: 5 green, 5 blue, 3 red; 2 red, 8 blue, 4 green; 4 blue, 4 green, 2 red; 1 blue, 3 red, 2 green; 4 blue, 4 green; 6 blue, 2 red\nGame 12: 6 blue, 1 green, 4 red; 12 blue, 4 red; 12 blue, 2 red, 6 green\nGame 13: 11 red, 17 blue, 7 green; 20 red, 12 green, 9 blue; 15 red, 15 green, 14 blue; 7 red, 6 green, 3 blue\nGame 14: 8 red, 17 green, 6 blue; 5 red, 13 blue, 7 green; 2 red, 15 green, 4 blue; 9 blue, 2 green; 7 green, 2 blue, 8 red; 10 green, 14 blue, 10 red\nGame 15: 14 red, 4 green, 4 blue; 14 red, 2 green, 16 blue; 10 blue, 2 green, 6 red\nGame 16: 2 red, 3 green; 5 green; 1 red, 1 blue; 2 red, 3 green, 1 blue; 5 red, 4 green; 5 red, 4 green\nGame 17: 4 blue, 3 green, 9 red; 3 blue, 8 red, 1 green; 1 blue, 5 green; 8 green, 2 red; 10 red, 1 green\nGame 18: 10 blue, 5 red; 1 green, 9 red, 9 blue; 5 blue, 3 red; 3 red, 1 blue; 2 blue, 9 red, 1 green; 6 red, 7 blue, 1 green\nGame 19: 9 green, 2 red, 12 blue; 3 green, 9 red, 16 blue; 2 green, 17 blue; 11 green, 3 blue, 7 red; 2 red, 10 blue, 11 green\nGame 20: 17 blue, 16 green; 13 green, 12 blue, 13 red; 6 red, 9 green, 6 blue\nGame 21: 1 green, 3 red, 1 blue; 1 blue, 2 green, 2 red; 2 green, 1 blue, 3 red\nGame 22: 7 green, 3 blue, 5 red; 2 green, 14 red, 3 blue; 2 green, 17 red; 2 blue, 15 red, 6 green; 4 green, 1 blue, 17 red\nGame 23: 4 blue, 2 red; 2 red, 7 blue, 1 green; 6 red, 5 blue, 5 green; 9 red, 4 blue; 10 blue, 8 red, 11 green\nGame 24: 1 red, 9 green, 5 blue; 14 green, 4 blue, 2 red; 5 blue, 1 red, 11 green; 3 blue, 2 red, 4 green\nGame 25: 3 green, 2 red, 1 blue; 2 blue, 10 green, 1 red; 8 red, 4 green, 1 blue; 3 blue, 15 red, 6 green; 2 blue, 13 red, 8 green; 2 red, 5 blue, 5 green\nGame 26: 5 green, 5 red; 12 green; 5 green, 3 blue, 4 red; 1 blue, 1 red, 17 green; 2 blue, 18 green\nGame 27: 1 blue, 7 green, 3 red; 3 red, 1 green, 13 blue; 4 green, 8 blue; 1 red, 3 green, 4 blue; 9 blue, 2 red\nGame 28: 9 red, 2 green, 5 blue; 5 red, 9 green; 5 blue, 1 red\nGame 29: 4 green, 10 blue, 13 red; 2 red, 5 green, 5 blue; 2 red, 9 green, 11 blue; 9 blue, 9 red, 13 green; 13 blue, 2 green, 14 red; 3 green, 8 blue, 5 red\nGame 30: 3 green, 7 red, 3 blue; 5 green, 5 blue, 12 red; 14 red, 6 green, 11 blue; 7 blue, 9 green, 11 red; 10 red, 1 blue, 4 green\nGame 31: 6 green, 5 blue, 17 red; 16 blue, 17 green, 14 red; 13 green, 13 blue, 3 red; 18 red, 8 green, 14 blue; 18 green, 1 blue; 16 red, 6 blue\nGame 32: 12 green, 2 blue; 6 blue, 5 red, 10 green; 13 green, 2 blue; 2 red, 6 blue, 6 green; 9 green, 8 red\nGame 33: 4 blue, 6 red, 2 green; 7 red, 5 blue; 3 blue, 1 red, 1 green\nGame 34: 2 red, 7 blue, 1 green; 2 blue, 1 green, 6 red; 6 red, 3 green, 7 blue; 4 green, 13 red, 1 blue; 15 blue, 1 green, 5 red\nGame 35: 8 blue, 12 red, 7 green; 2 blue, 14 red, 3 green; 14 green, 8 blue, 7 red; 15 red, 12 blue, 12 green; 11 blue, 14 red, 1 green\nGame 36: 11 red, 8 green, 2 blue; 17 red, 2 blue; 3 blue, 8 green, 19 red; 6 red, 3 blue, 3 green; 8 red, 5 green\nGame 37: 2 blue, 3 red, 12 green; 3 red, 7 green, 4 blue; 7 blue, 3 red, 8 green; 13 green, 3 red, 2 blue; 2 green\nGame 38: 2 blue, 14 red, 17 green; 1" <> ...,
before_each: nil,
after_each: nil,
before_scenario: nil,
after_scenario: nil,
tag: nil,
run_time_data: %Benchee.CollectionData{
statistics: %Benchee.Statistics{
average: 594309.0898096749,
ips: 1682.6261235887305,
std_dev: 40193.386588408226,
std_dev_ratio: 0.06763044226915661,
std_dev_ips: 113.79674891194242,
median: 579047.0,
percentiles: %{50 => 579047.0, 99 => 727862.0},
mode: 578776,
minimum: 564146,
maximum: 856079,
relative_more: 1.050210889995008,
relative_less: 0.9521897073498764,
absolute_difference: 28414.09150842915,
sample_size: 5044
},
samples: [610377, 600737, 584966, 729828, 581426, 585636, 577757, 598936, 592807, 585496,
598377, 589957, 734278, 605376, 586987, 597567, 594516, 590387, 591566, 587787, 593186,
709598, 618507, 594217, 589056, 591047, 591436, 590717, 591866, 590747, 661537, 671418,
...]
},
memory_usage_data: %Benchee.CollectionData{
statistics: %Benchee.Statistics{
average: 366752.0821515892,
ips: nil,
std_dev: 5.253849444486003,
std_dev_ratio: 1.4325343195500757e-5,
std_dev_ips: nil,
median: 366752.0,
percentiles: %{50 => 366752.0, 99 => 366752.0},
mode: 366752,
minimum: 366752,
maximum: 367088,
relative_more: 0.9866563268790182,
relative_less: 1.0135241347543886,
absolute_difference: -4960.004580470675,
sample_size: 4090
},
samples: [366752, 366752, 366752, 366752, 367088, 366752, 366752, 366752, 366752, 366752,
366752, 366752, 366752, 366752, 366752, 366752, 366752, 366752, 366752, 366752, 366752,
366752, 366752, 366752, 366752, 366752, 366752, 366752, 366752, 366752, 366752, ...]
},
reductions_data: %Benchee.CollectionData{
statistics: %Benchee.Statistics{
average: 35839.0,
ips: nil,
std_dev: 0.0,
std_dev_ratio: 0.0,
std_dev_ips: nil,
median: 35839.0,
percentiles: %{50 => 35839.0, 99 => 35839.0},
mode: 35839,
minimum: 35839,
maximum: 35839,
relative_more: 0.9853458704497966,
relative_less: 1.0148720667429336,
absolute_difference: -533.0,
sample_size: 5065
},
samples: [35839, 35839, 35839, 35839, 35839, 35839, 35839, 35839, 35839, 35839, 35839,
35839, 35839, 35839, 35839, 35839, 35839, 35839, 35839, 35839, 35839, 35839, 35839, 35839,
35839, 35839, 35839, 35839, 35839, 35839, ...]
}
},
%Benchee.Scenario{
name: "PartTwoNx",
job_name: "PartTwoNx",
function: &PartTwoNx.solve/1,
input_name: "input",
input: "Game 1: 12 red, 2 green, 5 blue; 9 red, 6 green, 4 blue; 10 red, 2 green, 5 blue; 8 blue, 9 red\nGame 2: 3 green, 7 red; 3 blue, 5 red; 2 green, 1 blue, 6 red; 3 green, 2 red, 3 blue\nGame 3: 12 red, 18 blue, 3 green; 14 red, 4 blue, 2 green; 4 green, 15 red\nGame 4: 14 blue, 8 red, 10 green; 7 green, 9 blue, 4 red; 4 green, 5 red\nGame 5: 2 red, 1 blue, 4 green; 1 blue, 1 red, 5 green; 6 green, 3 red; 10 blue, 4 green, 1 red\nGame 6: 5 red, 5 blue, 1 green; 5 blue, 15 red, 2 green; 3 green, 1 red, 9 blue\nGame 7: 9 red, 8 blue, 13 green; 9 red, 7 blue, 10 green; 7 blue, 2 red, 11 green; 4 red, 6 blue, 10 green; 3 blue, 12 green, 1 red\nGame 8: 20 red, 5 green, 10 blue; 14 red, 8 blue, 5 green; 5 green, 4 blue, 9 red; 18 red, 1 green; 2 blue, 1 green, 5 red\nGame 9: 3 blue; 3 blue, 4 green, 1 red; 8 green, 2 blue, 4 red; 5 green, 4 red\nGame 10: 18 red, 11 green, 3 blue; 2 blue, 19 red, 7 green; 4 green, 1 blue, 6 red; 4 green, 2 red, 4 blue; 10 green, 5 red, 2 blue; 13 red, 12 green, 4 blue\nGame 11: 5 green, 5 blue, 3 red; 2 red, 8 blue, 4 green; 4 blue, 4 green, 2 red; 1 blue, 3 red, 2 green; 4 blue, 4 green; 6 blue, 2 red\nGame 12: 6 blue, 1 green, 4 red; 12 blue, 4 red; 12 blue, 2 red, 6 green\nGame 13: 11 red, 17 blue, 7 green; 20 red, 12 green, 9 blue; 15 red, 15 green, 14 blue; 7 red, 6 green, 3 blue\nGame 14: 8 red, 17 green, 6 blue; 5 red, 13 blue, 7 green; 2 red, 15 green, 4 blue; 9 blue, 2 green; 7 green, 2 blue, 8 red; 10 green, 14 blue, 10 red\nGame 15: 14 red, 4 green, 4 blue; 14 red, 2 green, 16 blue; 10 blue, 2 green, 6 red\nGame 16: 2 red, 3 green; 5 green; 1 red, 1 blue; 2 red, 3 green, 1 blue; 5 red, 4 green; 5 red, 4 green\nGame 17: 4 blue, 3 green, 9 red; 3 blue, 8 red, 1 green; 1 blue, 5 green; 8 green, 2 red; 10 red, 1 green\nGame 18: 10 blue, 5 red; 1 green, 9 red, 9 blue; 5 blue, 3 red; 3 red, 1 blue; 2 blue, 9 red, 1 green; 6 red, 7 blue, 1 green\nGame 19: 9 green, 2 red, 12 blue; 3 green, 9 red, 16 blue; 2 green, 17 blue; 11 green, 3 blue, 7 red; 2 red, 10 blue, 11 green\nGame 20: 17 blue, 16 green; 13 green, 12 blue, 13 red; 6 red, 9 green, 6 blue\nGame 21: 1 green, 3 red, 1 blue; 1 blue, 2 green, 2 red; 2 green, 1 blue, 3 red\nGame 22: 7 green, 3 blue, 5 red; 2 green, 14 red, 3 blue; 2 green, 17 red; 2 blue, 15 red, 6 green; 4 green, 1 blue, 17 red\nGame 23: 4 blue, 2 red; 2 red, 7 blue, 1 green; 6 red, 5 blue, 5 green; 9 red, 4 blue; 10 blue, 8 red, 11 green\nGame 24: 1 red, 9 green, 5 blue; 14 green, 4 blue, 2 red; 5 blue, 1 red, 11 green; 3 blue, 2 red, 4 green\nGame 25: 3 green, 2 red, 1 blue; 2 blue, 10 green, 1 red; 8 red, 4 green, 1 blue; 3 blue, 15 red, 6 green; 2 blue, 13 red, 8 green; 2 red, 5 blue, 5 green\nGame 26: 5 green, 5 red; 12 green; 5 green, 3 blue, 4 red; 1 blue, 1 red, 17 green; 2 blue, 18 green\nGame 27: 1 blue, 7 green, 3 red; 3 red, 1 green, 13 blue; 4 green, 8 blue; 1 red, 3 green, 4 blue; 9 blue, 2 red\nGame 28: 9 red, 2 green, 5 blue; 5 red, 9 green; 5 blue, 1 red\nGame 29: 4 green, 10 blue, 13 red; 2 red, 5 green, 5 blue; 2 red, 9 green, 11 blue; 9 blue, 9 red, 13 green; 13 blue, 2 green, 14 red; 3 green, 8 blue, 5 red\nGame 30: 3 green, 7 red, 3 blue; 5 green, 5 blue, 12 red; 14 red, 6 green, 11 blue; 7 blue, 9 green, 11 red; 10 red, 1 blue, 4 green\nGame 31: 6 green, 5 blue, 17 red; 16 blue, 17 green, 14 red; 13 green, 13 blue, 3 red; 18 red, 8 green, 14 blue; 18 green, 1 blue; 16 red, 6 blue\nGame 32: 12 green, 2 blue; 6 blue, 5 red, 10 green; 13 green, 2 blue; 2 red, 6 blue, 6 green; 9 green, 8 red\nGame 33: 4 blue, 6 red, 2 green; 7 red, 5 blue; 3 blue, 1 red, 1 green\nGame 34: 2 red, 7 blue, 1 green; 2 blue, 1 green, 6 red; 6 red, 3 green, 7 blue; 4 green, 13 red, 1 blue; 15 blue, 1 green, 5 red\nGame 35: 8 blue, 12 red, 7 green; 2 blue, 14 red, 3 green; 14 green, 8 blue, 7 red; 15 red, 12 blue, 12 green; 11 blue, 14 red, 1 green\nGame 36: 11 red, 8 green, 2 blue; 17 red, 2 blue; 3 blue, 8 green, 19 red; 6 red, 3 blue, 3 green; 8 red, 5 green\nGame 37: 2 blue, 3 red, 12 green; 3 red, 7 green, 4 blue; 7 blue, 3 red, 8 green; 13 green, 3 red, 2 blue; 2 green\nGame 38: 2 blue, 14 red, 17 green; 1" <> ...,
before_each: nil,
after_each: nil,
before_scenario: nil,
after_scenario: nil,
tag: nil,
run_time_data: %Benchee.CollectionData{
statistics: %Benchee.Statistics{
average: 9410359.968652038,
ips: 106.26586053362658,
std_dev: 257942.5684335316,
std_dev_ratio: 0.027410489002843097,
std_dev_ips: 2.9127992015346296,
median: 9374374.0,
percentiles: %{50 => 9374374.0, 99 => 10249178.8},
mode: nil,
minimum: 8960580,
maximum: 10345794,
relative_more: 16.629162648372752,
relative_less: 0.06013531896615703,
absolute_difference: 8844464.970350793,
sample_size: 319
},
samples: [9361594, 9250702, 9374374, 9079430, 9287233, 9124611, 9285222, 9391194, 9598546,
9370764, 9584196, 9491825, 10157442, 9413744, 9589656, 9442485, 9599826, 9385364, 9969260,
9154161, 9282873, 9142911, 9390574, 9136091, 9368813, 9197942, 9443574, 9038880, 9500645,
9519096, 9308602, ...]
},
memory_usage_data: %Benchee.CollectionData{
statistics: %Benchee.Statistics{
average: 2692880.0,
ips: nil,
std_dev: 0.0,
std_dev_ratio: 0.0,
std_dev_ips: nil,
median: 2692880.0,
percentiles: %{50 => 2692880.0, 99 => 2692880.0},
mode: 2692880,
minimum: 2692880,
maximum: 2692880,
relative_more: 7.244531711827548,
relative_less: 0.13803514702922517,
absolute_difference: 2321167.9132679403,
sample_size: 283
},
samples: [2692880, 2692880, 2692880, 2692880, 2692880, 2692880, 2692880, 2692880, 2692880,
2692880, 2692880, 2692880, 2692880, 2692880, 2692880, 2692880, 2692880, 2692880, 2692880,
2692880, 2692880, 2692880, 2692880, 2692880, 2692880, 2692880, 2692880, 2692880, 2692880,
2692880, ...]
},
reductions_data: %Benchee.CollectionData{
statistics: %Benchee.Statistics{
average: 232638.54193548387,
ips: nil,
std_dev: 99.53791222620562,
std_dev_ratio: 4.278650966348036e-4,
std_dev_ips: nil,
median: 232598.0,
percentiles: %{50 => 232598.0, 99 => 232999.8},
mode: 232578,
minimum: 232490,
maximum: 233054,
relative_more: 6.396088802801162,
relative_less: 0.15634554660373864,
absolute_difference: 196266.54193548387,
sample_size: 310
},
samples: [232614, 232650, 232586, 232594, 232634, 232614, 232550, 232598, 232646, 232654,
232606, 232574, 232598, 232606, 232558, 232602, 232586, 232634, 232606, 232622, 232618,
232602, 232590, 232610, 232598, 232658, 232614, 232622, 232578, ...]
}
},
%Benchee.Scenario{
name: "PartOneNx",
job_name: "PartOneNx",
function: &PartOneNx.solve/1,
input_name: "input",
input: "Game 1: 12 red, 2 green, 5 blue; 9 red, 6 green, 4 blue; 10 red, 2 green, 5 blue; 8 blue, 9 red\nGame 2: 3 green, 7 red; 3 blue, 5 red; 2 green, 1 blue, 6 red; 3 green, 2 red, 3 blue\nGame 3: 12 red, 18 blue, 3 green; 14 red, 4 blue, 2 green; 4 green, 15 red\nGame 4: 14 blue, 8 red, 10 green; 7 green, 9 blue, 4 red; 4 green, 5 red\nGame 5: 2 red, 1 blue, 4 green; 1 blue, 1 red, 5 green; 6 green, 3 red; 10 blue, 4 green, 1 red\nGame 6: 5 red, 5 blue, 1 green; 5 blue, 15 red, 2 green; 3 green, 1 red, 9 blue\nGame 7: 9 red, 8 blue, 13 green; 9 red, 7 blue, 10 green; 7 blue, 2 red, 11 green; 4 red, 6 blue, 10 green; 3 blue, 12 green, 1 red\nGame 8: 20 red, 5 green, 10 blue; 14 red, 8 blue, 5 green; 5 green, 4 blue, 9 red; 18 red, 1 green; 2 blue, 1 green, 5 red\nGame 9: 3 blue; 3 blue, 4 green, 1 red; 8 green, 2 blue, 4 red; 5 green, 4 red\nGame 10: 18 red, 11 green, 3 blue; 2 blue, 19 red, 7 green; 4 green, 1 blue, 6 red; 4 green, 2 red, 4 blue; 10 green, 5 red, 2 blue; 13 red, 12 green, 4 blue\nGame 11: 5 green, 5 blue, 3 red; 2 red, 8 blue, 4 green; 4 blue, 4 green, 2 red; 1 blue, 3 red, 2 green; 4 blue, 4 green; 6 blue, 2 red\nGame 12: 6 blue, 1 green, 4 red; 12 blue, 4 red; 12 blue, 2 red, 6 green\nGame 13: 11 red, 17 blue, 7 green; 20 red, 12 green, 9 blue; 15 red, 15 green, 14 blue; 7 red, 6 green, 3 blue\nGame 14: 8 red, 17 green, 6 blue; 5 red, 13 blue, 7 green; 2 red, 15 green, 4 blue; 9 blue, 2 green; 7 green, 2 blue, 8 red; 10 green, 14 blue, 10 red\nGame 15: 14 red, 4 green, 4 blue; 14 red, 2 green, 16 blue; 10 blue, 2 green, 6 red\nGame 16: 2 red, 3 green; 5 green; 1 red, 1 blue; 2 red, 3 green, 1 blue; 5 red, 4 green; 5 red, 4 green\nGame 17: 4 blue, 3 green, 9 red; 3 blue, 8 red, 1 green; 1 blue, 5 green; 8 green, 2 red; 10 red, 1 green\nGame 18: 10 blue, 5 red; 1 green, 9 red, 9 blue; 5 blue, 3 red; 3 red, 1 blue; 2 blue, 9 red, 1 green; 6 red, 7 blue, 1 green\nGame 19: 9 green, 2 red, 12 blue; 3 green, 9 red, 16 blue; 2 green, 17 blue; 11 green, 3 blue, 7 red; 2 red, 10 blue, 11 green\nGame 20: 17 blue, 16 green; 13 green, 12 blue, 13 red; 6 red, 9 green, 6 blue\nGame 21: 1 green, 3 red, 1 blue; 1 blue, 2 green, 2 red; 2 green, 1 blue, 3 red\nGame 22: 7 green, 3 blue, 5 red; 2 green, 14 red, 3 blue; 2 green, 17 red; 2 blue, 15 red, 6 green; 4 green, 1 blue, 17 red\nGame 23: 4 blue, 2 red; 2 red, 7 blue, 1 green; 6 red, 5 blue, 5 green; 9 red, 4 blue; 10 blue, 8 red, 11 green\nGame 24: 1 red, 9 green, 5 blue; 14 green, 4 blue, 2 red; 5 blue, 1 red, 11 green; 3 blue, 2 red, 4 green\nGame 25: 3 green, 2 red, 1 blue; 2 blue, 10 green, 1 red; 8 red, 4 green, 1 blue; 3 blue, 15 red, 6 green; 2 blue, 13 red, 8 green; 2 red, 5 blue, 5 green\nGame 26: 5 green, 5 red; 12 green; 5 green, 3 blue, 4 red; 1 blue, 1 red, 17 green; 2 blue, 18 green\nGame 27: 1 blue, 7 green, 3 red; 3 red, 1 green, 13 blue; 4 green, 8 blue; 1 red, 3 green, 4 blue; 9 blue, 2 red\nGame 28: 9 red, 2 green, 5 blue; 5 red, 9 green; 5 blue, 1 red\nGame 29: 4 green, 10 blue, 13 red; 2 red, 5 green, 5 blue; 2 red, 9 green, 11 blue; 9 blue, 9 red, 13 green; 13 blue, 2 green, 14 red; 3 green, 8 blue, 5 red\nGame 30: 3 green, 7 red, 3 blue; 5 green, 5 blue, 12 red; 14 red, 6 green, 11 blue; 7 blue, 9 green, 11 red; 10 red, 1 blue, 4 green\nGame 31: 6 green, 5 blue, 17 red; 16 blue, 17 green, 14 red; 13 green, 13 blue, 3 red; 18 red, 8 green, 14 blue; 18 green, 1 blue; 16 red, 6 blue\nGame 32: 12 green, 2 blue; 6 blue, 5 red, 10 green; 13 green, 2 blue; 2 red, 6 blue, 6 green; 9 green, 8 red\nGame 33: 4 blue, 6 red, 2 green; 7 red, 5 blue; 3 blue, 1 red, 1 green\nGame 34: 2 red, 7 blue, 1 green; 2 blue, 1 green, 6 red; 6 red, 3 green, 7 blue; 4 green, 13 red, 1 blue; 15 blue, 1 green, 5 red\nGame 35: 8 blue, 12 red, 7 green; 2 blue, 14 red, 3 green; 14 green, 8 blue, 7 red; 15 red, 12 blue, 12 green; 11 blue, 14 red, 1 green\nGame 36: 11 red, 8 green, 2 blue; 17 red, 2 blue; 3 blue, 8 green, 19 red; 6 red, 3 blue, 3 green; 8 red, 5 green\nGame 37: 2 blue, 3 red, 12 green; 3 red, 7 green, 4 blue; 7 blue, 3 red, 8 green; 13 green, 3 red, 2 blue; 2 green\nGame 38: 2 blue, 14 red, 17 green; 1" <> ...,
before_each: nil,
after_each: nil,
before_scenario: nil,
after_scenario: nil,
tag: nil,
run_time_data: %Benchee.CollectionData{
statistics: %Benchee.Statistics{
average: 9802959.294117646,
ips: 102.01001248674561,
std_dev: 537241.9555060205,
std_dev_ratio: 0.054804058589572775,
std_dev_ips: 5.5905627010466565,
median: 9580991.5,
percentiles: %{50 => 9580991.5, 99 => 10930417.0},
mode: 9476925,
minimum: 9119850,
maximum: 11034722,
relative_more: 17.32292973704494,
relative_less: 0.057726955842896964,
absolute_difference: 9237064.295816401,
sample_size: 306
},
samples: [9650257, 9431414, 9459845, 9179412, 9402304, 9186661, 9420215, 9461484, 9400514,
9301333, 9517786, 9163251, 9358643, 9148971, 9383844, 9481425, 9119850, 9330444, 9358193,
9158682, 9383854, 9337033, 9345783, 9361314, 9476255, 9611146, 9600046, 9605946, 9629696,
9626997, ...]
},
memory_usage_data: %Benchee.CollectionData{
statistics: %Benchee.Statistics{
average: 2712960.0,
ips: nil,
std_dev: 0.0,
std_dev_ratio: 0.0,
std_dev_ips: nil,
median: 2712960.0,
percentiles: %{50 => 2712960.0, 99 => 2712960.0},
mode: 2712960,
minimum: 2712960,
maximum: 2712960,
relative_more: 7.298552016027326,
relative_less: 0.1370134785371181,
absolute_difference: 2341247.9132679403,
sample_size: 262
},
samples: [2712960, 2712960, 2712960, 2712960, 2712960, 2712960, 2712960, 2712960, 2712960,
2712960, 2712960, 2712960, 2712960, 2712960, 2712960, 2712960, 2712960, 2712960, 2712960,
2712960, 2712960, 2712960, 2712960, 2712960, 2712960, 2712960, 2712960, 2712960, 2712960,
...]
},
reductions_data: %Benchee.CollectionData{
statistics: %Benchee.Statistics{
average: 234350.14285714287,
ips: nil,
std_dev: 103.68539972455599,
std_dev_ratio: 4.4243796253096976e-4,
std_dev_ips: nil,
median: 234331.0,
percentiles: %{50 => 234331.0, 99 => 235167.0},
mode: 234307,
minimum: 234235,
maximum: 235203,
relative_more: 6.443147004760334,
relative_less: 0.15520366045678902,
absolute_difference: 197978.14285714287,
sample_size: 294
},
samples: [234291, 234287, 234299, 234299, 234283, 234287, 234287, 234307, 234331, 234319,
234315, 234299, 234319, 234303, 234307, 234295, 234287, 234295, 234299, 234307, 234291,
234355, 234319, 234311, 234311, 234307, 234315, 234295, ...]
}
},
%Benchee.Scenario{
name: "PartOne",
job_name: "PartOne",
function: &PartOne.solve/1,
input_name: "test_input",
input: "Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green\nGame 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue\nGame 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red\nGame 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red\nGame 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green\n",
before_each: nil,
after_each: nil,
before_scenario: nil,
after_scenario: nil,
tag: nil,
run_time_data: %Benchee.CollectionData{
statistics: %Benchee.Statistics{
average: 18442.29796950836,
ips: 54223.17770016262,
std_dev: 4139.546621345681,
std_dev_ratio: 0.22445937204733465,
std_dev_ips: 12170.900416989542,
median: 17961.0,
percentiles: %{50 => 17961.0, 99 => 26799.59999999992},
mode: 17870,
minimum: 17480,
maximum: 1269594,
relative_more: nil,
relative_less: nil,
absolute_difference: nil,
sample_size: 160503
},
samples: [30890, 20550, 19211, 21790, 22860, 19410, 20571, 18190, 19300, 19600, 18140,
19091, 23070, 20250, 20260, 18651, 18940, 18910, 18340, 18960, 20261, 19650, 20070, 18130,
18791, 19220, 18120, 18810, 20370, ...]
},
memory_usage_data: %Benchee.CollectionData{
statistics: %Benchee.Statistics{
average: 13136.0,
ips: nil,
std_dev: 0.0,
std_dev_ratio: 0.0,
std_dev_ips: nil,
median: 13136.0,
percentiles: %{50 => 13136.0, 99 => 13136.0},
mode: 13136,
minimum: 13136,
maximum: 13136,
relative_more: nil,
relative_less: nil,
absolute_difference: nil,
sample_size: 65114
},
samples: [13136, 13136, 13136, 13136, 13136, 13136, 13136, 13136, 13136, 13136, 13136,
13136, 13136, 13136, 13136, 13136, 13136, 13136, 13136, 13136, 13136, 13136, 13136, 13136,
13136, 13136, 13136, 13136, ...]
},
reductions_data: %Benchee.CollectionData{
statistics: %Benchee.Statistics{
average: 1256.0,
ips: nil,
std_dev: 0.0,
std_dev_ratio: 0.0,
std_dev_ips: nil,
median: 1256.0,
percentiles: %{50 => 1256.0, 99 => 1256.0},
mode: 1256,
minimum: 1256,
maximum: 1256,
relative_more: nil,
relative_less: nil,
absolute_difference: nil,
sample_size: 32332
},
samples: [1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256,
1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, ...]
}
},
%Benchee.Scenario{
name: "PartTwo",
job_name: "PartTwo",
function: &PartTwo.solve/1,
input_name: "test_input",
input: "Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green\nGame 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue\nGame 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red\nGame 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red\nGame 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green\n",
before_each: nil,
after_each: nil,
before_scenario: nil,
after_scenario: nil,
tag: nil,
run_time_data: %Benchee.CollectionData{
statistics: %Benchee.Statistics{
average: 18483.811578717155,
ips: 54101.395469289004,
std_dev: 3532.3837881437516,
std_dev_ratio: 0.1911068922716703,
std_dev_ips: 10339.149555696446,
median: 18130.0,
percentiles: %{50 => 18130.0, 99 => 24470.0},
mode: 18050,
minimum: 17681,
maximum: 1187013,
relative_more: 1.0022509998091036,
relative_less: 0.9977540558108374,
absolute_difference: 41.51360920879597,
sample_size: 160035
},
samples: [28660, 21011, 18200, 27930, 19810, 19100, 19691, 21510, 19560, 19070, 19261,
19980, 21390, 20960, 17980, 21541, 20060, 18680, 19030, 19651, 20670, 18950, 18170, 22640,
18931, 18740, 19450, 19130, ...]
},
memory_usage_data: %Benchee.CollectionData{
statistics: %Benchee.Statistics{
average: 12336.0,
ips: nil,
std_dev: 0.0,
std_dev_ratio: 0.0,
std_dev_ips: nil,
median: 12336.0,
percentiles: %{50 => 12336.0, 99 => 12336.0},
mode: 12336,
minimum: 12336,
maximum: 12336,
relative_more: 0.9390986601705238,
relative_less: 1.0648508430609598,
absolute_difference: -800.0,
sample_size: 69127
},
samples: [12336, 12336, 12336, 12336, 12336, 12336, 12336, 12336, 12336, 12336, 12336,
12336, 12336, 12336, 12336, 12336, 12336, 12336, 12336, 12336, 12336, 12336, 12336, 12336,
12336, 12336, 12336, ...]
},
reductions_data: %Benchee.CollectionData{
statistics: %Benchee.Statistics{
average: 1195.0,
ips: nil,
std_dev: 0.0,
std_dev_ratio: 0.0,
std_dev_ips: nil,
median: 1195.0,
percentiles: %{50 => 1195.0, 99 => 1195.0},
mode: 1195,
minimum: 1195,
maximum: 1195,
relative_more: 0.9514331210191083,
relative_less: 1.0510460251046025,
absolute_difference: -61.0,
sample_size: 32865
},
samples: [1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, ...]
}
},
%Benchee.Scenario{
name: "PartTwoNx",
job_name: "PartTwoNx",
function: &PartTwoNx.solve/1,
input_name: "test_input",
input: "Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green\nGame 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue\nGame 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red\nGame 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red\nGame 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green\n",
before_each: nil,
after_each: nil,
before_scenario: nil,
after_scenario: nil,
tag: nil,
run_time_data: %Benchee.CollectionData{
statistics: %Benchee.Statistics{
average: 566038.941387786,
ips: 1766.662904054357,
std_dev: 34043.2686496366,
std_dev_ratio: 0.06014297985606965,
std_dev_ips: 106.25237145100671,
median: 555316.0,
percentiles: %{50 => 555316.0, 99 => 661834.0000000006},
mode: [541706, 542266, 548996],
minimum: 519426,
maximum: 939001,
relative_more: 30.69243010408185,
relative_less: 0.03258132368824741,
absolute_difference: 547596.6434182776,
sample_size: 5289
},
samples: [731658, 580806, 585057, 612047, 608017, 596316, 592567, 617796, 585737, 584376,
586107, 588186, 597437, 567586, 654128, 579986, 596597, 573016, 603157, 578206, 586947,
604156, 607357, 615737, 580376, 587687, 635477, ...]
},
memory_usage_data: %Benchee.CollectionData{
statistics: %Benchee.Statistics{
average: 144312.0,
ips: nil,
std_dev: 0.0,
std_dev_ratio: 0.0,
std_dev_ips: nil,
median: 144312.0,
percentiles: %{50 => 144312.0, 99 => 144312.0},
mode: 144312,
minimum: 144312,
maximum: 144312,
relative_more: 10.98599269183922,
relative_less: 0.09102500138588614,
absolute_difference: 131176.0,
sample_size: 3826
},
samples: [144312, 144312, 144312, 144312, 144312, 144312, 144312, 144312, 144312, 144312,
144312, 144312, 144312, 144312, 144312, 144312, 144312, 144312, 144312, 144312, 144312,
144312, 144312, 144312, 144312, 144312, ...]
},
reductions_data: %Benchee.CollectionData{
statistics: %Benchee.Statistics{
average: 12512.621061907908,
ips: nil,
std_dev: 29.035396653230137,
std_dev_ratio: 0.002320488769664927,
std_dev_ips: nil,
median: 12501.0,
percentiles: %{50 => 12501.0, 99 => 12629.0},
mode: 12501,
minimum: 12493,
maximum: 12877,
relative_more: 9.962277915531773,
relative_less: 0.10037864918834893,
absolute_difference: 11256.621061907908,
sample_size: 4539
},
samples: [12501, 12509, 12497, 12517, 12513, 12501, 12525, 12509, 12501, 12509, 12501,
12497, 12525, 12513, 12505, 12525, 12513, 12501, 12497, 12493, 12497, 12517, 12513, 12501,
12525, ...]
}
},
%Benchee.Scenario{
name: "PartOneNx",
job_name: "PartOneNx",
function: &PartOneNx.solve/1,
input_name: "test_input",
input: "Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green\nGame 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue\nGame 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red\nGame 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red\nGame 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green\n",
before_each: nil,
after_each: nil,
before_scenario: nil,
after_scenario: nil,
tag: nil,
run_time_data: %Benchee.CollectionData{
statistics: %Benchee.Statistics{
average: 669447.4825659365,
ips: 1493.7691544780828,
std_dev: 48138.792490847714,
std_dev_ratio: 0.07190824335664947,
std_dev_ips: 107.41431587886649,
median: 658657.5,
percentiles: %{50 => 658657.5, 99 => 794814.0},
mode: [625287, 624267, 650537, 613977],
minimum: 595547,
maximum: 1176503,
relative_more: 36.29956980809929,
relative_less: 0.027548535844545363,
absolute_difference: 651005.1845964282,
sample_size: 4474
},
samples: [741688, 669247, 677497, 670018, 653687, 675988, 665437, 644667, 635287, 663148,
645987, 633287, 649637, 647927, 714938, 659037, 657408, 683367, 654987, 659497, 672657,
684088, 685628, 665357, 693248, 674797, ...]
},
memory_usage_data: %Benchee.CollectionData{
statistics: %Benchee.Statistics{
average: 166504.0,
ips: nil,
std_dev: 0.0,
std_dev_ratio: 0.0,
std_dev_ips: nil,
median: 166504.0,
percentiles: %{50 => 166504.0, 99 => 166504.0},
mode: 166504,
minimum: 166504,
maximum: 166504,
relative_more: 12.675395858708892,
relative_less: 0.07889299956757796,
absolute_difference: 153368.0,
sample_size: 3472
},
samples: [166504, 166504, 166504, 166504, 166504, 166504, 166504, 166504, 166504, 166504,
166504, 166504, 166504, 166504, 166504, 166504, 166504, 166504, 166504, 166504, 166504,
166504, 166504, 166504, 166504, ...]
},
reductions_data: %Benchee.CollectionData{
statistics: %Benchee.Statistics{
average: 14224.123802849801,
ips: nil,
std_dev: 29.706863741993523,
std_dev_ratio: 0.0020884846162574707,
std_dev_ips: nil,
median: 14214.0,
percentiles: %{50 => 14214.0, 99 => 14342.0},
mode: 14210,
minimum: 14198,
maximum: 14406,
relative_more: 11.324939333479142,
relative_less: 0.08830069376564063,
absolute_difference: 12968.123802849801,
sample_size: 4281
},
samples: [14282, 14282, 14282, 14302, 14274, 14282, 14290, 14282, 14278, 14282, 14282,
14286, 14270, 14282, 14282, 14278, 14274, 14282, 14290, 14282, 14274, 14278, 14286, 14290,
...]
}
}
]
}
Hah, that tensor allocation overhead isn’t nothing, huh?