From f59f572a94717161779674a2c6136770648b93b1 Mon Sep 17 00:00:00 2001 From: Ben Harris Date: Wed, 22 Dec 2021 10:04:15 -0500 Subject: [PATCH] days 21 and 22 --- aoc2021.test/DayTests.cs | 4 + aoc2021/Day21.cs | 107 ++++++++++ aoc2021/Day22.cs | 71 +++++++ aoc2021/input/day21.in | 2 + aoc2021/input/day22.in | 420 +++++++++++++++++++++++++++++++++++++++ aoc2021/input/test21.in | 2 + aoc2021/input/test22.in | 22 ++ 7 files changed, 628 insertions(+) create mode 100644 aoc2021/Day21.cs create mode 100644 aoc2021/Day22.cs create mode 100644 aoc2021/input/day21.in create mode 100644 aoc2021/input/day22.in create mode 100644 aoc2021/input/test21.in create mode 100644 aoc2021/input/test22.in diff --git a/aoc2021.test/DayTests.cs b/aoc2021.test/DayTests.cs index ff0346d..54d5997 100644 --- a/aoc2021.test/DayTests.cs +++ b/aoc2021.test/DayTests.cs @@ -41,6 +41,8 @@ public class DayTests [DataRow(typeof(Day18), "4289", "4807")] // [DataRow(typeof(Day19), "338", "9862")] // takes too long and i don't feel like optimizing [DataRow(typeof(Day20), "5306", "17497")] + [DataRow(typeof(Day21), "512442", "346642902541848")] + [DataRow(typeof(Day22), "658691", "1228699515783640")] public void CheckAllDays(Type dayType, string part1, string part2) { var s = Stopwatch.StartNew(); @@ -91,6 +93,8 @@ public class DayTests [DataRow(typeof(Day18), "4140", "3993")] [DataRow(typeof(Day19), "79", "3621")] [DataRow(typeof(Day20), "35", "3351")] + [DataRow(typeof(Day21), "739785", "444356092776315")] + [DataRow(typeof(Day22), "590784", "39769202357779")] public void CheckTestInputs(Type dayType, string part1, string part2) { Day.UseTestInput = true; diff --git a/aoc2021/Day21.cs b/aoc2021/Day21.cs new file mode 100644 index 0000000..7b045fe --- /dev/null +++ b/aoc2021/Day21.cs @@ -0,0 +1,107 @@ +namespace aoc2021; + +/// +/// Day 21: +/// +public sealed class Day21 : Day +{ + private readonly int _player1, _player2; + private readonly Dictionary _possibleRollOutComes = new(); + private int _deterministicDie = 1; + private int _rollCount; + private ulong _player1Victories, _player2Victories; + + public Day21() : base(21, "Dirac Dice") + { + var s = Input + .Select(l => l.Split(": ")[1]) + .Select(int.Parse) + .ToList(); + + _player1 = s[0]; + _player2 = s[1]; + } + + private int Turn(int pos) + { + var moves = _deterministicDie; + IncMod(ref _deterministicDie); + moves += _deterministicDie; + IncMod(ref _deterministicDie); + moves += _deterministicDie; + IncMod(ref _deterministicDie); + return (moves + pos - 1) % 10 + 1; + } + + private void IncMod(ref int i, int limit = 100) + { + _rollCount++; + if (i >= limit) i = 1; + else i++; + } + + private void RollDiracDie(int player1Points, int player2Points, int player1Pos, int player2Pos, + int playerTurn, ulong universes) + { + if (player1Points > 21 || player2Points > 21) return; + + if (playerTurn == 1) + foreach (var (key, value) in _possibleRollOutComes) + { + var pts = (key + player1Pos - 1) % 10 + 1; + if (player1Points + pts < 21) + RollDiracDie(player1Points + pts, player2Points, pts, player2Pos, 2, (value * universes)); + else + _player1Victories += universes * value; + } + else + foreach (var (key, value) in _possibleRollOutComes) + { + var pts = (key + player2Pos - 1) % 10 + 1; + if (player2Points + pts < 21) + RollDiracDie(player1Points, player2Points + pts, player1Pos, pts, 1, (value * universes)); + else + _player2Victories += universes * value; + } + } + + public override object Part1() + { + int p1Score = 0, p2Score = 0, p1Pos = _player1, p2Pos = _player2; + + while (true) + { + if (p2Score >= 1000) break; + + var dest1 = Turn(p1Pos); + p1Score += dest1; + p1Pos = dest1; + + if (p1Score >= 1000) break; + + var dest2 = Turn(p2Pos); + p2Score += dest2; + p2Pos = dest2; + } + + return Math.Min(p1Score, p2Score) * _rollCount; + } + + public override object Part2() + { + for (var x = 1; x <= 3; x++) + for (var y = 1; y <= 3; y++) + for (var z = 1; z <= 3; z++) + { + var total = x + y + z; + if (!_possibleRollOutComes.ContainsKey(total)) + _possibleRollOutComes[total] = 1; + else + _possibleRollOutComes[total]++; + } + + RollDiracDie(0, 0, _player1, _player2, 1, 1); + + return Math.Max(_player1Victories, _player2Victories); + } +} \ No newline at end of file diff --git a/aoc2021/Day22.cs b/aoc2021/Day22.cs new file mode 100644 index 0000000..e5d081b --- /dev/null +++ b/aoc2021/Day22.cs @@ -0,0 +1,71 @@ +namespace aoc2021; + +/// +/// Day 22: +/// +public sealed class Day22 : Day +{ + private readonly List _instructions = new(); + + public Day22() : base(22, "Reactor Reboot") + { + foreach (var line in Input) + { + var s = line.Split(' '); + var e = s[1] + .Split(',') + .Select(i => i.Split('=')[1]) + .SelectMany(l => l.Split("..")) + .Select(int.Parse) + .ToList(); + + _instructions.Add(new(s[0] == "off", new(new(e[0], e[1]), new(e[2], e[3]), new(e[4], e[5])))); + } + } + + private long ActiveCubes(int x, Region3D region) + { + if (region.IsEmpty || x < 0) return 0; + + var intersection = region.Intersect(_instructions[x].Region); + var activeInRegion = ActiveCubes(x - 1, region); + var activeInIntersection = ActiveCubes(x - 1, intersection); + var activeOutsideIntersection = activeInRegion - activeInIntersection; + + // outside the intersection is unaffected, the rest is either on or off: + return _instructions[x].Disable ? activeOutsideIntersection : activeOutsideIntersection + intersection.Volume; + + } + + public override object Part1() + { + var f = new RangeSegment(-50, 50); + return ActiveCubes(_instructions.Count - 1, new(f, f, f)); + } + + public override object Part2() + { + var f = new RangeSegment(-int.MaxValue, int.MaxValue); + return ActiveCubes(_instructions.Count - 1, new(f, f, f)); + } + + private record Instruction(bool Disable, Region3D Region); + + private record RangeSegment(int From, int To) + { + public bool IsEmpty => From > To; + public long Length => IsEmpty ? 0 : To - From + 1; + + public RangeSegment Intersect(RangeSegment other) => + new(Math.Max(From, other.From), Math.Min(To, other.To)); + } + + private record Region3D(RangeSegment X, RangeSegment Y, RangeSegment Z) + { + public bool IsEmpty => X.IsEmpty || Y.IsEmpty || Z.IsEmpty; + public long Volume => X.Length * Y.Length * Z.Length; + + public Region3D Intersect(Region3D other) => + new(X.Intersect(other.X), Y.Intersect(other.Y), Z.Intersect(other.Z)); + } +} diff --git a/aoc2021/input/day21.in b/aoc2021/input/day21.in new file mode 100644 index 0000000..80e66ac --- /dev/null +++ b/aoc2021/input/day21.in @@ -0,0 +1,2 @@ +Player 1 starting position: 8 +Player 2 starting position: 9 diff --git a/aoc2021/input/day22.in b/aoc2021/input/day22.in new file mode 100644 index 0000000..a5ee55b --- /dev/null +++ b/aoc2021/input/day22.in @@ -0,0 +1,420 @@ +on x=-1..48,y=-18..35,z=-45..4 +on x=-18..33,y=-45..9,z=-47..-1 +on x=-19..32,y=-9..43,z=-6..44 +on x=-27..22,y=-22..29,z=-11..43 +on x=-41..3,y=2..49,z=-21..26 +on x=-12..35,y=-39..12,z=-11..34 +on x=-49..3,y=-49..-5,z=-35..19 +on x=-49..3,y=-37..14,z=-35..15 +on x=-11..41,y=-8..38,z=-16..28 +on x=-39..9,y=-7..46,z=-36..11 +off x=22..35,y=-6..10,z=-4..6 +on x=0..45,y=-33..20,z=-20..33 +off x=-28..-12,y=18..32,z=10..23 +on x=-10..43,y=-22..23,z=-29..21 +off x=-2..15,y=-19..-7,z=32..44 +on x=-10..36,y=-22..27,z=-28..26 +off x=-43..-24,y=-4..15,z=-3..7 +on x=-5..49,y=-10..36,z=-7..46 +off x=-10..0,y=25..36,z=32..42 +on x=-35..10,y=3..47,z=-42..2 +on x=10292..26688,y=59532..71266,z=-61766..-43846 +on x=-53182..-39353,y=-65776..-43374,z=-40984..-16111 +on x=-58009..-33532,y=54907..83704,z=-19177..548 +on x=30209..49381,y=5448..9353,z=-78210..-68638 +on x=51178..66318,y=-34558..-12845,z=-59023..-37776 +on x=20479..27372,y=35992..51149,z=43388..66987 +on x=9799..14318,y=-88771..-76838,z=-19272..-5864 +on x=50706..68680,y=-54387..-34070,z=-3382..19323 +on x=335..28845,y=-6395..-2340,z=75205..89948 +on x=-29430..-13853,y=-45838..-31566,z=43363..71374 +on x=-8524..10461,y=53497..83098,z=26986..57106 +on x=-62497..-50524,y=-1582..23857,z=-60748..-41025 +on x=74143..90251,y=-15780..-10376,z=-8777..15673 +on x=-13213..2379,y=43234..71768,z=-64343..-34201 +on x=-30723..-20015,y=57148..79890,z=35293..44175 +on x=64353..86936,y=-28800..-8479,z=-54151..-23176 +on x=-11413..2815,y=-47196..-25539,z=-90134..-61660 +on x=48979..77426,y=28092..51755,z=3637..39445 +on x=-69888..-61455,y=20275..44095,z=-16249..13206 +on x=-58472..-33079,y=21591..55664,z=-47245..-34518 +on x=-44223..-10150,y=28211..45901,z=-68011..-56023 +on x=44570..65290,y=-25796..6542,z=43364..71346 +on x=27585..38556,y=32419..45013,z=57905..66635 +on x=40846..62786,y=-40412..-22729,z=-75758..-39230 +on x=11933..38307,y=-51813..-39599,z=-71883..-55399 +on x=-76594..-52635,y=3272..29125,z=18608..37580 +on x=-71899..-44604,y=-26855..-769,z=-67223..-48961 +on x=-82509..-58865,y=-65877..-39005,z=-18683..1407 +on x=46779..58672,y=50896..59778,z=-21199..-17035 +on x=9242..26713,y=-65765..-60594,z=-46424..-34172 +on x=-42524..-28659,y=-73080..-67742,z=-20495..8365 +on x=-77762..-50266,y=32883..70133,z=6195..20808 +on x=-80376..-60768,y=16047..28475,z=-3463..31528 +on x=-67071..-55234,y=-55054..-42227,z=-25267..-12001 +on x=-52747..-25140,y=53033..68811,z=-30800..-13204 +on x=-74056..-50742,y=33253..61846,z=-11051..22554 +on x=884..32461,y=19315..49666,z=57587..77654 +on x=-29481..5152,y=56852..82746,z=-29984..-20369 +on x=-82064..-64666,y=-46973..-21731,z=-18401..914 +on x=-34934..-22279,y=-7742..12099,z=67135..87372 +on x=27465..61467,y=-85472..-65129,z=-4237..22254 +on x=-80381..-62026,y=-16184..12347,z=-2651..17457 +on x=69178..79493,y=16016..31837,z=-30066..-6941 +on x=58377..77863,y=-39777..-24772,z=10071..23002 +on x=48442..63706,y=-38552..-16295,z=26113..45339 +on x=-13335..-4868,y=-22175..3111,z=70940..84632 +on x=-36181..-20184,y=-86761..-55273,z=11813..24214 +on x=-26526..6392,y=-86737..-67545,z=15208..26858 +on x=-41697..-11341,y=-67684..-50768,z=-50023..-34874 +on x=-44283..-29341,y=50069..65137,z=16291..32937 +on x=-13737..13518,y=34160..56368,z=-64104..-55124 +on x=-41467..-20172,y=-56108..-30856,z=48850..71379 +on x=-73727..-60444,y=-37460..-28199,z=-9066..3356 +on x=27344..52074,y=37384..62673,z=-36910..-26850 +on x=-80527..-63118,y=-7819..14033,z=34192..36345 +on x=61051..78708,y=39294..50128,z=-20827..1285 +on x=26726..60698,y=-31747..-14301,z=-68875..-55244 +on x=58293..74218,y=-7217..-58,z=27209..42785 +on x=16798..50670,y=-68005..-44913,z=-49444..-28285 +on x=16748..34592,y=-61174..-55605,z=-66029..-45698 +on x=-9375..15162,y=43634..71201,z=-61026..-57673 +on x=-21922..-8471,y=-35213..-5237,z=-89805..-58705 +on x=40507..50361,y=-75821..-48923,z=-25397..7369 +on x=3497..13168,y=53981..83329,z=-49767..-26576 +on x=-47985..-18318,y=-52177..-38638,z=-62333..-42841 +on x=-71589..-44545,y=-56337..-38196,z=-32354..3050 +on x=-21744..-11127,y=65023..92837,z=-27885..-5719 +on x=-60827..-27158,y=-77388..-56241,z=8423..42905 +on x=-3415..22438,y=-38105..-15993,z=-95955..-76115 +on x=-45323..-34463,y=44561..50643,z=-63999..-42223 +on x=5158..23904,y=-69138..-34597,z=-59221..-40866 +on x=36923..53585,y=44288..61327,z=39198..56116 +on x=-64918..-38968,y=57460..62088,z=8947..30454 +on x=-19472..4315,y=-9881..25534,z=67512..88477 +on x=-19322..-4647,y=51754..78044,z=42004..66218 +on x=-56084..-41038,y=39692..59940,z=-45770..-34070 +on x=-64655..-53379,y=-19603..-7182,z=48172..63856 +on x=-84742..-51480,y=-40279..-27497,z=-36583..-22700 +on x=12650..26785,y=-83255..-59200,z=-41616..-31127 +on x=45345..77224,y=-55551..-34660,z=-30544..-12049 +on x=-74026..-44388,y=35577..55130,z=-45713..-9853 +on x=45201..64504,y=-41118..-15260,z=35803..68395 +on x=-28668..-5925,y=36026..54071,z=-72582..-59110 +on x=-60295..-35526,y=-68018..-61750,z=-7533..26299 +on x=-15839..5573,y=56539..66237,z=-61049..-39765 +on x=-19103..1455,y=17388..40404,z=67480..79225 +on x=68183..75406,y=-8345..21591,z=20697..38662 +on x=-12606..12296,y=-62262..-40916,z=-56920..-47779 +on x=-30210..-19684,y=-58656..-29986,z=-62999..-50022 +on x=-41781..-18933,y=70096..80964,z=930..28257 +on x=58515..81081,y=-19157..-7764,z=-749..22814 +on x=-36468..-7523,y=-4485..16276,z=-82639..-55736 +on x=-17821..5703,y=-43734..-20259,z=60530..86122 +on x=-67070..-58437,y=-15623..-2156,z=-55733..-28589 +on x=57608..75127,y=29614..46316,z=-25665..-10046 +on x=-74636..-52649,y=12192..41942,z=-35745..-17436 +on x=-48575..-33267,y=-51680..-46450,z=33948..66864 +on x=46470..74556,y=-55803..-43731,z=-12813..-4520 +on x=62541..77459,y=-24439..-11764,z=-55106..-35094 +on x=-57792..-45622,y=-53447..-36460,z=-53150..-35681 +on x=44672..65150,y=39838..58343,z=423..27649 +on x=66565..79736,y=-3676..21015,z=14005..38723 +on x=61922..91970,y=8327..10789,z=-20323..2488 +on x=-27586..-10336,y=-61389..-44749,z=-64363..-47539 +on x=-76339..-43595,y=-30824..-14219,z=-71195..-38102 +on x=-2914..28327,y=52279..79154,z=25622..50431 +on x=14592..20229,y=-87387..-61943,z=16315..49757 +on x=-82215..-59175,y=-797..21247,z=6622..27407 +on x=11251..41584,y=-252..20658,z=71136..87064 +on x=9886..32822,y=29548..61741,z=59730..76336 +on x=-7855..14348,y=67583..80902,z=5744..18485 +on x=26112..39316,y=51704..80793,z=11029..30029 +on x=795..28775,y=-34240..-27197,z=-78054..-54474 +on x=56223..75620,y=11250..25211,z=39671..43024 +on x=-87370..-59866,y=10030..29821,z=12702..36824 +on x=56779..87392,y=-1347..28978,z=-49750..-11313 +on x=-54293..-38099,y=-40529..-25148,z=47024..70703 +on x=851..23744,y=-77739..-71188,z=-38949..-11214 +on x=25485..45943,y=31702..39631,z=41474..72200 +on x=-62674..-31219,y=63432..82919,z=2388..17976 +on x=8190..34813,y=-50078..-21869,z=-85521..-51791 +on x=-37169..-28619,y=-82834..-54782,z=6972..33255 +on x=-94037..-61263,y=-25046..-13909,z=-1595..13575 +on x=-48575..-18955,y=-33677..-7346,z=-86145..-60031 +on x=-70103..-45107,y=56430..67948,z=-4521..22032 +on x=-39000..-11704,y=-89826..-66521,z=2050..13409 +on x=-79014..-51289,y=-18428..-7420,z=-40051..-36036 +on x=63968..77897,y=-46827..-24236,z=-17549..-1367 +on x=40284..69939,y=-59306..-37365,z=-33218..-24152 +on x=-5865..6145,y=-45825..-19521,z=54336..77839 +on x=-36677..-2216,y=-18925..10640,z=76012..92808 +on x=34752..51086,y=-46989..-9643,z=45901..76454 +on x=-33588..-15727,y=-11258..9373,z=-96263..-60633 +on x=-73095..-49898,y=25057..49623,z=15417..28776 +on x=4163..24517,y=-20001..-2003,z=-80081..-60804 +on x=-86958..-54386,y=6397..30505,z=-38410..-16437 +on x=-39425..-21522,y=60205..71184,z=-26523..-9906 +on x=-1999..16749,y=-19711..3250,z=-90466..-79089 +on x=52104..70877,y=49853..69350,z=-26043..-5847 +on x=24930..39110,y=62242..79178,z=11719..29720 +on x=-60664..-51784,y=43333..65915,z=601..19359 +on x=-29790..-6353,y=15820..24330,z=60477..88555 +on x=32312..47112,y=-28093..-18926,z=-79625..-46718 +on x=60532..91913,y=-20228..-1888,z=-19805..-11355 +on x=32446..58611,y=47906..68941,z=11821..34225 +on x=-39549..-18048,y=40533..75594,z=46997..70196 +on x=-32503..-25718,y=51256..59295,z=-70760..-49449 +on x=-59217..-29514,y=-74861..-57830,z=-6269..24788 +on x=-80361..-65493,y=428..2713,z=33014..44378 +on x=31542..41702,y=-32423..-22521,z=56883..80195 +on x=9359..34184,y=-76555..-63080,z=11041..40148 +on x=7929..24123,y=50480..66548,z=-64026..-46463 +on x=-43348..-34979,y=-68370..-55559,z=26232..43403 +on x=-4464..10557,y=46962..65148,z=-71132..-61326 +on x=-3771..22814,y=44252..68810,z=45781..60494 +on x=16543..35012,y=13610..25339,z=65440..82579 +on x=50974..66025,y=30398..66352,z=-2272..16038 +on x=46191..53893,y=-38750..-27782,z=-46797..-31742 +on x=59527..88181,y=4389..27568,z=18080..46791 +on x=36489..52121,y=-60282..-37683,z=-33913..-12899 +on x=-60041..-48837,y=53336..56411,z=-12772..19906 +on x=-82656..-78380,y=-23713..7350,z=846..9694 +on x=-69894..-54155,y=20299..50513,z=-12904..4460 +on x=26093..46240,y=-28122..1445,z=-77998..-52871 +on x=-53121..-32900,y=-63457..-34367,z=27620..52825 +on x=-84340..-58234,y=44385..45908,z=-9758..3136 +on x=-5984..19701,y=-46271..-28381,z=-75864..-47509 +on x=56726..68908,y=36981..42831,z=-15306..17015 +on x=-44682..-25301,y=39444..56028,z=25699..54323 +on x=58214..80818,y=9623..41643,z=-16613..-11010 +on x=-82918..-50677,y=22662..39310,z=-16004..6698 +on x=-32905..-27900,y=5414..42444,z=64349..78279 +on x=-70719..-58202,y=-41565..-19928,z=13718..33387 +on x=56598..71196,y=-48262..-39005,z=-402..34641 +on x=74793..78440,y=-26790..-8302,z=3994..33189 +on x=-59924..-37383,y=29231..42923,z=-65456..-35636 +on x=-78704..-48945,y=-23030..-14889,z=41803..50251 +on x=52005..72511,y=-63467..-39781,z=-42303..-19657 +on x=-27872..-10193,y=-15032..84,z=-82481..-77982 +on x=-8502..20386,y=-61440..-50322,z=-60658..-51335 +on x=-62283..-27803,y=-33963..-8484,z=41565..64105 +on x=2033..26056,y=28525..29178,z=57035..90868 +on x=-81809..-66606,y=-33053..-21379,z=14578..30469 +on x=-44610..-15911,y=-69004..-46363,z=-64934..-36016 +on x=-68945..-52936,y=-42125..-28586,z=29486..35239 +on x=-22616..494,y=-93383..-64839,z=-33613..-13156 +on x=53402..81484,y=-45709..-29640,z=16971..27227 +on x=-17329..2689,y=38367..60236,z=-65779..-53760 +on x=544..9988,y=-88763..-77587,z=-17004..12529 +on x=28694..49703,y=69019..79788,z=-28728..1438 +on x=-22376..3335,y=43849..67633,z=40655..65775 +on x=-80423..-61942,y=-18552..16738,z=-16089..-10995 +on x=-5300..17339,y=-75762..-63850,z=-44774..-23776 +on x=-74769..-55813,y=27477..42211,z=-30079..-3179 +on x=-40995..-24004,y=-41765..-23675,z=52719..78465 +on x=53025..66595,y=-3553..22759,z=-53394..-38188 +on x=-45876..-36194,y=55838..79908,z=2550..25102 +on x=-63485..-52881,y=18021..42286,z=27309..46403 +on x=-48779..-39049,y=-58743..-33299,z=35080..60133 +on x=-31467..4569,y=-61369..-32859,z=-85202..-59337 +off x=21993..32253,y=48441..65406,z=-47996..-40073 +off x=-35198..-22285,y=69010..86520,z=-9592..7187 +on x=-64097..-37019,y=13152..21867,z=61006..76336 +off x=-22742..-5033,y=-56240..-40408,z=48511..65431 +on x=-36566..-5811,y=-16313..2085,z=-93612..-64069 +off x=61089..77983,y=-41277..-14061,z=-50208..-34100 +off x=-68065..-53648,y=23725..27195,z=31676..42758 +off x=21031..52474,y=-74280..-49485,z=-47275..-27138 +off x=-93645..-53928,y=12384..44405,z=-27207..-41 +on x=-4055..5189,y=-40337..-32543,z=-81591..-55238 +on x=-34530..-11306,y=-22986..10495,z=-82396..-61102 +on x=-31250..-14900,y=-30548..-18642,z=52820..73833 +on x=34978..60410,y=28155..49790,z=39140..72681 +off x=-6448..19399,y=5391..27886,z=-91414..-59741 +off x=-75827..-60684,y=-46368..-41254,z=-15781..397 +on x=-57977..-22796,y=-76925..-41529,z=18880..52786 +off x=-83983..-60140,y=-44019..-12351,z=-14305..4593 +off x=-49298..-44993,y=4614..27922,z=-70305..-59112 +off x=-62329..-61994,y=-7625..18261,z=-69368..-38425 +on x=67823..80427,y=5390..27375,z=-5980..8640 +on x=-73645..-61230,y=-44444..-19430,z=-17891..-2980 +off x=-64208..-46311,y=-63901..-30902,z=23938..57840 +on x=32048..60913,y=-7824..11109,z=-78997..-55347 +on x=-61365..-36248,y=-74363..-55469,z=-7759..11367 +off x=42202..64640,y=35785..61939,z=6015..23732 +off x=5488..28392,y=57003..93250,z=-1191..12909 +off x=67515..82974,y=-39921..-21713,z=-18901..19539 +on x=-96694..-76643,y=-1592..33662,z=7429..21816 +on x=-52157..-33815,y=53007..73829,z=8064..26216 +on x=75229..85614,y=-599..18554,z=7659..19227 +on x=28376..57292,y=-72617..-48528,z=-22618..-19371 +off x=-59398..-44521,y=-29031..-15883,z=-70674..-34037 +on x=55293..83437,y=2780..19016,z=-41097..-20096 +on x=-14860..4603,y=56936..77754,z=18511..39251 +off x=52997..63549,y=-37151..-14473,z=-58163..-32431 +on x=-23500..2396,y=-26375..-132,z=-93218..-65307 +off x=69361..93524,y=-24773..-5007,z=-8425..3017 +on x=58814..85297,y=-47032..-35846,z=-13872..16641 +off x=-90866..-64554,y=-27446..-12033,z=-6160..23746 +off x=-3033..13343,y=-85265..-63549,z=-32550..-16157 +off x=-1789..15572,y=-40747..-20883,z=60589..75014 +on x=-9804..23598,y=-64924..-59519,z=35818..48512 +on x=-38448..-2399,y=-13227..-7752,z=-85365..-63035 +on x=28680..44639,y=-8409..2978,z=-80875..-61970 +off x=3813..25722,y=49510..58204,z=45835..68471 +on x=63257..90085,y=-7449..19104,z=-25..23109 +on x=81..38276,y=44760..68292,z=-80214..-43996 +on x=-8169..20844,y=17766..36865,z=-81104..-59358 +off x=-79202..-62792,y=-26615..-9801,z=-4233..9695 +off x=16101..39646,y=-93382..-62245,z=8333..24397 +on x=-34695..-24663,y=61543..78424,z=-50217..-29226 +off x=-92579..-74463,y=-17185..2660,z=-27311..-9170 +off x=58152..76439,y=-33703..-22233,z=-8339..20525 +on x=-34466..-2282,y=-59486..-37139,z=54046..71619 +off x=-81089..-74394,y=13555..29830,z=10991..21447 +off x=-47693..-41300,y=-66511..-57519,z=-15746..2821 +off x=-86020..-71840,y=-28708..-19562,z=-31911..-8481 +off x=53433..76347,y=17199..50613,z=17411..41638 +off x=64984..70249,y=16701..43046,z=27880..52439 +on x=-25413..-5189,y=-70745..-53828,z=-45390..-30486 +off x=-34986..-20787,y=16693..54533,z=-68201..-66989 +off x=-22407..10815,y=-56235..-28903,z=66827..82035 +off x=-7229..24987,y=-74889..-70150,z=-42634..-10717 +on x=61850..74170,y=-3025..17055,z=-51696..-31704 +on x=-10078..11184,y=49432..67395,z=41346..45818 +off x=-44780..-29593,y=-37456..-16661,z=-86554..-51942 +off x=24959..39704,y=47845..59502,z=41279..53062 +off x=50387..84028,y=-14697..3304,z=31116..52595 +on x=7987..30004,y=-74741..-53596,z=-65460..-47213 +on x=-75044..-57110,y=47945..68090,z=8399..24536 +on x=26605..43266,y=-76631..-58644,z=-16557..13316 +on x=-18526..-445,y=29437..47879,z=-78656..-62931 +off x=47346..50550,y=7714..28258,z=-68990..-43642 +off x=5010..26119,y=-70819..-52223,z=43562..46965 +off x=40922..70019,y=13891..28648,z=38562..60313 +on x=-68851..-46794,y=15843..29283,z=26538..63304 +off x=-10070..19847,y=-42799..-16564,z=-89201..-61852 +on x=-94..26044,y=35850..59332,z=43166..74939 +on x=72857..82846,y=11676..31044,z=-7337..21481 +on x=-86891..-74618,y=8041..15909,z=-22524..7319 +off x=-6531..4581,y=55498..74729,z=17054..43380 +on x=43147..61852,y=-52092..-34293,z=-53407..-33277 +on x=42898..63895,y=38414..67321,z=36757..53643 +off x=-48094..-21082,y=-2904..16322,z=61588..93757 +off x=28145..50157,y=-49071..-30119,z=38908..63084 +off x=-42556..-25827,y=39054..63949,z=-69190..-50949 +on x=-51347..-32594,y=-67175..-45834,z=-49233..-33986 +on x=29820..43610,y=17692..42346,z=-69108..-46540 +on x=42237..51469,y=35615..63053,z=-52330..-42423 +on x=25808..53353,y=-24891..11597,z=-66644..-58186 +off x=5152..13607,y=-59351..-32970,z=57736..79356 +on x=-51521..-42645,y=16464..44515,z=47395..58429 +on x=57992..75886,y=-8447..21320,z=40625..59285 +on x=-22302..1936,y=26947..43631,z=65888..82038 +off x=-22444..-704,y=72602..90007,z=16263..38491 +off x=-35368..-16154,y=62065..85297,z=-10017..15270 +off x=75796..95425,y=-23028..9545,z=-10474..14719 +off x=-62881..-43507,y=28005..45544,z=-51730..-23001 +off x=-34342..-20555,y=18279..36660,z=-74104..-50052 +off x=-73479..-64663,y=-22317..-13353,z=-39912..-29567 +on x=1494..5125,y=66357..70787,z=-43240..-26843 +off x=-71559..-51960,y=37215..40836,z=11752..30396 +off x=68685..71294,y=-27543..-8806,z=17367..42352 +off x=-93924..-67132,y=-25823..11182,z=5431..33711 +off x=35564..65276,y=-23013..-7997,z=-72588..-54025 +on x=-90262..-68890,y=25897..51932,z=-5182..677 +on x=-2613..18067,y=-7780..25272,z=64835..97062 +off x=-71949..-47713,y=5377..23957,z=-51697..-33553 +on x=13021..38912,y=-80820..-56879,z=-43587..-19587 +on x=-84708..-48507,y=24611..53624,z=9478..25637 +off x=51153..63433,y=47603..59113,z=7910..20497 +off x=-34614..-13873,y=58451..70828,z=16703..47588 +on x=-15592..1816,y=-94634..-68699,z=-17343..4032 +off x=8693..17027,y=-85083..-57180,z=-32433..-22117 +on x=-71073..-48520,y=-61171..-56263,z=-8077..24429 +on x=18761..33445,y=-34161..-11912,z=-76487..-63493 +off x=-71183..-51320,y=-33705..-9711,z=-50743..-31159 +on x=21266..39612,y=-84552..-62206,z=-40513..-20917 +on x=-22410..285,y=17900..46706,z=72043..75407 +on x=17565..45107,y=55640..70614,z=-52893..-42440 +on x=4350..22563,y=-83182..-67900,z=15567..20770 +off x=23504..44371,y=-77148..-52414,z=-2767..2514 +off x=-59728..-48637,y=-43662..-15334,z=34025..65733 +on x=-4606..11234,y=60774..91167,z=-23118..-6966 +on x=59274..84616,y=5061..23662,z=-28929..-14210 +on x=-3514..9286,y=18826..27197,z=73597..85060 +off x=-73563..-52052,y=-1483..5727,z=42293..55936 +off x=-26925..-11613,y=44345..64963,z=-66419..-30161 +on x=-22891..-2780,y=-42061..-14656,z=-80953..-64258 +on x=13194..48131,y=-77347..-61475,z=13899..29867 +on x=21814..32657,y=-52867..-42563,z=-64833..-38328 +on x=50121..77992,y=-18402..12993,z=34458..53263 +on x=-5816..9664,y=-61030..-51780,z=-57924..-42385 +off x=-24547..-5855,y=42851..55379,z=-66831..-45917 +on x=-79253..-62961,y=-35210..-14357,z=-1851..14458 +off x=-45457..-34564,y=-1909..19181,z=-88225..-49236 +on x=-73093..-48713,y=-51280..-28270,z=-58417..-26764 +on x=28972..54932,y=32695..46221,z=-61346..-44126 +off x=-72001..-63001,y=21943..37488,z=-48733..-22731 +on x=-53378..-16455,y=38563..66217,z=-54458..-49292 +on x=-50481..-38389,y=33272..59345,z=-48408..-25772 +on x=-15684..16104,y=-3749..26449,z=-92691..-65542 +on x=-48257..-34591,y=42080..76060,z=31710..47665 +on x=-68085..-39645,y=42059..66145,z=-16754..12973 +on x=16863..38701,y=-73014..-55734,z=-49006..-30858 +on x=-47835..-12762,y=19470..24912,z=-72515..-52345 +off x=76693..90007,y=-22735..10009,z=1595..23810 +on x=-33312..2270,y=27162..58916,z=54379..77016 +off x=-37166..-19572,y=3437..29618,z=65395..82988 +on x=-69021..-40344,y=51504..67404,z=1562..19152 +off x=44270..65868,y=-20558..-1138,z=-69620..-46023 +on x=-25132..-893,y=43048..69830,z=33541..61843 +off x=-26336..-11905,y=-76697..-44759,z=37333..48386 +off x=-51573..-26363,y=51024..85220,z=17703..29898 +on x=6972..29846,y=40862..57749,z=53546..67014 +off x=-82587..-61588,y=30156..55947,z=-23441..-14242 +on x=53623..67812,y=-5042..4972,z=41771..66174 +off x=-20249..-1391,y=56910..79807,z=-54443..-40975 +on x=9661..39445,y=60898..86084,z=12021..22727 +on x=-5594..19977,y=-15658..-11820,z=63980..86826 +off x=51879..80957,y=-55766..-34337,z=-21867..1368 +off x=-9663..250,y=-31246..-21672,z=58525..87914 +on x=-49707..-41630,y=6704..24869,z=-65152..-43466 +on x=58344..69560,y=-12016..-131,z=29623..59642 +on x=-60068..-39875,y=49188..71862,z=-23840..6463 +on x=-72100..-54955,y=-36846..-26054,z=1190..18416 +on x=21115..33940,y=-89414..-56975,z=-25177..-1394 +off x=-69120..-43376,y=29560..39845,z=-46691..-27177 +on x=-29488..-8760,y=49023..71514,z=-48639..-35316 +off x=-237..19564,y=-51062..-32851,z=53532..84174 +off x=29377..42498,y=-87897..-54866,z=-1260..2339 +on x=-53421..-21867,y=54307..61870,z=22283..40589 +off x=30204..36157,y=-34923..-22939,z=58831..75622 +off x=45990..75451,y=40254..65804,z=-27928..-11460 +off x=-5053..9582,y=-56383..-35127,z=-67131..-57546 +on x=31129..54902,y=-1102..-114,z=65939..73127 +on x=-47621..-24798,y=-35621..-2323,z=61417..82385 +on x=-69723..-64530,y=22399..28572,z=-47850..-23758 +off x=-31316..-13914,y=22835..29818,z=69274..85492 +on x=-32403..-9823,y=-34119..-12164,z=66082..76097 +on x=-79078..-44568,y=39157..61837,z=19345..34957 +off x=30839..37226,y=-67241..-42234,z=-54829..-34916 +on x=63646..75622,y=12404..45966,z=-20861..4171 +off x=28471..57448,y=-68089..-47516,z=-33516..2 +on x=62495..87569,y=6106..27023,z=-45194..-17767 +off x=-38770..-31582,y=-87012..-57465,z=-28392..-2961 +on x=16627..29254,y=35706..48023,z=-71576..-43430 +off x=6249..33814,y=24230..54794,z=58085..82036 +off x=-27246..8755,y=4459..30303,z=-93666..-72766 +on x=58284..74924,y=-16099..10160,z=34646..54595 +off x=-63748..-51168,y=-13811..12314,z=49634..76027 +on x=22610..60232,y=-45531..-24668,z=48785..62445 +off x=26226..50900,y=-80496..-61749,z=383..32992 +off x=-772..26897,y=7961..26898,z=-80721..-73028 +off x=-55010..-50585,y=-36460..-23884,z=52171..64350 +on x=-76278..-56858,y=31576..38443,z=-32320..1565 +off x=-41500..-10670,y=-261..13422,z=-82902..-66496 +on x=19358..34516,y=309..16749,z=65757..78408 +off x=-57721..-25243,y=44303..64574,z=18464..39920 +on x=26428..31600,y=69169..79816,z=2105..40395 diff --git a/aoc2021/input/test21.in b/aoc2021/input/test21.in new file mode 100644 index 0000000..3f69194 --- /dev/null +++ b/aoc2021/input/test21.in @@ -0,0 +1,2 @@ +Player 1 starting position: 4 +Player 2 starting position: 8 diff --git a/aoc2021/input/test22.in b/aoc2021/input/test22.in new file mode 100644 index 0000000..e665295 --- /dev/null +++ b/aoc2021/input/test22.in @@ -0,0 +1,22 @@ +on x=-20..26,y=-36..17,z=-47..7 +on x=-20..33,y=-21..23,z=-26..28 +on x=-22..28,y=-29..23,z=-38..16 +on x=-46..7,y=-6..46,z=-50..-1 +on x=-49..1,y=-3..46,z=-24..28 +on x=2..47,y=-22..22,z=-23..27 +on x=-27..23,y=-28..26,z=-21..29 +on x=-39..5,y=-6..47,z=-3..44 +on x=-30..21,y=-8..43,z=-13..34 +on x=-22..26,y=-27..20,z=-29..19 +off x=-48..-32,y=26..41,z=-47..-37 +on x=-12..35,y=6..50,z=-50..-2 +off x=-48..-32,y=-32..-16,z=-15..-5 +on x=-18..26,y=-33..15,z=-7..46 +off x=-40..-22,y=-38..-28,z=23..41 +on x=-16..35,y=-41..10,z=-47..6 +off x=-32..-23,y=11..30,z=-14..3 +on x=-49..-5,y=-3..45,z=-29..18 +off x=18..30,y=-20..-8,z=-3..13 +on x=-41..9,y=-7..43,z=-33..15 +on x=-54112..-39298,y=-85059..-49293,z=-27449..7877 +on x=967..23432,y=45373..81175,z=27513..53682