[2k25] Add day 1
This commit is contained in:
@@ -7,7 +7,7 @@ namespace AdventOfCode;
|
||||
[MemoryDiagnoser(false)]
|
||||
public class DayBenchmark
|
||||
{
|
||||
private Day Day { get; } = new Day10();
|
||||
private Day Day { get; } = new Day1();
|
||||
|
||||
[GlobalSetup]
|
||||
public void Setup()
|
||||
|
||||
77
Days/Day1.cs
77
Days/Day1.cs
@@ -5,60 +5,83 @@ namespace AdventOfCode.Days;
|
||||
public class Day1 : Day
|
||||
{
|
||||
public override int Number => 1;
|
||||
public override string Name => "Historian Hysteria";
|
||||
public override string Name => "Secret Entrance";
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
List<int> leftNumbers = [];
|
||||
List<int> rightNumbers = [];
|
||||
var password = 0;
|
||||
var dialPosition = 50;
|
||||
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
foreach (var line in Input.EnumerateLines())
|
||||
{
|
||||
var separatorIndex = line.IndexOf(' ');
|
||||
var direction = line[0];
|
||||
var offset = int.Parse(line[1..]);
|
||||
|
||||
leftNumbers.Add(int.Parse(line[..separatorIndex]));
|
||||
rightNumbers.Add(int.Parse(line[(separatorIndex + 1)..]));
|
||||
var sign = direction is 'L'
|
||||
? -1
|
||||
: +1;
|
||||
|
||||
dialPosition = MathMod(dialPosition + (offset * sign), 100);
|
||||
|
||||
if (dialPosition is 0)
|
||||
{
|
||||
password++;
|
||||
}
|
||||
}
|
||||
|
||||
leftNumbers.Sort();
|
||||
rightNumbers.Sort();
|
||||
|
||||
var totalDistance = leftNumbers.Zip(rightNumbers, (a, b) => Math.Abs(a - b)).Sum();
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Total distance is: [yellow]{totalDistance}[/][/]");
|
||||
AnsiConsole.MarkupLine($"[green]Safe password is: [yellow]{password}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
List<int> leftNumbers = [];
|
||||
Dictionary<int, int> rightNumbersCount = [];
|
||||
var similarityScore = 0;
|
||||
var password = 0;
|
||||
var dialPosition = 50;
|
||||
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
foreach (var line in Input.EnumerateLines())
|
||||
{
|
||||
var separatorIndex = line.IndexOf(' ');
|
||||
var direction = line[0];
|
||||
var offset = int.Parse(line[1..]);
|
||||
|
||||
leftNumbers.Add(int.Parse(line[..separatorIndex]));
|
||||
var originalSign = Math.Sign(dialPosition);
|
||||
|
||||
var rightNumber = int.Parse(line[(separatorIndex + 1)..]);
|
||||
var sign = direction is 'L'
|
||||
? -1
|
||||
: +1;
|
||||
|
||||
if (!rightNumbersCount.TryAdd(rightNumber, 1))
|
||||
dialPosition = dialPosition + (offset * sign);
|
||||
|
||||
int clickCount;
|
||||
if (dialPosition is 0)
|
||||
{
|
||||
rightNumbersCount[rightNumber]++;
|
||||
clickCount = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
clickCount = Math.Abs(dialPosition) / 100; // Number of times the dial passed by 0
|
||||
|
||||
foreach (var leftNumber in leftNumbers)
|
||||
{
|
||||
similarityScore += leftNumber * rightNumbersCount.GetValueOrDefault(leftNumber);
|
||||
// If we did a loop around it counts as a "click" too
|
||||
if (originalSign != 0 && originalSign != Math.Sign(dialPosition))
|
||||
{
|
||||
clickCount++;
|
||||
}
|
||||
}
|
||||
|
||||
dialPosition = MathMod(dialPosition, 100);
|
||||
|
||||
password += clickCount;
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Similarity score is: [yellow]{similarityScore}[/][/]");
|
||||
AnsiConsole.MarkupLine($"[green]Safe password is: [yellow]{password}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
private static int MathMod(int left, int right)
|
||||
{
|
||||
return (Math.Abs(left * right) + left) % right;
|
||||
}
|
||||
}
|
||||
169
Days/Day10.cs
169
Days/Day10.cs
@@ -1,169 +0,0 @@
|
||||
using System.Collections.Frozen;
|
||||
using System.Numerics;
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
|
||||
public class Day10 : Day
|
||||
{
|
||||
public override int Number => 10;
|
||||
public override string Name => "Hoof It";
|
||||
|
||||
private const int MapSize = 60;
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var hikingTrailsScores = 0;
|
||||
|
||||
var (heightMap, trailHeads) = ParseMap();
|
||||
|
||||
var hikingTrails = new HashSet<Point>();
|
||||
|
||||
foreach (var trailHead in trailHeads)
|
||||
{
|
||||
hikingTrails.Clear();
|
||||
|
||||
GetHikingTrailScore(trailHead, -1);
|
||||
|
||||
hikingTrailsScores += hikingTrails.Count;
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Sum of scores of hiking trails: [yellow]{hikingTrailsScores}[/][/]");
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
void GetHikingTrailScore(Point position, int previousHeight)
|
||||
{
|
||||
// Out of bounds
|
||||
if (position is { X: < 0 or >= MapSize } or { Y: < 0 or >= MapSize })
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var height = heightMap[position.X, position.Y];
|
||||
|
||||
if (height - previousHeight is not 1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (height == 9)
|
||||
{
|
||||
hikingTrails.Add(position);
|
||||
}
|
||||
|
||||
|
||||
GetHikingTrailScore(position + (1, 0), height);
|
||||
GetHikingTrailScore(position + (-1, 0), height);
|
||||
GetHikingTrailScore(position + (0, 1), height);
|
||||
GetHikingTrailScore(position + (0, -1), height);
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
var (heightMap, trailHeads) = ParseMap();
|
||||
|
||||
var totalRating = 0;
|
||||
|
||||
foreach (var trailHead in trailHeads)
|
||||
{
|
||||
GetHikingTrailRating(trailHead, -1);
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Total rating of hiking trails: [yellow]{totalRating}[/][/]");
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
void GetHikingTrailRating(Point position, int previousHeight)
|
||||
{
|
||||
// Out of bounds
|
||||
if (position is { X: < 0 or >= MapSize } or { Y: < 0 or >= MapSize })
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var height = heightMap[position.X, position.Y];
|
||||
|
||||
if (height - previousHeight is not 1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (height == 9)
|
||||
{
|
||||
totalRating++;
|
||||
}
|
||||
|
||||
GetHikingTrailRating(position + (1, 0), height);
|
||||
GetHikingTrailRating(position + (-1, 0), height);
|
||||
GetHikingTrailRating(position + (0, 1), height);
|
||||
GetHikingTrailRating(position + (0, -1), height);
|
||||
}
|
||||
}
|
||||
|
||||
private (byte[,] HeightMap, List<Point> TrailHeads) ParseMap()
|
||||
{
|
||||
var heightMap = new byte[MapSize, MapSize];
|
||||
var trailHeads = new List<Point>();
|
||||
|
||||
var y = 0;
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
{
|
||||
var x = 0;
|
||||
foreach (var height in line)
|
||||
{
|
||||
var heightValue = height - '0';
|
||||
|
||||
if (heightValue is 0)
|
||||
{
|
||||
trailHeads.Add(new Point(x, y));
|
||||
}
|
||||
|
||||
heightMap[x, y] = (byte)heightValue;
|
||||
|
||||
x++;
|
||||
}
|
||||
|
||||
y++;
|
||||
}
|
||||
|
||||
return (heightMap, trailHeads);
|
||||
}
|
||||
|
||||
|
||||
private readonly record struct Point(int X, int Y)
|
||||
: IAdditionOperators<Point, Point, Point>,
|
||||
ISubtractionOperators<Point, Point, Point>,
|
||||
IMultiplyOperators<Point, int, Point>
|
||||
{
|
||||
public static Point operator +(Point left, Point right)
|
||||
{
|
||||
return new Point(left.X + right.X, left.Y + right.Y);
|
||||
}
|
||||
|
||||
public static Point operator -(Point left, Point right)
|
||||
{
|
||||
return new Point(left.X - right.X, left.Y - right.Y);
|
||||
}
|
||||
|
||||
public static Point operator *(Point left, int right)
|
||||
{
|
||||
return new Point(left.X * right, left.Y * right);
|
||||
}
|
||||
|
||||
public static Point operator *(int left, Point right)
|
||||
{
|
||||
return new Point(right.X * left, right.Y * left);
|
||||
}
|
||||
|
||||
public static implicit operator Point((int X, int Y) point)
|
||||
=> new(point.X, point.Y);
|
||||
}
|
||||
}
|
||||
127
Days/Day11.cs
127
Days/Day11.cs
@@ -1,127 +0,0 @@
|
||||
using System.Collections.Frozen;
|
||||
using System.Numerics;
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
|
||||
public class Day11 : Day
|
||||
{
|
||||
public override int Number => 11;
|
||||
public override string Name => "Plutonian Pebbles";
|
||||
|
||||
private const int BlinkIterations = 25;
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var stones = ParseStones();
|
||||
|
||||
for (var iteration = 0; iteration < BlinkIterations; iteration++)
|
||||
{
|
||||
var index = 0;
|
||||
|
||||
while (index < stones.Count)
|
||||
{
|
||||
var stone = stones[index];
|
||||
var stoneString = stone.ToString();
|
||||
|
||||
if (stone is 0)
|
||||
{
|
||||
stones[index] = 1;
|
||||
}
|
||||
else if (stoneString.Length % 2 == 0)
|
||||
{
|
||||
var splitIndex = stoneString.Length / 2;
|
||||
|
||||
var leftStone = long.Parse(stoneString[..splitIndex]);
|
||||
var rightStone = long.Parse(stoneString[splitIndex..]);
|
||||
|
||||
stones[index] = leftStone;
|
||||
stones.Insert(index + 1, rightStone);
|
||||
|
||||
index++;
|
||||
}
|
||||
else
|
||||
{
|
||||
stones[index] = stone * 2024;
|
||||
}
|
||||
|
||||
index++;
|
||||
}
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Number of stones after blinking {BlinkIterations} times: [yellow]{stones.Count}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
var stones = ParseStones().ToDictionary(s => s, _ => 1L);
|
||||
|
||||
for (var iteration = 0; iteration < (BlinkIterations * 3); iteration++)
|
||||
{
|
||||
var stonesToIterate = stones.ToList();
|
||||
|
||||
foreach (var (stone, count) in stonesToIterate)
|
||||
{
|
||||
var stoneString = stone.ToString();
|
||||
|
||||
if (stone is 0)
|
||||
{
|
||||
SafeAdd(stones, 1, count);
|
||||
}
|
||||
else if (stoneString.Length % 2 == 0)
|
||||
{
|
||||
var splitIndex = stoneString.Length / 2;
|
||||
|
||||
var leftStone = long.Parse(stoneString[..splitIndex]);
|
||||
var rightStone = long.Parse(stoneString[splitIndex..]);
|
||||
|
||||
SafeAdd(stones, leftStone, count);
|
||||
SafeAdd(stones, rightStone, count);
|
||||
}
|
||||
else
|
||||
{
|
||||
SafeAdd(stones, stone * 2024, count);
|
||||
|
||||
}
|
||||
|
||||
SafeAdd(stones, stone, -count);
|
||||
}
|
||||
}
|
||||
|
||||
var stonesCount = stones.Sum(p => p.Value);
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Number of stones after blinking {BlinkIterations} times: [yellow]{stonesCount}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
private List<long> ParseStones()
|
||||
{
|
||||
var stones = new List<long>();
|
||||
|
||||
var span = Input.AsSpan();
|
||||
|
||||
foreach (var stoneRange in span.Split(' '))
|
||||
{
|
||||
stones.Add(long.Parse(span[stoneRange]));
|
||||
}
|
||||
|
||||
return stones;
|
||||
}
|
||||
|
||||
private void SafeAdd(Dictionary<long, long> dictionary, long key, long valueToAdd)
|
||||
{
|
||||
if (dictionary.TryGetValue(key, out var currentValue))
|
||||
{
|
||||
dictionary[key] = currentValue + valueToAdd;
|
||||
}
|
||||
else
|
||||
{
|
||||
dictionary[key] = valueToAdd;
|
||||
}
|
||||
}
|
||||
}
|
||||
155
Days/Day12.cs
155
Days/Day12.cs
@@ -1,155 +0,0 @@
|
||||
using System.Collections.Frozen;
|
||||
using System.Numerics;
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
|
||||
public class Day12 : Day
|
||||
{
|
||||
public override int Number => 12;
|
||||
public override string Name => "Garden Groups";
|
||||
|
||||
private const int GridSize = 140;
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var areas = ParseAreas();
|
||||
|
||||
var visited = new HashSet<Point>();
|
||||
var totalPrice = 0;
|
||||
|
||||
var currentArea = 0;
|
||||
var currentPerimeter = 0;
|
||||
|
||||
for (var y = 0; y < GridSize; y++)
|
||||
{
|
||||
for (var x = 0; x < GridSize; x++)
|
||||
{
|
||||
// Skip already visited points
|
||||
if (visited.Contains(new Point(x, y)))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var id = areas[x, y];
|
||||
|
||||
ComputeAreaPrice(new Point(x, y), id, ref currentArea, ref currentPerimeter);
|
||||
|
||||
// Add price of fencing this area
|
||||
totalPrice += currentArea * currentPerimeter;
|
||||
|
||||
currentArea = 0;
|
||||
currentPerimeter = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Total pricing: [yellow]{totalPrice}[/][/]");
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
void ComputeAreaPrice(Point position, byte id, ref int area, ref int perimeter)
|
||||
{
|
||||
if (!visited.Add(position))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Update area and perimeter
|
||||
area++;
|
||||
perimeter += 4;
|
||||
|
||||
var left = position with { X = position.X - 1 };
|
||||
var right = position with { X = position.X + 1 };
|
||||
var up = position with { Y = position.Y - 1 };
|
||||
var down = position with { Y = position.Y + 1 };
|
||||
|
||||
if (left is { X: >= 0 and < GridSize } && areas[left.X, left.Y] == id)
|
||||
{
|
||||
perimeter--;
|
||||
|
||||
ComputeAreaPrice(left, id, ref area, ref perimeter);
|
||||
}
|
||||
|
||||
if (right is { X: >= 0 and < GridSize } && areas[right.X, right.Y] == id)
|
||||
{
|
||||
perimeter--;
|
||||
|
||||
ComputeAreaPrice(right, id, ref area, ref perimeter);
|
||||
}
|
||||
|
||||
if (up is { Y: >= 0 and < GridSize } && areas[up.X, up.Y] == id)
|
||||
{
|
||||
perimeter--;
|
||||
|
||||
ComputeAreaPrice(up, id, ref area, ref perimeter);
|
||||
}
|
||||
|
||||
if (down is { Y: >= 0 and < GridSize } && areas[down.X, down.Y] == id)
|
||||
{
|
||||
perimeter--;
|
||||
|
||||
ComputeAreaPrice(down, id, ref area, ref perimeter);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private byte[,] ParseAreas()
|
||||
{
|
||||
var areas = new byte[GridSize, GridSize];
|
||||
|
||||
int y = 0;
|
||||
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
{
|
||||
int x = 0;
|
||||
|
||||
foreach (var area in line)
|
||||
{
|
||||
areas[x, y] = (byte)(area - 'A');
|
||||
|
||||
x++;
|
||||
}
|
||||
|
||||
y++;
|
||||
}
|
||||
|
||||
return areas;
|
||||
}
|
||||
|
||||
private readonly record struct Point(int X, int Y)
|
||||
: IAdditionOperators<Point, Point, Point>,
|
||||
ISubtractionOperators<Point, Point, Point>,
|
||||
IMultiplyOperators<Point, int, Point>
|
||||
{
|
||||
public static Point operator +(Point left, Point right)
|
||||
{
|
||||
return new Point(left.X + right.X, left.Y + right.Y);
|
||||
}
|
||||
|
||||
public static Point operator -(Point left, Point right)
|
||||
{
|
||||
return new Point(left.X - right.X, left.Y - right.Y);
|
||||
}
|
||||
|
||||
public static Point operator *(Point left, int right)
|
||||
{
|
||||
return new Point(left.X * right, left.Y * right);
|
||||
}
|
||||
|
||||
public static Point operator *(int left, Point right)
|
||||
{
|
||||
return new Point(right.X * left, right.Y * left);
|
||||
}
|
||||
|
||||
public static implicit operator Point((int X, int Y) point)
|
||||
=> new(point.X, point.Y);
|
||||
}
|
||||
}
|
||||
@@ -1,87 +0,0 @@
|
||||
using System.Collections.Frozen;
|
||||
using System.Numerics;
|
||||
using System.Text;
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
|
||||
public class Day13 : Day
|
||||
{
|
||||
public override int Number => 13;
|
||||
public override string Name => "Claw Contraption";
|
||||
|
||||
private const int MaxButtonPress = 100;
|
||||
private const int ButtonACost = 3;
|
||||
private const int ButtonBCost = 1;
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var lines = Input.AsSpan().EnumerateLines();
|
||||
|
||||
var minimumTokensToWin = 0;
|
||||
|
||||
while (lines.MoveNext())
|
||||
{
|
||||
var (aX, aY, bX, bY, goalX, goalY) = ParseMachine(ref lines);
|
||||
|
||||
for (var i = MaxButtonPress; i >= 0; i--)
|
||||
{
|
||||
var xOffset = bX * i;
|
||||
|
||||
if (xOffset > goalX)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if ((goalX - xOffset) % aX != 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var timesAPressed = (goalX - xOffset) / aX;
|
||||
|
||||
if (bY * i + aY * timesAPressed != goalY)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
minimumTokensToWin += i * ButtonBCost + timesAPressed * ButtonACost;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Minimum tokens to win all prizes: [yellow]{minimumTokensToWin}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private (int aX, int aY, int bX, int bY, int goalX, int goalY) ParseMachine(ref SpanLineEnumerator lines)
|
||||
{
|
||||
var lineA = lines.Current;
|
||||
lines.MoveNext();
|
||||
|
||||
var lineB = lines.Current;
|
||||
lines.MoveNext();
|
||||
|
||||
var lineGoal = lines.Current;
|
||||
lines.MoveNext();
|
||||
|
||||
return (
|
||||
int.Parse(lineA[(lineA.IndexOf('+') + 1)..lineA.IndexOf(',')]),
|
||||
int.Parse(lineA[(lineA.LastIndexOf('+') + 1)..]),
|
||||
|
||||
int.Parse(lineB[(lineB.IndexOf('+') + 1)..lineB.IndexOf(',')]),
|
||||
int.Parse(lineB[(lineB.LastIndexOf('+') + 1)..]),
|
||||
|
||||
int.Parse(lineGoal[(lineGoal.IndexOf('=') + 1)..lineGoal.IndexOf(',')]),
|
||||
int.Parse(lineGoal[(lineGoal.LastIndexOf('=') + 1)..])
|
||||
);
|
||||
}
|
||||
}
|
||||
151
Days/Day14.cs
151
Days/Day14.cs
@@ -1,151 +0,0 @@
|
||||
using System.Collections.Frozen;
|
||||
using System.Numerics;
|
||||
using System.Text;
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
|
||||
public class Day14 : Day
|
||||
{
|
||||
public override int Number => 14;
|
||||
public override string Name => "Restroom Redoubt";
|
||||
|
||||
private const int Height = 103;
|
||||
private const int HeightCenter = Height / 2;
|
||||
|
||||
private const int Width = 101;
|
||||
private const int WidthCenter = Width / 2;
|
||||
|
||||
private const int Iterations = 100;
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var robots = ParseRobots();
|
||||
|
||||
for (var i = 0; i < Iterations; i++)
|
||||
{
|
||||
foreach (var robot in robots)
|
||||
{
|
||||
robot.Position = new Point(
|
||||
Math.Abs((Width + robot.Position.X + robot.Velocity.X) % Width),
|
||||
Math.Abs((Height + robot.Position.Y + robot.Velocity.Y) % Height)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Compute safety factor
|
||||
var safetyFactor =
|
||||
robots.Count(r => r.Position is { X: < WidthCenter, Y: < HeightCenter }) *
|
||||
robots.Count(r => r.Position is { X: > WidthCenter, Y: < HeightCenter }) *
|
||||
robots.Count(r => r.Position is { X: < WidthCenter, Y: > HeightCenter }) *
|
||||
robots.Count(r => r.Position is { X: > WidthCenter, Y: > HeightCenter });
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Safety factor: [yellow]{safetyFactor}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
var robots = ParseRobots();
|
||||
|
||||
var canvas = new Canvas(Width, Height);
|
||||
|
||||
for (var i = 0; i < int.MaxValue; i++)
|
||||
{
|
||||
for (var x = 0; x < Width; x++)
|
||||
{
|
||||
for (var y = 0; y < Height; y++)
|
||||
{
|
||||
canvas.SetPixel(x, y, Color.Grey23);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var robot in robots)
|
||||
{
|
||||
robot.Position = new Point(
|
||||
Math.Abs((Width + robot.Position.X + robot.Velocity.X) % Width),
|
||||
Math.Abs((Height + robot.Position.Y + robot.Velocity.Y) % Height)
|
||||
);
|
||||
|
||||
canvas.SetPixel(robot.Position.X, robot.Position.Y, Color.Green1);
|
||||
}
|
||||
|
||||
// Display grid
|
||||
if ((i + 1 - 46) % 101 == 0)
|
||||
{
|
||||
AnsiConsole.Write(canvas);
|
||||
AnsiConsole.WriteLine();
|
||||
|
||||
AnsiConsole.Write($"Seconds elapsed: {i + 1}");
|
||||
|
||||
var key = Console.ReadKey(true).Key;
|
||||
|
||||
if (key is ConsoleKey.Enter)
|
||||
{
|
||||
AnsiConsole.WriteLine();
|
||||
AnsiConsole.WriteLine();
|
||||
AnsiConsole.MarkupLine($"[green]Image at instant: [yellow]t={i + 1}s[/][/]");
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
AnsiConsole.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private List<Robot> ParseRobots()
|
||||
{
|
||||
var robots = new List<Robot>();
|
||||
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
{
|
||||
var positionX = int.Parse(line[(line.IndexOf('=') + 1)..line.IndexOf(',')]);
|
||||
var positionY = int.Parse(line[(line.IndexOf(',') + 1)..line.IndexOf(' ')]);
|
||||
|
||||
var velocityX = int.Parse(line[(line.LastIndexOf('=') + 1)..line.LastIndexOf(',')]);
|
||||
var velocityY = int.Parse(line[(line.LastIndexOf(',') + 1)..]);
|
||||
|
||||
robots.Add(new Robot(new Point(positionX, positionY), new Point(velocityX, velocityY)));
|
||||
}
|
||||
|
||||
return robots;
|
||||
}
|
||||
|
||||
private class Robot(Point position, Point velocity)
|
||||
{
|
||||
public Point Position { get; set; } = position;
|
||||
public Point Velocity { get; } = velocity;
|
||||
}
|
||||
|
||||
private readonly record struct Point(int X, int Y)
|
||||
: IAdditionOperators<Point, Point, Point>,
|
||||
ISubtractionOperators<Point, Point, Point>,
|
||||
IMultiplyOperators<Point, int, Point>
|
||||
{
|
||||
public static Point operator +(Point left, Point right)
|
||||
{
|
||||
return new Point(left.X + right.X, left.Y + right.Y);
|
||||
}
|
||||
|
||||
public static Point operator -(Point left, Point right)
|
||||
{
|
||||
return new Point(left.X - right.X, left.Y - right.Y);
|
||||
}
|
||||
|
||||
public static Point operator *(Point left, int right)
|
||||
{
|
||||
return new Point(left.X * right, left.Y * right);
|
||||
}
|
||||
|
||||
public static Point operator *(int left, Point right)
|
||||
{
|
||||
return new Point(right.X * left, right.Y * left);
|
||||
}
|
||||
|
||||
public static implicit operator Point((int X, int Y) point)
|
||||
=> new(point.X, point.Y);
|
||||
}
|
||||
}
|
||||
193
Days/Day15.cs
193
Days/Day15.cs
@@ -1,193 +0,0 @@
|
||||
using System.Collections.Frozen;
|
||||
using System.Numerics;
|
||||
using System.Text;
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
|
||||
public class Day15 : Day
|
||||
{
|
||||
public override int Number => 15;
|
||||
public override string Name => "Warehouse Woes";
|
||||
|
||||
private const int Size = 50;
|
||||
|
||||
private const char Wall = '#';
|
||||
private const char Box = 'O';
|
||||
private const char Empty = '.';
|
||||
|
||||
private const char InstructionLeft = '<';
|
||||
private const char InstructionRight = '>';
|
||||
private const char InstructionUp = '^';
|
||||
private const char InstructionDown = 'v';
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var (map, position, instructions) = ParseMap();
|
||||
|
||||
foreach (var instruction in instructions)
|
||||
{
|
||||
var direction = instruction switch
|
||||
{
|
||||
InstructionLeft => new Point(-1, 0),
|
||||
InstructionRight => new Point(1, 0),
|
||||
InstructionUp => new Point(0, -1),
|
||||
InstructionDown => new Point(0, 1),
|
||||
_ => throw new ArgumentException($"Invalid instruction: {instruction}")
|
||||
};
|
||||
|
||||
var destination = position + direction;
|
||||
|
||||
// Destination is free, just move
|
||||
if (map[destination.X, destination.Y] is not (Wall or Box))
|
||||
{
|
||||
position = destination;
|
||||
}
|
||||
// Destination is a box, check if there is a free space further up and move accordingly
|
||||
else if (map[destination.X, destination.Y] is Box)
|
||||
{
|
||||
var pushTarget = destination + direction;
|
||||
|
||||
while (map[pushTarget.X, pushTarget.Y] is Box)
|
||||
{
|
||||
pushTarget += direction;
|
||||
}
|
||||
|
||||
// Cannot move anything since there is a wall
|
||||
if (map[pushTarget.X, pushTarget.Y] is Wall)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// Move robot and boxes (only need to move first and last box of a chain)
|
||||
position = destination;
|
||||
|
||||
map[destination.X, destination.Y] = Empty;
|
||||
map[pushTarget.X, pushTarget.Y] = Box;
|
||||
}
|
||||
// Else destination is a wall, do nothing
|
||||
}
|
||||
|
||||
var coordinatesSum = 0;
|
||||
|
||||
// Count gps coordinates
|
||||
for (var x = 0; x < Size; x++)
|
||||
{
|
||||
for (var y = 0; y < Size; y++)
|
||||
{
|
||||
if (map[x, y] is Box)
|
||||
{
|
||||
coordinatesSum += 100 * y + x;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Sum of boxes GPS coordinates: [yellow]{coordinatesSum}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
private static void DisplayGrid(char[,] map)
|
||||
{
|
||||
for (var y = 0; y < Size; y++)
|
||||
{
|
||||
for (var x = 0; x < Size; x++)
|
||||
{
|
||||
AnsiConsole.Write(map[x, y]);
|
||||
}
|
||||
|
||||
AnsiConsole.WriteLine();
|
||||
}
|
||||
|
||||
AnsiConsole.WriteLine();
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private (char[,] Map, Point Start, List<char> Instructions) ParseMap()
|
||||
{
|
||||
var readingMap = true;
|
||||
|
||||
var map = new char[Size, Size];
|
||||
|
||||
Point start = default;
|
||||
|
||||
var instructions = new List<char>();
|
||||
|
||||
var y = 0;
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
{
|
||||
if (line.IsWhiteSpace())
|
||||
{
|
||||
readingMap = false;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if (readingMap)
|
||||
{
|
||||
var x = 0;
|
||||
foreach (var symbol in line)
|
||||
{
|
||||
map[x, y] = Empty;
|
||||
|
||||
if (symbol is Wall or Box)
|
||||
{
|
||||
map[x, y] = symbol;
|
||||
}
|
||||
else if (symbol is '@')
|
||||
{
|
||||
start = new Point(x, y);
|
||||
}
|
||||
|
||||
x++;
|
||||
}
|
||||
|
||||
y++;
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (var instruction in line)
|
||||
{
|
||||
instructions.Add(instruction);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (map, start, instructions);
|
||||
}
|
||||
|
||||
private readonly record struct Point(int X, int Y)
|
||||
: IAdditionOperators<Point, Point, Point>,
|
||||
ISubtractionOperators<Point, Point, Point>,
|
||||
IMultiplyOperators<Point, int, Point>
|
||||
{
|
||||
public static Point operator +(Point left, Point right)
|
||||
{
|
||||
return new Point(left.X + right.X, left.Y + right.Y);
|
||||
}
|
||||
|
||||
public static Point operator -(Point left, Point right)
|
||||
{
|
||||
return new Point(left.X - right.X, left.Y - right.Y);
|
||||
}
|
||||
|
||||
public static Point operator *(Point left, int right)
|
||||
{
|
||||
return new Point(left.X * right, left.Y * right);
|
||||
}
|
||||
|
||||
public static Point operator *(int left, Point right)
|
||||
{
|
||||
return new Point(right.X * left, right.Y * left);
|
||||
}
|
||||
|
||||
public static implicit operator Point((int X, int Y) point)
|
||||
=> new(point.X, point.Y);
|
||||
}
|
||||
}
|
||||
289
Days/Day16.cs
289
Days/Day16.cs
@@ -1,289 +0,0 @@
|
||||
using System.Numerics;
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
|
||||
public class Day16 : Day
|
||||
{
|
||||
public override int Number => 16;
|
||||
public override string Name => "Reindeer Maze";
|
||||
|
||||
private const int Size = 141;
|
||||
|
||||
private const char Wall = '#';
|
||||
private const char Empty = '.';
|
||||
private const char Start = 'S';
|
||||
private const char End = 'E';
|
||||
|
||||
private static readonly Point DirectionUp = new(0, -1);
|
||||
private static readonly Point DirectionDown = new(0, 1);
|
||||
private static readonly Point DirectionLeft = new(-1, 0);
|
||||
private static readonly Point DirectionRight = new(1, 0);
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var (maze, start, end) = ParseMaze();
|
||||
|
||||
var visited = new Dictionary<(Point Position, Point Direction), int>();
|
||||
|
||||
var minimumScore = int.MaxValue;
|
||||
|
||||
var toVisit = new Queue<(Point Position, Point Direction, int Score)>();
|
||||
|
||||
toVisit.Enqueue((start, DirectionRight, 0));
|
||||
|
||||
while (toVisit.Count > 0)
|
||||
{
|
||||
var (position, direction, score) = toVisit.Dequeue();
|
||||
|
||||
if (visited.TryGetValue((position, direction), out var savedScore) && savedScore <= score)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
visited[(position, direction)] = score;
|
||||
|
||||
// Reached end
|
||||
if (position == end)
|
||||
{
|
||||
if (score < minimumScore)
|
||||
{
|
||||
minimumScore = score;
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
// Try forward if there is no wall
|
||||
var destination = position + direction;
|
||||
|
||||
if (maze[destination.X, destination.Y] is not Wall)
|
||||
{
|
||||
toVisit.Enqueue((destination, direction, score + 1));
|
||||
}
|
||||
|
||||
// Also try changing direction
|
||||
toVisit.Enqueue((position, NextDirection(direction), score + 1000));
|
||||
toVisit.Enqueue((position, PreviousDirection(direction), score + 1000));
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Lowest score: [yellow]{minimumScore}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
var (maze, start, end) = ParseMaze();
|
||||
|
||||
var visited = new Dictionary<(Point Position, Point Direction), int>();
|
||||
|
||||
var minimumScore = int.MaxValue;
|
||||
|
||||
var toVisit = new Queue<(Point Position, Point Direction, int Score)>();
|
||||
|
||||
toVisit.Enqueue((start, DirectionRight, 0));
|
||||
|
||||
// First we need to find minimum score
|
||||
while (toVisit.Count > 0)
|
||||
{
|
||||
var (position, direction, score) = toVisit.Dequeue();
|
||||
|
||||
if (visited.TryGetValue((position, direction), out var savedScore) && savedScore <= score)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
visited[(position, direction)] = score;
|
||||
|
||||
// Reached end
|
||||
if (position == end)
|
||||
{
|
||||
if (score < minimumScore)
|
||||
{
|
||||
minimumScore = score;
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
// Try forward if there is no wall
|
||||
var destination = position + direction;
|
||||
|
||||
if (maze[destination.X, destination.Y] is not Wall)
|
||||
{
|
||||
toVisit.Enqueue((destination, direction, score + 1));
|
||||
}
|
||||
|
||||
// Also try changing direction
|
||||
toVisit.Enqueue((position, NextDirection(direction), score + 1000));
|
||||
toVisit.Enqueue((position, PreviousDirection(direction), score + 1000));
|
||||
}
|
||||
|
||||
// Now that we have minimum score, we need to find all the paths that lead to this score
|
||||
var toVisitPath = new Stack<(Point Position, Point Direction, int Score, List<Point> Path)>();
|
||||
toVisitPath.Push((start, DirectionRight, 0, []));
|
||||
|
||||
var minimumScorePaths = new List<List<Point>>();
|
||||
|
||||
while (toVisitPath.Count > 0)
|
||||
{
|
||||
var (position, direction, score, path) = toVisitPath.Pop();
|
||||
|
||||
if (score > minimumScore)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (visited.TryGetValue((position, direction), out var savedScore) && savedScore < score)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
path.Add(position);
|
||||
|
||||
// Reached end
|
||||
if (position == end)
|
||||
{
|
||||
minimumScorePaths.Add(path);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
// Try forward if there is no wall
|
||||
var destination = position + direction;
|
||||
|
||||
if (maze[destination.X, destination.Y] is not Wall)
|
||||
{
|
||||
toVisitPath.Push((destination, direction, score + 1, path));
|
||||
}
|
||||
|
||||
// Also try changing direction
|
||||
toVisitPath.Push((position, NextDirection(direction), score + 1000, path.ToList()));
|
||||
toVisitPath.Push((position, PreviousDirection(direction), score + 1000, path.ToList()));
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Unique positions in optimal paths: [yellow]{minimumScorePaths.SelectMany(l => l).ToHashSet().Count}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
private (char[,] Maze, Point Start, Point end) ParseMaze()
|
||||
{
|
||||
var maze = new char[Size, Size];
|
||||
Point start = default;
|
||||
Point end = default;
|
||||
|
||||
var y = 0;
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
{
|
||||
var x = 0;
|
||||
foreach (var symbol in line)
|
||||
{
|
||||
if (symbol is Start)
|
||||
{
|
||||
start = new Point(x, y);
|
||||
|
||||
maze[x, y] = Empty;
|
||||
}
|
||||
else if (symbol is End)
|
||||
{
|
||||
end = new Point(x, y);
|
||||
|
||||
maze[x, y] = Empty;
|
||||
}
|
||||
else
|
||||
{
|
||||
maze[x, y] = symbol;
|
||||
}
|
||||
|
||||
x++;
|
||||
}
|
||||
|
||||
y++;
|
||||
}
|
||||
|
||||
return (maze, start, end);
|
||||
}
|
||||
|
||||
private static Point NextDirection(Point direction)
|
||||
{
|
||||
if (direction == DirectionUp)
|
||||
{
|
||||
return DirectionRight;
|
||||
}
|
||||
|
||||
if (direction == DirectionRight)
|
||||
{
|
||||
return DirectionDown;
|
||||
}
|
||||
|
||||
if (direction == DirectionDown)
|
||||
{
|
||||
return DirectionLeft;
|
||||
}
|
||||
|
||||
if (direction == DirectionLeft)
|
||||
{
|
||||
return DirectionUp;
|
||||
}
|
||||
|
||||
throw new ArgumentException("Invalid direction", nameof(direction));
|
||||
}
|
||||
|
||||
private static Point PreviousDirection(Point direction)
|
||||
{
|
||||
if (direction == DirectionUp)
|
||||
{
|
||||
return DirectionLeft;
|
||||
}
|
||||
|
||||
if (direction == DirectionLeft)
|
||||
{
|
||||
return DirectionDown;
|
||||
}
|
||||
|
||||
if (direction == DirectionDown)
|
||||
{
|
||||
return DirectionRight;
|
||||
}
|
||||
|
||||
if (direction == DirectionRight)
|
||||
{
|
||||
return DirectionUp;
|
||||
}
|
||||
|
||||
throw new ArgumentException("Invalid direction", nameof(direction));
|
||||
}
|
||||
|
||||
private readonly record struct Point(int X, int Y)
|
||||
: IAdditionOperators<Point, Point, Point>,
|
||||
ISubtractionOperators<Point, Point, Point>,
|
||||
IMultiplyOperators<Point, int, Point>
|
||||
{
|
||||
public static Point operator +(Point left, Point right)
|
||||
{
|
||||
return new Point(left.X + right.X, left.Y + right.Y);
|
||||
}
|
||||
|
||||
public static Point operator -(Point left, Point right)
|
||||
{
|
||||
return new Point(left.X - right.X, left.Y - right.Y);
|
||||
}
|
||||
|
||||
public static Point operator *(Point left, int right)
|
||||
{
|
||||
return new Point(left.X * right, left.Y * right);
|
||||
}
|
||||
|
||||
public static Point operator *(int left, Point right)
|
||||
{
|
||||
return new Point(right.X * left, right.Y * left);
|
||||
}
|
||||
|
||||
public static implicit operator Point((int X, int Y) point)
|
||||
=> new(point.X, point.Y);
|
||||
}
|
||||
}
|
||||
247
Days/Day17.cs
247
Days/Day17.cs
@@ -1,247 +0,0 @@
|
||||
using System.Numerics;
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
|
||||
public class Day17 : Day
|
||||
{
|
||||
public override int Number => 17;
|
||||
public override string Name => "Chronospatial Computer";
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var (registerA, registerB, registerC, program) = ParseState();
|
||||
|
||||
var toOutput = new List<int>();
|
||||
var instructionPointer = 0;
|
||||
|
||||
while (instructionPointer < program.Length)
|
||||
{
|
||||
var opCode = program[instructionPointer];
|
||||
|
||||
var isComboOperand = opCode switch
|
||||
{
|
||||
0 => true,
|
||||
1 => false,
|
||||
2 => true,
|
||||
3 => false,
|
||||
4 => false,
|
||||
5 => true,
|
||||
6 => true,
|
||||
7 => true,
|
||||
_ => throw new ArgumentOutOfRangeException(nameof(opCode))
|
||||
};
|
||||
|
||||
var operand = (isComboOperand, program[instructionPointer + 1]) switch
|
||||
{
|
||||
(false, var literalValue) => literalValue,
|
||||
(true, 0) => 0,
|
||||
(true, 1) => 1,
|
||||
(true, 2) => 2,
|
||||
(true, 3) => 3,
|
||||
(true, 4) => registerA,
|
||||
(true, 5) => registerB,
|
||||
(true, 6) => registerC,
|
||||
_ => throw new ArgumentOutOfRangeException()
|
||||
};
|
||||
|
||||
switch (opCode)
|
||||
{
|
||||
// adv
|
||||
case 0:
|
||||
registerA = (int)(registerA / Math.Pow(2, operand));
|
||||
break;
|
||||
|
||||
// bxl
|
||||
case 1:
|
||||
registerB = registerB ^ operand;
|
||||
break;
|
||||
|
||||
// bst
|
||||
case 2:
|
||||
registerB = operand % 8;
|
||||
break;
|
||||
|
||||
// jnz
|
||||
case 3:
|
||||
if (registerA is not 0)
|
||||
{
|
||||
instructionPointer = operand - 2;
|
||||
}
|
||||
break;
|
||||
|
||||
// bxc
|
||||
case 4:
|
||||
registerB = registerB ^ registerC;
|
||||
break;
|
||||
|
||||
// out
|
||||
case 5:
|
||||
toOutput.Add(operand % 8);
|
||||
break;
|
||||
|
||||
// bdv
|
||||
case 6:
|
||||
registerB = (int)(registerA / Math.Pow(2, operand));
|
||||
break;
|
||||
|
||||
// cdv
|
||||
case 7:
|
||||
registerC = (int)(registerA / Math.Pow(2, operand));
|
||||
break;
|
||||
}
|
||||
|
||||
instructionPointer += 2;
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Output: [yellow]{string.Join(',', toOutput)}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
var (_, originalRegisterB, originalRegisterC, program) = ParseState();
|
||||
var toOutput = new List<int>();
|
||||
var instructionPointer = 0;
|
||||
|
||||
var finalRegisterA = 0;
|
||||
|
||||
AnsiConsole.Status().Start("Computing (0)...", ctx =>
|
||||
{
|
||||
for (var initialRegisterA = 0; initialRegisterA < int.MaxValue; initialRegisterA++)
|
||||
{
|
||||
// Reset state
|
||||
var registerA = initialRegisterA;
|
||||
var registerB = originalRegisterB;
|
||||
var registerC = originalRegisterC;
|
||||
|
||||
toOutput.Clear();
|
||||
instructionPointer = 0;
|
||||
|
||||
while (instructionPointer < program.Length)
|
||||
{
|
||||
var opCode = program[instructionPointer];
|
||||
|
||||
var isComboOperand = opCode switch
|
||||
{
|
||||
0 => true,
|
||||
1 => false,
|
||||
2 => true,
|
||||
3 => false,
|
||||
4 => false,
|
||||
5 => true,
|
||||
6 => true,
|
||||
7 => true,
|
||||
_ => throw new ArgumentOutOfRangeException(nameof(opCode))
|
||||
};
|
||||
|
||||
var operand = (isComboOperand, program[instructionPointer + 1]) switch
|
||||
{
|
||||
(false, var literalValue) => literalValue,
|
||||
(true, 0) => 0,
|
||||
(true, 1) => 1,
|
||||
(true, 2) => 2,
|
||||
(true, 3) => 3,
|
||||
(true, 4) => registerA,
|
||||
(true, 5) => registerB,
|
||||
(true, 6) => registerC,
|
||||
_ => throw new ArgumentOutOfRangeException()
|
||||
};
|
||||
|
||||
switch (opCode)
|
||||
{
|
||||
// adv
|
||||
case 0:
|
||||
registerA = (int)(registerA / Math.Pow(2, operand));
|
||||
break;
|
||||
|
||||
// bxl
|
||||
case 1:
|
||||
registerB = registerB ^ operand;
|
||||
break;
|
||||
|
||||
// bst
|
||||
case 2:
|
||||
registerB = operand % 8;
|
||||
break;
|
||||
|
||||
// jnz
|
||||
case 3:
|
||||
if (registerA is not 0)
|
||||
{
|
||||
instructionPointer = operand - 2;
|
||||
}
|
||||
break;
|
||||
|
||||
// bxc
|
||||
case 4:
|
||||
registerB = registerB ^ registerC;
|
||||
break;
|
||||
|
||||
// out
|
||||
case 5:
|
||||
toOutput.Add(operand % 8);
|
||||
break;
|
||||
|
||||
// bdv
|
||||
case 6:
|
||||
registerB = (int)(registerA / Math.Pow(2, operand));
|
||||
break;
|
||||
|
||||
// cdv
|
||||
case 7:
|
||||
registerC = (int)(registerA / Math.Pow(2, operand));
|
||||
break;
|
||||
}
|
||||
|
||||
instructionPointer += 2;
|
||||
}
|
||||
|
||||
if (initialRegisterA % 1000 == 0)
|
||||
{
|
||||
ctx.Status($"Computing ({initialRegisterA})...");
|
||||
}
|
||||
|
||||
// Check if output is the program itself
|
||||
if (toOutput.SequenceEqual(program))
|
||||
{
|
||||
finalRegisterA = initialRegisterA;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Lowest possible value for register A to output itself: [yellow]{finalRegisterA}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
private (int RegisterA, int RegisterN, int RegisterC, int[] Program) ParseState()
|
||||
{
|
||||
var lineIterator = Input.AsSpan().EnumerateLines();
|
||||
|
||||
lineIterator.MoveNext();
|
||||
var registerA = int.Parse(lineIterator.Current[(lineIterator.Current.IndexOf(':') + 2)..]);
|
||||
|
||||
lineIterator.MoveNext();
|
||||
var registerB = int.Parse(lineIterator.Current[(lineIterator.Current.IndexOf(':') + 2)..]);
|
||||
|
||||
lineIterator.MoveNext();
|
||||
var registerC = int.Parse(lineIterator.Current[(lineIterator.Current.IndexOf(':') + 2)..]);
|
||||
|
||||
lineIterator.MoveNext();
|
||||
lineIterator.MoveNext();
|
||||
|
||||
var program = lineIterator.Current[(lineIterator.Current.IndexOf(':') + 2)..]
|
||||
.ToString()
|
||||
.Split(',')
|
||||
.Select(int.Parse)
|
||||
.ToArray();
|
||||
|
||||
return (registerA, registerB, registerC, program);
|
||||
}
|
||||
}
|
||||
204
Days/Day18.cs
204
Days/Day18.cs
@@ -1,204 +0,0 @@
|
||||
using System.Numerics;
|
||||
using System.Runtime.Intrinsics.X86;
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
|
||||
public class Day18 : Day
|
||||
{
|
||||
public override int Number => 18;
|
||||
public override string Name => "RAM Run";
|
||||
|
||||
private const int Size = 71;
|
||||
|
||||
private const char Corrupted = '#';
|
||||
private const char Empty = ' ';
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var grid = ParseGrid(1024);
|
||||
|
||||
var visited = new Dictionary<Point, int>();
|
||||
var toVisit = new Queue<(Point Position, int Score)>();
|
||||
|
||||
var end = new Point(Size - 1, Size - 1);
|
||||
|
||||
var minimumScore = int.MaxValue;
|
||||
|
||||
toVisit.Enqueue((new Point(0, 0), 0));
|
||||
|
||||
while (toVisit.Count > 0)
|
||||
{
|
||||
var (position, score) = toVisit.Dequeue();
|
||||
|
||||
// Cannot go out of bounds
|
||||
if (position is { X: < 0 or >= Size } or { Y: < 0 or >= Size })
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// Cannot go onto a corrupted space
|
||||
if (grid[position.X, position.Y] is Corrupted)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (visited.TryGetValue(position, out var savedScore) && savedScore <= score)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
visited[position] = score;
|
||||
|
||||
// End
|
||||
if (position == end)
|
||||
{
|
||||
if (score < minimumScore)
|
||||
{
|
||||
minimumScore = score;
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
toVisit.Enqueue((position + (1, 0), score + 1));
|
||||
toVisit.Enqueue((position + (-1, 0), score + 1));
|
||||
toVisit.Enqueue((position + (0, 1), score + 1));
|
||||
toVisit.Enqueue((position + (0, -1), score + 1));
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Minimum number of steps to reach the exit: [yellow]{minimumScore}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
(int X, int Y)[] bytesToFall = Input.ReadAllLines()
|
||||
.Select(line => line.Split(','))
|
||||
.Select(split => (int.Parse(split[0]), int.Parse(split[1])))
|
||||
.ToArray();
|
||||
|
||||
var nextByteIndex = 1024;
|
||||
var grid = ParseGrid(1024);
|
||||
|
||||
while (true)
|
||||
{
|
||||
var nextByte = bytesToFall[nextByteIndex];
|
||||
|
||||
grid[nextByte.X, nextByte.Y] = Corrupted;
|
||||
|
||||
if (!IsGridCompletable())
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
nextByteIndex++;
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Grid will be blocked at byte n°{nextByteIndex} at position: [yellow]{bytesToFall[nextByteIndex]}[/][/]");
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
bool IsGridCompletable()
|
||||
{
|
||||
var visited = new HashSet<Point>();
|
||||
var toVisit = new Queue<Point>();
|
||||
|
||||
var end = new Point(Size - 1, Size - 1);
|
||||
|
||||
toVisit.Enqueue(new Point(0, 0));
|
||||
|
||||
while (toVisit.Count > 0)
|
||||
{
|
||||
var position = toVisit.Dequeue();
|
||||
|
||||
// Cannot go out of bounds
|
||||
if (position is { X: < 0 or >= Size } or { Y: < 0 or >= Size })
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// Cannot go onto a corrupted space
|
||||
if (grid[position.X, position.Y] is Corrupted)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!visited.Add(position))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// End
|
||||
if (position == end)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
toVisit.Enqueue(position + (1, 0));
|
||||
toVisit.Enqueue(position + (-1, 0));
|
||||
toVisit.Enqueue(position + (0, 1));
|
||||
toVisit.Enqueue(position + (0, -1));
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private char[,] ParseGrid(int limit)
|
||||
{
|
||||
var grid = new char[Size, Size];
|
||||
|
||||
var counter = 0;
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
{
|
||||
if (counter >= limit)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
var x = int.Parse(line[..line.IndexOf(',')]);
|
||||
var y = int.Parse(line[(line.IndexOf(',') + 1)..]);
|
||||
|
||||
grid[x, y] = Corrupted;
|
||||
|
||||
counter++;
|
||||
}
|
||||
|
||||
return grid;
|
||||
}
|
||||
|
||||
private readonly record struct Point(int X, int Y)
|
||||
: IAdditionOperators<Point, Point, Point>,
|
||||
ISubtractionOperators<Point, Point, Point>,
|
||||
IMultiplyOperators<Point, int, Point>
|
||||
{
|
||||
public static Point operator +(Point left, Point right)
|
||||
{
|
||||
return new Point(left.X + right.X, left.Y + right.Y);
|
||||
}
|
||||
|
||||
public static Point operator -(Point left, Point right)
|
||||
{
|
||||
return new Point(left.X - right.X, left.Y - right.Y);
|
||||
}
|
||||
|
||||
public static Point operator *(Point left, int right)
|
||||
{
|
||||
return new Point(left.X * right, left.Y * right);
|
||||
}
|
||||
|
||||
public static Point operator *(int left, Point right)
|
||||
{
|
||||
return new Point(right.X * left, right.Y * left);
|
||||
}
|
||||
|
||||
public static implicit operator Point((int X, int Y) point)
|
||||
=> new(point.X, point.Y);
|
||||
}
|
||||
}
|
||||
179
Days/Day19.cs
179
Days/Day19.cs
@@ -1,179 +0,0 @@
|
||||
using System.Collections.Frozen;
|
||||
using System.Numerics;
|
||||
using System.Runtime.Intrinsics.X86;
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
|
||||
public class Day19 : Day
|
||||
{
|
||||
public override int Number => 19;
|
||||
public override string Name => "Linen Layout";
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var (towels, patterns) = ParseInput();
|
||||
var impossiblePatterns = new HashSet<string>();
|
||||
|
||||
var possiblePatterns = 0;
|
||||
|
||||
foreach (var pattern in patterns)
|
||||
{
|
||||
// Check if it's possible to make this pattern
|
||||
if (CheckPattern(pattern))
|
||||
{
|
||||
possiblePatterns++;
|
||||
}
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Number of designs that are possible: [yellow]{possiblePatterns}[/][/]");
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
bool CheckPattern(ReadOnlySpan<char> pattern)
|
||||
{
|
||||
// Console.WriteLine($"Checking '{pattern}'");
|
||||
|
||||
if (pattern.Length is 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if (impossiblePatterns.Contains(pattern.ToString()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
var prefix = pattern[0];
|
||||
|
||||
if (!towels.TryGetValue(prefix, out var towelsList))
|
||||
{
|
||||
impossiblePatterns.Add(pattern.ToString());
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
foreach (var towel in towelsList)
|
||||
{
|
||||
if (pattern.StartsWith(towel) && CheckPattern(pattern[towel.Length..]))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
impossiblePatterns.Add(pattern.ToString());
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
var (towels, patterns) = ParseInput();
|
||||
var impossiblePatterns = new HashSet<string>();
|
||||
var knownPatterns = new Dictionary<string, long>();
|
||||
|
||||
var possibleCombinations = 0L;
|
||||
|
||||
foreach (var pattern in patterns)
|
||||
{
|
||||
// Check if it's possible to make this pattern
|
||||
possibleCombinations += CheckPattern(pattern);
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Number of combinations that are possible: [yellow]{possibleCombinations}[/][/]");
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
long CheckPattern(ReadOnlySpan<char> pattern)
|
||||
{
|
||||
if (pattern.Length is 0)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (impossiblePatterns.Contains(pattern.ToString()))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (knownPatterns.TryGetValue(pattern.ToString(), out var count))
|
||||
{
|
||||
return count;
|
||||
}
|
||||
|
||||
var prefix = pattern[0];
|
||||
|
||||
if (!towels.TryGetValue(prefix, out var towelsList))
|
||||
{
|
||||
impossiblePatterns.Add(pattern.ToString());
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
var possibilities = 0L;
|
||||
|
||||
foreach (var towel in towelsList)
|
||||
{
|
||||
if (pattern.StartsWith(towel))
|
||||
{
|
||||
possibilities += CheckPattern(pattern[towel.Length..]);
|
||||
}
|
||||
}
|
||||
|
||||
if (possibilities is 0)
|
||||
{
|
||||
impossiblePatterns.Add(pattern.ToString());
|
||||
}
|
||||
else
|
||||
{
|
||||
knownPatterns.Add(pattern.ToString(), possibilities);
|
||||
}
|
||||
|
||||
return possibilities;
|
||||
}
|
||||
}
|
||||
|
||||
private (FrozenDictionary<char, List<string>> Towels, List<string> Patterns) ParseInput()
|
||||
{
|
||||
var towels = new Dictionary<char, List<string>>();
|
||||
var patterns = new List<string>();
|
||||
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
{
|
||||
if (towels.Count is 0)
|
||||
{
|
||||
var split = line.Split(", ");
|
||||
|
||||
foreach (var range in split)
|
||||
{
|
||||
var towel = line[range].Trim();
|
||||
|
||||
var prefix = towel[0];
|
||||
|
||||
if (!towels.TryGetValue(prefix, out var towelsList))
|
||||
{
|
||||
towelsList = [];
|
||||
towels[prefix] = towelsList;
|
||||
}
|
||||
|
||||
towelsList.Add(towel.ToString());
|
||||
}
|
||||
}
|
||||
else if (!line.IsWhiteSpace())
|
||||
{
|
||||
var pattern = line.Trim();
|
||||
|
||||
patterns.Add(pattern.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
return (towels.ToFrozenDictionary(), patterns);
|
||||
}
|
||||
}
|
||||
139
Days/Day2.cs
139
Days/Day2.cs
@@ -1,139 +0,0 @@
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
|
||||
public class Day2 : Day
|
||||
{
|
||||
public override int Number => 2;
|
||||
public override string Name => "Red-Nosed Reports";
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var safeReports = 0;
|
||||
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
{
|
||||
var isSafe = true;
|
||||
var levels = line.Split(' ');
|
||||
|
||||
var previousDirection = 0;
|
||||
var previousLevel = int.MinValue;
|
||||
foreach (var levelRange in levels)
|
||||
{
|
||||
var level = int.Parse(line[levelRange]);
|
||||
|
||||
// First level, skip to next
|
||||
if (previousLevel == int.MinValue)
|
||||
{
|
||||
previousLevel = level;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
// Check that direction is preserved
|
||||
var direction = level - previousLevel;
|
||||
|
||||
if (previousDirection != 0 && Math.Sign(direction) != Math.Sign(previousDirection))
|
||||
{
|
||||
isSafe = false;
|
||||
break;
|
||||
}
|
||||
|
||||
// Check that distance >= 1 and <= 3
|
||||
if (Math.Abs(direction) is < 1 or > 3)
|
||||
{
|
||||
isSafe = false;
|
||||
break;
|
||||
}
|
||||
|
||||
previousLevel = level;
|
||||
previousDirection = direction;
|
||||
}
|
||||
|
||||
if (isSafe)
|
||||
{
|
||||
safeReports++;
|
||||
}
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Number of safe reports: [yellow]{safeReports}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
var safeReports = 0;
|
||||
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
{
|
||||
if (IsSafe(line))
|
||||
{
|
||||
safeReports++;
|
||||
}
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Number of safe reports: [yellow]{safeReports}[/][/]");
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
bool IsSafe(ReadOnlySpan<char> line, Range? toSkip = null)
|
||||
{
|
||||
var levels = line.Split(' ');
|
||||
|
||||
var previousDirection = 0;
|
||||
var previousLevel = int.MinValue;
|
||||
Range previousLevelRange = default;
|
||||
Range firstLevelRange = default;
|
||||
|
||||
foreach (var levelRange in levels)
|
||||
{
|
||||
if (levelRange.Equals(toSkip))
|
||||
{
|
||||
// This level can be skipped using the problem dampener
|
||||
continue;
|
||||
}
|
||||
|
||||
var level = int.Parse(line[levelRange]);
|
||||
|
||||
// First level, skip to next
|
||||
if (previousLevel == int.MinValue)
|
||||
{
|
||||
previousLevel = level;
|
||||
previousLevelRange = levelRange;
|
||||
firstLevelRange = levelRange;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
// Check that direction is preserved
|
||||
var direction = level - previousLevel;
|
||||
|
||||
if (previousDirection != 0 && Math.Sign(direction) != Math.Sign(previousDirection))
|
||||
{
|
||||
// Also try by removing current or previous level if it's first try (problem dampener)
|
||||
return toSkip is null
|
||||
&& (IsSafe(line, levelRange) || IsSafe(line, previousLevelRange) || IsSafe(line, firstLevelRange));
|
||||
}
|
||||
|
||||
// Check that distance >= 1 and <= 3
|
||||
if (Math.Abs(direction) is < 1 or > 3)
|
||||
{
|
||||
// Also try by removing current or previous level if it's first try (problem dampener)
|
||||
return toSkip is null
|
||||
&& (IsSafe(line, levelRange) || IsSafe(line, previousLevelRange) || IsSafe(line, firstLevelRange));
|
||||
}
|
||||
|
||||
previousLevel = level;
|
||||
previousDirection = direction;
|
||||
previousLevelRange = levelRange;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
288
Days/Day20.cs
288
Days/Day20.cs
@@ -1,288 +0,0 @@
|
||||
using System.Collections.Frozen;
|
||||
using System.Numerics;
|
||||
using System.Runtime.Intrinsics.X86;
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
|
||||
public class Day20 : Day
|
||||
{
|
||||
public override int Number => 20;
|
||||
public override string Name => "Race Condition";
|
||||
|
||||
private const int Size = 141;
|
||||
private const char Wall = '#';
|
||||
private const char Empty = '.';
|
||||
|
||||
private readonly List<Point> _cheatOffsets =
|
||||
[
|
||||
(2, 0),
|
||||
(1, 1),
|
||||
(0, 2),
|
||||
(-1, 1),
|
||||
(-2, 0),
|
||||
(-1, -1),
|
||||
(0, -2),
|
||||
(1, -1)
|
||||
];
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var (map, start, end) = ParseMap();
|
||||
|
||||
// Find track path
|
||||
var trackPath = new List<Point>();
|
||||
var distanceFromStart = new Dictionary<Point, int>();
|
||||
|
||||
var position = start;
|
||||
|
||||
var distance = 0;
|
||||
while (position != end)
|
||||
{
|
||||
trackPath.Add(position);
|
||||
distanceFromStart[position] = distance;
|
||||
|
||||
// Find next track position
|
||||
distance++;
|
||||
var up = position + new Point(0, -1);
|
||||
if (up is { X: >= 0 and < Size, Y: >= 0 and < Size } && map[up.X, up.Y] is not Wall && !distanceFromStart.ContainsKey(up))
|
||||
{
|
||||
position = up;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
var down = position + new Point(0, 1);
|
||||
if (down is { X: >= 0 and < Size, Y: >= 0 and < Size } && map[down.X, down.Y] is not Wall && !distanceFromStart.ContainsKey(down))
|
||||
{
|
||||
position = down;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
var left = position + new Point(-1, 0);
|
||||
if (left is { X: >= 0 and < Size, Y: >= 0 and < Size } && map[left.X, left.Y] is not Wall && !distanceFromStart.ContainsKey(left))
|
||||
{
|
||||
position = left;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
var right = position + new Point(1, 0);
|
||||
if (right is { X: >= 0 and < Size, Y: >= 0 and < Size } && map[right.X, right.Y] is not Wall && !distanceFromStart.ContainsKey(right))
|
||||
{
|
||||
position = right;
|
||||
}
|
||||
}
|
||||
|
||||
// Also add end
|
||||
trackPath.Add(position);
|
||||
distanceFromStart[position] = distance;
|
||||
|
||||
var cheats = new Dictionary<(Point StartPosition, Point EndPosition), int>();
|
||||
|
||||
// Now return to start and try all possible combination of cheats for each track position
|
||||
foreach (var trackPosition in trackPath)
|
||||
{
|
||||
var originDistance = distanceFromStart[trackPosition];
|
||||
|
||||
foreach (var cheatOffset in _cheatOffsets)
|
||||
{
|
||||
var cheatDestination = trackPosition + cheatOffset;
|
||||
|
||||
if (cheatDestination.X is < 0 or >= Size || cheatDestination.Y is < 0 or >= Size)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (map[cheatDestination.X, cheatDestination.Y] is Wall)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var destinationDistance = distanceFromStart[cheatDestination];
|
||||
var savedDistance = destinationDistance - originDistance - 2;
|
||||
|
||||
// Only take into account real shortcuts, not those that do not save time
|
||||
if (savedDistance < 1)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
cheats.Add((trackPosition, cheatDestination), savedDistance);
|
||||
}
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Number of cheats that save at least 100 picoseconds: [yellow]{cheats.Count(c => c.Value >= 100)}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
var (map, start, end) = ParseMap();
|
||||
|
||||
// Find track path
|
||||
var trackPath = new List<Point>();
|
||||
var distanceFromStart = new Dictionary<Point, int>();
|
||||
|
||||
var position = start;
|
||||
|
||||
var distance = 0;
|
||||
while (position != end)
|
||||
{
|
||||
trackPath.Add(position);
|
||||
distanceFromStart[position] = distance;
|
||||
|
||||
// Find next track position
|
||||
distance++;
|
||||
var up = position + new Point(0, -1);
|
||||
if (up is { X: >= 0 and < Size, Y: >= 0 and < Size } && map[up.X, up.Y] is not Wall && !distanceFromStart.ContainsKey(up))
|
||||
{
|
||||
position = up;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
var down = position + new Point(0, 1);
|
||||
if (down is { X: >= 0 and < Size, Y: >= 0 and < Size } && map[down.X, down.Y] is not Wall && !distanceFromStart.ContainsKey(down))
|
||||
{
|
||||
position = down;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
var left = position + new Point(-1, 0);
|
||||
if (left is { X: >= 0 and < Size, Y: >= 0 and < Size } && map[left.X, left.Y] is not Wall && !distanceFromStart.ContainsKey(left))
|
||||
{
|
||||
position = left;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
var right = position + new Point(1, 0);
|
||||
if (right is { X: >= 0 and < Size, Y: >= 0 and < Size } && map[right.X, right.Y] is not Wall && !distanceFromStart.ContainsKey(right))
|
||||
{
|
||||
position = right;
|
||||
}
|
||||
}
|
||||
|
||||
// Also add end
|
||||
trackPath.Add(position);
|
||||
distanceFromStart[position] = distance;
|
||||
|
||||
var cheats = new Dictionary<(Point StartPosition, Point EndPosition), int>();
|
||||
|
||||
// Now return to start and try all possible combination of cheats for each track position
|
||||
foreach (var trackPosition in trackPath)
|
||||
{
|
||||
var originDistance = distanceFromStart[trackPosition];
|
||||
|
||||
foreach (var cheatDestination in trackPath.Where(destination => trackPosition.DistanceTo(destination) <= 20))
|
||||
{
|
||||
var cheatLength = trackPosition.DistanceTo(cheatDestination);
|
||||
|
||||
var destinationDistance = distanceFromStart[cheatDestination];
|
||||
var savedDistance = destinationDistance - originDistance - cheatLength;
|
||||
|
||||
// Only take into account real shortcuts, not those that do not save time
|
||||
if (savedDistance < 1)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (cheats.TryGetValue((trackPosition, cheatDestination), out var otherSavedDistance))
|
||||
{
|
||||
if (savedDistance <= otherSavedDistance)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
cheats[(trackPosition, cheatDestination)] = savedDistance;
|
||||
}
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Number of cheats that save at least 100 picoseconds: [yellow]{cheats.Count(c => c.Value >= 100)}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
private (char[,] Map, Point Start, Point End) ParseMap()
|
||||
{
|
||||
var map = new char[Size, Size];
|
||||
Point start = default;
|
||||
Point end = default;
|
||||
|
||||
var y = 0;
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
{
|
||||
var x = 0;
|
||||
|
||||
foreach (var symbol in line)
|
||||
{
|
||||
if (symbol == 'S')
|
||||
{
|
||||
start = new Point(x, y);
|
||||
}
|
||||
else if (symbol == 'E')
|
||||
{
|
||||
end = new Point(x, y);
|
||||
}
|
||||
|
||||
if (symbol is Wall)
|
||||
{
|
||||
map[x, y] = Wall;
|
||||
}
|
||||
else
|
||||
{
|
||||
map[x, y] = Empty;
|
||||
}
|
||||
|
||||
x++;
|
||||
}
|
||||
|
||||
y++;
|
||||
}
|
||||
|
||||
return (map, start, end);
|
||||
}
|
||||
|
||||
private readonly record struct Point(int X, int Y)
|
||||
: IAdditionOperators<Point, Point, Point>,
|
||||
ISubtractionOperators<Point, Point, Point>,
|
||||
IMultiplyOperators<Point, int, Point>
|
||||
{
|
||||
public static Point operator +(Point left, Point right)
|
||||
{
|
||||
return new Point(left.X + right.X, left.Y + right.Y);
|
||||
}
|
||||
|
||||
public static Point operator -(Point left, Point right)
|
||||
{
|
||||
return new Point(left.X - right.X, left.Y - right.Y);
|
||||
}
|
||||
|
||||
public static Point operator *(Point left, int right)
|
||||
{
|
||||
return new Point(left.X * right, left.Y * right);
|
||||
}
|
||||
|
||||
public static Point operator *(int left, Point right)
|
||||
{
|
||||
return new Point(right.X * left, right.Y * left);
|
||||
}
|
||||
|
||||
public static implicit operator Point((int X, int Y) point)
|
||||
=> new(point.X, point.Y);
|
||||
|
||||
public int DistanceTo(Point other)
|
||||
{
|
||||
var distance = other - this;
|
||||
|
||||
return Math.Abs(distance.X) + Math.Abs(distance.Y);
|
||||
}
|
||||
}
|
||||
}
|
||||
183
Days/Day21.cs
183
Days/Day21.cs
@@ -1,183 +0,0 @@
|
||||
using System.Collections.Frozen;
|
||||
using System.Numerics;
|
||||
using System.Runtime.Intrinsics.X86;
|
||||
using System.Text;
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
|
||||
public class Day21 : Day
|
||||
{
|
||||
public override int Number => 21;
|
||||
public override string Name => "Keypad Conundrum";
|
||||
|
||||
private const char Up = '^';
|
||||
private const char Right = '>';
|
||||
private const char Down = 'v';
|
||||
private const char Left = '<';
|
||||
private const char Enter = 'A';
|
||||
|
||||
private readonly Dictionary<char, Point> _numpadPositions = new()
|
||||
{
|
||||
{ '7', (0, 0) },
|
||||
{ '8', (1, 0) },
|
||||
{ '9', (2, 0) },
|
||||
{ '4', (0, 1) },
|
||||
{ '5', (1, 1) },
|
||||
{ '6', (2, 1) },
|
||||
{ '1', (0, 2) },
|
||||
{ '2', (1, 2) },
|
||||
{ '3', (2, 2) },
|
||||
{ '0', (1, 3) },
|
||||
{ Enter, (2, 3) }
|
||||
};
|
||||
|
||||
private readonly Dictionary<char, Point> _keypadPositions = new()
|
||||
{
|
||||
{ Up, (1, 0) },
|
||||
{ Enter, (2, 0) },
|
||||
{ Left, (0, 1) },
|
||||
{ Down, (1, 1) },
|
||||
{ Right, (2, 1) }
|
||||
};
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var codes = ParseCodes();
|
||||
var complexitiesSum = 0;
|
||||
|
||||
foreach (var code in codes)
|
||||
{
|
||||
// Get first keypad sequence
|
||||
var firstKeypadSequence = new StringBuilder();
|
||||
var currentInput = Enter;
|
||||
|
||||
foreach (var digit in code)
|
||||
{
|
||||
firstKeypadSequence.Append(GetNumpadMoveSequence(currentInput, digit));
|
||||
|
||||
currentInput = digit;
|
||||
}
|
||||
|
||||
// Get second keypad sequence
|
||||
var secondKeypadSequence = new StringBuilder();
|
||||
currentInput = Enter;
|
||||
|
||||
foreach (var input in firstKeypadSequence.ToString())
|
||||
{
|
||||
secondKeypadSequence.Append(GetKeypadMoveSequence(currentInput, input));
|
||||
|
||||
currentInput = input;
|
||||
}
|
||||
|
||||
// Get third and last keypad sequence
|
||||
var thirdKeypadSequence = new StringBuilder();
|
||||
currentInput = Enter;
|
||||
|
||||
foreach (var input in secondKeypadSequence.ToString())
|
||||
{
|
||||
thirdKeypadSequence.Append(GetKeypadMoveSequence(currentInput, input));
|
||||
|
||||
currentInput = input;
|
||||
}
|
||||
|
||||
complexitiesSum += thirdKeypadSequence.Length * int.Parse(code.AsSpan()[..^1]);
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Sum of complexities: [yellow]{complexitiesSum}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private string GetNumpadMoveSequence(char origin, char destination)
|
||||
{
|
||||
var originPosition = _numpadPositions[origin];
|
||||
var destinationPosition = _numpadPositions[destination];
|
||||
|
||||
var move = destinationPosition - originPosition;
|
||||
|
||||
var moveRight = move.X > 0;
|
||||
var moveDown = move.Y > 0;
|
||||
|
||||
var sequence = string.Concat(
|
||||
new string(moveRight ? Right : Left, Math.Abs(move.X)),
|
||||
new string(moveDown ? Down : Up, Math.Abs(move.Y)),
|
||||
Enter.ToString() // Always end on Enter to press key
|
||||
);
|
||||
|
||||
return sequence;
|
||||
}
|
||||
|
||||
private string GetKeypadMoveSequence(char origin, char destination)
|
||||
{
|
||||
var originPosition = _keypadPositions[origin];
|
||||
var destinationPosition = _keypadPositions[destination];
|
||||
|
||||
var move = destinationPosition - originPosition;
|
||||
|
||||
var moveRight = move.X > 0;
|
||||
var moveDown = move.Y > 0;
|
||||
|
||||
var sequence = string.Concat(
|
||||
new string(moveDown ? Down : Up, Math.Abs(move.Y)),
|
||||
new string(moveRight ? Right : Left, Math.Abs(move.X)),
|
||||
Enter.ToString() // Always end on Enter to press key
|
||||
);
|
||||
|
||||
return sequence;
|
||||
}
|
||||
|
||||
private List<string> ParseCodes()
|
||||
{
|
||||
var codes = new List<string>();
|
||||
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
{
|
||||
codes.Add(line.ToString());
|
||||
}
|
||||
|
||||
return codes;
|
||||
}
|
||||
|
||||
private readonly record struct Point(int X, int Y)
|
||||
: IAdditionOperators<Point, Point, Point>,
|
||||
ISubtractionOperators<Point, Point, Point>,
|
||||
IMultiplyOperators<Point, int, Point>
|
||||
{
|
||||
public static Point operator +(Point left, Point right)
|
||||
{
|
||||
return new Point(left.X + right.X, left.Y + right.Y);
|
||||
}
|
||||
|
||||
public static Point operator -(Point left, Point right)
|
||||
{
|
||||
return new Point(left.X - right.X, left.Y - right.Y);
|
||||
}
|
||||
|
||||
public static Point operator *(Point left, int right)
|
||||
{
|
||||
return new Point(left.X * right, left.Y * right);
|
||||
}
|
||||
|
||||
public static Point operator *(int left, Point right)
|
||||
{
|
||||
return new Point(right.X * left, right.Y * left);
|
||||
}
|
||||
|
||||
public static implicit operator Point((int X, int Y) point)
|
||||
=> new(point.X, point.Y);
|
||||
|
||||
public int DistanceTo(Point other)
|
||||
{
|
||||
var distance = other - this;
|
||||
|
||||
return Math.Abs(distance.X) + Math.Abs(distance.Y);
|
||||
}
|
||||
}
|
||||
}
|
||||
162
Days/Day22.cs
162
Days/Day22.cs
@@ -1,162 +0,0 @@
|
||||
using System.Collections.Frozen;
|
||||
using System.Numerics;
|
||||
using System.Runtime.Intrinsics.X86;
|
||||
using System.Text;
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
|
||||
public class Day22 : Day
|
||||
{
|
||||
public override int Number => 22;
|
||||
public override string Name => "Monkey Market";
|
||||
|
||||
private const int Iterations = 2000;
|
||||
private const int PruneValue = 16777216;
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var secretsSum = 0L;
|
||||
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
{
|
||||
var secret = long.Parse(line);
|
||||
|
||||
for (var i = 0; i < Iterations; i++)
|
||||
{
|
||||
var result = secret * 64;
|
||||
secret = (secret ^ result) % PruneValue;
|
||||
|
||||
result = secret / 32;
|
||||
secret = (secret ^ result) % PruneValue;
|
||||
|
||||
result = secret * 2048;
|
||||
secret = (secret ^ result) % PruneValue;
|
||||
}
|
||||
|
||||
secretsSum += secret;
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Sum of {Iterations}th secret numbers: [yellow]{secretsSum}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
var maximumBananas = 0L;
|
||||
|
||||
var initialSecrets = Input.ReadAllLines().Select(l => long.Parse(l)).ToArray();
|
||||
var matchSequences = GenerateSequences().ToArray();
|
||||
|
||||
AnsiConsole.Progress().Start(progress =>
|
||||
{
|
||||
var progressTask = progress.AddTask("Finding best sequence", maxValue: matchSequences.Length);
|
||||
|
||||
Parallel.ForEach(matchSequences, matchSequence =>
|
||||
{
|
||||
Span<long> sequence = stackalloc long[4];
|
||||
var currentBananas = 0L;
|
||||
|
||||
for (var initialSecretIndex = 0; initialSecretIndex < initialSecrets.Length; initialSecretIndex++)
|
||||
{
|
||||
var secret = initialSecrets[initialSecretIndex];
|
||||
|
||||
for (var i = 0; i < Iterations; i++)
|
||||
{
|
||||
var previousSecret = secret;
|
||||
|
||||
// Compute new secret
|
||||
var result = secret * 64;
|
||||
secret = (secret ^ result) % PruneValue;
|
||||
|
||||
result = secret / 32;
|
||||
secret = (secret ^ result) % PruneValue;
|
||||
|
||||
result = secret * 2048;
|
||||
secret = (secret ^ result) % PruneValue;
|
||||
|
||||
var lastDigit = secret % 10;
|
||||
var previousSecretLastDigit = previousSecret % 10;
|
||||
|
||||
// Update sequence
|
||||
sequence[0] = sequence[1];
|
||||
sequence[1] = sequence[2];
|
||||
sequence[2] = sequence[3];
|
||||
sequence[3] = lastDigit - previousSecretLastDigit;
|
||||
|
||||
// Check if sequence match
|
||||
if (sequence[0] == matchSequence.Item1
|
||||
&& sequence[1] == matchSequence.Item2
|
||||
&& sequence[2] == matchSequence.Item3
|
||||
&& sequence[3] == matchSequence.Item4
|
||||
&& i >= 3)
|
||||
{
|
||||
currentBananas += lastDigit;
|
||||
|
||||
// Go to next monkey
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Stop early if it's not possible to beat current maximum
|
||||
if (maximumBananas - currentBananas >= ((initialSecrets.Length - initialSecretIndex - 1) * 9))
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
ExchangeIfGreaterThan(ref maximumBananas, currentBananas);
|
||||
|
||||
progressTask.Increment(1);
|
||||
});
|
||||
});
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Maximum amount of bananas: [yellow]{maximumBananas}[/][/]");
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
IEnumerable<(long, long, long, long)> GenerateSequences()
|
||||
{
|
||||
for (var a = -9L; a <= 9; a++)
|
||||
{
|
||||
for (var b = -9L; b <= 9; b++)
|
||||
{
|
||||
for (var c = -9L; c <= 9; c++)
|
||||
{
|
||||
for (var d = -9L; d <= 9; d++)
|
||||
{
|
||||
yield return (a, b, c, d);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Source: https://stackoverflow.com/a/13323172
|
||||
private static void ExchangeIfGreaterThan(ref long location, long value)
|
||||
{
|
||||
// Read
|
||||
var current = Interlocked.Read(ref location);
|
||||
|
||||
// Compare
|
||||
while (current < value)
|
||||
{
|
||||
// Set
|
||||
var previous = Interlocked.CompareExchange(ref location, value, current);
|
||||
|
||||
// If another thread has set a greater value, we can break
|
||||
// or if previous value is current value, then no other thread has it changed in between
|
||||
if (previous == current || previous >= value) // note: most common case first
|
||||
break;
|
||||
|
||||
// For all other cases, we need another run (read value, compare, set)
|
||||
current = Interlocked.Read(ref location);
|
||||
}
|
||||
}
|
||||
}
|
||||
172
Days/Day23.cs
172
Days/Day23.cs
@@ -1,172 +0,0 @@
|
||||
using System.Collections.Frozen;
|
||||
using System.Numerics;
|
||||
using System.Runtime.Intrinsics.X86;
|
||||
using System.Text;
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
|
||||
public class Day23 : Day
|
||||
{
|
||||
public override int Number => 23;
|
||||
public override string Name => "LAN Party";
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var computerLinks = new Dictionary<string, HashSet<string>>();
|
||||
|
||||
// Parse all links
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
{
|
||||
var firstComputer = line[..2].ToString();
|
||||
var secondComputer = line[3..].ToString();
|
||||
|
||||
if (!computerLinks.TryGetValue(firstComputer, out var firstLinks))
|
||||
{
|
||||
firstLinks = [];
|
||||
computerLinks[firstComputer] = firstLinks;
|
||||
}
|
||||
firstLinks.Add(secondComputer);
|
||||
|
||||
if (!computerLinks.TryGetValue(secondComputer, out var secondLinks))
|
||||
{
|
||||
secondLinks = [];
|
||||
computerLinks[secondComputer] = secondLinks;
|
||||
}
|
||||
secondLinks.Add(firstComputer);
|
||||
}
|
||||
|
||||
var sets = new HashSet<ComputerSet>();
|
||||
|
||||
foreach (var (firstComputer, firstLinks) in computerLinks)
|
||||
{
|
||||
foreach (var secondComputer in firstLinks)
|
||||
{
|
||||
var thirdComputers = computerLinks[secondComputer].Intersect(firstLinks);
|
||||
|
||||
foreach (var thirdComputer in thirdComputers)
|
||||
{
|
||||
sets.Add(new ComputerSet(firstComputer, secondComputer, thirdComputer));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var finalCount = sets.Count(set => set.First.StartsWith('t') || set.Second.StartsWith('t') || set.Third.StartsWith('t'));
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Amount of sets that contain at least one computer that starts with t: [yellow]{finalCount}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
var computerLinks = new Dictionary<string, HashSet<string>>();
|
||||
|
||||
// Parse all links
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
{
|
||||
var firstComputer = line[..2].ToString();
|
||||
var secondComputer = line[3..].ToString();
|
||||
|
||||
if (!computerLinks.TryGetValue(firstComputer, out var firstLinks))
|
||||
{
|
||||
firstLinks = [];
|
||||
computerLinks[firstComputer] = firstLinks;
|
||||
}
|
||||
firstLinks.Add(secondComputer);
|
||||
|
||||
if (!computerLinks.TryGetValue(secondComputer, out var secondLinks))
|
||||
{
|
||||
secondLinks = [];
|
||||
computerLinks[secondComputer] = secondLinks;
|
||||
}
|
||||
secondLinks.Add(firstComputer);
|
||||
}
|
||||
|
||||
List<string> largestSet = [];
|
||||
|
||||
AnsiConsole.Status().Start("Starting check...", status =>
|
||||
{
|
||||
var size = 4;
|
||||
while (true)
|
||||
{
|
||||
var ended = true;
|
||||
|
||||
status.Status($"Checking set size: {size}");
|
||||
|
||||
var i = 0;
|
||||
foreach (var (firstComputer, firstLinks) in computerLinks)
|
||||
{
|
||||
status.Status($"Checking set size: {size} ({i++}/{computerLinks.Count})");
|
||||
|
||||
if (GenerateLargestSet(firstLinks, size, [ firstComputer ]) is { } largest)
|
||||
{
|
||||
largestSet = largest;
|
||||
size++;
|
||||
ended = false;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (ended)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var password = string.Join(',', largestSet.Order());
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Password to enter lan party: [yellow]{password}[/][/]");
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
List<string>? GenerateLargestSet(HashSet<string> set, int targetSize, List<string> selected)
|
||||
{
|
||||
if (selected.Count == targetSize)
|
||||
{
|
||||
return selected;
|
||||
}
|
||||
|
||||
if (set.Count is 0 || (set.Count < (targetSize - selected.Count)))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
// Next depth
|
||||
foreach (var computer in set)
|
||||
{
|
||||
var nextSet = set.Intersect(computerLinks[computer]).ToHashSet();
|
||||
var nextSelected = selected.Append(computer).ToList();
|
||||
|
||||
if (GenerateLargestSet(nextSet, targetSize, nextSelected) is { } largest)
|
||||
{
|
||||
return largest;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private record ComputerSet(string First, string Second, string Third) : IEquatable<ComputerSet>
|
||||
{
|
||||
public virtual bool Equals(ComputerSet? other)
|
||||
{
|
||||
return other is not null &&
|
||||
(First == other.First || First == other.Second || First == other.Third) &&
|
||||
(Second == other.First || Second == other.Second || Second == other.Third) &&
|
||||
(Third == other.First || Third == other.Second || Third == other.Third);
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return First.GetHashCode() * Second.GetHashCode() * Third.GetHashCode();
|
||||
}
|
||||
}
|
||||
}
|
||||
370
Days/Day24.cs
370
Days/Day24.cs
@@ -1,370 +0,0 @@
|
||||
using System.Collections.Frozen;
|
||||
using System.Numerics;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.Intrinsics.X86;
|
||||
using System.Text;
|
||||
using Microsoft.CodeAnalysis;
|
||||
using Microsoft.VisualBasic;
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
|
||||
public class Day24 : Day
|
||||
{
|
||||
public override int Number => 24;
|
||||
public override string Name => "Crossed Wires";
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var (signals, gates, zGates) = ParseInput();
|
||||
|
||||
while (zGates.Count > 0)
|
||||
{
|
||||
foreach (var (inputLeft, inputRight, output, logicOperator) in gates)
|
||||
{
|
||||
if (!signals.TryGetValue(inputLeft, out var inputLeftValue) ||
|
||||
!signals.TryGetValue(inputRight, out var inputRightValue))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
signals[output] = Compute(inputLeftValue, inputRightValue, logicOperator);
|
||||
|
||||
if (output.StartsWith('z'))
|
||||
{
|
||||
zGates.Remove(output);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var zOutputValue = signals
|
||||
.Where(s => s.Key.StartsWith('z'))
|
||||
.Select(s => new { Index = int.Parse(s.Key[1..]), Value = (long)s.Value })
|
||||
.Sum(s => s.Value << s.Index);
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Value output on z signal: [yellow]{zOutputValue}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
var (initialSignals, initialGates, initialZGates) = ParseInput();
|
||||
|
||||
var xInputValue = initialSignals
|
||||
.Where(s => s.Key.StartsWith('x'))
|
||||
.Select(s => new { Index = int.Parse(s.Key[1..]), Value = (long)s.Value })
|
||||
.Sum(s => s.Value << s.Index);
|
||||
|
||||
var yInputValue = initialSignals
|
||||
.Where(s => s.Key.StartsWith('y'))
|
||||
.Select(s => new { Index = int.Parse(s.Key[1..]), Value = (long)s.Value })
|
||||
.Sum(s => s.Value << s.Index);
|
||||
|
||||
// Find wires that need to be changed
|
||||
const long initialZValue = 58740594706150L;
|
||||
var targetZValue = xInputValue + yInputValue;
|
||||
|
||||
var difference = targetZValue ^ initialZValue;
|
||||
var possibleChange = new HashSet<string>();
|
||||
|
||||
for (var i = 0; i < sizeof(long) * 8; i++)
|
||||
{
|
||||
if (((1 << i) & difference) != 0)
|
||||
{
|
||||
possibleChange.Add($"z{i:D2}");
|
||||
}
|
||||
}
|
||||
|
||||
// Find all dependencies
|
||||
int initialSize;
|
||||
do
|
||||
{
|
||||
initialSize = possibleChange.Count;
|
||||
|
||||
foreach (var gate in initialGates)
|
||||
{
|
||||
if (possibleChange.Contains(gate.Output))
|
||||
{
|
||||
possibleChange.Add(gate.InputLeft);
|
||||
possibleChange.Add(gate.InputRight);
|
||||
}
|
||||
}
|
||||
} while (possibleChange.Count != initialSize);
|
||||
|
||||
var gatesToSwapIndices = initialGates
|
||||
.Index()
|
||||
.ToList()
|
||||
.Where(t => possibleChange.Contains(t.Item.Output))
|
||||
.Select(t => t.Index)
|
||||
.ToList();
|
||||
|
||||
// Try out all possible permutations of concerned outputs
|
||||
List<string> changedOutputs = [];
|
||||
|
||||
for (var a = 0; a < gatesToSwapIndices.Count - 7; a++)
|
||||
{
|
||||
for (var b = a + 1; b < gatesToSwapIndices.Count - 6; b++)
|
||||
{
|
||||
for (var c = b + 1; c < gatesToSwapIndices.Count - 5; c++)
|
||||
{
|
||||
for (var d = c + 1; d < gatesToSwapIndices.Count - 4; d++)
|
||||
{
|
||||
for (var e = d + 1; e < gatesToSwapIndices.Count - 3; e++)
|
||||
{
|
||||
for (var f = e + 1; f < gatesToSwapIndices.Count - 2; f++)
|
||||
{
|
||||
for (var g = f + 1; g < gatesToSwapIndices.Count - 1; g++)
|
||||
{
|
||||
for (var h = g + 1; h < gatesToSwapIndices.Count; h++)
|
||||
{
|
||||
Console.WriteLine($"h: {h}");
|
||||
|
||||
ForAllPermutation([
|
||||
gatesToSwapIndices[a],
|
||||
gatesToSwapIndices[b],
|
||||
gatesToSwapIndices[c],
|
||||
gatesToSwapIndices[d],
|
||||
gatesToSwapIndices[e],
|
||||
gatesToSwapIndices[f],
|
||||
gatesToSwapIndices[g],
|
||||
gatesToSwapIndices[h]], permutations =>
|
||||
{
|
||||
if (CheckPermutations(permutations) is { } modifiedOutputs)
|
||||
{
|
||||
changedOutputs = modifiedOutputs;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var swappedOutputs = string.Join(',', changedOutputs.Order());
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Swapped outputs: [yellow]{swappedOutputs}[/][/]");
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
List<string>? CheckPermutations(int[] permutations)
|
||||
{
|
||||
var gates = initialGates.ToArray();
|
||||
var zGates = initialZGates.ToHashSet();
|
||||
var signals = initialSignals.ToDictionary();
|
||||
|
||||
SwapOutput(ref gates[permutations[0]], ref gates[permutations[1]]);
|
||||
SwapOutput(ref gates[permutations[2]], ref gates[permutations[3]]);
|
||||
SwapOutput(ref gates[permutations[4]], ref gates[permutations[5]]);
|
||||
SwapOutput(ref gates[permutations[6]], ref gates[permutations[7]]);
|
||||
|
||||
var zOutputValue = 0L;
|
||||
while (zGates.Count > 0)
|
||||
{
|
||||
// Avoid locks when result is not reachable (infinite loop)
|
||||
var resultsCount = signals.Count;
|
||||
|
||||
foreach (var (inputLeft, inputRight, output, logicOperator) in gates)
|
||||
{
|
||||
if (signals.ContainsKey(output))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!signals.TryGetValue(inputLeft, out var inputLeftValue) ||
|
||||
!signals.TryGetValue(inputRight, out var inputRightValue))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var computed = Compute(inputLeftValue, inputRightValue, logicOperator);
|
||||
signals[output] = computed;
|
||||
|
||||
if (output.StartsWith('z'))
|
||||
{
|
||||
zGates.Remove(output);
|
||||
|
||||
zOutputValue += (long)computed << int.Parse(output[1..]);
|
||||
}
|
||||
}
|
||||
|
||||
// No new signal value computed, it's an infinite loop
|
||||
if (signals.Count == resultsCount)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
if (xInputValue + yInputValue == zOutputValue)
|
||||
{
|
||||
return permutations.Select(i => gates[i].Output).ToList();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
void SwapOutput(ref LogicGate first, ref LogicGate second)
|
||||
{
|
||||
var temp = first.Output;
|
||||
|
||||
first = first with { Output = second.Output };
|
||||
second = second with { Output = temp };
|
||||
}
|
||||
}
|
||||
|
||||
private int Compute(int inputLeftValue, int inputRightValue, Operator logicOperator) => logicOperator switch
|
||||
{
|
||||
Operator.And => inputLeftValue & inputRightValue,
|
||||
Operator.Or => inputLeftValue | inputRightValue,
|
||||
Operator.Xor => inputLeftValue ^ inputRightValue,
|
||||
_ => throw new ArgumentOutOfRangeException(nameof(logicOperator), logicOperator, null)
|
||||
};
|
||||
|
||||
private (Dictionary<string, int> Signals, List<LogicGate> Gates, HashSet<string> ZGates) ParseInput()
|
||||
{
|
||||
var readingSignals = true;
|
||||
|
||||
var signals = new Dictionary<string, int>();
|
||||
var gates = new List<LogicGate>();
|
||||
var zGates = new HashSet<string>();
|
||||
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
{
|
||||
if (line.IsWhiteSpace())
|
||||
{
|
||||
readingSignals = false;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if (readingSignals)
|
||||
{
|
||||
var signalName = line[..line.IndexOf(':')];
|
||||
var signalValue = int.Parse(line[(line.IndexOf(':') + 2)..]);
|
||||
|
||||
signals[signalName.ToString()] = signalValue;
|
||||
}
|
||||
else
|
||||
{
|
||||
var split = line.Split(' ');
|
||||
split.MoveNext();
|
||||
|
||||
var inputLeft = line[split.Current];
|
||||
split.MoveNext();
|
||||
|
||||
var logicOperator = Enum.Parse<Operator>(line[split.Current], true);
|
||||
split.MoveNext();
|
||||
|
||||
var inputRight = line[split.Current];
|
||||
split.MoveNext();
|
||||
split.MoveNext();
|
||||
|
||||
var output = line[split.Current];
|
||||
|
||||
gates.Add(new LogicGate(inputLeft.ToString(), inputRight.ToString(), output.ToString(), logicOperator));
|
||||
|
||||
if (output.StartsWith('z'))
|
||||
{
|
||||
zGates.Add(output.ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (signals, gates, zGates);
|
||||
}
|
||||
|
||||
private record LogicGate(string InputLeft, string InputRight, string Output, Operator LogicOperator);
|
||||
|
||||
private enum Operator
|
||||
{
|
||||
And,
|
||||
Or,
|
||||
Xor
|
||||
}
|
||||
|
||||
// Source: https://stackoverflow.com/a/36634935
|
||||
|
||||
/// <summary>
|
||||
/// Heap's algorithm to find all permutations. Non recursive, more efficient.
|
||||
/// </summary>
|
||||
/// <param name="items">Items to permute in each possible ways</param>
|
||||
/// <param name="funcExecuteAndTellIfShouldStop"></param>
|
||||
/// <returns>Return true if cancelled</returns>
|
||||
private static bool ForAllPermutation<T>(T[] items, Func<T[], bool> funcExecuteAndTellIfShouldStop)
|
||||
{
|
||||
int countOfItem = items.Length;
|
||||
|
||||
if (countOfItem <= 1)
|
||||
{
|
||||
return funcExecuteAndTellIfShouldStop(items);
|
||||
}
|
||||
|
||||
var indexes = new int[countOfItem];
|
||||
|
||||
// Unnecessary. Thanks to NetManage for the advise
|
||||
// for (int i = 0; i < countOfItem; i++)
|
||||
// {
|
||||
// indexes[i] = 0;
|
||||
// }
|
||||
|
||||
if (funcExecuteAndTellIfShouldStop(items))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
for (int i = 1; i < countOfItem;)
|
||||
{
|
||||
if (indexes[i] < i)
|
||||
{
|
||||
// On the web there is an implementation with a multiplication which should be less efficient.
|
||||
if ((i & 1) == 1) // if (i % 2 == 1) ... more efficient ??? At least the same.
|
||||
{
|
||||
Swap(ref items[i], ref items[indexes[i]]);
|
||||
}
|
||||
else
|
||||
{
|
||||
Swap(ref items[i], ref items[0]);
|
||||
}
|
||||
|
||||
if (funcExecuteAndTellIfShouldStop(items))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
indexes[i]++;
|
||||
i = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
indexes[i++] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Swap 2 elements of same type
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <param name="a"></param>
|
||||
/// <param name="b"></param>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
private static void Swap<T>(ref T a, ref T b)
|
||||
{
|
||||
T temp = a;
|
||||
a = b;
|
||||
b = temp;
|
||||
}
|
||||
}
|
||||
111
Days/Day25.cs
111
Days/Day25.cs
@@ -1,111 +0,0 @@
|
||||
using System.Collections.Frozen;
|
||||
using System.Numerics;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.Intrinsics.X86;
|
||||
using System.Text;
|
||||
using Microsoft.CodeAnalysis;
|
||||
using Microsoft.VisualBasic;
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
|
||||
public class Day25 : Day
|
||||
{
|
||||
public override int Number => 25;
|
||||
public override string Name => "Code Chronicle";
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var (locks, keys) = ParseInput();
|
||||
|
||||
var workingPairs = 0;
|
||||
|
||||
foreach (var lockToTest in locks)
|
||||
{
|
||||
foreach (var key in keys)
|
||||
{
|
||||
if (lockToTest.Height1 + key.Height1 < 6 &&
|
||||
lockToTest.Height2 + key.Height2 < 6 &&
|
||||
lockToTest.Height3 + key.Height3 < 6 &&
|
||||
lockToTest.Height4 + key.Height4 < 6 &&
|
||||
lockToTest.Height5 + key.Height5 < 6)
|
||||
{
|
||||
workingPairs++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Amont of unique key/lock pairs that fit: [yellow]{workingPairs}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private (List<Lock> Locks, List<Key> Keys) ParseInput()
|
||||
{
|
||||
var locks = new List<Lock>();
|
||||
var keys = new List<Key>();
|
||||
|
||||
Span<int> itemHeights = stackalloc int[5];
|
||||
|
||||
var input = Input.AsSpan();
|
||||
foreach (var itemRange in input.Split($"{Environment.NewLine}{Environment.NewLine}"))
|
||||
{
|
||||
var item = input[itemRange];
|
||||
var lines = item.EnumerateLines();
|
||||
|
||||
var isKey = false;
|
||||
|
||||
// Reset item heights
|
||||
itemHeights[0] = -1;
|
||||
itemHeights[1] = -1;
|
||||
itemHeights[2] = -1;
|
||||
itemHeights[3] = -1;
|
||||
itemHeights[4] = -1;
|
||||
|
||||
for (var height = 0; height <= 6; height++)
|
||||
{
|
||||
lines.MoveNext();
|
||||
var line = lines.Current;
|
||||
|
||||
if (height is 0)
|
||||
{
|
||||
isKey = line is ".....";
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
for (var i = 0; i < 5; i++)
|
||||
{
|
||||
if (isKey && line[i] is '#' && itemHeights[i] is -1)
|
||||
{
|
||||
itemHeights[i] = 6 - height;
|
||||
}
|
||||
else if (!isKey && line[i] is '.' && itemHeights[i] is -1)
|
||||
{
|
||||
itemHeights[i] = height - 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isKey)
|
||||
{
|
||||
keys.Add(new Key(itemHeights[0], itemHeights[1], itemHeights[2], itemHeights[3], itemHeights[4]));
|
||||
}
|
||||
else
|
||||
{
|
||||
locks.Add(new Lock(itemHeights[0], itemHeights[1], itemHeights[2], itemHeights[3], itemHeights[4]));
|
||||
}
|
||||
}
|
||||
|
||||
return (locks, keys);
|
||||
}
|
||||
|
||||
private readonly record struct Lock(int Height1, int Height2, int Height3, int Height4, int Height5);
|
||||
private readonly record struct Key(int Height1, int Height2, int Height3, int Height4, int Height5);
|
||||
}
|
||||
109
Days/Day3.cs
109
Days/Day3.cs
@@ -1,109 +0,0 @@
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
|
||||
public class Day3 : Day
|
||||
{
|
||||
public override int Number => 3;
|
||||
public override string Name => "Mull It Over";
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var result = 0;
|
||||
|
||||
var input = Input.AsSpan();
|
||||
var mulStart = input.IndexOf("mul(");
|
||||
|
||||
while (mulStart != -1)
|
||||
{
|
||||
input = input[(mulStart + 4)..];
|
||||
|
||||
// Start of a mul operation, search the ending parenthesis and make sure it's before the next mul
|
||||
var mulEnd = input.IndexOf(")");
|
||||
var nextMulStart = input.IndexOf("mul(");
|
||||
|
||||
if (mulEnd != -1 && (nextMulStart == -1 || mulEnd < nextMulStart))
|
||||
{
|
||||
var operands = input[..mulEnd];
|
||||
var separator = operands.IndexOf(",");
|
||||
|
||||
if (separator != -1
|
||||
&& int.TryParse(operands[..separator], out var left)
|
||||
&& int.TryParse(operands[(separator + 1)..], out var right))
|
||||
{
|
||||
result += left * right;
|
||||
}
|
||||
}
|
||||
|
||||
mulStart = nextMulStart;
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Result: [yellow]{result}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
var result = 0;
|
||||
|
||||
var input = Input.AsSpan();
|
||||
var mulStart = input.IndexOf("mul(");
|
||||
|
||||
while (mulStart != -1)
|
||||
{
|
||||
// Check if there is a "don't()" before next mul
|
||||
var dontStart = input.IndexOf("don't()");
|
||||
|
||||
if (dontStart < mulStart)
|
||||
{
|
||||
// Search for next "do()"
|
||||
input = input[(dontStart + 7)..];
|
||||
|
||||
var doStart = input.IndexOf("do()");
|
||||
|
||||
if (doStart == -1)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
input = input[(doStart + 4)..];
|
||||
|
||||
// Update next mult position
|
||||
mulStart = input.IndexOf("mul(");
|
||||
|
||||
if (mulStart == -1)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
input = input[(mulStart + 4)..];
|
||||
|
||||
// Start of a mul operation, search the ending parenthesis and make sure it's before the next mul
|
||||
var mulEnd = input.IndexOf(")");
|
||||
var nextMulStart = input.IndexOf("mul(");
|
||||
|
||||
if (mulEnd != -1 && (nextMulStart == -1 || mulEnd < nextMulStart))
|
||||
{
|
||||
var operands = input[..mulEnd];
|
||||
var separator = operands.IndexOf(",");
|
||||
|
||||
if (separator != -1
|
||||
&& int.TryParse(operands[..separator], out var left)
|
||||
&& int.TryParse(operands[(separator + 1)..], out var right))
|
||||
{
|
||||
result += left * right;
|
||||
}
|
||||
}
|
||||
|
||||
mulStart = nextMulStart;
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Result: [yellow]{result}[/][/]");
|
||||
}
|
||||
}
|
||||
}
|
||||
136
Days/Day4.cs
136
Days/Day4.cs
@@ -1,136 +0,0 @@
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
|
||||
public class Day4 : Day
|
||||
{
|
||||
public override int Number => 4;
|
||||
public override string Name => "Ceres Search";
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var xmasCount = 0;
|
||||
|
||||
var grid = Input.AsCharGrid();
|
||||
|
||||
for (int x = 0; x < grid.GetLength(0); x++)
|
||||
{
|
||||
for (int y = 0; y < grid.GetLength(1); y++)
|
||||
{
|
||||
xmasCount += CheckXmas(x, y);
|
||||
}
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Number of safe reports: [yellow]{xmasCount}[/][/]");
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
int CheckXmas(int x, int y)
|
||||
{
|
||||
(int xOffset, int yOffset)[] patterns = [
|
||||
(1, 0),
|
||||
(-1, 0),
|
||||
(0, 1),
|
||||
(0, -1),
|
||||
(1, 1),
|
||||
(1, -1),
|
||||
(-1, 1),
|
||||
(-1, -1)
|
||||
];
|
||||
|
||||
char[] word = ['X', 'M', 'A', 'S'];
|
||||
|
||||
int count = 0;
|
||||
|
||||
foreach (var pattern in patterns)
|
||||
{
|
||||
bool valid = true;
|
||||
|
||||
for (int i = 0; i < word.Length; i++)
|
||||
{
|
||||
var xTarget = x + (pattern.xOffset * i);
|
||||
var yTarget = y + (pattern.yOffset * i);
|
||||
|
||||
if (xTarget < 0 || xTarget >= grid.GetLength(0)
|
||||
|| yTarget < 0 || yTarget >= grid.GetLength(1)
|
||||
|| word[i] != grid[xTarget, yTarget])
|
||||
{
|
||||
valid = false;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (valid)
|
||||
{
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
var xmasCount = 0;
|
||||
|
||||
var grid = Input.AsCharGrid();
|
||||
|
||||
for (int x = 0; x < grid.GetLength(0); x++)
|
||||
{
|
||||
for (int y = 0; y < grid.GetLength(1); y++)
|
||||
{
|
||||
xmasCount += CheckXmas(x, y);
|
||||
}
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Number of safe reports: [yellow]{xmasCount}[/][/]");
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
int CheckXmas(int x, int y)
|
||||
{
|
||||
((int xOffset, int yOffset) first, (int xOffset, int yOffset) second)[] patterns = [
|
||||
((-1, -1), (-1, 1)),
|
||||
((-1, -1), (1, -1)),
|
||||
((1, -1), (1, 1)),
|
||||
((1, 1), (-1, 1))
|
||||
];
|
||||
|
||||
char[] word = ['M', 'S'];
|
||||
|
||||
// Center element of the cross must be an 'A'
|
||||
if (grid[x, y] != 'A')
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Make sure we're not going out of bounds
|
||||
if (x - 1 < 0 || x + 1 >= grid.GetLength(0) ||
|
||||
y - 1 < 0 || y + 1 >= grid.GetLength(1))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int count = 0;
|
||||
|
||||
foreach (var (first, second) in patterns)
|
||||
{
|
||||
if (grid[x + first.xOffset, y + first.yOffset] is 'M' && grid[x - first.xOffset, y - first.yOffset] is 'S' &&
|
||||
grid[x + second.xOffset, y + second.yOffset] is 'M' && grid[x - second.xOffset, y - second.yOffset] is 'S')
|
||||
{
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
}
|
||||
}
|
||||
121
Days/Day5.cs
121
Days/Day5.cs
@@ -1,121 +0,0 @@
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
|
||||
public class Day5 : Day
|
||||
{
|
||||
public override int Number => 5;
|
||||
public override string Name => "Print Queue";
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var result = 0;
|
||||
|
||||
var precedences = new HashSet<int>?[100];
|
||||
|
||||
var readingPrecedences = true;
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
{
|
||||
if (line.IsWhiteSpace())
|
||||
{
|
||||
readingPrecedences = false;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if (readingPrecedences)
|
||||
{
|
||||
var split = line.Split('|');
|
||||
split.MoveNext();
|
||||
|
||||
var ruleTarget = int.Parse(line[split.Current]);
|
||||
|
||||
split.MoveNext();
|
||||
|
||||
var ruleNumber = int.Parse(line[split.Current]);
|
||||
|
||||
if (precedences[ruleTarget] is not { } precedenceSet)
|
||||
{
|
||||
precedenceSet = [ ruleNumber ];
|
||||
precedences[ruleTarget] = precedenceSet;
|
||||
}
|
||||
else
|
||||
{
|
||||
precedenceSet.Add(ruleNumber);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
result += CheckLine(line);
|
||||
}
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Sum of middle page numbers: [yellow]{result}[/][/]");
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
int CheckLine(ReadOnlySpan<char> line)
|
||||
{
|
||||
Span<int> positions = stackalloc int[100];
|
||||
|
||||
// Read line to get positions
|
||||
var position = 1;
|
||||
foreach (var range in line.Split(','))
|
||||
{
|
||||
var number = int.Parse(line[range]);
|
||||
|
||||
positions[number] = position;
|
||||
|
||||
position++;
|
||||
}
|
||||
|
||||
var middlePosition = (position - 1) / 2;
|
||||
var middleNumber = 0;
|
||||
|
||||
var index = 0;
|
||||
// Check if positions respect precedence rules
|
||||
foreach (var range in line.Split(','))
|
||||
{
|
||||
var number = int.Parse(line[range]);
|
||||
|
||||
// Fetch middle number
|
||||
if (index == middlePosition)
|
||||
{
|
||||
middleNumber = number;
|
||||
}
|
||||
index++;
|
||||
|
||||
if (precedences[number] is not { } precedenceSet)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var numberPosition = positions[number];
|
||||
|
||||
// Check all precedence rules for numbers in the list
|
||||
foreach (var nextNumber in precedenceSet)
|
||||
{
|
||||
var nextNumberPosition = positions[nextNumber];
|
||||
|
||||
if (nextNumberPosition != 0 && numberPosition >= nextNumberPosition)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return middleNumber;
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
// if (display)
|
||||
// {
|
||||
// AnsiConsole.MarkupLine($"[green]Number of safe reports: [yellow]{xmasCount}[/][/]");
|
||||
// }
|
||||
}
|
||||
}
|
||||
194
Days/Day6.cs
194
Days/Day6.cs
@@ -1,194 +0,0 @@
|
||||
using System.Numerics;
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
|
||||
public class Day6 : Day
|
||||
{
|
||||
public override int Number => 6;
|
||||
public override string Name => "Guard Gallivant";
|
||||
|
||||
private const int GridSize = 130;
|
||||
|
||||
private static readonly Point DirectionUp = new(0, -1);
|
||||
private static readonly Point DirectionDown = new(0, 1);
|
||||
private static readonly Point DirectionLeft = new(-1, 0);
|
||||
private static readonly Point DirectionRight = new(1, 0);
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
HashSet<Point> visited = [];
|
||||
var direction = DirectionUp;
|
||||
|
||||
var (obstaclesGrid, position) = ReadInputGrid();
|
||||
|
||||
visited.Add(position);
|
||||
|
||||
// Move the guard till it leaves the grid
|
||||
while (true)
|
||||
{
|
||||
var destination = position + direction;
|
||||
|
||||
if (destination.X is < 0 or >= GridSize ||
|
||||
destination.Y is < 0 or >= GridSize)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
// Check if it's possible to move or if there is an obstacle
|
||||
if (obstaclesGrid[destination.X, destination.Y])
|
||||
{
|
||||
direction = NextDirection(direction);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
position = destination;
|
||||
|
||||
visited.Add(position);
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Amount of distinct positions: [yellow]{visited.Count}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
var possibleLoops = 0;
|
||||
var (initialGrid, startPosition) = ReadInputGrid();
|
||||
|
||||
for (var y = 0; y < GridSize; y++)
|
||||
{
|
||||
for (var x = 0; x < GridSize; x++)
|
||||
{
|
||||
// Store obstacle state
|
||||
var initialState = initialGrid[x, y];
|
||||
|
||||
// Check if grid is a loop after adding an obstacle there
|
||||
initialGrid[x, y] = true;
|
||||
|
||||
if (IsLoop(initialGrid, startPosition))
|
||||
{
|
||||
possibleLoops++;
|
||||
}
|
||||
|
||||
// Restore obstacle state
|
||||
initialGrid[x, y] = initialState;
|
||||
}
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Amount of possible loop positions: [yellow]{possibleLoops}[/][/]");
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
bool IsLoop(bool[,] obstaclesGrid, Point position)
|
||||
{
|
||||
HashSet<(Point position, Point direction)> visited = [];
|
||||
var direction = DirectionUp;
|
||||
|
||||
visited.Add((position, direction));
|
||||
|
||||
// Move the guard till it loops or leaves the grid
|
||||
while (true)
|
||||
{
|
||||
var destination = position + direction;
|
||||
|
||||
if (visited.Contains((destination, direction)))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if (destination.X is < 0 or >= GridSize || destination.Y is < 0 or >= GridSize)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check if it's possible to move or if there is an obstacle
|
||||
if (obstaclesGrid[destination.X, destination.Y])
|
||||
{
|
||||
direction = NextDirection(direction);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
position = destination;
|
||||
|
||||
visited.Add((position, direction));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private (bool[,] ObstaclesGrid, Point Start) ReadInputGrid()
|
||||
{
|
||||
var grid = new bool[GridSize, GridSize];
|
||||
Point start = default;
|
||||
|
||||
var y = 0;
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
{
|
||||
var x = 0;
|
||||
|
||||
foreach (var symbol in line)
|
||||
{
|
||||
if (symbol == '^')
|
||||
{
|
||||
start = new Point(x, y);
|
||||
|
||||
grid[x, y] = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
grid[x, y] = symbol switch
|
||||
{
|
||||
'#' => true,
|
||||
_ => false
|
||||
};
|
||||
}
|
||||
|
||||
x++;
|
||||
}
|
||||
|
||||
y++;
|
||||
}
|
||||
|
||||
return (grid, start);
|
||||
}
|
||||
|
||||
private static Point NextDirection(Point direction)
|
||||
{
|
||||
if (direction == DirectionUp)
|
||||
{
|
||||
return DirectionRight;
|
||||
}
|
||||
|
||||
if (direction == DirectionRight)
|
||||
{
|
||||
return DirectionDown;
|
||||
}
|
||||
|
||||
if (direction == DirectionDown)
|
||||
{
|
||||
return DirectionLeft;
|
||||
}
|
||||
|
||||
if (direction == DirectionLeft)
|
||||
{
|
||||
return DirectionUp;
|
||||
}
|
||||
|
||||
throw new ArgumentException("Invalid direction", nameof(direction));
|
||||
}
|
||||
|
||||
private readonly record struct Point(int X, int Y) : IAdditionOperators<Point, Point, Point>
|
||||
{
|
||||
public static Point operator +(Point left, Point right)
|
||||
{
|
||||
return new Point(left.X + right.X, left.Y + right.Y);
|
||||
}
|
||||
}
|
||||
}
|
||||
119
Days/Day7.cs
119
Days/Day7.cs
@@ -1,119 +0,0 @@
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
|
||||
public class Day7 : Day
|
||||
{
|
||||
public override int Number => 7;
|
||||
public override string Name => "Bridge Repair";
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var calibrationResult = 0L;
|
||||
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
{
|
||||
// Read input equation
|
||||
var equationStart = line.IndexOf(':');
|
||||
|
||||
var target = long.Parse(line[..equationStart]);
|
||||
|
||||
var numbers = new List<long>();
|
||||
var equationNumbers = line[(equationStart + 2)..];
|
||||
|
||||
foreach (var range in equationNumbers.Split(' '))
|
||||
{
|
||||
numbers.Add(int.Parse(equationNumbers[range]));
|
||||
}
|
||||
|
||||
// Check if equation is possible
|
||||
if (CheckEquation(target, numbers.ToArray().AsSpan()[1..], numbers[0]))
|
||||
{
|
||||
calibrationResult += target;
|
||||
}
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Total calibration result: [yellow]{calibrationResult}[/][/]");
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
bool CheckEquation(long target, ReadOnlySpan<long> numbers, long result)
|
||||
{
|
||||
// Early return when result is greater than target because result is increasing
|
||||
if (result > target)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (numbers.IsEmpty)
|
||||
{
|
||||
return result == target;
|
||||
}
|
||||
|
||||
var sumResult = result + numbers[0];
|
||||
var multiplyResult = result * numbers[0];
|
||||
|
||||
return CheckEquation(target, numbers[1..], sumResult)
|
||||
|| CheckEquation(target, numbers[1..], multiplyResult);
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
var calibrationResult = 0L;
|
||||
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
{
|
||||
// Read input equation
|
||||
var equationStart = line.IndexOf(':');
|
||||
|
||||
var target = long.Parse(line[..equationStart]);
|
||||
|
||||
var numbers = new List<long>();
|
||||
var equationNumbers = line[(equationStart + 2)..];
|
||||
|
||||
foreach (var range in equationNumbers.Split(' '))
|
||||
{
|
||||
numbers.Add(int.Parse(equationNumbers[range]));
|
||||
}
|
||||
|
||||
// Check if equation is possible
|
||||
if (CheckEquation(target, numbers.ToArray().AsSpan()[1..], numbers[0]))
|
||||
{
|
||||
calibrationResult += target;
|
||||
}
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Total calibration result: [yellow]{calibrationResult}[/][/]");
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
bool CheckEquation(long target, ReadOnlySpan<long> numbers, long result)
|
||||
{
|
||||
// Early return when result is greater than target because result is increasing
|
||||
if (result > target)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (numbers.IsEmpty)
|
||||
{
|
||||
return result == target;
|
||||
}
|
||||
|
||||
var sumResult = result + numbers[0];
|
||||
var multiplyResult = result * numbers[0];
|
||||
var concatResult = result * (int)Math.Pow(10, (int)Math.Log10(numbers[0]) + 1) + numbers[0];
|
||||
|
||||
return CheckEquation(target, numbers[1..], sumResult)
|
||||
|| CheckEquation(target, numbers[1..], multiplyResult)
|
||||
|| CheckEquation(target, numbers[1..], concatResult);
|
||||
}
|
||||
}
|
||||
}
|
||||
169
Days/Day8.cs
169
Days/Day8.cs
@@ -1,169 +0,0 @@
|
||||
using System.Collections.Frozen;
|
||||
using System.Numerics;
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
|
||||
public class Day8 : Day
|
||||
{
|
||||
public override int Number => 8;
|
||||
public override string Name => "Resonant Collinearity";
|
||||
|
||||
private const int GridSize = 50;
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
HashSet<Point> antinodePositions = [];
|
||||
|
||||
var frequencyAntennas = ParseAntennas();
|
||||
|
||||
// Find antinodes for each frequency
|
||||
foreach (var (_, antennas) in frequencyAntennas)
|
||||
{
|
||||
// Take antennas by pair to find antinodes
|
||||
foreach (var firstAntenna in antennas)
|
||||
{
|
||||
foreach (var secondAntenna in antennas.Where(a => a != firstAntenna))
|
||||
{
|
||||
var firstAntinode = firstAntenna + (firstAntenna - secondAntenna);
|
||||
var secondAntinode = secondAntenna + (secondAntenna - firstAntenna);
|
||||
|
||||
if (firstAntinode is { X: >= 0 and < GridSize, Y: >= 0 and < GridSize })
|
||||
{
|
||||
antinodePositions.Add(firstAntinode);
|
||||
}
|
||||
|
||||
if (secondAntinode is { X: >= 0 and < GridSize, Y: >= 0 and < GridSize })
|
||||
{
|
||||
antinodePositions.Add(secondAntinode);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Unique antinode positions count: [yellow]{antinodePositions.Count}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
HashSet<Point> antinodePositions = [];
|
||||
|
||||
var frequencyAntennas = ParseAntennas();
|
||||
|
||||
// Find antinodes for each frequency
|
||||
foreach (var (_, antennas) in frequencyAntennas)
|
||||
{
|
||||
// Take antennas by pair to find antinodes
|
||||
foreach (var firstAntenna in antennas)
|
||||
{
|
||||
foreach (var secondAntenna in antennas.Where(a => a != firstAntenna))
|
||||
{
|
||||
// Always add antinodes on antennas if a pair is formed
|
||||
antinodePositions.Add(firstAntenna);
|
||||
antinodePositions.Add(secondAntenna);
|
||||
|
||||
// Compute potential antinode positions
|
||||
var firstAntinodeOffset = firstAntenna - secondAntenna;
|
||||
var secondAntinodeOffset = secondAntenna - firstAntenna;
|
||||
|
||||
for (var i = 1; ; i++)
|
||||
{
|
||||
var firstAntinode = firstAntenna + (i * firstAntinodeOffset);
|
||||
|
||||
if (firstAntinode is { X: >= 0 and < GridSize, Y: >= 0 and < GridSize })
|
||||
{
|
||||
antinodePositions.Add(firstAntinode);
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
for (var i = 1; ; i++)
|
||||
{
|
||||
var secondAntinode = secondAntenna + (i * secondAntinodeOffset);
|
||||
|
||||
if (secondAntinode is { X: >= 0 and < GridSize, Y: >= 0 and < GridSize })
|
||||
{
|
||||
antinodePositions.Add(secondAntinode);
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Unique antinode positions count: [yellow]{antinodePositions.Count}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
private FrozenDictionary<char, List<Point>> ParseAntennas()
|
||||
{
|
||||
var antennas = new Dictionary<char, List<Point>>();
|
||||
|
||||
var y = 0;
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
{
|
||||
var x = 0;
|
||||
|
||||
foreach (var frequency in line)
|
||||
{
|
||||
if (frequency is '.')
|
||||
{
|
||||
x++;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!antennas.TryGetValue(frequency, out var list))
|
||||
{
|
||||
list = [];
|
||||
antennas[frequency] = list;
|
||||
}
|
||||
|
||||
list.Add(new Point(x, y));
|
||||
|
||||
x++;
|
||||
}
|
||||
|
||||
y++;
|
||||
}
|
||||
|
||||
return antennas.ToFrozenDictionary();
|
||||
}
|
||||
|
||||
private readonly record struct Point(int X, int Y)
|
||||
: IAdditionOperators<Point, Point, Point>,
|
||||
ISubtractionOperators<Point, Point, Point>,
|
||||
IMultiplyOperators<Point, int, Point>
|
||||
{
|
||||
public static Point operator +(Point left, Point right)
|
||||
{
|
||||
return new Point(left.X + right.X, left.Y + right.Y);
|
||||
}
|
||||
|
||||
public static Point operator -(Point left, Point right)
|
||||
{
|
||||
return new Point(left.X - right.X, left.Y - right.Y);
|
||||
}
|
||||
|
||||
public static Point operator *(Point left, int right)
|
||||
{
|
||||
return new Point(left.X * right, left.Y * right);
|
||||
}
|
||||
|
||||
public static Point operator *(int left, Point right)
|
||||
{
|
||||
return new Point(right.X * left, right.Y * left);
|
||||
}
|
||||
}
|
||||
}
|
||||
181
Days/Day9.cs
181
Days/Day9.cs
@@ -1,181 +0,0 @@
|
||||
using System.Collections.Frozen;
|
||||
using System.Numerics;
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
|
||||
public class Day9 : Day
|
||||
{
|
||||
public override int Number => 9;
|
||||
public override string Name => "Disk Fragmenter";
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var (blocks, freeBlocksStarts) = ParseDiskBlocks();
|
||||
|
||||
var nextFreeIndex = freeBlocksStarts.Dequeue();
|
||||
|
||||
for (var i = blocks.Count - 1; i >= 0; i--)
|
||||
{
|
||||
// There is no more available space to move blocks into on the left
|
||||
if (nextFreeIndex >= i)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
if (blocks[i] is -1)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
blocks[nextFreeIndex] = blocks[i];
|
||||
blocks[i] = -1;
|
||||
|
||||
nextFreeIndex++;
|
||||
|
||||
// Go to next free blocks if current free block is full
|
||||
if (blocks[nextFreeIndex] is not -1)
|
||||
{
|
||||
nextFreeIndex = freeBlocksStarts.Dequeue();
|
||||
}
|
||||
}
|
||||
|
||||
var checksum = blocks
|
||||
.Select((block, index) => block is -1 ? 0 : (long)block * index)
|
||||
.Sum();
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Filesystem checksum: [yellow]{checksum}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
var (blocks, freeBlocks) = ParseDiskBlocks2();
|
||||
|
||||
var mapStart = string.Join(" ", blocks);
|
||||
|
||||
for (var i = blocks.Count - 1; i >= 0; i--)
|
||||
{
|
||||
if (blocks[i] is -1)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// Get file length
|
||||
var fileId = blocks[i];
|
||||
var endPosition = i;
|
||||
var startPosition = i;
|
||||
|
||||
while (startPosition > 0 && blocks[startPosition - 1] == fileId)
|
||||
{
|
||||
startPosition--;
|
||||
}
|
||||
|
||||
var length = (endPosition - startPosition) + 1;
|
||||
|
||||
// Find first available free block on the left
|
||||
var freeBlockIndex = freeBlocks.FindIndex(b => b.StartIndex < startPosition && b.Length >= length);
|
||||
|
||||
if (freeBlockIndex is not -1)
|
||||
{
|
||||
var freeBlock = freeBlocks[freeBlockIndex];
|
||||
|
||||
for (var offset = 0; offset < length; offset++)
|
||||
{
|
||||
blocks[freeBlock.StartIndex + offset] = blocks[startPosition + offset];
|
||||
blocks[startPosition + offset] = -1;
|
||||
}
|
||||
|
||||
// Update free block start and length
|
||||
freeBlocks[freeBlockIndex] = (freeBlock.StartIndex + length, freeBlock.Length - length);
|
||||
}
|
||||
|
||||
// Move to next file or free block
|
||||
i = startPosition;
|
||||
}
|
||||
|
||||
var mapEnd = string.Join(" ", blocks).Replace("-1", ".");
|
||||
|
||||
var checksum = blocks
|
||||
.Select((block, index) => block is -1 ? 0 : (long)block * index)
|
||||
.Sum();
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Filesystem checksum: [yellow]{checksum}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
private (List<int> Blocks, Queue<int> FreeBlocksStarts) ParseDiskBlocks()
|
||||
{
|
||||
var blocks = new List<int>(20_000 * 10);
|
||||
var freeBlocksStarts = new Queue<int>();
|
||||
|
||||
var readingBlock = true;
|
||||
var blockId = 0;
|
||||
|
||||
foreach (var length in Input.Select(encoded => encoded - '0'))
|
||||
{
|
||||
if (readingBlock)
|
||||
{
|
||||
for (var i = 0; i < length; i++)
|
||||
{
|
||||
blocks.Add(blockId);
|
||||
}
|
||||
|
||||
blockId++;
|
||||
}
|
||||
else if (length > 0)
|
||||
{
|
||||
freeBlocksStarts.Enqueue(blocks.Count);
|
||||
|
||||
for (var i = 0; i < length; i++)
|
||||
{
|
||||
blocks.Add(-1);
|
||||
}
|
||||
}
|
||||
|
||||
readingBlock = !readingBlock;
|
||||
}
|
||||
|
||||
return (blocks, freeBlocksStarts);
|
||||
}
|
||||
|
||||
private (List<int> Blocks, List<(int StartIndex, int Length)> FreeBlocks) ParseDiskBlocks2()
|
||||
{
|
||||
var blocks = new List<int>(20_000 * 10);
|
||||
var freeBlocksStarts = new List<(int StartIndex, int Length)>();
|
||||
|
||||
var readingBlock = true;
|
||||
var blockId = 0;
|
||||
|
||||
foreach (var length in Input.Select(encoded => encoded - '0'))
|
||||
{
|
||||
if (readingBlock)
|
||||
{
|
||||
for (var i = 0; i < length; i++)
|
||||
{
|
||||
blocks.Add(blockId);
|
||||
}
|
||||
|
||||
blockId++;
|
||||
}
|
||||
else if (length > 0)
|
||||
{
|
||||
freeBlocksStarts.Add((blocks.Count, length));
|
||||
|
||||
for (var i = 0; i < length; i++)
|
||||
{
|
||||
blocks.Add(-1);
|
||||
}
|
||||
}
|
||||
|
||||
readingBlock = !readingBlock;
|
||||
}
|
||||
|
||||
return (blocks, freeBlocksStarts);
|
||||
}
|
||||
|
||||
}
|
||||
5768
Inputs/Day1.txt
5768
Inputs/Day1.txt
File diff suppressed because it is too large
Load Diff
@@ -1,60 +0,0 @@
|
||||
670107898789217654342123456782345678011256767898765465432101
|
||||
789234567654308210256034105891089019100349897767874376569101
|
||||
658341234530989300107845234521078323270110588758901287478272
|
||||
345450347621895418916976367652569454589223679643210896564383
|
||||
430569678934786917014989898743458765678334534554034787665898
|
||||
521678432825677806323876321212345107895450128765125693456721
|
||||
437876501910543215214985400303434234784966549834296502107610
|
||||
108978967865676784305673212345125105672877838126787411098523
|
||||
232169054654985895676894501876056216781236923035498321015432
|
||||
147054103023984104389087662943237645890321015676325677896761
|
||||
058943212110873201243179879850198732765430234588714986234890
|
||||
167687601101164012652234568766784321887342101899603215105659
|
||||
678996511231054873701221978955693870996456701234514504378778
|
||||
982123490543123964823400876554212987345980896785603673069867
|
||||
765010587650123455916512345443403456287671015498512982154956
|
||||
876523018567656996507845678932212310196542564321027854323241
|
||||
985452109898743887765930987821054321203433473452567761018130
|
||||
784343216789212701894321076543065010012128982867658956789021
|
||||
891238345323105611256232565332170321234089801998943441034330
|
||||
760189653410134320347183423469981236985178767870832332125545
|
||||
654308754589823412398094012578876547876589454561221089076556
|
||||
569210345676210503480189017665014566981074305432012670988987
|
||||
778123216784345676503276328984323475212565213456587521267981
|
||||
898014505891256985214965410810012984303456432347895430345670
|
||||
785210676540787694345898325723678778984234541056498741234321
|
||||
654321987034896001256763676554569560128105650110345657876434
|
||||
321039654126789123347854985438765430439876763431233054965235
|
||||
490318743256770104098923821129654321540569892343212123452196
|
||||
581401232149863265121012530034341013691456701456504567861087
|
||||
672310345038054396432343448101231012782347650987623438932387
|
||||
965498786521178987503453559874342103452878943298510129873498
|
||||
878945697810265089612354567565213478501987801123456018784567
|
||||
969034398924354108743543658106904569612016772010567105695436
|
||||
450123454589443298874632109237876548743125983400198234306721
|
||||
343210545476554581965549434312361039654334876510256543217810
|
||||
012654556321055670123678323403456128761242108981347789878934
|
||||
101763217898765432252101410589567545650543567432098236712125
|
||||
249890106789854501343234521673498432787694656548123145601016
|
||||
432187678768763312854145636762876501098781067439054006432567
|
||||
243014569659643210965098745891985411239872358928765419647898
|
||||
156103012346501349876787876740694320540965443210474328756787
|
||||
067612101236432358565678945056543217601453456754389845643896
|
||||
198787656345678967632365432127680108912322589863265434512387
|
||||
234594565676589874541050121218998012301011267770172123001989
|
||||
109683410789490163698210930300107321694120178089085012123476
|
||||
658762125610301252784327845451256430783243569172196781018565
|
||||
567891034521212341075456786965344567654652410234505492109410
|
||||
656900347234301056789845697874498698676701322343012343478326
|
||||
543211298165692345698926543289567789589887011452321034567567
|
||||
432104347076780434767810432101125654434996320961478933003498
|
||||
218765456987101229896321101911036763221745467870567122112567
|
||||
309894365896234310785410110876545894100876786987651033678985
|
||||
456789223345985401656789212567030345210965495698776544543234
|
||||
787650110276576564565094303498121236321234324308989434350198
|
||||
896343023183465433004185478767870387123456710217375621060167
|
||||
125432134092174332113276769365968791001249854567434789871256
|
||||
034334547894089211223498853478959601098345983098723348964343
|
||||
301227656323456200124567942562344512367896572129810254328321
|
||||
212018965214387103438901231001123201456087561234722167219450
|
||||
323127656103898234567872102121010126545123450165621098308761
|
||||
@@ -1 +0,0 @@
|
||||
0 7 6618216 26481 885 42 202642 8791
|
||||
140
Inputs/Day12.txt
140
Inputs/Day12.txt
@@ -1,140 +0,0 @@
|
||||
MMNNPPPPGGGGAGGPPPPPPPPPZZZZZZZLLLLLLLEEEEEEEEEEEEEEEAAAAAAAAAAAAAAAAAAAAMMMMNNMMMMMMMMMMMMMMMMAARRRRRRRRRRRRRRRRRRHHHHHHHHHHHHHAAAAAAAAAAAA
|
||||
MNNNPNPPGGGGGGGPPPPPPPEPZZZZZZZLLLLLLLWWEEEEEEEEEEEEEAPAAAAAAAAAAAAAAAAAAMMMMMMMMMMMMMMMMMMMAMMAARRRRRRRRRRRRRRRRQRHHHHHHQHHHHHHHWAAAAAAAAAA
|
||||
NNNNNNNPGGGGGGGGPPPPPPPZZZZZZZZZLLLLLLLEEEEEEEEEEEEEEPPPPAAAAAAAAAAAAAAMMMMMMMMMMMMMMMMMMMMMAAAAAAAAAVRRRRRRRRRQQQQHHQQHQQQHQHHHHWWWWAAAAAAA
|
||||
NNNNNNNNGGGGGGGPPPPPPPPPZZZZZZLLLLLLLLLLEEEMEEEEEEEEEEPPPPAAAAAAAAAAAMMMMMMMMMMMMMMMMMMMMMMMMAAAAAAVVVVRRRRRRRQQQQXQQQQQQQQQQQQHHHWWWWWAAAAA
|
||||
NNNNNNNYYGGGGGGPPPPPPPPPZZZZZZZLLLLLLLLMMMMMEEEEEEEEEPPPPPPAAAAAHAAAAMMMMMMMMMMMMMMMMMMMMMMMMMMAVVVVVVVRRRRRQQQQQQQQQQQQQQQQQQQHHWWWWAAAAAAA
|
||||
NNNNNNNXYYYCCCIPPPWZPPPPPZZZZZZLLLLLLLSSMMSSEEEEEEEPPPPPPPPPPAAHHAAAAHMMMMMMMMMMWWMMMMMMMMMMMMMMMDDVVVVRRRRRRQQQQQQQQQQQQQQQQQQHHWWWWWAWAAAA
|
||||
NNNNNNXXYCCCCCIPPPPZZPPPZZZZZZZZLSLSSSSMMMSSEEEEEEEPPPPPPPPPPPAAHHAAAHHMMMMMMMMMMWMTTMMMMMMMMMMDDDDVVVVRRIIMRMMMQQQHTTQQQQQQQQQQQWWWWWWWWWWA
|
||||
NNNXXXXXXCCCCCCXPZPZZZPZZZZZZZZZZSSSSSSSSSSSEEEEEEEEPPPPPUUXXXHAHHHAHHHMMTMMMTMMMMTTTMMMMMMMMMDDDDDVIIIRIIMMMIMZQQQHTHQQQQQQQQQQAAWWWWWWWWAA
|
||||
NNNNXXXXCCCCCCCZZZZZZZZZZZZZZZSSSSSSSSSSSSSSSSEEFFPPPPPUUUXXXHHHHHHHHHHHTTMMMTMMMMTTTTTMMMMMMDDDIDDVIIIIIIIMMMMMQQQHHHQQQQQQQQQQAAAWWWWWAWAA
|
||||
NNNNNXXXXCCCCCAVVZZZZZZZZZZZUUUSSSSSSSSSSSSSSFEFFFFPPPPUUUXXXXHHHHHHHHHHHTMTTTTTMMTTTTTTMMMDMDDIIIVVIIIIIIIMMMMMMQQHHQQQQQQQQGGGQAAAWWWAAAAA
|
||||
NNNNNXXXCCCCCVVVVVVZZZZZZZZUUUUSSSSSSSSSSSSSFFFFFFFPPPUUUUXUXHHHHHHHHHHHHTTTTTTTMMTTTTTTMMDDDDDDIIIIIIIIIIIMMMMMMQIHAQQQQQQQQQQQQAAAAAWAAAAA
|
||||
NNNNNNXCCCCCCCVVVVZZZZZZZZZUUUUSSSSSSSSSSSSSSFFFFFFPPPUUUUUUXHHHHHHHHHHHHHTTTTTTTTTTTTTTTTTDDDAAAAIAIIIIMMMMWMMDDGGGAQQQQQQQQQQQQQAAAAAAAAAA
|
||||
NNNNNNNCCCCCCCCVVZZZZZZZUZZUUUUSSSSSSSSSSSFFFFFFFFFFPPUUUUUUUHHHHHHHHHHTTTTTTTTTTTTTTTTTTTDDVVAAAAAAIIIIIIIMMTTDDGGGAQQQQQQQQQQWWWUUUAUUUAAA
|
||||
NNNNNNNNCCCCCCCCVVZZZZZZUUZUUUUSSSSSSSSSSSSSFFFFFFFFPPUUUUUUHHHHHHHHHHHHHHTTTTTTTTTTTTTTTTTDVVXAAAAAIIIIIIIMTTTTTTTGGQQQQQQQQQQWWWUUUUUAAAAA
|
||||
NNNNNNNNNNNCCCCCCCZZZZZZUQUUUUUUUSSSSSSSSXSSOFFFFFFFFPPPPUOOHHHHHHHHHHHTTTTTTTTTTTTTTTTTTTTDVVVAAAAAAIIIIIIMTTGTTGGGGQQQQQQQQQQWWWUUUUUUAAAA
|
||||
NNNNNNNNNNCCCCCCCCZZZZZUUQUUUUUUUSSSSSSSSSSOOOOFPFPFPPPPPPPPPPHHHHLHHHHTTTTTMMMTTTTTTTUTTTTDDVVVVAAAAIIIIIIMTTTTTGGGGQGGGQQCQQWWWWUUUUUUUUUA
|
||||
NNNNNNNNNNNNCCCCCBBMZZZUUUUUUUUUUSSSSSSSSOOOOBBPPPPFPPPPPPPPPPXHHHHHHHHTTPTTMMMTTTTUTUUUUUUUVVVVVVVAAAIIIIIITTTTTGGGGGGGGQFFWWWWWWUUUUUUUUUU
|
||||
NNNNNNNNTNCCCCCCBUBBHCCCUUKUUUUUSSSSSSSSOOOOOBBPPPPPPBPPPPPPPPHHHSSSSHPPPPPMMMMMTTTUUUUUUUUOUVVVVVVAAIIIIIIITTTTGGGGGGGGGFFFWWWWUUUUUUUUUUUU
|
||||
NNNNNNNWCCCCCCCBBBBBBCCCCCUUUUUUSSSSSRRRROROOOBBBBBBBBBBPPBBBBHSSSSSSSPPPPPMMMMMTTUUUUUUUUUUUVVVVVVVVVVVVXIITTTGGGGGGGFFFFFFSSKWUUUUUUUUUUUU
|
||||
NNNNNWWWWCCCCCCCBBBBHCCCCCUUUUUUUSSTGRRRRRRRRBBBVBBBBPPPPPBBBBSSSSSSSSPPPPPPMMMMMTTUUUUUUUUUUVVVVVVVVVVVVXXUUGGGGGGGGGFFFFFNSSKKJUUUUUUUUUUU
|
||||
MMMWWDWWIWWCCCCBBBBBBCCCCCCCCCCCCCGGGGRRRRRRRVVVVBBXXXXXPPBBSSSSSSSSSPPPPPPPMMMMMUTUUUUUUUUUUUUVVVVVXXXXXXXUUGGGGGGGGGFFFFFSSKKKJUUUUUUUUUUU
|
||||
MMMMWWWWWWWCCCCBQBBBBCCCCCCCCGGCGGGQGGRRRRRRRVZZZZZXXXXXBBBSSSSSSSPSPPPPPPPPPMMMMUUUUUUUUUUUUUUFVVVVXXXXXXXUUUUGGXGGGGGFFFFAAAKKJUUUUUUUUUUU
|
||||
MWWWWWWWWWCCCCCCQBQBCCCCCCCCCCGCGGGGGGRRRRRVVVVVZZZXXXXXZBBSSSSSSSPPPPPPPPPPPMMMMMUUUUUUUUULFFUFFVXXXXXXXXXUUUUGXXGGGEFFFKKKKAKKKKKUUUUUUUUU
|
||||
WWWYWWWWWWKCCCQCQQQCCCCCCCCCCGGGGGGGGGGGGGGVVVVVVZZXXXXXZZBBSBBSSSPPPPPPPPPEEMMMMMGUUUUUUUULFFFFVVXXXXXXXXXUUUUUBBUUGEFFFKKKKKKKKKUUUUUUUUUU
|
||||
WWWWWWWWWWWQQQQQQQQCCCCCCCCCCGGGGGGGGGGGGGGVVVVVVVZXXXXXKKKBBBBSSSSUUPPPPPPEMMSMMGGVAAAUUQFFFFFFVVVVVXXXXXUUUUBBBUUREEEMMKKKKKKKKKKKUUUUUUUU
|
||||
RWWWWWWWWWWQQQCQQQCCCCCCCGGGGGGGGGGGGGGGGGVVVVVVVVVXXXXXKKKKKBBBBBSSUPPPPPSMMMSSMMGVVVVVVQFFFFFFFFVVVXXXXXUUBUBBBBBREEEMMMMKKKKKKKKKUHUUUUUU
|
||||
WWWWWWWWWWWQCCCQQQQCCCCCCCCCGGGGGGGGGGGGGGGVVVVRVVRXXXXXKKKKBBBBBBBBPPPPPPSSSSSSMMMVVVVVVVFFFFFFFFFFFXXHXUUBBBBBBBRRREMMMMMKKKKKKKKKKHHHUUUU
|
||||
WWWWWWWWWWWCCCCQQQCCCCCCCCCIGIIGGGGGGWGGGGVRRRRRRRRXXXXXKKKKKKKBPBBPPPPPPSSSSSSSSMVVVVVVVVVVFFFFFFFFFHHHUUBBBBBBBRRRMMSMMMKKKKKKKKKKKUHUUUUU
|
||||
WWWWWWWWWWWWCCCCCCCCCCCCCCIIIIGGGGGGGWGGGVVRRRRRRRXXXXXXKKKKKBBBPPBPPRPPPPPSSSSSSVVVVVVVVVVVAFFFFFFFFFHHHHIBBBBBRRRRMMMMMMSKKKKKKKKVVUUUUUUU
|
||||
WWBBWWAWWUUUCCCCCCIQQCCCCIIIIRRRRRRRWWWGGVRRXXXXXXXXXXXXKKKKBBBBPPPPPPPPPPPPSSSVVVVVVVVVVVVVAFFFFFFFFFHHHBBBBBHHHRRRMMMMMMMKKKKKKKKVUUUUUUUU
|
||||
WWWAAAAWUUCCCCCCCIIICCCCCIIIIRRRRRRRWWGGVVVVXXXXXXXXXXXOBKBBBBBPPPPPPPPPPPPPPPPPLVVVVVVYVVVEFFFFFFHHHFFHHHHHBBBBHHHMMMMMMMMMKKKKKUUUUUUUUUUU
|
||||
WWWAAAAUUUUCCCCCCIIIIIIIIIIIURRRRRRRRRGGXXXXXXXXXXXXXXXRBBBBBBBBPQPPPPPPPPPUPPXEEVEVVVVVVVEFFFFFFFHHFFHHHHHHHHBHHMMMMMMMMMMMKKKKKKKKUUUUUUUU
|
||||
WWWAAAAUAUUCCCCCCLLIIIIIIIIUURRRRRRRRRGGXXXXXXXXXXXXXXXRRBBBBBBBPPPPPPPPPPPUPVEEEEEVVVVEVEEEEEFFFFHHHHHHHHHHHHHHHHMMMMMMMMMKKKKKKKKUUUUUUUUU
|
||||
WWAAAAAAAAUEEEOOOLIIIHIIIIIIURRRRRRRRRXXXXXXXXXXXRXXXXXXRBBBBBBBBPPPPBPPPBEBBBEEEEEVVVEEEEEEEEEEFHHHQHHHHHHHHHHHHHMMMMMMMMMMMKKKKKUUUUUUUUUU
|
||||
OOAAAAAAAAUOOOOOOLLLLIIIIIIIURRRRRRRRRXXLLLLXXXXXRXXXXXXRRMBBBBPBPPPPBBTPBBBBEEEEEEEEVEEEEEEEEEEFQQQQHHHHHHHHHMMMMMMMMMMMMMMMMMKKKKUUUUUUUUU
|
||||
OACCAAAAAGAOOOOOOELLLLIYIIRRRRRRRRRRRRXLLLLLXXXXXRRRRXXXRRRBBBBJKKPPPBBBBBBBBBEEEEEEEVEEEEEEEEEEEQQQQQHHHHHHHHHMMMMMMMMMMMMMMMMKKKUUUUUUUUUU
|
||||
AAAAAAAAAAAOOOOOEEELLLIYYVRRRRRRUUUUXXXLLLLLXXXXXRRRRXXXRMRBBBBJKJUBBBBBBBBBBBCEEEECEEEEEEEEEEEEQQQQQQHHHHHHHHHMMMMMMMMMMMMMMMWDDDWUUUUUUUUU
|
||||
AAAAAAAAAAAOOOOOUULLLYYYRRRRRRRRUUUUXXXXLLLLXXXXXXXXXXXXXMMCCBLJJJUBBBBBBBBBBQCCCCCCEEEEEEEEEEEEEFQQQHHHHHHHHMMMMMMMMMMMMMMMMWWWWWWWUUUUUUUU
|
||||
AAAAAAAAAAROOOOORRRRRRRRRRRYYDUUUUXXXXXXXLLLXXXXXXXXXXXXXCCCCCJJJJUUUUUBBBBCCCCCCCCCCEEEEEEEEEEEEEQQQEEHHHHHHHMMMMMMMMMDDDDDMWWWWWWUUUUUUUUU
|
||||
ZZAAAAAXAAROOOOORRRRRRRRRRRDDDUOUUAAXXXXWWLLLLRRXXXXXXXXXCCCCJJJJJJJJJJBBBLLLLLCCCCCEEEEEEEEEEEEEEEEEEEHEEEHHHMMMMMMMDDDDDDWWWWWWWWWWUWUUUUU
|
||||
ZZZAAAAOOOOOOOOORRRRRRRRRRRYDUUOUUUAXXXXXAAAALRRXXXXXXXXXCCCCCCCJJJJJLLLLLLLLLCCCCCCEEEEEEEESEEEEEEEEEEEEEHHHMMHMMMMDDDDDDDWWWWWWWWWWWWWWUUU
|
||||
ZZZAAAUOOOOOOOOORRRRQYYYYYYYYOUOUUAAAAAAAAAAALRRXXXXXXXXXCCCCCCJJJJJJLLLLLLLLLCCCCCCCCEEWWEEEEEEEEEEEEEEEEEHHHHHMHHHQQQQQQQQWQWWWWWWWWWWWWUU
|
||||
ZZAAXAUOOOOOOOOORRRREYYYYYOOOOOOOOAAAAAAAAAAAARAAAAAZXXXCCCCCCCJJJJJJJLLLLLLLLCCCCCCCCEEWWWEEEEIEEEEEEQQHHHHHHHHHHHQQQQQQQQQQQWWWWWWWWWWWWUU
|
||||
ZZAAXAUOOOOOOOOORRRROOYYREOOOOIOOOAAAAAAAAAAAARAAAAAZZZYYCCCCCCJCJJJJLLLLLLLLLCCCCCCCCCWWWEEEEIIEEEEEEEQQHHQHHHHHHQQQQQQQQQQQQWWWWWWWWWWWWUU
|
||||
ZZAAUUUOOOOOOOUUEEEEEEEEREOOOOIOOOAAAAAAAAAAAAAAAAAAZZZYYYYCCCCCCCCLLLLLLLLLLLLLCCCCPCWWWWEEEEIIIIEEEEEQQQQQHHAQQQQQQQQQQQQQQQWWWWWWWWWWWUUU
|
||||
PPPPPYUOOOOOOOEEEEEEEZEEEEOOOIIIIOAAAAAAAAAAAAAAAAAYYYYYYYYCCCCCCCCLLLLLLLLLLLLLCCCPPCWWWWWEEEIIIIEEEEQQQQQQQJJJJQQQQQQQQQQQQQQQQWWWWWWWUUUU
|
||||
PPPZYYYOOOOOOOOOOOEEEEEEEEIIIIIIIIAAAAAAQQAQAAAAAYAYYYYYYYYCCCCCCCLLLLLLLLJJLFLFFCTFFWWWWBBEEIIIIIKQQEQQQQQQJJJJJQQQQQQQQQQQQQQQQQWWWWWWUUUU
|
||||
PPPZYYYYYYYYYOOOOOEEEEEEEIIJIIIIIIACAAQQQQQQQAAYYYYYYYUYYYYCCCCCCCCLLLLLLLFFJFMFCCFFFSBBBBBBIIIIIIIQQQQQQQQQQQJJJJQQQQQQQQQQQQQQQQQWWKWWWUUU
|
||||
PPPYYCYYYYYYYOOOOOOEEEEEEIIIIIICCCCCCCCCCQQQQQYYYYYYYYYYYYYCYCCCCCCCLOOOLLFFFFFFFCFFFSSBBBBBIIBIIIBBQQQQQQQQQQQJJJQQQQQQQQQQQQQQQQQWLWWWWUUU
|
||||
PPYYYYYYYYYYYOOOOOOEEEEEEEIIIIICCCCCCCCCCQQQQQQQQYYYYYYYYYYYYCCCCCCOOOOOLHHFFFFFFFFFFFSSBBBBBBBIBBBQQQQQQQQQQQQQJJJQNQQQQQQQQQQQQQHHHHWWWWUU
|
||||
PYYYYYYYYYYYYOOOOOOEEEEEEEIICCCCCCCCCCCCCQQQQQQQQYYYYYYYYYYCCCICKITOOOOOHHHFFFFFFFFFFFFFBBBBBBBBBQQQQQQQQQQQQQJQJJJOQQQQOQQQQQQQQQQHHHHWWWHH
|
||||
PYYYYYYYYYYYYOOOOOOEEEEEIIIICCCCCCCCCCCCCQQQQQQQQYYYYYYYYZYSCCIIKIIOOOOOHHFFFFFFFFFFFFFFFFBBBBBBBBQQQQQQQQQQQQJJJJOOOQQQOQQQQQQQQQHHHHHHWWHH
|
||||
PYYYYYYYYYYYYOOOOOOEEIIIIIIICCCCCCCCCCCCCQQQQQQYYYYYYYYYYYYIIIIIIIIOOOOOHHFFFFFFFFFFFFFFFBBBBBBBBBQCQQQQQQQQXXXJJKKOOQQQQQQQQQQQQQHHHHHHHHHH
|
||||
PPPPYYYYYYYYYOOOOOOIEIIIIZZZCCCCCCCCCCCCCQQQQQQQPYYYYYYYYBYBIIIIIIIOOOOOIHHFFFFFFFFFFFFFFBBBBBBBBBBQQQQQQQQQXXXKKKKKKKKKKKQQQQQHHHHHHHHHHHHH
|
||||
PPPYYYYYYYYYYOOOOOOIIIIIIZZZCCCCCCCCCCCCCQQQQQQPPPYYYYYYYBBBIIIIIIIOOOJJIIFFFFFFFFFFFRFFFBBBBBBBBBBBQQQQQQQQXXXKKKKKKKKKKKQQQQQHHHHHHHHHHHHH
|
||||
PPPPPYYYYYYYYOOOOOOIIIIIIZZZCCCCCCCCCCCCCMQQQQQQQYYYYYYYYYYBBIIIIIIOOOOOOFFFFFFFFFFRRRFBBBBBBBBBBBBBBBQQQQQQQXKKKKKKKKKKKKQQQKQKHHHHHHHHHHHH
|
||||
PPPPPYYYYYYYYIIIIIIIIIIIIIZZCCCCCCCCCCCCCCCCCCCCCGGYYYYYBBBBIIIIEEIIOOOOODFFFFFFVBBRRRRBBBBBBBBBBBBBWBQQQQQQQQIIIKKKIKKKKKKKKKKKDDDDDDHHHHHH
|
||||
PPPPYYYYYYYYYIIIICIIIIIIIIIZCCCCCCCCCCCCCCCCCCCCCGGYYBBBBBBIIIEEEEEEOOOOOFFFFFFBBBBBRRBBBBBBBBBBBBBBWWWWQQQQPQIIIIIIIKKKKKKKKKKKKKDDDDHHHHHH
|
||||
PPPYYYYYYYYYYICIICCIIIIIIIZCCCCCCCCZZZCCCCCCCCCCCYYYYBBBBBBBIIEEEEEEOOOOOEEFFFFCBBBBRRBBBBBBBBBWWWWWWWWWQWWIIIIIIIIIPIKKKKKKKKKKKKDDDDDHHHHH
|
||||
PPPPYYYYYYYZYZCCCCIIIIIIIIZZCCCCCCCZZZCCCCCCCAQQAGLYBBBBBBBBBBEEEEEEOOOOOEEEFFWBBBBBBBBBBBBBBBBBWWWWWWWWWWIIIIIIIIIIIIIKKKKKKKKKKDDDDDDDDHHH
|
||||
PPPPYYJJYZZZZZCCCCIIIIIIIIIFZZZZZZZZZZCCCCCCCAAAAGGGGGGBBBBBBBEEEEEEOOOOOEEEEFWWBBBBBKKBKKBBBBBWWWWWWWWWWWWIIIIIIIIIIIKKKKKKKKKKKDDDDDDHHHHH
|
||||
PPZPPYJJYZZZZZZCCCCIIIIIFIIFFBFFZZZZAACCCCCCCAGAGGGGGGGGGBBBBEEEEEEEOOOOOEEEEWWHZZZBBWKKKKKBBWWWWWWWWWWAWWWWIIIIIFIIIIKKKKKKKPKKKDDDDNDHHHHH
|
||||
ZPPPPPZZZZZZZZZCCCCCCUIIFIIFFFFOOZZZAAACCCCCAAGGGGGGGGGGBBBBBEEEEEEEOOOOOEEEXHHHZWWWWWKWWKKWWWWWWWWWWWAAAWWWIIIIIFFIKKKFFFKPKPKKKKDDDDHHHHHH
|
||||
ZZZPZZZZZZZZZZZCIIRCUUUIFFFFFFFOFBZAAAACCCCCAAGGGGGGGGGGGGBEEEBEEEEEDEDDEEEEXHHHHHHWWWWWKKKKWWWWWWWWWWAAARRWIIIIFFFIFKFFFFPPPPKKKKKPHHHHHHHH
|
||||
ZZZZZZZZZZZZZZZIIIIIUUUFFFFFFFFFFZZZNANCCCCCAGGGGGGGGGGGGGBBBBBEEDDDDDDDDEEEEEHHHHHWWWWWWKWWWGWWWWWWWWAAARRRIIIIFFFFFFFFFFFPPPKPKKKPPPHHHHHH
|
||||
ZZZZZFZZZZZSSZZRIIIIUUUFFFFFFFFFFFFFNNNCCCCCGGGGGGGGGGGGGBBBBBBBDDDDDDDDDDEEEEHHHHWWWWWWWWWWWWWWWWWWAAAAARRRIIIIIFFGFFFFFFFFPPPPKPPPPPPHHHHH
|
||||
FFFFFFZZZZZZSSSIIIIIUUUUUUUFFFFFFFWNNNNNNANGGGGGGGGGGGGGBBBBBBBBDDDDDDDDDDDDEHHHHHWWWWWWWWWWWWWWWWWWAAARRRRRIRIIFFFFFFFFFFFWPPPPPPPPPPPHHHHH
|
||||
GFFFFFLZZZXZSSSSSSSIUUUUUUUFFFFFFFFFNNNNNNNNNGGGGGGGGGBBBBBBBDBDDDDDDDDDDDDDHHHHHHWWWWWWWWWWWWJJJWAAAARRRRRRRRRIFFFFFFFFFFFWWPPPPPPPPPPPHHHH
|
||||
GFFFFFFFFZFQFSSSSSSUUUUUUUUUFFFFFLFYNNNNNNNNGGGGGGGGGGBBBBBBBDBDDDDDDDDDDDDDHHHHHHHWWWWWWWWWWWWWJAAAARRRRRRRRRRQFFFFFFFFFFFFWPPWWPPPPPPPHHHH
|
||||
GGFFFFFFFFFFFSSSSSSUUUUUUUUUUFFFZNNNNNNNNNNNUUUGGGGGHIIBBBBBDDDDDDDDDDDDDDDDHHHHHHHWWWWWWWWWWWWUAAAAAAIRRRRRRRQQFFQRFFFFFFFFWWWWWPPPPPPUIISS
|
||||
FFFFFFFFFFFFIFSSIIIIUUUUUUUUFFFFINNNNNNNNNNNNNUGGGGIIIIIIIIIDDDDDDDDDDDDDDDHHHHHHHHWWWWWWWWWWWWWCACCCQQQRRRQQQQQQFFRCFFRRFFWWWWWWPPPPPPUUIIS
|
||||
QQQFFFFFFFFFIFIIIIIIUIUUUUUUUIIIIIINNNNNNNNBNNUUGGGIIIIIIIIIDDDDDDDDDDDDDOEHEHHHHHHWWWWWWWWWWSWCCAACQQQQQQQQQQQQQQQRRRRRRRRWWWWWWPPPPPPPPIIS
|
||||
QQQQFQFFFFFFFFPIIIIIIIUUUUIIIIIIIIINNNNNNNNNNUUUUUIIIIIIIIIIAADDLDDDDDDDDOEEEHHHHHWWWWWWWWWWHHCCCCCCQQQQQQQQQQTTQQRRRRRRRRRWWWWPPPPPPPPPIIIS
|
||||
KQQQQQFFFFFFFFFIIIIIIIUUUUIIIIIIIIINNNNNNNNNNUUUUUUIIIIIIIIIADDDLDDDDXXEEEEEEHHHHHHHWWRQQQHHHHCCCCCQQQQQQQQQQTTTTTRRRRRRRRRRPPPPWPPPPPPIIIII
|
||||
KKKQSSSSFFFFFFFIIIIIIIUIIIIIIIIVIIIVVVNNNNNNNNUNUUUIIIIIIIIDDDDDLDXDDXXEEEEEEEHHHHHHWRRQQQHHHHCCCCCQQQQQQQQQQTTTTRRRRRRRRRSSSPPPPPPPPIIIIIII
|
||||
SKVSSKSSALLLNLLRIIIIIIIIIIIIIIIVVVVVNNNNNNNNNNNNUUUIIIIIWWDDDDDDDDXXXXXEEEEEEEEHHHHHHRRQQQHHHHHHHCCCQQQQQQQQQTTTTRYRRRRRRRSSSSSSPPPPPIIIIIII
|
||||
SSSSSSSSLLLLLLLRIIIIIIIIIIIIIIIVVVVVVVNVNNNNNNNUUUUIIIIIDDDDDDDDDDDXDXXEEEEEEEESAHHHHRRQQQQQHHHHHHHHHHHQQQQQQTTTTYYYRRRRRRSSSLLLPPPIIIIIIIIW
|
||||
SSSSSSSSLLLLLLLLIIIIIIIIIIIIIVVVVVVVVVVVNNNNNNNNNUUIIILDDDDDDDDDDDDDDDDEEEEEESSSSQQIFFFFFFFFUHZHHHHHNNHQQTQTTTTTTYYYYRRVLLLLLLLLBIIIIIIIIIIW
|
||||
WWWSSSSSLLLLLLLLINNIIIIIIIIIVYVVVVVVVVVVNNNNNNNNUUUUUUUBBDVDDGDDDDDEEEDEEEEESSSSSQQQFFFFFFFFQZZZZHHHHNNNTTTTTTTTYYYYYRRLLLLLLLLLBBIIIIIIIIIW
|
||||
WWSSSSSSSSLLLLLNISNIIIIIIIIIVVVVVVVVVVVVVNNANNNNNUUUUUULLMLDDGGDDDDEEEEEESSSSSSSQQQQFFFFFFFFQQZZHHHNNNNTTTTTTTTHHYSYYYYLLLLLLLLLBIIIIIIIIIII
|
||||
WWWSSSSSSSSSSSNNNNNNIIIIIVVVVVVVVVVVVVVVAAAANNNNNUUUUUUULLLDDDLLDDDDEEEEESSSSSSSSSQQFFFFFFFFFFFZZZHNNNNTTTTTTTTHYYYYYYYLLLLLLLLLBIIIIIIIIIIX
|
||||
WWWSSSSSSSSSSSNNNNNIIIIIIVVVVVVVVVVVVVVVAAANNNNTTTUUUUULLLLLLLLNDDDDMEESSSSSSSSSSQQQFFFFFFFFFFFZJJJJNNNNNTTTTFFFFYYYYYYLLLLLLLLLLLBIXIIIIIXX
|
||||
WZWZSSSSSSSSSSNNNNNNIIIIIVIVVVVVVVVVVVVVAAAAANNTUUUULLLLLLLLLLLLQDLDEEESSSSSSSSSSQQQFFFFFFFFFFFJJJJNNNFFNTTTTFFFFKKYYYYRLLLLLLLLTTTIIHHIIMMX
|
||||
ZZZZSSSSSSSSNNNNNNNNIIIIIIIIVVVVVVVVVVVVAAAAETTTQUUUULLLLLLLLLLLLWLLEEESSSSSSSSSSQQQFFFFFFFFFFFJJJJJJJFFFFFFFFFFKKKYYYRRRLLLLLTTTTTHHHHIMMMM
|
||||
ZZZZSSSSSCCCNNNNNNNNNIIIIIIIVIVVVVVVVVAAAAAEETTTQQUUULLLLLLLLLLLLLLLEESSSSSSSSSSSQSQFFFFFFFFFFFFFFFJJWFFFFFFFFFFKKKKYRRRRRLLLLTSTTTTHHHHMMMM
|
||||
ZZZZSSSCCCCCYNNNNNNNNIIIIIIIIIVVVVVVAAAAAEEEETTQQQUUULLLLLLLLLLLLLLLEEQSSSSSSSSSSSSQFFFFFFFFFFFFFFFJJFFFFFFFFFFKKKKKKRRRRRLLLLTTTUTTTHMMMMMM
|
||||
ZZKKCCCCCCCCCCNNNNNNIIIIIIIIIIIIRVVVVAAAAAEEEEEEEQUQLLQLLLLSSSSLLQQLQQQSSSSSSSSSSSSCFFFFFFFFFFFFFFFTJTFFFFFFFFPFKKKKKKRRRLLLLLLLTUTTTHHMMMMM
|
||||
KKKKCCCCCCCCCCNNNNNNIIIIIIIIIIIIIIAAAAAEEEEEEEEEEQQQQQQLLLLLESSSSQQLQQQSSSSSSSSSSSSSFFFFFFFFFFFFFFFTTTTFFFFFFFFFFKKKRRRRRRLLLLLLTTTTTTHHMMMM
|
||||
UKKKCCCCCCCCCNNRYYIIIIIIIIIIIIIIIIAAAAAEOEEEEEEEEEQQQLLLLLLLESSSQQQQQQQQSSSVSSSSSSSJFFFFFFFFFFFFFFFTTFFFFFFFFFFFKKKKKRRRRRLLLLLLLLTTTTHHMMMM
|
||||
UKKCCCCCCCCCCCNCYYIIIIIIIIIIIIIIIIAABAAAEEEEEEEEEQQQQQLLLLLLEEQQQQQQQQQQSSVVSSSSSSSSFFFFFFFFFFFFNNNNTNNFFFFFFZKKKKKKKRRRRLLLLLLLLLTTTTHHMMMM
|
||||
UKKCCCCCCCCCCCCCYYIIIIYYYYYIIIIIAAABBBBEEEEEEEEEQQQQSSLLLESSEQKQQQQQQQQQSVVVVSSSSPPSFFFFFFFFFFFFNNNNANNNFFFFFFKKKKKKKIIRILBULLLLLLTTMMMMMMMM
|
||||
UKKKCCCCCCCCCCYYYYYIIIYHYYYYYYIAAAABBBBBEEEEEEQQQQQQSSSSSSSSEQQQQQQQQQQQQQVVQPPPPPSSSYFFFFFFFFFFNNNNNNNNNNFFFFKKKKKKKIIIIIUUUULUTTTTTTMMMMMM
|
||||
UUKKKCCCCCCCCYYYYYYIYIIHHHYAAAIAAAABBBBBBEEEEEEESSSSSSSSLLSSQQQQQQQQQQQQQQQQQPPPPPSYYYYJFFFFFFFFNNNNNNNGNMMMFFKKKKKKIIIIIIUUUUUUUTTTTMMMMMMM
|
||||
UKKCCCCPCCCSSYYYYYYYYYYHHFAACAAAAAAABBBBBEEEDDSSSSSSSSSSLSSSHVQQQQQQQQQQQQQQQQQPPPYYYYEEEEEJJJJNENENNNNNNMMMMFKKKKKKIIIIUUUUUUUUUTUTMMMMGMMM
|
||||
UKKKKKCCCCCYYYYYYYYYYYYHHHAAAAAAABBBBBBBBEEBSSSSSSSSSSSSSSSHHVQQQQQQQQQQQQQQQQQPPPYYYYYEEEEEEEEEENENNNNNNMMMMMKKKKKKIEEIIUUUUUUUUUUUDMMMGMMZ
|
||||
UKKKKKKKCCCAAAYYYYYYYYYHHHTAAAAAAAABBBBBBBBBBBBSSSSSSSSSSSSVVVQQQQQQQQQQQQQQQXXPPYYYYYYHEEEEEMEEEEEENNNNNMMMMKKKKKIIIEEEEUUUUUUUUUUUMMMMMMMZ
|
||||
KKKKKKKKTTCCCYYYYYYYYYHHHAAAAAAAAAJJBBBBBBBBBBBBSSSSSSSSSSSSVVQQQQQQQQQQQMQDQXXPYYYYYYEEEEEEEEEEEEEENNNNMMMMMMMMKKEIEEEEEEEPUUUUUMMMMMMMMZZZ
|
||||
KKKKKKKTTTMMKBYYYYYYYYHHHHHAAAAAAAJJBBBBBBBBBBSSSSSSSSSSSSSVVVVVQQQWQQQQMMXDQXXPYYYYYYYYEEEEEEEEEEEENNMMMMMMMMMKKKEEEEEEEEEEUUZUIMMMMMMMMZZZ
|
||||
KKKKKKTTTTTMKKYYYYHHHHHHHHHUAAAAAAJJBBBBBWWBBSSSSSSSSSSSSSVVVVVVQTQWQMMMMMXXQXXXXYYYYYEEEEEEEEEEEEEENNNNMMMMMMMKRKEEEEEEEEEEUZZZMMMMZMMMZZZZ
|
||||
KKTTTTTTTTTTKKYYKKKKKHBHHHHZLAAAAAAJJBBBNWWWRWWSSSSSSSSVVVVVVVVVVVVVQMMMMXXXXXXXPXXYYYYYEEEEEEEEEEENNNNNMWMMMMSSRRREEEEEEEEZZZZZZMMMZMMMMZZZ
|
||||
KKTTTTTTTTTTKKKKKTKKKHBHHNZZLLLAAAJJJJBJWWIWWWWWSSSSSSSVVVVVVVVVVVVMMMMMMXXXXXXXXXXXYYYYEEEEEEEEEEEEEWWWMWWMMMSSRSSSEEEEEEEEZZZZZZMZZZMZZZZZ
|
||||
TTTTTTTTTTTTJTTTTTTKKKKHHHZZZZLAAAAAAJJJJWWWWMMMMSSSSSVVVVVVVVVVVVVMMMMXXXXXXXXXXXXXYYYYYYEEEEEEEOWWNWWWWWWWWMSSSSSQESEEEEEEZZZZZZZZZZZZZZII
|
||||
TTTTTTTTTTTTTTTTTTTKKKKKHHZZZAAAAAAJJJJJWWWWWMMMMSSSSSSVVVVVVVVVVVVVMMMMXXXXXXXXXXXXYYYYYIIIIEIHEOWWWWWWWWWMMMSSSSSSSSSEEEEEYYZZZZZZZZZZZIII
|
||||
TTTTTTTTTTTTLTTTTTTKKKKKKKKKAAAAAAAAAJJJJJWWWMMMMSSSSSSSVVVVVVVVVVVVVMMXXXXXXXXXXXXXXYYYIIIIIIIWWWWWWWWWWWWMMMSSSSSSSSSEEEDEYYYYZZZIIIIIZIII
|
||||
TTTTTTTTTTTTTTTTTTTKKKKKKKKAAAAAAAAAJJJJWWWWWMMMMSSSVSSVVVVVVVNVVNNNVMMXXXXXXXXXCXYXXYYIIIIIIIIIWWWWWWWWWWWWMMMSSSSSSSSEEYDYYZZZZZIIIIIIIIII
|
||||
TTTTTTTTTTTTTTTTTTTTTKKKKKKAAAAAAAAAWWWWWWWWWMMMMCVVVVVVVVVVVNNNNNNNXNNXXXXXXXXXYYYYYYYIIIIIIIIIGWWWWWWWWWWWMMSSSSSSSSSYYYYYYKKZZIIIIIIIIIII
|
||||
TTTTTTTTTTTTTTTTTTTTTKKKKKKKKAAAAAAAWWWWWWWWWMMMMCVVVTVVVVVVVNNNNNNNNNNKKXXXXXXXYYYYYYIIIIIIIIIIWWWWWWWWWWWWSSSSSSSSSSSZZYYYYYYZJIIIIIIIIIII
|
||||
TTTTTTTTJTTTTTTTTTTTTTYKKKKKKAAAAAAAWWWWWWWWWMMMMWVVVTVVVNVVNNNNNNNNNNNNKXXXXXYYYYYYYYYYIIIIIIIIWWWWWWWWWWWWSSBSSSSSSZSZZZYZYYZZIIIIIIIIIIII
|
||||
ZTZTTTTTTTTYYTTTTTTTAAYKKKKKKAAAAAAWWWWWWWWWWMMMMMMMMMMMMMVVNNNNNNNNNNKKKXXXKKYYYYYYYYYIIIIIIIIIIIWWWWWWWWWWSASSSSQSZZZZZZYZYZZZZIIIIIIIIIII
|
||||
ZTZTTTAYYYYYYTTTTTTTTYYYYTTAAAAAAAAWWWWWWWWWWMMMMMMMMMMMMMNNNNNNNNNNNNNKKKKKKKKYYYYYYYYKIIIIIIIIIIWWWWWWWWNWAASSSSSSZZZZZZYZZZZZZIIIIDIIIIII
|
||||
ZZZZTHAAAYYAYYTTTTTTTTYYYYYUUAAAAAAUWWWWWWWWWMMMMMMMMMMMMMNNNNNNNNNNNNNKKKKKKKKYYYYYYYKKKIIIIIIIIIWWWWWGNNNNNNSQSSZZZZZZZZZZZZZZZZIIDDIIIIII
|
||||
ZZZZZZAAAAYAYYYYTTTTTTYYUUUUUUAUUUUUWWWWWWWWWMMMMMMMMMMMMMNNCNNNNNNNNKKKKKIIIKIIIYYYYYYYKIIIIIIIIWWWWWWWNNNNNNPPSSPPZZZZZZZZZZZZZZZDDDIIIIII
|
||||
ZZZZZAAAAAAAAAYTTTTTYYYYYUUUUUAUUUDUWWWWWDWWWMMMMMMMMMMMMMNNNNNNNNNNNKKKKIIIIIIIIIRYYYYKKIIIIIIIINWUWIWNNNNNNNNPPPPPZZZZZZZZZZZZZZDDDDDIIIII
|
||||
ZZZZZAAAAAAAAAAANTTTTYYYYYUUUUUUUDNNNNDDDDWWDMMMMMMMMMMMMMTTNNNNNNNNNKKKKIIIIIIIIIIIYYKKKKIIIIIINNNNIIIINNNNNNPPPPPPPPZZZZZZZZZZZZDDDDDDIIII
|
||||
ZZZZZAAAAAAAAAAAAJJTTYYYYUUUUUUUAAAAAAAAADDDDMMMMMMMMMMMMMTTNXXXNNNNRKKKKKIIIIIIIIIIJYYKKKKIIIINNNNNXXXIINNJJNPPPPPPPZZZZZZZZZZZZDDDDDDDDIII
|
||||
ZZZZZAAAAAAAAAAAAYYYYYYYYUYYUUUUAAAAAAAAAAADDMMMMMTTTTTTTTTMMXXXXNNNRRKKRROIIIIIIIBBYYYKGKIIIINNNNNNXXXXNNJJJNPPPPPPPZZZZZZZZZZZDDDDDDDDDDII
|
||||
ZZZZZAAAAAAAAAAAAAYYYYYYYYYYUUULAAAAAAAAAAADRMMMMMMTTXXTXTTTPPXVVNNNRRRKRIIIIIIIIIBGGGGGGKIIIBNNNNNXXXXXXNNJXNPPPPPPPPPPPPSSZSSZSDDDDDDDDDII
|
||||
ZZZZZAAAAAAAAAAAAAAAYYYYYYYLLLLLUDNNNNNAAAADURRRRMMTTTXXXTMTBPPPPPRRRRRRRRIIIIIIIIBGGGGGKKKIIBBNNNXXXXXXXXXXXPPPPPPPPPPPSYSSSSSSSUDSDSDDIIII
|
||||
ZZZZAAAAAAAAAAAAAAAAYYYYYYYYLLLLLDNNNNNAAAADURRRRRMTTXXXTTTPPPPPPPVRRRRRRRRLIIIIIIIGGGGGKKNYIBBNNNNEXXXXXXXXXPPPPPPPPPPSSSSSSSSSSUDSSSIIIIII
|
||||
ZZZZZAAAAAAAAAAAAAAXYYYYYYYYYLNNNNNNNNNAAAARRRRRRRRRXXXXXTTPPPPPPRRRRRRRRRRLLIIIIIIGGGGKKNNYNNNLNNNXXXXXXXXXXPPPPPPPPPPPPSSSSSSZZZZZIIIIIIII
|
||||
ZZZZZAAAAAAAAAABBBAXYYYYYYYYLLNNNNNNNNNAAAAAAARRRRRRRXXXXPPPPPPPPRRRRRRRRRRLLIIIINIGGGSKSXNNNNNNNKKXXXXXXXXXXPPPPPPPPPPPKSSSSSSZZZZZZIIIIIII
|
||||
ZZZZZZZZEAAAABBBBYYYYYYYYYYLLLNNNNNNNNNAAAAAAARRRRRXXXXXXXPPPPPPPRRRRRLMRRLLLLLIINNGGSSSSSNNNNNNKKKXXXXXXXXXXPPPPPPPPPPSKSSSSSSZZZHHHLIIZIIU
|
||||
ZZZZZZZZEEEEAABBYYYYYYYYYLLLLLNNNNNNNNNAAAAAAARRRRRXXXXXXXXPPPPPPRRRRRLLLLLLLLLLLLLLLLSSSANNNNNNNKKXXXXXXXXXPPPPPPPPPPPSSSSSSSSZZHHHHHHIHHIH
|
||||
ZZZZZZZEEEEEEBBBYYYYYYYYYLLYRLNNNNNNNNJAAAAAAARRXXRXXXXXXXXXPPPPPRRRRRRRLLLLLLLLLLLLOSSSSANNNNKKKKKKKKXXXXXPPPQQPPPPPIISSSISSSSSZHHHHHHHHHHH
|
||||
ZZZZZZEEEEEEGGBBYYYYYYYYYYYYRRNNNNNNAAAAAAAAAAXXXXXXXXXXXXXXXXPPPPRRRRRRRLLLLLLLLLLLLRRNNNNNNNNKKKKKKXXXXKKPPPQQQPPPPIIIIWISSBSSSSSHHHHHHHHH
|
||||
ZZZZZZEEEEEEGYYYYYYYYYYYYYYYRRNNNNNNAAAAAAAJRXXXXXXXXXXXXXXXXXPPPRRRRRLRRLLLLLLLLLLLLLLKNNNNNNNNKKKKKKKKXKPPPQQQQQQQPIIIIIIIIBSSSHHHHHHHHHHH
|
||||
ZZZEEEIEEEGGGGGYYYYYYYYYYYYYRYYRRJJJAAAAAAAWXXXXXXXXXXXXXXXXXXXPPRRRRRLLRLLLLLLLLLLLLLKKNNNNNNNNKKKKKKKKKKKQQLQQQQQQPIIIIIIIIBBBSHHHHHHHHHHH
|
||||
ZZZZZEEEEEGGGGGYYYYYYYKKKKYYYYYRRRJJAAAAAAAAAAXXXXXXXXXXXXXXXXJPRRRRROOLLLLLLLLLLLLLKKKKKNNSNNKKKKKKKKKKKEEQQQQQQQQQQIIIIIIIIIIIIHHHHHHHHHHH
|
||||
ZZZZZEEEEEZZGGGGYGYYYYKKKKKKKKRRRRJJAAAAAAAAAAQNNXXXXXXXXXXXBXJPBRRROOOOOQQQQLLLLLLKKKKKKNNNNNKKKKKKKEEEKEEEQQQQQQQQQIIIIIIIIIIIIIIHHHHHHHHH
|
||||
ZZZZZZZEZZZZZZGGGGGGGYKKKKKKKRRRRJJJJJJJAAAAAAQNNXXXXXXXXXXXBBBBBBBOOOOOOOOQLLLLLLQKKKKKKKKKKKKKKKKKKKEEEEEEQEQQQQQIIIIIIIIIIIIIIIHHHHHHHHHH
|
||||
ZNZZZZZZZZZZZZZGGGGGGKKNKKKKKKRRRRJNNNNNAAAAAANNNNXXXXXXXBXBBBBBBBAOOOOOOOOQLLLLLQQQKKKKKKKKBKKKKBKKKEEEEEEEEEEQQQQIIIIIIIIIIIIIIIHHHHHHHHHH
|
||||
NNZZZZZZZZZZZZZZGGGGKKKKKKKKKKKKNNNNNNNNAAAAAANNNNSSSSSBXBBBBBBBBBOOOOOOOQQQQQLLQQQQQKKBKKKBBBBBBBBKEEEEEEEEEEEQQQQIIIIIIIIIIIIIDIHHHHHHHHHH
|
||||
NNNNZZZZZZZZZZZZGGGGKKKKKKKKKKKNNNNNNNNNNNNNNNNNNNSSSSBBBBBBBBBBBBOOOOOOOQQQQQQQQQQQQKKBKKKBBBBBBBBBMEEEEEEEEEEQQQQIIIIIIIIIIIIIDHHHHHHHHHHQ
|
||||
NNNNZZZZZZZZZGGGGGGGKKKKKKKKKKKNNNNNNNNNNNNNNNNNNNSSSSBBBBBBBBBBBBIOOOOOOOQQQQQQQQQQKKKBBBBBBBBBBLBEEEEEEEEEEEEQQQQIIIIIIIIIIIIIDHHHHHHHHHHH
|
||||
NNNNNNNNZZZZZGGGGGKKKKKKKKKKKKKNNNNNNNNNNNNNNNNNNXSSSSBBBBBBBBBBBBIOOOOOOOOOQQQQQQQQQBBBBBBBBBBBBEEEEEEEEEEDEQQQPQQFSSIIIIIIISIIDDHHHHEHHHDD
|
||||
NNNNNNNNNZZZGGGGGGGKGKQKKKKKKKXNNNNNNNNNNNNNNNRNSXSSSBBBBBBBBBBBBBIIIIIOOOLQQQQQQQQQOBBBBBBBBBBBBEEEEEEEEEEDEFQQPQFFSSIIIIIISSSSDDDHHEHHHHDD
|
||||
NNNNNNNNNZNNGGGGGGGGGKKKKKKKKXXNNNNNNNNNNNNNNNSSSXXSSSBBSBBBBBBBBBBBBIIOOOQQQQQQQQQQQBBBBBBBBBBBBBEEEEEEDDDDFFQQQFFFSSSSSSSIISSSSSDDDHHHDHDD
|
||||
QNNNNNNNNNNGGGGGGGGGGKGGKKKKKKXXNNNNNNNNNNNNSSSSSXSZSSZBBBBBBBBBBBBBBIIIOIQQQQQQQQQQKBBBBBBBBBBBBBBDDEEDDDDDFQQFFFSSSSSSSSSSSSSSSSDDDDDDDDDD
|
||||
NNNNNNNNNNNNNGGGGGGGGGGGKKIKKXXXXNNNNNNNSNSSSSSSSSSZSZZZZZBBBBBBBBBBBBIIOIIIQQQQQQABBBBBBBBBBBBBBBBBDDEEDDDFFFFFFFSFSSSSSSSSSSSSSDDDDDDDDDDD
|
||||
NNNNNNNNNPNGGGGGGGGGGGGGGKKXXXXXXNNNNSSSSSSSSSSSSSSZZZZZZZBBBBBBBBBBBIIIIIQQQQQQQQQBBBBBBBBBBBBBBBDDDDDDDDDFFFFFFFFFSSSSSSSSSSSSDDDDDDDDDDDD
|
||||
1279
Inputs/Day13.txt
1279
Inputs/Day13.txt
File diff suppressed because it is too large
Load Diff
500
Inputs/Day14.txt
500
Inputs/Day14.txt
@@ -1,500 +0,0 @@
|
||||
p=84,26 v=99,-23
|
||||
p=98,17 v=-41,-46
|
||||
p=3,84 v=-17,-23
|
||||
p=92,66 v=36,-4
|
||||
p=16,102 v=95,-60
|
||||
p=14,90 v=-71,-62
|
||||
p=26,29 v=91,-20
|
||||
p=74,36 v=67,30
|
||||
p=59,66 v=86,-4
|
||||
p=32,47 v=-79,7
|
||||
p=82,42 v=3,-84
|
||||
p=61,16 v=28,34
|
||||
p=82,9 v=-84,-78
|
||||
p=5,71 v=16,84
|
||||
p=15,79 v=-48,75
|
||||
p=76,92 v=-32,68
|
||||
p=43,93 v=54,78
|
||||
p=22,73 v=-49,68
|
||||
p=79,13 v=-78,-55
|
||||
p=61,17 v=1,90
|
||||
p=71,58 v=-73,16
|
||||
p=60,63 v=-31,87
|
||||
p=8,41 v=-17,-96
|
||||
p=13,51 v=-16,-51
|
||||
p=86,15 v=12,-65
|
||||
p=35,71 v=57,3
|
||||
p=77,81 v=89,86
|
||||
p=100,37 v=93,-84
|
||||
p=31,38 v=22,20
|
||||
p=9,98 v=99,-47
|
||||
p=29,21 v=72,-76
|
||||
p=67,99 v=76,-25
|
||||
p=62,67 v=54,78
|
||||
p=80,79 v=-1,91
|
||||
p=74,7 v=51,-42
|
||||
p=31,57 v=30,70
|
||||
p=7,74 v=57,-75
|
||||
p=49,29 v=-9,34
|
||||
p=27,70 v=-45,-54
|
||||
p=96,30 v=47,-77
|
||||
p=7,22 v=-65,52
|
||||
p=50,53 v=15,-1
|
||||
p=37,44 v=46,-96
|
||||
p=85,87 v=-10,-25
|
||||
p=91,8 v=47,-56
|
||||
p=96,11 v=-50,-67
|
||||
p=75,85 v=80,90
|
||||
p=51,72 v=41,79
|
||||
p=81,67 v=-93,-25
|
||||
p=78,51 v=65,-99
|
||||
p=94,21 v=15,38
|
||||
p=41,63 v=-77,89
|
||||
p=98,11 v=-52,31
|
||||
p=97,53 v=67,12
|
||||
p=10,93 v=78,-74
|
||||
p=13,23 v=53,40
|
||||
p=73,39 v=-11,58
|
||||
p=82,54 v=45,-39
|
||||
p=4,14 v=-52,60
|
||||
p=69,85 v=-93,86
|
||||
p=88,27 v=-98,-64
|
||||
p=54,88 v=50,-27
|
||||
p=53,84 v=-82,-15
|
||||
p=47,51 v=24,61
|
||||
p=100,94 v=-54,-52
|
||||
p=91,23 v=1,-66
|
||||
p=95,45 v=-42,7
|
||||
p=76,92 v=80,53
|
||||
p=29,0 v=13,-29
|
||||
p=38,46 v=40,2
|
||||
p=29,19 v=-24,-59
|
||||
p=4,53 v=-74,11
|
||||
p=77,87 v=45,-13
|
||||
p=75,12 v=-82,-52
|
||||
p=95,84 v=38,93
|
||||
p=52,52 v=20,17
|
||||
p=16,0 v=-83,51
|
||||
p=68,21 v=98,-72
|
||||
p=9,54 v=-76,20
|
||||
p=27,9 v=9,-55
|
||||
p=32,44 v=-11,-96
|
||||
p=90,59 v=67,6
|
||||
p=68,52 v=65,30
|
||||
p=71,44 v=-3,11
|
||||
p=6,14 v=16,44
|
||||
p=10,0 v=18,-40
|
||||
p=85,41 v=17,90
|
||||
p=15,4 v=-59,57
|
||||
p=44,65 v=2,97
|
||||
p=15,78 v=53,-48
|
||||
p=34,12 v=46,53
|
||||
p=43,45 v=86,-83
|
||||
p=76,52 v=-92,-81
|
||||
p=11,80 v=97,-24
|
||||
p=37,3 v=48,63
|
||||
p=1,54 v=49,-5
|
||||
p=45,61 v=-5,81
|
||||
p=71,63 v=87,95
|
||||
p=72,40 v=-83,32
|
||||
p=10,9 v=-83,47
|
||||
p=3,23 v=-10,-73
|
||||
p=84,1 v=85,52
|
||||
p=52,24 v=-18,36
|
||||
p=76,37 v=21,-84
|
||||
p=49,26 v=20,11
|
||||
p=66,54 v=30,-4
|
||||
p=24,66 v=-61,79
|
||||
p=34,22 v=41,-90
|
||||
p=43,6 v=-52,-66
|
||||
p=15,30 v=68,6
|
||||
p=72,74 v=-55,93
|
||||
p=35,25 v=24,-66
|
||||
p=80,21 v=56,36
|
||||
p=43,67 v=59,95
|
||||
p=61,39 v=-69,-88
|
||||
p=61,93 v=-66,65
|
||||
p=18,94 v=97,74
|
||||
p=4,43 v=13,-75
|
||||
p=13,62 v=-74,-91
|
||||
p=61,27 v=32,-59
|
||||
p=28,88 v=55,-19
|
||||
p=52,55 v=-94,-60
|
||||
p=83,37 v=46,97
|
||||
p=2,72 v=-52,-77
|
||||
p=35,31 v=-33,23
|
||||
p=75,73 v=30,-12
|
||||
p=55,7 v=87,-70
|
||||
p=48,52 v=-41,-22
|
||||
p=50,15 v=39,-54
|
||||
p=35,69 v=63,-92
|
||||
p=40,55 v=-20,-84
|
||||
p=51,27 v=61,-67
|
||||
p=24,29 v=62,21
|
||||
p=12,14 v=86,45
|
||||
p=57,29 v=-99,-66
|
||||
p=82,74 v=16,26
|
||||
p=2,40 v=-32,-69
|
||||
p=23,14 v=-81,49
|
||||
p=89,70 v=-32,99
|
||||
p=4,27 v=60,-67
|
||||
p=34,10 v=-77,-57
|
||||
p=40,73 v=88,73
|
||||
p=26,38 v=-90,21
|
||||
p=31,25 v=45,15
|
||||
p=93,8 v=-65,54
|
||||
p=61,25 v=-69,-79
|
||||
p=13,63 v=19,27
|
||||
p=58,13 v=15,-42
|
||||
p=29,1 v=3,65
|
||||
p=65,59 v=41,15
|
||||
p=86,69 v=-89,-14
|
||||
p=23,63 v=-87,-79
|
||||
p=14,7 v=81,-54
|
||||
p=3,92 v=-96,61
|
||||
p=78,24 v=-34,-70
|
||||
p=48,30 v=-22,10
|
||||
p=59,79 v=85,66
|
||||
p=91,7 v=5,-60
|
||||
p=61,25 v=-20,41
|
||||
p=5,90 v=60,87
|
||||
p=68,9 v=-24,25
|
||||
p=27,55 v=42,9
|
||||
p=48,41 v=37,-78
|
||||
p=43,44 v=80,-68
|
||||
p=73,20 v=30,-49
|
||||
p=13,62 v=-19,-3
|
||||
p=46,11 v=24,50
|
||||
p=17,90 v=86,75
|
||||
p=77,18 v=-84,79
|
||||
p=5,52 v=4,-30
|
||||
p=28,63 v=34,41
|
||||
p=72,83 v=87,-15
|
||||
p=11,16 v=51,-60
|
||||
p=4,33 v=-63,-71
|
||||
p=70,77 v=34,-25
|
||||
p=37,46 v=22,-20
|
||||
p=87,49 v=-25,2
|
||||
p=89,16 v=45,-59
|
||||
p=9,82 v=-33,97
|
||||
p=66,27 v=87,-72
|
||||
p=64,97 v=-38,-40
|
||||
p=51,90 v=-73,76
|
||||
p=25,57 v=-68,-95
|
||||
p=41,13 v=8,-48
|
||||
p=39,13 v=59,29
|
||||
p=42,51 v=13,9
|
||||
p=70,102 v=-14,-54
|
||||
p=41,69 v=2,83
|
||||
p=74,7 v=-10,39
|
||||
p=91,63 v=32,-99
|
||||
p=6,22 v=-70,-55
|
||||
p=78,5 v=-12,37
|
||||
p=54,76 v=-46,-84
|
||||
p=17,19 v=-4,-62
|
||||
p=70,101 v=76,58
|
||||
p=71,94 v=41,74
|
||||
p=16,91 v=18,-32
|
||||
p=10,90 v=95,-53
|
||||
p=97,61 v=71,5
|
||||
p=63,49 v=-73,-70
|
||||
p=85,27 v=-76,-56
|
||||
p=98,11 v=47,47
|
||||
p=58,7 v=-5,46
|
||||
p=5,48 v=-6,-94
|
||||
p=4,90 v=-87,-16
|
||||
p=55,84 v=-3,-29
|
||||
p=74,1 v=95,-35
|
||||
p=3,43 v=35,28
|
||||
p=11,29 v=91,40
|
||||
p=10,11 v=38,31
|
||||
p=61,44 v=-19,10
|
||||
p=87,52 v=76,96
|
||||
p=3,92 v=27,67
|
||||
p=68,64 v=87,-6
|
||||
p=74,88 v=87,-34
|
||||
p=24,52 v=43,-61
|
||||
p=91,10 v=-65,-63
|
||||
p=65,98 v=49,-21
|
||||
p=88,66 v=-71,-46
|
||||
p=21,84 v=-26,93
|
||||
p=7,69 v=84,81
|
||||
p=43,21 v=6,-9
|
||||
p=43,64 v=-73,-19
|
||||
p=35,47 v=79,-88
|
||||
p=54,21 v=39,-62
|
||||
p=20,63 v=-33,27
|
||||
p=21,51 v=99,10
|
||||
p=16,82 v=-72,-31
|
||||
p=23,10 v=-2,-45
|
||||
p=37,33 v=-22,21
|
||||
p=41,74 v=-9,88
|
||||
p=31,96 v=-15,65
|
||||
p=37,12 v=46,55
|
||||
p=72,54 v=-54,-52
|
||||
p=9,58 v=-28,-87
|
||||
p=0,13 v=-96,-50
|
||||
p=65,70 v=18,11
|
||||
p=32,38 v=90,-84
|
||||
p=97,67 v=40,-3
|
||||
p=45,17 v=90,57
|
||||
p=36,85 v=2,83
|
||||
p=29,39 v=63,78
|
||||
p=51,99 v=-7,-40
|
||||
p=18,93 v=18,-30
|
||||
p=75,93 v=-12,65
|
||||
p=1,85 v=27,-20
|
||||
p=17,84 v=97,72
|
||||
p=3,68 v=-74,96
|
||||
p=72,22 v=-49,52
|
||||
p=18,65 v=-50,1
|
||||
p=71,16 v=63,-59
|
||||
p=36,44 v=-20,85
|
||||
p=77,21 v=-27,96
|
||||
p=70,54 v=95,-70
|
||||
p=20,5 v=-44,-9
|
||||
p=97,64 v=55,94
|
||||
p=49,82 v=35,-16
|
||||
p=63,54 v=2,-51
|
||||
p=88,101 v=1,65
|
||||
p=1,3 v=-89,-34
|
||||
p=29,97 v=-24,-42
|
||||
p=45,46 v=-66,14
|
||||
p=51,33 v=68,35
|
||||
p=91,29 v=-78,-35
|
||||
p=10,56 v=-83,31
|
||||
p=11,94 v=-41,-15
|
||||
p=63,76 v=19,90
|
||||
p=84,84 v=21,84
|
||||
p=24,41 v=-79,25
|
||||
p=94,82 v=23,85
|
||||
p=60,52 v=-48,-4
|
||||
p=47,36 v=66,-51
|
||||
p=0,49 v=-6,-90
|
||||
p=40,23 v=-99,-63
|
||||
p=21,79 v=-64,-40
|
||||
p=71,18 v=-14,-67
|
||||
p=53,44 v=-51,7
|
||||
p=71,40 v=83,51
|
||||
p=96,87 v=93,-29
|
||||
p=46,64 v=22,88
|
||||
p=3,53 v=44,-52
|
||||
p=54,57 v=74,-95
|
||||
p=61,63 v=-95,-12
|
||||
p=96,82 v=3,-17
|
||||
p=41,96 v=5,89
|
||||
p=7,46 v=-19,20
|
||||
p=2,7 v=55,33
|
||||
p=27,15 v=29,33
|
||||
p=54,64 v=-7,2
|
||||
p=84,58 v=-93,59
|
||||
p=80,24 v=56,5
|
||||
p=23,13 v=66,-56
|
||||
p=93,100 v=-89,45
|
||||
p=89,82 v=91,69
|
||||
p=55,90 v=96,-5
|
||||
p=43,41 v=16,-93
|
||||
p=54,70 v=28,-85
|
||||
p=50,64 v=-33,-22
|
||||
p=99,35 v=71,17
|
||||
p=23,77 v=11,-3
|
||||
p=78,99 v=43,-38
|
||||
p=3,80 v=-57,8
|
||||
p=22,75 v=-48,-18
|
||||
p=3,94 v=-98,-33
|
||||
p=72,89 v=-90,39
|
||||
p=87,84 v=67,61
|
||||
p=28,0 v=22,55
|
||||
p=65,55 v=82,70
|
||||
p=55,48 v=17,-96
|
||||
p=11,37 v=-33,52
|
||||
p=63,63 v=-94,9
|
||||
p=0,10 v=-78,59
|
||||
p=91,17 v=23,-58
|
||||
p=56,77 v=72,81
|
||||
p=99,47 v=14,19
|
||||
p=15,18 v=31,24
|
||||
p=47,9 v=56,-13
|
||||
p=38,11 v=-9,-50
|
||||
p=93,2 v=-76,47
|
||||
p=97,52 v=-45,-32
|
||||
p=51,44 v=-65,68
|
||||
p=15,2 v=-83,72
|
||||
p=15,99 v=97,54
|
||||
p=85,81 v=45,78
|
||||
p=11,57 v=3,-13
|
||||
p=91,30 v=11,56
|
||||
p=42,90 v=-75,73
|
||||
p=24,7 v=99,-68
|
||||
p=55,58 v=83,-7
|
||||
p=35,4 v=15,31
|
||||
p=21,39 v=42,27
|
||||
p=62,9 v=6,-48
|
||||
p=59,99 v=-20,46
|
||||
p=93,71 v=1,96
|
||||
p=31,3 v=77,-47
|
||||
p=98,11 v=25,-52
|
||||
p=28,41 v=92,22
|
||||
p=90,64 v=93,81
|
||||
p=64,93 v=-71,-28
|
||||
p=31,65 v=-74,-47
|
||||
p=62,44 v=21,30
|
||||
p=35,22 v=-76,5
|
||||
p=69,2 v=-4,47
|
||||
p=34,28 v=52,32
|
||||
p=3,37 v=-17,21
|
||||
p=43,92 v=90,-50
|
||||
p=16,59 v=29,-1
|
||||
p=41,6 v=57,-50
|
||||
p=93,58 v=-74,-16
|
||||
p=88,60 v=-2,-10
|
||||
p=62,19 v=-51,37
|
||||
p=30,80 v=79,83
|
||||
p=75,14 v=-84,79
|
||||
p=77,10 v=-34,-71
|
||||
p=92,60 v=21,13
|
||||
p=21,25 v=-26,-67
|
||||
p=88,101 v=57,80
|
||||
p=60,93 v=14,-99
|
||||
p=55,33 v=61,-77
|
||||
p=76,51 v=-60,67
|
||||
p=23,31 v=-48,25
|
||||
p=47,28 v=71,18
|
||||
p=6,10 v=-6,55
|
||||
p=74,29 v=-51,-56
|
||||
p=43,49 v=-66,15
|
||||
p=53,15 v=17,46
|
||||
p=34,89 v=-90,-28
|
||||
p=53,12 v=26,-53
|
||||
p=68,96 v=32,68
|
||||
p=10,50 v=-6,5
|
||||
p=30,7 v=69,80
|
||||
p=2,69 v=60,84
|
||||
p=78,74 v=32,-12
|
||||
p=83,87 v=-8,-31
|
||||
p=86,86 v=48,-45
|
||||
p=19,6 v=7,-48
|
||||
p=53,32 v=-55,-89
|
||||
p=32,35 v=-23,-39
|
||||
p=95,23 v=-87,43
|
||||
p=56,82 v=50,-22
|
||||
p=28,101 v=99,-36
|
||||
p=8,77 v=5,-13
|
||||
p=74,21 v=-27,-90
|
||||
p=68,59 v=98,-6
|
||||
p=83,93 v=21,76
|
||||
p=80,24 v=-91,-78
|
||||
p=7,78 v=47,-8
|
||||
p=19,81 v=90,-14
|
||||
p=96,20 v=-30,44
|
||||
p=70,54 v=-14,10
|
||||
p=93,25 v=-65,33
|
||||
p=51,76 v=26,90
|
||||
p=79,25 v=45,-69
|
||||
p=89,6 v=-47,-54
|
||||
p=32,78 v=62,18
|
||||
p=98,32 v=57,23
|
||||
p=34,30 v=-22,-91
|
||||
p=37,94 v=-72,86
|
||||
p=81,94 v=-45,63
|
||||
p=20,37 v=-24,29
|
||||
p=2,63 v=-26,-19
|
||||
p=4,29 v=-72,-68
|
||||
p=18,95 v=45,71
|
||||
p=64,84 v=28,-25
|
||||
p=8,32 v=84,-93
|
||||
p=15,3 v=-6,-41
|
||||
p=42,53 v=81,-92
|
||||
p=20,73 v=79,72
|
||||
p=43,3 v=28,-38
|
||||
p=86,85 v=-21,72
|
||||
p=97,29 v=69,36
|
||||
p=23,74 v=-55,72
|
||||
p=83,87 v=45,-26
|
||||
p=70,0 v=-93,57
|
||||
p=61,0 v=-25,74
|
||||
p=22,0 v=-35,56
|
||||
p=12,8 v=-70,34
|
||||
p=27,24 v=66,-74
|
||||
p=27,87 v=29,78
|
||||
p=36,98 v=68,72
|
||||
p=26,40 v=40,-82
|
||||
p=38,34 v=-80,6
|
||||
p=34,83 v=33,74
|
||||
p=23,24 v=9,27
|
||||
p=46,96 v=96,-43
|
||||
p=80,41 v=52,19
|
||||
p=33,10 v=37,-47
|
||||
p=47,15 v=74,73
|
||||
p=25,102 v=-3,-72
|
||||
p=73,63 v=-71,-1
|
||||
p=27,78 v=-2,83
|
||||
p=28,8 v=18,55
|
||||
p=95,102 v=-39,-42
|
||||
p=65,69 v=-38,-16
|
||||
p=54,17 v=-18,48
|
||||
p=63,64 v=96,96
|
||||
p=3,32 v=-37,33
|
||||
p=96,84 v=36,61
|
||||
p=67,9 v=67,-54
|
||||
p=88,54 v=-74,-52
|
||||
p=70,52 v=52,14
|
||||
p=97,81 v=-55,-56
|
||||
p=4,11 v=40,54
|
||||
p=51,9 v=-16,-97
|
||||
p=59,88 v=85,75
|
||||
p=58,24 v=72,-67
|
||||
p=73,59 v=76,-93
|
||||
p=34,40 v=81,2
|
||||
p=38,22 v=94,52
|
||||
p=77,27 v=78,39
|
||||
p=65,50 v=28,16
|
||||
p=63,14 v=-38,-48
|
||||
p=13,70 v=-24,75
|
||||
p=60,16 v=12,-9
|
||||
p=43,65 v=92,50
|
||||
p=66,31 v=-24,-65
|
||||
p=67,32 v=10,4
|
||||
p=20,27 v=-27,97
|
||||
p=87,35 v=-52,38
|
||||
p=69,86 v=80,-41
|
||||
p=55,81 v=4,-15
|
||||
p=11,102 v=-28,54
|
||||
p=34,74 v=52,-16
|
||||
p=74,90 v=19,77
|
||||
p=100,71 v=-63,-17
|
||||
p=16,27 v=-52,30
|
||||
p=77,75 v=-59,-50
|
||||
p=18,76 v=27,81
|
||||
p=65,99 v=42,-45
|
||||
p=30,15 v=-79,48
|
||||
p=4,95 v=80,-31
|
||||
p=81,87 v=83,15
|
||||
p=22,31 v=33,34
|
||||
p=46,77 v=-43,-42
|
||||
p=36,37 v=-99,27
|
||||
p=35,86 v=29,20
|
||||
p=54,16 v=-9,-77
|
||||
p=58,5 v=-38,-34
|
||||
p=40,26 v=4,-53
|
||||
p=31,36 v=56,-5
|
||||
p=46,101 v=-5,97
|
||||
p=99,97 v=47,88
|
||||
p=52,42 v=94,-81
|
||||
p=92,100 v=95,65
|
||||
p=86,19 v=-78,-48
|
||||
p=75,100 v=-23,63
|
||||
p=74,38 v=98,-99
|
||||
p=61,92 v=-42,-40
|
||||
p=70,98 v=8,63
|
||||
p=4,82 v=-74,-32
|
||||
p=79,1 v=63,-33
|
||||
p=5,49 v=-17,11
|
||||
p=55,39 v=-82,-68
|
||||
p=91,98 v=-96,64
|
||||
p=55,82 v=24,77
|
||||
p=54,48 v=83,13
|
||||
p=0,23 v=-19,-74
|
||||
p=25,50 v=48,36
|
||||
p=99,21 v=36,-68
|
||||
p=26,33 v=9,9
|
||||
@@ -1,71 +0,0 @@
|
||||
##################################################
|
||||
##...OO.O.#.O..........OO..#.#..O.O.O.....O......#
|
||||
#O.O#.OO.O#..O.....O..#..O........OO...O...#.....#
|
||||
#O#..O........O.O.O.O......O.O##...#.O....O.O#.O.#
|
||||
#...O.O...O..O..O..O.O..OO.O....O....OO.......##.#
|
||||
#O...O......#O.#...O.O.....#O.....O....#.........#
|
||||
#..OOO.....#.O.O#.........O#.OO.O.OO......OO...#.#
|
||||
#OO.O...#.O.....O#O....O#.........O........O#OO#.#
|
||||
#.#OO......O...O.O.#...........OO......O.#.OO....#
|
||||
#.#O..O.O..O...O.O......OO.......OO#..O.OO#OO....#
|
||||
#.O......#..OO.O...........O........O.O#.OO......#
|
||||
#O..#..#...#...............O.#......OOO.OO.....OO#
|
||||
##..OO.....#O##...O.O...##......#OOO..OO...O..O..#
|
||||
#..OO..O..#O...O.O..O.#.O#O##.O..O..O..OO.#O.#.O.#
|
||||
#...O..........OO........#...OO..O...O....O.OOO.O#
|
||||
#...O.......O...OO.#O....O....O.O.O.O.#.O#..OO...#
|
||||
##..O...O.O.......#O.OO.OO.OOO...O.OO....O..#....#
|
||||
#O..#...O.......O#OO.O...OO...O...#....O.OO.OO..##
|
||||
#...O..OO.#O.....O.OO..OOO.O........OO.O...#OOO.##
|
||||
#.#......#..OO..OO.O.O.........O..#...O........O.#
|
||||
#O...O..O.......O.O..#.OO.OO....#O....O....O...#.#
|
||||
#.##O.#...O.#.......#O.O..O.OOO.......O..O..O..O##
|
||||
#...OO.O..O......##...#.#.....O#O...O..O......#O.#
|
||||
#..O#OO.O.OO..#O........OO..##..O...O......OO.O..#
|
||||
#O..O.O.......OO.OO.....@O#.....#.O..#O........O.#
|
||||
#...........O#.....O....OO..OO...O..OO...O..OO..O#
|
||||
#O#...OOO................O.###.O...O.......O.....#
|
||||
#.OO.O...OO#O..O#..OO.OO...O.......OO.O.....O...O#
|
||||
#.O..#.O......OO..O.......#.OO.##OOOO..O....#.#O.#
|
||||
#.............O...O..O.OO#OO.O#..OO.OO#O.##.....##
|
||||
#..#O.OO.O.#..O#......O#.O....O.OO.O..O...O....###
|
||||
#O.O.O.O...OOO..O..O..........O#.OO..#...#O.###..#
|
||||
#..O#.#O.OO.....#OO.O....O..#......O.#O##..#...O##
|
||||
###.O.....O.....O.#OO.....O........O.OO#....O....#
|
||||
#O..#O.O.O.....O#.O..O.O#O...#.............O...#.#
|
||||
#..............#O.#.#....O.OO...O...O......#...#.#
|
||||
#OOOO...O.#..O..O#.#O....OOO........O.....O...#..#
|
||||
#OOO.O.#.OO..O.#.O..O.O........#..O...#O.....O.O.#
|
||||
#.....##.O.#OO.OO#.OO..OO.OO...OO...O....O#.#O..##
|
||||
#O.O.O.O..O.....O......OOO...O..O...O#OO...O..O..#
|
||||
#OO..OO..O......#....OO..#.O...OO..O....#O..#....#
|
||||
#OO....OO..OOOO....O.OO.....O.O#.....#O....O.OOOO#
|
||||
#........O.....#O..#O......O....O.#.O#..##..O..OO#
|
||||
#.#....#...O.O.O....O.......OO#.OOO#.#....#..#...#
|
||||
##O.O.#.....#O.......O.OO.#O...#OOO.O.#....OOO...#
|
||||
#..O.O#.O..OO..O.........O......O..OO.OO.OO......#
|
||||
#.O.....#.#O.O...OO................O.O.#O..#...O.#
|
||||
#...O......O.OO..OO..OO....#O.O..#O..O#....O...#O#
|
||||
#OO.O....O#..O.#.OOO.#............O.O.OO.O#.O.#O##
|
||||
##################################################
|
||||
|
||||
v>>^vv>>>^v>v^^>vv^><^vv^^^<^^<^>>^<>><^^>v>vvv<>v><>>v<v<<^^^vv<v^^><vvv<v<<<<^>^>>><><^>^>^^^>>^^^<<v^v^>^^<>^v<^v<<>^^vv<^>v>v<<>v^<<>^><<>>vv>^<>vv>v>>><<^>^^>v<>>v^<^<^>vvv<>^v<^<<<^>^^v<vv<^><vv<>>^<^^v<^<<^<^^>vv^<>^<>>><^<<^v<v<>vvvv<^<^v<>>v<><vvvv^v^<v<<v>^^>^^v^vv<<^^v>v<^vv>^vv><vv<<>v>v<>vv<<<><v>vv<^<><^><<<>^><<<<^>v^v<>vv^^<v^>>>v>^><v>v^^<v<^v>v>><^^<>>v<>v>>^<<v<^vvvv<vvv>^<v^<vvv<v^>^^>>v^^^<<^<<>^^<>><v>^>>^>>^>>vv>v^<v>vv<><<>><<<>v>>vv^^>v<vvv<v>>><<><><v^^>^v<^<>v<<^><><^^>^>^^vv<^vv><v^^><<<<<<<<v<^<<^v^^^><>v>^^^<><^v>v<^v><<<<<><^vv>^v>v^<<>v^>v<^>^<>^<v^v^>v^v^<^<><>>^<<^vv<>>vv^v^^<^<v<v^v^><>^^<>^><>^^v<^v<<v^^<>^v<v^^v^v>v^>><^^<><>>^v><v>><<>v>>>>v<<<^v^^v<<<<^v<><^<^^<v<>>^^>>>v>v>>><^<vv^<<^vvv>^<>^v<<^^>v^<^<v>v><vv^<v>>^^<>^v^^^<>v^v>v^><><v<v>v<^v>^vv<>><>>^>v^^<v<<^^><<^<^^^v><<^><>>v<<<v<<>><v<><<v>><<<^^^^v^v>v<vv><^^>>^^v>v<<<^<<>^v>>>v^v^v<<v^v<<><><><^<v^>v<><<>><>^^^><v^>^v<v<vv>v^<^^>><^^^vv^>v^<<v^>^^v^v>>v><<<>vv^><>v<>>>v^^^vv<v<<>>>>v<><^
|
||||
<vvv>v>v>>^v^<<<>>><>><<<^v^v>^^<v><vv>>^v<^<<>>^^^^v^><^^^v>v^vv^v<>>v>>>><v>^vv<<v<v<>>vvv^<>vvvv^>><<>^^<<^><><^<>v<^<<<v^>>^>^<<^^>>>^^v^vv>^><vvv^vv>><><>>^<v>>^v<>>><>v^v<vvvv<v^vvv^^^<^<^>v<>^v>><v>^^>^<v^<<v>v^>^v^^>vv<v^<><^<^<^<^>v<<<>>>v^v<^v<<<>^<<v^<>>>v><>>v<>>^><^>>v<^>v>v<><vv^<^^vv><^^v<v>vvvv<v<<^<>^>^^>^>>>vv>vv>v<^>v>^<<>^v<<<<v>^^vv>^v<^v>^>>^^^><v^>^>>^v<>v^<^v><>v><<<><<v<^^^^vv>^v><<<vv<<vv>^^v>><v<^vv<^<>v<vv^^v^vv<>v^^v<^^><<>^^>>v>v^>v<<vvv><^>v<<>v<<v<<><>^^^><^^^<<>v>v<<><<><^<v<<<>>v^<<v><<><^>^v>>>>><>v<<v>^^^>^>^v^v>><>>>>vvv^<v><^>^<^>v<^>^v>^<^^<vv<<v^<^^><<>v^<>^vv>^<>v>vv>v^^^<v^><^v^^^vv>vv>v^>^<<v><^vvv>v<vv<<^^>v^>v><>v^^^^<^v^v^<><vv<^<<vv>v>v^>>^<v>v>^<vv>>v<><^^<><vv>><<v<>^<>v<^>vvv<<>v<v^v>>^>><v^>^^><>vvv^^^v>^^<v>>><>v>^<^^^>vv<<<^>vv<^<^<>vvv<>^v^^>^^<^^^v^<v<^><>v<^^>^^>>v^v<><^v<>><>^<<<<v^v<^>v>>v><vv<v^<v^^v><vv^vv>>>^>^v>^^^vvvvvv>^vv>v>v<>^^><><^>^<>>^^^v^<<v<<v<v<<vv^^^vv>v^<^<<<^<vv<><>><<<vv><<<^^<<><<><>^<<vv<v^<v>><^v^^v><^v>>vv
|
||||
^<<<>>v>>^^v<>><^><^^>v>>^^^<>^>>^>v>>^>><^><^>v<v>v^v>v^v>vvv<<^>>vv>^<vv^v^^^v<^^v<^>v>v<>^<<v<<<>>^>^^v>>v<<vvv<^<^^>^<^>><^v^v><<>v>>><<>v^<^><v<v<vv^v<<><v>vv^v^v^v>^>v<^><><<v<v>^><v<^<v<^>>><^>v>^><<<vvv<vv<^v>v>^<vv^>>>v^<v^<<^>^<<<>>v<v<v>^^v>v<^>>>v^^^<<^<^v><^><^>vv>>^>>>v>^<^<v<v>vv><^^>>^<<^>><<<v^<<<v>v<^<v>^^v<<>v>vv^<vv>^v<>v^v>>^>^^><>v><v>v^>>>>>vv^><^>v<^^vv^^>>><<<><^<v<<>^><>>>v>>^<<<<>^v^v><^v^^^<<v<v<^>>^<^<<<v^<<<>v^<>^v>v^>^<>^>^<v<><^^<<<v<<v>><>^<^<^>^v^v><<>>>v>^vv^v<>>>><v<>v^<v<<vv<v<>>v>vv><>><<v^<>^<>v^<<<vv^>>>v^^v^vv><vv^^v<^<>>^<v^>v>><>><v<^v<>v^>>><>^^>v><><>^^v^vv<^v><v<>^^v>>v>^vv<<v^^<><v><v^<><v<^vv>v<^^^^^v<>>vv^^v<^>v<v>v^v<>><><v>>v<^<^^<<v^>>>v<v^v<v>><<v^<>v<^>^^<v^>v^<v<v>v>><v>v>vv>^^v^<<>>v>>>^<v>^<><vv>><v<>vv<vv>v^v<^>vv<^>>v><^^>^><>>vv<><<<v<v>^<^^^v^v>^vv><>>>><v<>^>^<<^^^^>v^^vv<vv^^v>^^<^<^<>>^^>v><^>v>><^<^<vv^><^><<>v^v^>>^><<><v^^>>vv<v^<<^v>^<v<v><v<vv^>>v<>>v<^v<vv^v<v<<<>><><v>>^<vv<^<<><>>>><^v><^>^v<v<v^v^>^><<>^^<v>><><^^
|
||||
>^>vv^v<>>><^^^<v<v^<v^^<>^^^^^^<>^><><^<v>v><<v<v<^v<<<^v^^v>>v>^v<<><^^v^v^v^v^v><^>>>^v><v^^^v<^v^^<<^<<><vv<>vvv^^<vv>>v^<^^>>v>vvv>^^v^^<^>><v^^v<^^>v>^<<v^><<>v^^^^<^<>^^>>v<^^^>vv>>>>>v>^<<>vv^<><v^<>>v^>vv^vvvv><^^<>v>v<vv>v><v>vv<v<v^^v<^><><vv>v><>^^vv^<v>v><<^vvv<>>^v<><>>^<<^v^<><<v<>v><>^vvvv^^v<<^^^<><<<>^^^>v^^<<>^<>^<><v^>v>>^<<<^^<>^v>^><<<^v<><v>^^>>^><<>^^v^><^v>^^<>>v<v^<<^v^v><<<<><^v<>>v^v<><v>^^vv>^^<>>^<v^<^^^<v>^v<><>>^^>v^v>v^><v>v<<^>>><^<<>^<vvvv^^><^v^>v>>v>^>^>^<^<><<^^<<<v^v<<<v^>^><v<^^<<^v><><><^vv^>vv<><<^^<<<v^v<>>^^><v<^<v^v>v>v^v<^>v>>>>><^^>>^v<<vv>^>v>v<><><<<v<>^>vv^<^^>>>><<<<>>v>v<<<^^<^>vv<^<v^>>><vv>>><>vv<v>v^^^><<>>>>^vv><^v^<<><v<<v^<vv<v<^v>vv^v<<>v<^vv><<v^>^^^^^<><^<><v>^<vv<^<^<^^<>>^<>^v^<<v^>^<^<v<^>><<><>vvv>vv>vvv<v^>><^^>^>v^^<v>^><v><^><>^><>^>>^vv<><^v^^<^>^v<^^^<>><>>^^vv^<>^v^>><<^^v<>^v^v^^v>^vv<^v^><^<v<<>>^^>>><^<<>><>v>^vv^^vv<><>>v><<^v><v><vvv>vv<>^vv<<v<>^vv>^<vv>v>>vvvv^><<<<vvv^>^<v^<<v<^vv>^<><v^^vv>>v>v>^>v^v>>><>vv
|
||||
^v>v<^<vv^>^vv^>>^>>v<<<<^v^<<<>>^^><<>>v>>><^<vv<v>^>>^<^><v>vv<^v^>^^<>^<<v>><>vv<<vv>v<^^<<<><<><>^>>v<>><^<v>^v>v<vvvv<>>>><>vv<v>>^>>>>>^vv^v^v><^^<<<v^^vv<><>^<^^>><>vvv^>v^<v^<v^^<<^<<v>^>^^<>>v^^<>v<>^>>^<>><^^v<<>^vv^<v>^^>><<<<>vvv><<v>>^v^<^^<>>><>v>^>v<>^><>^><vv>^>><^^<>v>v<>v><v><>v<<v>^v><<>^>v>^vv><^>><v^vv<v^^v<v^>^<^v^<^v><<^v<<<^><<<<<^v^<vvv<><^>>>>>>v>vv>v<^^<^>>^^^vvv^v^^vv>^<>v>><><<<>>v^^>^<^><v<>^v><<v>^<<^><<<v>vv>^>>v<><^v^vv<v>v^<v><^>^<>^^v>v>vv<><<^<<^<<^>vv^>^>v>><v>^<>^^^^v<v^>v^v><<^>^v^<v^>>>^><<^vvvv<vv><^v>^<v^v^<<^<^<>>^^>>><^^><><^^vv<v<v<><^<>^<vvv<v<^>^><^vv<v>^<vv<<<^vvv^>>^>><<>><<<vv>><><<v^<^v<<<<>>v^<^^<v<>^^vv>>^^^>^^^^^^v>^^<<<>v>^<^v>^^^^>>v><<v>^v><v<<>>>^<<<>>v<>vv>><<><<v<>vv^><^<><v<^><>>^>vv^>v^v^>><>vv><v^<v^>^<>^>v^<>v<<v^v<><<><>>>^>v<<^<v^<<^^v^v^><^<><<>>>^v<^>>^^v<<<>>>^^v^><>>v<<<<>v>^^>v><v>>>v<<<<^^^<^>>^^v>^>v^<>^^^<v><<v>^<<v<v^^<^vv>^v<>^^^>^^<>vv^^>vv>^<<><><^^^<>^<v^^>><v^>>v>v<^^vvv<^>><<<<^>^^v<v><<v<<^><v>v>v>^v><^^<
|
||||
^>>>^^^v^v^vv<v<vv^>v<^><>^>><^<vv>^vv>^^><v>v^v>>vv<^^<^<<v>^v^<>v>vv^v^^>v^^^^^^<>^^vv<<^vv^v<v<>v^^vv<>^^^^^><>v<v>vv><<v^>^^<>v<>>v<^v<vv^<^^<<^>v<v<>vv><v>^v><v<vvv^v^>v<^<vv<<v^<<v<><v><v^<>vv<^^v>>><<<>v^^>>^<><>>><^<v>>vv^v>^><vv^>v<<<>^v^^><<<^>v<vv^>v<><vv>vvv><><>>>^<<vv>>^v>><>v^^<<<^vv><^^>^vv><<<^>>^<v^^>>^>>^<^^>><><v^^<><><^^^^v^<^^vv<<>v^^v>>v^<<^^v^v^^<>v^<<<v<>>^><><^v^^vvv^>^><<^vv>^^^>><>vv^^>v^^^<v<>>^><^>>v><^<<^>>>>^v<<<>^>^<>v^>^^>>^^^^>v<vvv<vv^<v^v>v^<<>v^v><<><v<v^>vv>^<<<<v><<<v>^>v^<>v<>^<^^>>v^vvv>^<<>^vv<vvv>>^>>><>vv^^>vv>^>><^>v^>^<vv>><<^^^<v^^^<>v<><<<^^^>><><^vvv<^v^^v<<v<<v<>><<>>v^v><v^<^>><^^v>^^>>><vv<v<^>v^^v<^<^>v>>^<v^v<v^^>^v><><<^^^><^>>v^>v^^<>>><>><<^^v^>v>^>^<v^vv^vv<>^vv>>^>vv<^v>^^v<>v><>vv^<v^>>v^><vv<^<v^<<<<^^vvv^>^<>>><vv^^vv<^v<v^>v><^^^><v<<^v>v^v>vv<>^><>^v^>^>v<vvvv<v^^v<v>^^<<><>>><v><><v><^>>^^^>vv^<>v><<^^>v^vv^v<v>>v><>^vv<>v<v><^>^>>v^><>^<>^>>^<v^v^>^>><v><<v^^<v^^>^>v><^^^<v<<>vv^><v^^^<v^^<<^<vvv<v<>^>^>^vv>v<>>><^vv^v^
|
||||
^v>^vv<^<v><^<^><><v^<^<<^^v<v^<>^<v<<>^>v^v>v<v^<^^<<>^><^v^>v>^vv^vv><><>^^v<<v>>v<<>>^^^v^<^^><>^<^><vv<v^>^>>^v<>v^^<v<^^v>^v>^>>>^vv^^<^><^^<^>^>v>v<^<><vvv^>><>v<>^>v>>>v^<^^<>^v^^<<^>v<>v<><^v^<^>v>><^^><v<^^^>>v>vv<>vv^^<>v^v>^v<<<>^>>^<>^<vv><^>><^>v>^vv^^<><v^<^>>v>^^v<^v>^^>^<<vv>v><v^>>>v>>v^v<^<v<>>^v^^>^^<>><><>><<^<^>^v^<>>^vvv><^v><<>><>^vvv<>v><v<<>^v^v<v<vv<>>>v^<<vv<^>vv<^v<^^<>>>><^v>v>vvvv^>v<^^><><v<v^^<<>><>>>><vvv^v>^v^^^<>v>^v^^<v>><<vv><vv><v<^>>^^v>^<<<v<vv<<^^>>v>>vv>^>>v<^>>>><<^>v<^v^<<v<^^v<>v^<^^^v>^^^^<<><v>^^^vv<>>vv^v>vv<<<<^v>vv>><<^<<>^^<v^>>v><<>v<<^^><<vv>^vv^>v^v^>^>>>v<>^^^vv<^v>^v<><<v<^<<^vv^vv>v<<>^>^>>>v^<^>>v>v<<^v^><v<<^>^><v^^>^<^vv<^><v<v<^>^<<<<<^^^<v<>v><<<v>>>^<vv<v<v^^^>v<v<^>^v<^>vv<vv^<v^>^v<^<<<^<^<^><>^^v<v<^^>><>>>>v^>^<v<v>^^<v>^^^^^<^>v>^^<<^^<v^<>>v><v>>^>>v<^^>^^<vv><<>^<>^><^<v<<>^<<<<^>^>>^<<^>>v^><v<>>^vv^>^<>v<<>^<^^v^><v<>v<>^v^v<v>v>^>v>v>>>^>>^<v<><<>^>>^v^><^^^v>>>>v^<<vvvvvv<>^<^>>^^v^^>>^<<vvv^<vv^>^<^v<v><vv<^v<><
|
||||
>^vvv^><v^<<<<><><<v<^^<>v><v^<>v^>^<><vv><<^<v^v<v>^^><>>>v<v^>v^v<^<><vvvv<^>>>><<^vv<^^>v<^^v<>>^^v^^><^^^<<vv>>vv^v>>>>^^^>v^v>^^^<<^<vv^v>^^>^v>>v<^vv>^>>vvv>v^<<^v>^>>^<>><<vv<<v^^^<^v<>>v^v^v>>^>v^^^^<<>v><^<<<^>^v>>v<>v^>>>>^vv><>><^^^><^>>v<^^<v<^<v<>><^>>vvv>vv^^^<^><><vv^>v>^v^^<<<v^<>^<>>^^>v^vv^>^>v>^<^><v>v>^><>^<^<v<><v<^><^^^vv^^>><^><v<v^<v<v<>><<^v>>>v<>>>>^<v>^vv<<>v>v^^vv^v<>>>v>^^>>^^>v<^^<^v>^v<<v><<>^>^v^<<v>>>^v<>^v^<<^<>v<v^<^vv<>>v>v><^v>>v>v^^<v<v<>v>><vv^vv^<vvvv<<>>>>>>^v^><<<<v<>^v^<v^v>><<^<<^v^^v><<>v>^>v>>^<>^<>^^><v<v>><>^vv<>vv^<^>^>v>v<^^>>^<^v^<vv^^<v^><^<<<^vv<vv>v<vv^<v>>^^<<>vv<v<^v>vv<v>^^^<^>^^v<^^^>^v<>vvv>^>><<v^^>v>v<v>v<><^^^>>><>^^><v<<<^^>>vv<><><<^^<<v>v>^>v>^^>^vvv<vv<v>v>v^>v<<>><<v>>v<v>><^^<^^v<>^<vvv^><>><><v^>>^<^<><>>v>vvv^<<>vv<^><^<<v<<<>vv^<v<v>v>>^vvv<^^<^v<<><<>^^v^<^v^<<^<^>vv>vv^^v>^v<v<^v>^<<^vv^<<<vv<v><>v^><<^>v>^^^<>v<v^vv>v>v^><v>v<^>>>^<^<<^<v<><v<^>^>^v<^<^^>vv^><>^^^<>>v^>^^^^v<v^><^<>^>v>^><^<^v>>v^<<^v^v^^<<v<>v>v
|
||||
>v^v^<>^<v><^>v>v>^^v^><v^<vv>>^v^<<>v<<^^<>v<<<<^>>vv<^><>><vvv>>v><>^><<<^><>>>v^>^vv^v<v^^<<^v>^v><^vv^>v>v<<<^^vvv>v<^v>^<<<^>^<v<><>v<vvv^><^^<vv^><^v<<>^v^v^^^^>>>><<<<<^^<^<^<v<<<>>v^>>v^v<<v^<^^vv<^<v>^<>v^v^>^>>>^<^<><^^^vv^v<^^^<^^>vv^v<^<<^^<v<^<^^^>v^vv><<^<>>^>^>^>><^vv<^v^^<v<<v>>v^v<^^^>v^<v<v^<v<<^<v^>v^<^>><<v<^<vv><>v<<<>>vvvv>v>v^vv^<<<^v<^vv^v>v^^>><^v>v><^>vvv>vvv^<>v^><>^<<^v>>><<<<^<v^<vv<v<<v>^^^><^v^<^<<><v<^^<><^>^^<vvvv^v<^^^^<^>v>>vv^<^v^vvv<^<<vv^>^<<<v^><>^^v>^<v^^^v<^^^^>>>v^^^v<<^<>vv>><<>>^<<vv^v^<^>>v>^><<<<^v^^<v^><v>v^^<<<>vvvv<<^v^>>>^v<v<^><v><^v<^<v^<<v<v^<^^v^<v><<^>v^^<><^<>vv>>>>>^<<^<v>v<>^v>^<<>v^<><vv>vv>^v^>><<>v<^vv^v>^v><^vvv>v<v>^>>v<<^^^<^v>^^><^^vv<^<^v<^^^^>>v>v<^>>>>><>vvv^<^vvv^<v<^<>vvv>^>^<^v^<<^>^v<<>vv>v^^<<>>v<>^^^^<>^>vvv><<^v>^vv>v<v^<v^<^<><<<>vv<^><vv<v^v<^^^>v<>>^vvv^vv^^>v>>v^^>vv><>^^v>>^vv<><v<v<^><^><<><^v<v<>v>^>vvv<^<>>^^<<^>>>^>v<><><^^><>>>^^vvvv<>^<v><v<<^<^^v<>>>>><^^<>vv<v^>><<v<^<v^v^<><<v^v>>>^^vvvvv<^<v><<<vv
|
||||
<<v^><<><^vv^^>^<>^<<v<>^<^^>><>v>>vv<^^>vvv<<>>v^<>^<<>v^vvv>vv^^>^><>><<v<<^>>>>^v^>v<<<v>v<<v>^>v>>^<<v^><^^>>v^v^^v^v<v^^<^vv>v<^^<><v^>><<<>^<v^^<<v<>v<^vv<^v^^^<^<v>v<<^^v<<>^<<^v>><^<v^^><^^><>^>v^v^^v>>>v^^><><><v^v^^^v<vv>^v<^v^>>^vv>v^<v<^v<v<v^^^>v<^<^<^^<^><><vv>vvvvv<>>^<vvvvvv><<>>^<<><>>^v>vvv<v<<^>>v<vv<v<^>^<vv>v<^^<v>v^>^v>>><vv<<>>>>>>>^<<>^vv^<v^<<v<^>v>^>v<>^<^v^><<>v>^<v^^^<>>>^^v^<v^^^^vv<v^^^>v^>v<><>^^<>^<>><v><><^<^<^v^<<^vvv^v><^^>>v^^vvvv><^v>>>^><v<>^vv>^>^<vv>>>v><><>>^vv^v<>^v<^<<v>>>><vv>>v^^>^^><<^<><>^<<v<>v^v^vvv^>v^>>>^v><<>^^v<v<v^><<>>>>^>>vv>><v<^>>^<>><>^<v>v^^^>vvv<<>v>^>^>^>v>^v>>v>^>v<>v^>^>>>v>>^><>^>>><^^><>^^v^<v>v^>v^v>>v<>v><>^<>^>^>>v>v>^<<<^^^>^<<^<<<<^><^vv>>>^><^<<<v>>^>v<>^vv^<^v^<<>^^v<<<vv<>^v>^<v<<>v<vv<^<^v<>^<<><<v<v><>^<<>v^^vv>><v<vv>^><<^<v^<v><<vvv>^^^<^^v>^>>^><>v^^><v^v^v^<<>vv>v^v>^><^>^>^^<^v^v<v>v>>^^^^>^<<^<^vv<^<v>v^>^>>vv>^<<<<^v^^vv>v^^<vv>>^<<v^v^vv<^>><v>>v><<^>v>^^v^vv<<>vvv><<v>v<><v^>>^>v<><v<<v^><<>v<<vv^><v<<
|
||||
<<^<v>>vv>v^v<>^>^>v<v><v<<<vv<>v<^^^^^^<<^^v>>>>^<^<><v^<vv>^>>>^^<>>^>><<^<<<<<>><v^>^><v<<>>>^v^<><^^^v>vv><<>><^v<<v>^^vvv>v^v^v<>><v^<^^<><v<><><<<<<<>><>v^<>v^^^>>vv^<>><^><^^v^v^^^^>^^><<v^^<<^>v^v^<vv<v<>v>v<^<><^><>>v><>v^vv<<<><>>vvv^^vv^v>>>>v<^vv>>vv<>>v^<>v^^^^<<^>^^>^>^^v<v<<><vv^v^<v^><v><<^^<^^v>^^^v<^^<>vv>vv>v^v>v<>^v>^<<v>>^<v<><<>v^^>>>^>^^<<vv<^^<^>>>><^vv><<v>v<>>v^v>^vv^>^^vv><^<>>v^<v<vv<^>^<>v><v<vv>><v>^<vv<^><<<^>^<^>^^^vv^v>><^<><^vvv>>>^<v>^>vv>>^<^v><>^>>^>><^<^^>><vv^^^v><^<^^<>>v<<^^>>><vvvvvv<vv^<>>><vv^><<^vv<^v><v><^^><^v<v^><<v<<v^vv^>^<>>>v><<<^><^<^<><>^>^>>v^v^^v^<^^v^>v^<^><>>^>^<><v>>>v^>^>>vvvv^>^>>v<^>vv<<>^v<><^<>>><>^<<vv^>^>>^v>v<<^^vv<^v<<v^v>v<^<><>v>v<<<<<^^vvv^^><>>vvv<^^v^>vvvv>^vvv^>v<v<<<v><^><<v<<^^<^<<vv<<v><<^vv>>>vv>>>^^v^vvv^<<<vvv^v^>^>^<^v<^^>^^v><v<v>^^v^vv><^<>^^^v><^v^v>^vv<^>><>^^^>^<^v>vvv><v^v^><<^<^<^^v>>v^vvv>v^v>>>>v^><v>v<<>^^>><>>^^v^<v^^^v>>^><^^<^vvvv^>v<<vv<<^>^><v>>>v^<^>>><^<^^^^>^<vvv<^><>>>v>^v<^<^v<<^<<^v>v^
|
||||
^>^><<<>><<<<>>vvvv^vv^^^v>><>^^>v<^^v<^>^v^<<^><^v<>v<v>>>^>>>v<^<>>>^<v<^<>vv><>v<v<v<v>v>v<v^vv^<>^<vvv<^^v<^>>>^vvv><v<>^<><>vvv<<<>^v>v>^^v<<^vvvv<v^<<>^<>><v>>><>^^>^v^^>^<>v^>^<>v^>v>>vv<<><^v<^vv>vv>^<>vvvv>>>>^^>v^v<^^<^<v<>^^^v<>><^^><^><>v^>^<>v^v^<v^><<^>>>^vv>>><>v<>>^v>^^<v<^<^^^^><^v<<^<v<v>>v^<<>v>>^<^^v>vvv<<v^>v><^>^>^>v>>^<>^^<>><>^vv><v<^v>v<vv>v^v<^><v^<<vvv>^^>^^^vv^<^>^v><^<^<<v>v><<^<<vv^>><<^^<v<^><>><^><<<<vvv^vv<>v^><<^^^<<<><<v^^<<<vv<v<>>>v<<v<<^v<<<v^<^^<v^>>^><<^^v>v>>>vv><v^vv<vv^^>v^^v^><vvvvv>^<^^<<>v<v^>>>^>>vv<^<<<^<^>>^v>^<>^>vv><>><<^<<v>>^<v<>v>^>^<v^v<<v>vv^<<^>^^<vv^<<><<>>>v><<vv<^^v<v<>v><v>v^^<<<v^vv><<<<^^<v<v>v^<>><><vv>>^>vv>^<>>v<>v^^<vv><>>^v>v><<>^^>vv^^v^^vvv><v><^v<v^<<v<><>v^>vv^^^^<^>^<v>^^>>>>><>>vv><>^><vv^^<v<<>v^<^^^>^>vv>>v<vvvv>^<v<>^^^^v><<^v^<<<<^>>><^<^^^<>^<>^^v>v^<^^vvv^^<vv<v>^>vv^>^v<^vv<>><<<^vvvv^>>v^^>^>><<>^v>vv>^^v<<<><v^^>^><<<^<v<^^v^^<^>^v<^<v>^>v>v<<><v>>>vv<<<v>^v>><v>>^^><<vvv><<>><^<<>^<vv^<>v<^<<^<v^<v>vv<<
|
||||
^v>v^<v>^vv^<vv^<vvv<^>^<<<><^<>v>vv<<>>v>^^v<^>>v<^^^^^v>><<v<^v^><>v<>v<<^<<vv<^vv^>^vv^^<^<>v<>^^>><^v>>^v<^^^^<^<><<v>^<^>><>><vv><<<<^^v<v<^v<^>v<<^><^v^<<<^^v>>v<v>><v>v^<<>v^<<^^^>>>vv^v<v<^v<vv<<>^><<vvvv^v^^v^>^^>>><^v>>>^<v>^><<>v<^vvv^<^^<<^<vvvv>^^v^^^<><<v<<^v^v^><v^^><>v^vv>^v<<v^^v^v<v>v^<<vv^<<<>>v>vv<vv^v<>^>><><v><^^^^v^v>^<^>^^^<<>><<<v<v<^>>^v>v<><<v<^^vv<>^vvv>v^^^vv^<v><<^>vv>>>^v<^^><v<^<vv^^^><>>^v^<^v<><v><v>v^>>^<v<^<v>><>v>v><^^v>v<v^vvv^v^<^<^>^><^><<>>v<^^^>>^^^<>^^>v><^<>v^><^<>v^>>^^^<vv<vvvvv^^>v^<vv>v<><><<^><v^v<>^><v<<^vv>v><^<<>><^>^v<v>^^<<>^v<v><vv>^<^>><^^v^>^v^^<^<^<>>>^v^<<<<v>^>v<vvvv>><<v>^vv<<<<v>>>vv>>>^^><><v>^^<^v^<v^^^>v>v>>>^><<^>^v<<<<^<vv>v<v<<^>^<<^^>v^v^><^v^^v>v>>^vvv<<v>>vvv^^^>v^^>^v<^<<^<>>>><^<^><>^>^<<<v<<>v>^v^>>>v^vv>^vvv<>vv>^>^^>v^^^<^>>^vv><<><^>v>^<^>><><v>><^v<<<vv<>vv>><^^^^v>^<><v<^>>>>vv<>v>>v^><>v^vv^vv^>><^^^<>v<>vv<<v<>^<^^^<>^vv><<<>>v<><<^>>vv<>^>>>^v^>v<>v><<^^v^<<>v^v<>^>v<^>^>^vvvv^>^<<<>>>><^>>^>^^v>^vvv<vv><
|
||||
>>v><^>>>v<>><^><v^v<>><<vv>>v<v>v<>^>^<<>v>><>v<<v><v^<<v><^^>vv^>v^v><>^>^v>v<<^<v<v<v^vv>^^>>>vv>>v<^v^^^<^<>>^>^<<^^>v<><^><v^>>><vv^^v>>>>>>^<v<<^v<v><v<v<v>>v>^><^><<v^>>>>^v<<<>><<v^^^v>>vv^<<^>><^v>vv>>^v<<><>>v>>>><vv><v><v^<>^>^vv^<<><<v^^><>^>v<vv<vv^vv^<^<<^<^vv<<<^>>><^^v^<v^^v^>^v><>^<>^^v>^>vv>><>^<^>^>^><>^^^<><<<^v^<vv<^<^^v^>v<vvv^>^>>>>^v>>>^>^^<v<^>>^><>v<>v>^<vv<^v<>v^^^>v<<<>^<<<vv^v^>vvv^<v^v^><><^vv^v<^^<v<^v^vv^<>>^<^<>><<<>v><^^^v^^>^<>>^<v^<<><v><>v>^v><v>^v<^^v<>v><v><^<v^^^v^>^^<<v>v<^v>v>v^vv>^<vv>^vv><^>vv>v>>v^>^<v^v>v<<>v><><>vv^>v>^vvvv>^v<v<^v^>^>v>>v^>v<v>v>v^^^>v>>>v>v^vv<<>^>><^<^v>v^<v>^<v^^^<v<><v^>v<^v<>^><^>^v<v<<>>>>v^<>^>vv^^vv>v>^>>^>^<^^><^v^<v<v^<^><^vv<vv^v>^v<><>vvv<>^^^>v><^<<vv><vvv>>v>><<^vvv<v^>><<<v^>^<^<vv>^vvv<<>^<<>^<^><><>>>>^>^>^^><<<^<^v^<<<>><>>><<v><^v><vv^v>>v^<<>^v<>^^<>v<>>^<<>^<<<>vv<^^v<^^<<>^v^><^^vv^<v><<<^><>>vv><^<>>vvvvv^<^<<^>>v<<^^v>><>^><<<vv^^v^^<>>v<v^<^^^^^^v><^<^>><^>>v>^>>vv^>^<^><v^^>^^>><vv^^<vv^<vvv<><v>
|
||||
vv^^v^<^>>v><^^><v<<v^^<vv>^v>v^>v^v<>>>><^<^v>v>>><>vvvv<<<><>^^v^^>v>>^><v^>^>^^>><v<^<>v^v<^<vv>v>^^v^^v<^v^>v><><>>^>vv^^<<v<^^^<^v<vv^vv^^<>>v<>vv>^<>^v>>v^><<^^v<^><<v^^^^<>>^^<<^>^<v>^v^^>>^^>^^^><><<<<<>^^<^v^^><^<>v^>>v^^>^<^<><>>^v<v<<<^^v><<v>^<<<<^<><v<^v<<<>^>>v^v<^v<<^>^^<>^v<<v^><vv^><>>^^>v^<>>v>^<v^>v<><>>>v><v>v><><>>^>vv<v^>^<<><>>^<<^^<<vv>v^<vv>><v^^>v>>^<>^>v<>>>^vv<<<<<^^>^<<<><<><^^^<v>v<><<<^v><^^^v<^<vv<^>>^^<><v^^<^^^v<v<<<<v^<<v^<v<><^^<^vv^^v<^<<><^^^^>v<vv<v>^<<<v>v^^>>v<v^>><>>>>>><v><v>^^<>><v^^><<vvvvvv>>>v^<v>v><><>v>v<><<v<<>v>v<>>>^^<<^v>v^v>v<>v><>vv^><vv^>vv>>>vvv<>^<v>^><<><<^<^^<>v<>^<v<><<<<><<><vv>v<vv<^v^<^^<<v>v<v<<^^<<>>vv^v>v^>^>v>>^<^^^<^<v^v^^v^^v^<<>^v<^vv<^<<>>^>>>v><^v^<v>v>^^^^<^v>><^<><^>^<^vvvv><>v^vv>vv^<v<v^^v^>v^<>v^>^^^^<^<<>^v<<>^^>>v<^><>^<<<^^^>>vv^^^><<v^<^v<v^^v<><vvv^^v^>^v<<>v^v^<><v^<v^^>v>^<<^<v^>^^<^^v^>v<v^^<<v>^v<>v^^>><^v<^>^v<v<>^>>^>v^vv^<v>^v^>>v^^<^v^^^<<vv^<><>^vvvv<>v<v^v^v^>>^<v>><>><vv<<>>v<>^<^>^^>^vv^<<<<>
|
||||
vv<^vv<^^^v>^>><>><^v><><v^>^^v^><>v>^v>^^v<>>>^^^>>^v^v>^<v>^^<>^<>>^<v>><^^v<><v^>^<v>>^^^vv<^^v<<^vvv^<^vv<<<^v^v<v><v<^<<<<v^<^^vvv^^<v^vv>vv>v<<^v<vv<<<<v>^vv>^^^^<<v^>^v^<><<><v^><<>>>><^><<^<v^v^<<^v<<>^>v>^^^>vvv^<v<<>>v>>>^vv>>^<<^><<^^<<v^v^<v<<<<^<v<><vvv^^^>^^><<v^v^v^^v^<v<^<vvv>>^^vv>>>v^^>>><>^<<^<><<v>>^^^v<^^<v<<v<<v^v<^^v><vv>^<>v<<^^^^>^<^^^v>^<<><><vv^^<<>>>^<vv>v^>vvv<<^>><^^<<<><<<><>>^<<v<v<^^>v>>^^v>^>^^v<^<<<v>v><^>^^^^>^^<>^<<<<>^^^vv<^<^^<v<<v^^<<<v<v<^>v^<>>>>^^<v>v<v^<<<<v<<>v<v>^v>^vvvv><vv>v>^<^<>^<>v^<v>>v^>v<^><<v^^v>^<<v<v^^^<><^>v><>v<v>>v<><>v^^^vv<>v>v^^<^<<^>>^<v<>>^<^>v^^^<>>^<vvv<v>v>>^vv>^^v>><><<<>^vvv<vv^>^v^vv>v><v><v><v><vv>v<<>>><<>>^v^>^v><v^>v<^v<v<vv>><^<<<v<^<^<><<^<<>^>vv^v^>^>v>>><^v<v^vv^>^^<v>vvv^^<<^<v<vv<^<<v<>vvv<^<v^v>v>>>vvvv^>>^v>^^>>>^v>v^^vv^v^^>><v<^<<><>^<<v^v>vvvv<^<^vvv>v^<<><>^><^vv<^^^><>v<^>v<v<v<v<v<>v>^<<>v<vv>>vv<>^^v>>>>^>>vv>v<<v<><^^^<<>>vv><<^<^><>^<v<>v<v>>>^^>v<^><^<<><<^v^>^<^<^>v^vvv^v<><^>vvv>^v<^^>>v<<v><
|
||||
v^v<^^>>>^>>>>v^>>^>vv><>^vv^v>vv^v>v<^^<<^<^<<>>^>^<^<vv^^>^<>vv>vv<<<>v^<^v>^^<v<<>v><v<v>>>><v>v^^v>^^v^v<<<<^v<^^^><vvv<v>^^v<><vv><^v<<<v><v<>^v<^v<><^<v<^<>><^>><^<v<v<^>>>>^><vv><^>>^^v><>v^vv<<^<>><^^<vvv>><>>>>v><><>^^<<^^^v<><<>^>v>>><^^<<<<<<vv^>>v^^vv<v>>v<<<v><>v^>vv<>>v<^v^>>>v<>^^><^^vvv^^<^<>><<<v^^v>vvvv^<<<vv^^^>>^><v>>>>><<^<^v^<<^v^>^>vv><^^><<<v<^^^v>vvv<<vvv>^>^<^^<v><<^<^vv<><>><^><v>^>^<^vvv^<<<v<>v^<v<^v<v<v<><<v^^<><<<v^v>^>>^v^^<<<^<v>v^^v<><v<>v>>v<>><>v<>^<v^<^<>v<^>vvv<^v^><<<><^v^^>>v<<v^>^<>^^>><^vv^^^^vv><<vvvv<>^>v^<^v<>vvv<<>^<v>v^v^v<>>^^vv<v^>v>v<<^>>><<^v^vv^>v>><>>^v<>>^^v<<>^^^<<^^^<^>^<<>>>^vv<v>><v^v<<vv<^v^>><>vvvvv^<^>>^v><>>^^<>^v<^v<<><<>v><<^^vv<<>vvvv<v>v^>>>>v^^<><^<>^><v^>v^v<<>>vvv<^v^v^<v<^><>>v<<v>^>v^^^vvv>>^>v>v><<<>^^vv^^v^>vvv^<^>>v>v<vv>v>^^<^^^v<v>^<^<v^><<<>>^<<v>><<<>>>>>v<^v<>vvv<<><<^<^^<><^<<vvv^<<^^>^>^^^<^<vv<v<<<<vv^^>v>v<v<^<<>vv<^v>v>v^<>v>>>v<v^^<^<<v^v<<^^>^^><v><>>><<v<<>>>>^><><<<>^<><>v^>>^><><<<<>^><<v>>vvvv>^v<
|
||||
<^vv<><<>v<<^^>^>>>>^<^>><>vvv><<v>vv^v><^>><^vv<vv^^>v>vv^^>^<v<^<<^^v><^>v<<v>^^vv^<<^vvv<>>^>>vv<>^vv<v^^^^>>^^<><vv>^><v<>>^^v^^>><<<>><<<v^<>^<^^^<>^><>^v<v<^<><^<^>>^v>v^<^<>v^v>vv<^vv^v<v<v>>^^^<v<<vv>v><><<^<><vvvv<vv<v^^vvvv<^>v<v^><v<>><v<vv^^<^^>><^vvv^<><>^>>><>v><>^>vv>^<>v<v<><>>>v<^<v>vv^^v<^<v><v>v<^<vv>>v<vv<>vv><^>><^^>><vvv<<><v<v<<<^v^^vv>>v>v^><<>v^>v<vv>v<><v^>v^<v<^v^<<v<<>v^<vv^>^<^v>>v>>^^<^v^><v^>><^^v<<<vvv<>v>^<><>vv^^<^^>v^>>^<vv^><<<v<>>^vv<><^>^^^v^>v>>v<^^<v<^v^>^<^>v^^v>v^v^<>v<<vv^v^v<<v>^>^^^<vvv<v^^>vvv<^>v>vv><<v><v^>v<v<^<>^<>>^><><v<<<^><v<<><^>vvvv>^vvvv^<>vv^<<^><^<v>^v^v^<vvvvv>v<v<<<^<v>><^>vv><^>v>><>^v^>^<>>v<v<<>^vv>v^^^<^vv^><<>v<v^v^^<<>^^>vv><<v><><^v^>>v>^>^<v^^<<^^^><<v><^v<^<>v^>vv^<^^>^<vvvv>^v<v<>v>><^^<v^<><^<<><>^v<<vv^vv^<^vv^v><v^<>v^<^<>vv>vvv>^vv^>^<><<^^^^>v>>^<>v>v^^<^>>v<<<^v>>>>>^<><<<vvv<v<v<v><v^^^^<^<<>vv<^<v<><v>^>>^v^<<>v^<v^<v^^><><<^vv<<<<^<^^^<<v<<^>^^>>vv>^^>^vvv>v^>^<<>vv>v<v><^^vv^v><<v>^^vv><^v<v>^v>v^<^vv^v^vv
|
||||
v<><<^^^v>^v^><^<><><>>^>^>v^<<>v<><^<>>v^^v<<vvv^^><^^>>v>^>^<^<^^^^<>vv<>^>^vv^^>^>v>^v<v>><v^>^<v<^><^>^vv<><>>v<<<^v<>vv<v>vv^>>vvv^<><^>>^^>>^>vvv>v><^><<^v<^>>v^^vvv^^<^v>v^vvv^>v>>>vv>v><^><><<^>><^v<<^>v<>^vv>>^^^^v<vvv<><>v>><v<v<><<<<^^^v^v>^v>vvv>><vvv>><^>^<>vv^^<>v^>^^<>>^vv><^^>vv^v<>^>>^v^<^<>^vv>^v^>>><^<>v<>^v<^>><<>><>v>>>^v^^^<^^<>>^^^<v>^v>^^vv>><v<^^^^>>vvv>vv>>>v<^v^v^^><^<>><v<v<>vv<>v^v<v<vv><><<<^vv^^^<^><<^^^^v>>^<v<^><><v^><<<v>>v<><><>v^<<>v^>><v<>>^>^^^<><>^>>>v^>v<v>>>v<^v^^>^^^^>>v^>>><<<>>><>>>^>v^v^v>v^v^<>>>vvv^vv^<vv><>^v<>v^^<<^><v<^<^<<vv^vv>^<>^<^>>v^v>>v^<<v>^>^^<^^^>^v>^^>vv<vvv^>>vv<v<v<>^v>v^v^<<vvv<v<<>>v^>vv^^^v<vv<<<><<^vv<>>^>^<>vv<^>>>><>^><v>^v<<^v>v<<v><^<v^v^^>>^<^^^>>v>v>v<^v><<><v<^>v<<^><><>><v>^^vv<^v<><<>^^v>^^^v^v^<<^v^<>^<^<^vv^^v><<^vv^<v<<^^<>v<<v<>^^<<v>^><^>^><^^><>>>^v<^<>^^>><<^v<^<<<<><vv>>v^>^v^v<>>^^<<v^><^^>>v>^><>^^^<^>>vv^><<<^<>>^v>>v<<>>^>^^><v>^^<v^^v>^<>v^vv><^^^^v>^>><>v<>v>^v^^^^^v^>^^v<<>>^<<<>v<<vv^^><><^<<v<v
|
||||
vvv><<^^<^>><^^^v^>v^>^v<v>>v<<<>>^<<>><vv<<<v^>^v><<<^<>>>>>^v<v><>><>^>>>>>>v<<^^^^v^vv<^^^>v^v<>^vvv^^v<><^v<^v<vv^v>>>^^^<^<v^>vv>>><^>>>v>^<><><<<>>^^^><v^<v>v<v>v<>>^><>><<vvvvv><vv<>v<><^>v>>v><>>>v^^>^><<<^<>^^^<<<<>vv<^vv<>>^><^><>v<vv^^^>^>^<<v<^v<>v>>^>^^>vv<>^v<^^<><<>^^<>^>^^^^^^<^^<<vv<^^^><<<<v<^v>>^^>^v^^^>vvvv<^v^<^<^^<^v>^^^^>^<>v>><<<vvv<<>^<><v><^^>v<v><v^<^vvv<<v<>>v^<<<vv^>>^>><^<^><<^v^^<v>>>>^<vv^<<^<<v^^^^v^<<^<><v^>><>><<<><vv<<<<^>^<<v<><><^>^>>v^^><^<^v^<>^vv<<v>^<<vv>^<^^<v^v^^^<<>v>vv>^>>v^<<v^v>^<^<>^<v><v<vv><vv><>^<v^v<^>vv^^vv>v>><^>>><<^^^vv^<^^<v^^<<^<^<><^<v>>^v>^<>^v><>^v^><>>^<<vv>vv<>vv<<<<^^vv<^<v^^><v>>^^>v^vv>^<<^v<^vv>v^^^^v^^v^vvvv>^><<^^>v^<^v<>>^^<>^v^<<<^>><>^vv^<v^^>v><v<<<^v><<>v<<v<^<vvv<^^^<>v><vv<<^>>>v^^v^<<vv<<>^><v^<^>v<^vvv<<v<v>^<<<><>>^<<<>v^vv^<^^^^>>>v^v<^vvvv>^<v>^^^^>vv^^v>vvvvv^<<<v<<v>^v^v<v>^<<<>^>^><^>>v^<v<>v^<><^<^vv>vv<v^vv^>>v<v<<><<<<<<>>>v^>^^>>^v<>v<v<>v^<><>^^^>v>v><<<<^<v^><<><v<><>>^v>>>v^v^^v<>><<vv^>><><v<^>
|
||||
141
Inputs/Day16.txt
141
Inputs/Day16.txt
@@ -1,141 +0,0 @@
|
||||
#############################################################################################################################################
|
||||
#.........#...........#.................#.......#.............#.....#.#...#...........#.....#.....#...#.......#.....#...........#.......#..E#
|
||||
#.#######.#.#.#######.###.#########.###.#######.#.#.#.###.#.#.###.#.#.#.#.#.#####.#.###.#.#.#.#.#.#.#.#.#.#.#.#.###.#.#####.###.#.#####.###.#
|
||||
#.#.....#.#.#.#.....#...............#.#.#.....#...#...#.#.#.......#...#.#.#.....#.#.#...#.....#.#.#.#...#.#.....#.#.........................#
|
||||
#.#.###.#.#.#.###.#######.###########.#.#.###.#.#######.#.#.#########.#.#.#.#####.###.#####.###.#.#.#####.#######.#.#.#.#.#.#.#.###.#.#.#.###
|
||||
#...#.#.#...#...#...#.....#...........#.#...#.#.#.......#.#.........#.#.#.#.#.....#...#.........#.#.....#.......#.#.#.#.....#.......#...#...#
|
||||
#.#.#.#.#######.###.#.###.#.#########.#.###.#.#.#####.#.#.#.###.###.###.#.#.#.#.#.#.###.###.#####.#.#######.###.#.#.#####.#.#########.###.#.#
|
||||
#.#...#.......#...#...#...#...#.#.....#...#.#.#.....#.#.#...#...#...#...#...#...#.#.#...#.........#.#.....#.#...#.#...#...#...#.......#.....#
|
||||
#.#.#.#######.###.#####.#.###.#.#.#######.#.#.#####.###.###.#.###.###.#########.###.#.###.#.#######.#.###.###.###.###.#.#.#.#.#######.#.#.###
|
||||
#.#.#.......#.#.#.#...#.#.......#.......#.....#...#...#...#...#.#.....#...#.....#...#.#.....#...#...#...#...........#.#.#.#.#.#.....#...#...#
|
||||
#.#.###.#####.#.#.#.#.#.#.#########.###.#####.###.###.#.#.#####.#######.###.#####.###.#####.#.#.#######.#.#.#####.###.#.#.#.#.#.###.###.#.#.#
|
||||
#...#.#.........#...#.#...........#...#.....#...#...#...#.#.........#.....#.#.....#.#.....#.#.#.......#.#...#...#.......#.#.#...#.#.#.....#.#
|
||||
#.#.#.###############.#.#.#.#####.#####.###.###.#.#.#####.#######.#.#.###.#.#.#####.#####.#.#.#######.#.###.#.#.###.#####.#.#.###.#.#.#.#.#.#
|
||||
#.#...#.....#.#...#...#.#...#...#.....#...............................#...#.............#...#...#.................#.#...#...#.....#.....#...#
|
||||
#.#.#.###.#.#.#.#.#.#####.###.#.#####.#.#.#.###.###.#######.#.#####.###.#.#########.#####.#.###.#####.###.###.###.#.#.#.#.#.###########.#.#.#
|
||||
#.#.#...#.#.....#...#.....#...#.#...#.#...#.#...#...#.......#.#...#.....#...#.............#...#.....#.#...#...#...#.#.....#.......#.......#.#
|
||||
#.#.###.#.###.#.#####.#####.###.#.###.#####.#.###.#.#.#######.#.#.###.#######.#############.#.#.###.#.#.#.#.###.#.###.###.#.#####.#.###.#####
|
||||
#...#.#...#...#...#...#.....#...#.#...#...#.#.#...#.#.#.......#.#.#...#.......#.....#.........#...#.#...#.#.#.#.#.#...#.#.........#...#.#...#
|
||||
#.###.#####.#####.#.#######.#.#.#.#.###.#.#.#.###.###.#.#####.#.###.#.#.#######.###.#.###########.#.#######.#.#.#.#.###.#.#####.#.###.#.#.#.#
|
||||
#...#.......#...#.........#.#.....#.....#.#.#.#...#...#.#...#.#.....#...#.....#.#...#.#...#.....#.#.......#.#.#.#.#.....#.#.....#.#...#...#.#
|
||||
#.#.#.#######.###########.#.#####.#######.#.#.#.###.#####.#.#.#######.#.#.#.###.#.#.#.#.#.#.###.#.#.#####.#.#.#.#######.#.#.###.#.#.###.#.#.#
|
||||
#.#...........#...#.....#.#...#.......#...#...#...#.#.....#...#.......#...#.....#.#.#.....#.#.#...#...#...#...........#.#...#...#.#.......#.#
|
||||
#.###########.#.#.###.###.###.#########.#.#.###.#.#.#.###.#####.#######.#########.#####.#.#.#.#######.#.###.#####.###.#.#####.#.#.#.###.#.#.#
|
||||
#.......#.....#.#.............#.........#.#.#...#.#.#...#.#...#.....#.#.#...#...#.......#.#...#.....#.#.....#...#...#.....#...#...#.........#
|
||||
#.#####.#######.###.#.#######.#.#########.#.#.###.#.###.#.#.#.#.###.#.#.#.###.#.###.#.#.#.###.###.#.#.#######.#.#######.#.#.###.#######.#.#.#
|
||||
#...#.#...#.....#...#.....#.#.#...#...#...#.....#.......#.#.#.#...#.#...#.#...#...#.#...#...#.....#.......#...#.......#.....#.#.#.......#.#.#
|
||||
###.#.###.#.#####.#####.#.#.#.###.#.#.#.#######.#.#########.#.#.###.#.###.#.#####.###.#####.#############.#.#######.#.#####.#.#.#######.#.#.#
|
||||
#...#.......#...#...#...#.#.....#...#.#.....#...#.#.........#.#.#...#.#...#.#.........#.....#...........#.#.#.#.............#.#.....#.....#.#
|
||||
#.#.#####.#.###.###.#.###.#######.#.#.###.#.#.###.#.###.#####.#.#.###.###.#.###########.#####.#########.###.#.#.#############.#.###.#.#.#.#.#
|
||||
#.#.....#.........#...#.#.......#.#.#...#.#.#.#...#.....#.....#.#...#.....#...#.........#.....#.......#.....#...............#...#.#.#.....#.#
|
||||
#.#.###.#.###.#########.#######.#.#.###.###.#.###.#####.#.#########.###.#.###.#.###########.###.#.#######.#.#####.#.#.#####.#.#.#.#.#.#.#.#.#
|
||||
#...#...#...#.#...............#.#...#.#.#...#...#.....#.#.#.......#.#.......#.#...#.........#...#.#.......#.......#.#.#.#...#.#...#.#.#...#.#
|
||||
#####.###.#.###.#########.###.#.###.#.#.#.#####.#######.#.#.#####.#.#######.#.###.#####.#####.#####.#############.###.#.#.###.#.###.###.#.#.#
|
||||
#.....#...#.....#...#...#...#.#.#...#.#.#...............#...#...#.#.....#...#...#.........#...#.....#.......#.........#.#...#.........#...#.#
|
||||
#.#####.#.#######.#.###.###.#.#.#.###.#.#####.###############.###.#.###.###.#.#.#####.#.#.#.#.#.#####.#.#.#.#.###.#.###.###.###.#####.###.###
|
||||
#...#.#.......#...#.....#...#.#.#.#...#.#.............#.......#...#...#...#.#.#.#.#...#.#.#.#.#.#.....#...#...#...#.....#.#.................#
|
||||
###.#.###.###.#.#######.#.#.###.#.#.###.#.#####.#######.#.#####.###.###.#.#.#.#.#.#.###.#.#.#.#.###.#####.#####.#######.#.#########.###.###.#
|
||||
#...#.#.....#.#.#.......#.#.#...#...#...#.#.....#.......#...#...#.....#.#.#.#.....#.....#.#...#...#.....#...#...#...#...#...#.....#.#.......#
|
||||
#.###.#.#.#.#.#.#.#######.#.#.###.###.###.#.#####.#####.###.#.###.###.###.###.###.###.###.#.#.###.###.#####.#.###.#.#.###.#.#.#.###.#########
|
||||
#.........#.#...#.#.....#.#.#.#...#...#...#.#.....#.....#.#...#.#...#.....#...#.....#.....#.#...#...#.#.....#...#.#.#.#...#.#.#...#...#.....#
|
||||
#.#.#.#.#.#######.###.###.###.#####.###.#####.#####.#.#.#.#####.#.#.#######.###############.#.#.###.###.#######.#.#.#.#.###.#.###.###.#.###.#
|
||||
#.#.#...#.#.....#...#.#...#...#.....#.......#.....#...#.#.........#...#.................#...#.#...#...#.#...#.....#.#.#.#.#.#.#...#.#...#...#
|
||||
#.#.#####.#.#.#####.#.#.###.###.#####.#####.#####.#.###.#.###########.#.#####.#######.#.#####.###.###.#.#.#.#######.#.#.#.#.###.#.#.#####.#.#
|
||||
#.#.....#.#.#.....#.#.#.........#...#.#...#.....#...#.#.#.........#...#.#.......#...#.#.......#.#...#.#...#.#...#...#...#.#.....#.......#.#.#
|
||||
#.#####.#.#.###.###.#.#####.###.#.###.#.#######.#####.#.###########.###.###.###.#.#.#.#########.#.###.#.###.#.#.#.#######.#############.#.#.#
|
||||
#...#.#.#.#.#.#.#...#.#...#.....#...#.#.......#.#.....#.#...........#.#...#.#...#.#.#...#...#.....#...#...#...#.#.#.............#...#...#...#
|
||||
###.#.#.#.#.#.#.#.###.#.#.#########.#.###.###.#.#.###.#.#.#######.###.###.#.#.###.#.#.#.#.#.###.###.#########.#.###.#.#########.#.#.#.#####.#
|
||||
#.....#.#.#.#.#.#.....#.#...#.....#.#.#...#...#.....#.#...#.......#.........#.....#...#.#.#...#.#...#.......#.#.....#.#.......#...#.#.....#.#
|
||||
#.#####.#.#.#.#.#####.#.###.#.###.#.#.#.###.#########.#####.#####.#.###############.###.#.###.###.###.#####.#.#######.###.#########.#####.#.#
|
||||
#.#.....#.#...#.......#...#.#.#...........#.#...........#...#.#...#.#.#.......#...#.#...#.#.#.....#.....#.#.#.#...#...#...#.........#.....#.#
|
||||
#.#.#####.###.###########.#.#.#######.###.###.#.#########.###.#.###.#.#.#####.#.#.#.#.###.#.###########.#.#.#.#.#.#.###.#.#.#######.#.#####.#
|
||||
#.#...#.....#...#.........#.#.......#.....#...#.#.........#...#.......#.#...#.#.#...#.....#.........#...#...#.#.#...#...#.#.#.....#.#.#...#.#
|
||||
#.###.#####.#.###.#########.###.###.#####.#.###.#.#########.#.#######.#.#.###.#####.#.#.#.#####.###.#.###.#####.#####.#.###.#.###.###.###.#.#
|
||||
#...#.....#.......#.......#.#.....#.....#.#.#...#...#.......#.........#.#.....#...#.#.#.....#...#...#...#.#.....#...#.#...#.#.#.#.........#.#
|
||||
#.#####.#.#.#.#.###.#####.#.#.###.###.###.#.#######.#.#.#######.#####.#.#.#####.#.#.#.#####.#.###.###.#.#.###.###.###.###.#.#.#.###########.#
|
||||
#.#...#.#.#.#.#...#.#.....#.#.#.#...#.....#.......#.#...........#.....#.#.#.....#.#.#...#.#...#.#...#.#.#.....#.....#.#...#.#.#...#...#...#.#
|
||||
###.#.###.#.#.###.#.#.#####.#.#.###.#.###########.#.#######.#.###.###.#.#.#.#####.###.#.#.#####.###.###.###.#####.#.#.#.#.#.#.#.###.#.#.#.#.#
|
||||
#...#.....#.#...#...#...#.#...#.....#.........#.#.#.........#.#...#.#.#.#...#...#...#.#...#.....#.#...#.#.......#.#.#...#...#.......#.#.#.#.#
|
||||
#.#########.###.###.###.#.#######.#.#########.#.#.###.#.#####.###.#.#.#.#####.#####.#.###.#.#.#.#.###.#.#####.#.###.###.###.#.#.#.###.#.#.#.#
|
||||
#.....#.......#.#.....#...#.......#...#...#.....#...#.#.#...#...#.#.........#...#.....#...#.#.#.....#.#.#.....#...#.....#.......#.#.....#...#
|
||||
#####.#.###.###.#.###.#.#.###.###.###.#.#.#.#####.#.#.#.###.###.#.#######.#.#.#.#.#########.#.#######.#.#.#######.#######.#######.#########.#
|
||||
#.....#.#.#...#.#...#.........#.....#.#.#.#.#...#.#.....#...#.....#.....#.#...#.#...#...#...#.........#.#.#.....#.#.......#.#...#.#...#...#.#
|
||||
#.#####.#.###.#.#.#.###########.#####.#.#.#.#.#.#####.###.###.#####.###.#.###.#.#.###.#.#.#####.#######.#.#.#.#.#.#.#.#####.#.#.#.#.#.#.#.#.#
|
||||
#...#.......#.#.#.#.......#.....#.....#.#...#.#.#.....#.......#...#.....#...#.#...#...#.....#.........#...#.#.#.#...#.......#.#...#.#...#.#.#
|
||||
#.#.#####.###.#.#######.###.###.#.###########.#.#.###.#.#####.#.#.###.#.###.#.#####.###.###.#.#.#####.#.###.#.#.#######.###.#.#####.#####.###
|
||||
#.#...#.#.#...#...#...#...#.......#...........#.....#.#.#...#.#.#.....#.#...#.#.......#...#.#.#...#...#...#.#.#...#...#...#.................#
|
||||
#.###.#.#.#.#####.#.#.###.###.#.###.#####.###########.###.#.###.#######.#.#.###.#########.#.###.#.#######.#.#.###.#.#.#####.###########.###.#
|
||||
#.#...#...#.....#.#.#.#.....#.#.#...#.....#.....#...#...#.#.....#.....#...#.#...#...#.........#.#.#.....#.#.#...#.#.#.......#...........#...#
|
||||
#.#.#.#########.#.#.#.#.###.#.#.#.#####.###.###.#.#.###.#.#####.#.###.#.#.#.#.###.#.#.#######.#.#.#.###.#.#.###.#.#.###.###.#####.#.#####.#.#
|
||||
#.#.#.#.......#.....#...#.#.#.#.........#...#.#...#.....#...#...#...#...#.#.#...#.#.#.........#.#.....#.#.#.#...#.#.......#.......#.#.....#.#
|
||||
#.#.#.#.#####.###########.#.#.#########.#.###.#########.#.#.#.#.#.#.#.#.#.#####.###.#######.###########.#.###.###.#######.#########.#.#####.#
|
||||
#.#.......#...#.........#...#...#.#...#.#...#.#...........#...#.#.#.#.#.#.......#.......#...............#.....#...#.....#.#.............#...#
|
||||
#####.###.#.#.#.#######.#.###.#.#.#.#.#####.#.#.###.#######.#.#.###.###.#.#######.#####.###.#.###.#####.#######.###.###.#.#####.#######.#####
|
||||
#.....#.....#.#.....#...#.....#.#.#.#.......#...#.......#.....#...#.............#.....#.....#...#.#...#.#.....#...#...#.#.#...#.#...........#
|
||||
#.###.#.#.#########.#.#######.#.#.#.#############.#####.#.###.###.#############.#.###.#######.#.#.#.#.#.#.###.###.###.#.#.#.#.###.#.#.#.#.#.#
|
||||
#.#.#.#.............#.......#.#...#...............#...#...#.....#.#.........#...#...#.......#.#.#...#.....#.....#...#.#...#.#...#.#.#...#.#.#
|
||||
#.#.#.###.#################.#.###.###.#.#############.#####.###.#.#.#######.#.#############.#.#.###############.###.#.#####.###.#.#.###.#.#.#
|
||||
#.#...#.....................#...#...#.#.#.....#.......#.....#.#.#...#.....#.#.#.....#.......#.#...#...........#...#.#...#...#.#.#.#...#...#.#
|
||||
#.#.#.#.#.#######.###############.###.#.###.#.#####.#.#.#####.#.#####.#.###.#.###.#.#.#######.###.#.#########.#.###.#.#.#.###.#.#.###.#.###.#
|
||||
#.#.....#...#...#.#.......#.......#...#.#...#.#.....#.#.#...#...#...........#...#.#...#.......#...#.#.......#.#...#.#.#.#...#...#.#.#.......#
|
||||
#.###.#.#.#.###.#.#.#####.#.#######.###.#.###.#.#####.#.#.#.#####.#############.#.#####.###.###.#.#.###.###.#.#.#.#.###.#.#.#.###.#.###.###.#
|
||||
#.#...#.#.#.......#...#.#...#.....#.....#...#...#...#.#...#.......#.......#...#.#.#...#.#...#.#.#.#...#...#.#...#...#.....#.#.....#.#.......#
|
||||
#.#.#.###.#.#.###.###.#.#####.###.#########.#####.###.#############.#####.###.#.#.#.#.#.#.#.#.#.#.###.###.#.#########.#.#.#.#######.#.#.###.#
|
||||
#...#...#...#...#...#.#...#.....#.#.......#.....#.....#.....#.....#...#.#.....#.#...#.#.#.#.#.#.#...#.#...#.........#.#...#.#.....#...#.....#
|
||||
#.###.#.###.###.#####.###.#.###.#.#.###.#.#.###.#.#######.#.#.#.###.#.#.###.###.#.###.#.#.#.#.#.#####.#####.#####.#.#.#.###.#.#.###.###.#####
|
||||
#.#...#.....#...#.....#...#.#.#.#.#.#...#.#...#.#.#.......#.#.#.......#.....#...#.#.#.#.#.#...#.#...#.....#.....#.#.#.#.#...#.#.....#.......#
|
||||
###.#.#######.#.#.#####.###.#.#.###.#.###.#####.#.#####.#####.#######.#######.###.#.#.#.#.###.#.#.#.#####.###.###.#.#.#.###.#.#######.#.###.#
|
||||
#...#...#.....#.#.....#.#.....#.....#.#.........#...#...#.....#.....#.#.....#.#.....#.....#...#...#.....#...#.#.......#...#.....#.....#...#.#
|
||||
#.###.#.#.#####.#####.#.#.###.#######.#.###########.#.###.#####.#.###.#.###.#.#.#################.###.#.###.#.#.#####.###.#####.#.#####.#.#.#
|
||||
#.#.......#.#.......#...........#.#...#...#.......#.#...#.......#.....#.#.#...#.#.#.............#.#.#.#.#.#.#.#...#.#.#.#...#.#.#.....#...#.#
|
||||
#.###.#####.#.#####.#.#########.#.#.###.#.#.#######.###.#.#.#####.#####.#.#####.#.#.###.#######.#.#.#.#.#.#.#.###.#.#.#.###.#.#.#####.#.###.#
|
||||
#.#...#...#...#.....#...#...#.....#.....#.#...#.....#...#...#.....#.....#.....#.#.#...#.....#...#...#.#...#.#.#...#.......#.#.#...#...#...#.#
|
||||
#.#.#.#.###.###.#.#.###.#.#.#########.###.###.#.#####.###.###.#.###.#####.#####.#.###.#.#.#.#.#######.###.#.###.###.#######.#.###.###.###.#.#
|
||||
#...#.#.....#.#.#.#.#.#...#.....#...#.#.#...#...#.....#...#...#.....#.#.........#...#.#.#.#.#.....#...#.#.#.....#...#.....#.#...#...#.#...#.#
|
||||
#####.#.#####.#.#.#.#.#####.###.#.#.#.#.###.#.###.#####.###.###.#####.#.#########.#.#.#.#.#.#####.#.###.#.#######.###.###.#.#.#####.#.#.###.#
|
||||
#.....#.#.....#.#.#.......#...#.#.#.#...#...#.....#...#...#.....#.#...#.#.........#.#.#.#.#...#.#.#...#.........#...#.#.....#.#.....#.#...#.#
|
||||
#.#.###.#.#####.#.#####.###.#.#.#.#.###.#.#.#######.#.###.#######.#.#.#.#.#.#######.#.#.#.###.#.#.###.#############.#.#######.#.#######.#.###
|
||||
#.....#...#.....#.#.....#...#...#.#.#.....#.........#.....#...#.....#.#.#.#.#...#...#.#.#.#.#.#.#.#...#.............#.....#.......#...#.#...#
|
||||
#.#.#.#####.#####.#######.#######.#.#.###.###.#############.#.#.#####.#.#.###.#.#.###.###.#.#.#.#.#.#.#.###############.#.#######.#.#.###.#.#
|
||||
#...#.#.....#.#...#.......#.......#...#.#.#...#.#...#.......#.#.#...#...#.#...#.#...#...#.......#...#.#...#...........#.#...#...#...#...#.#.#
|
||||
###.#.#.#####.#.###.#######.###.#######.#.#.###.#.#.#.#.#####.#.###.#####.#.###.#######.#.#######.#######.#.#########.###.#.#.#.#######.###.#
|
||||
#.....#...#...#.#...#.....#.#.#.....#.....#.#.....#...#.#.....#...........#.#.#...#.....#.#.......#.......#...#.....#.....#...........#.....#
|
||||
#.#.#####.###.#.#.###.###.#.#.#####.#.#####.#.#########.#.#########.#.#.###.#.#.#.#.#.#.#.#.#######.#########.#####.###.###.#####.#.#.#####.#
|
||||
#.#.....#.....#.#.#...#.#.#...#.#...#.#.....#.#.........#...#.........#.#...#...#...#...#...#...#...#...#...#...#.....#...#.#...#.#.#.....#.#
|
||||
#.#.###.#####.#.#.#.###.#.###.#.#.#.###.#####.#.#.#.#######.###########.#.#####.###.#.#######.#.#.###.#.#.#.###.#.###.###.#.#.#.#.#.###.###.#
|
||||
#...#.............#...#...#...#...#.#...#.....#.#...#.....#.......#.....#.#.......#.#.......#.#.#.#...#.#.#...#.#...#.#...#.#.#...#...#.....#
|
||||
#.#.#.#####.#.#######.#.#####.#.#.#.#.#########.#######.#.#######.#.###.#.###.#.###.#.#####.#.#.#.#.###.#.#.###.#.#.#.#.###.#.#############.#
|
||||
#...#.#.....#...#.....#.....#...#.#.#.....#.....#.......#.#.....#.#.#...#...#.#.#...#.#...#...#...#.#.....#.#...#...#.#...#.#...#...#.....#.#
|
||||
#.#.#.#.#######.#.#########.#####.#.#####.#.#.###.###.#####.###.#.#.#.#.###.#.#.#.###.#.#.#########.###.###.#.###.#.#####.#####.#.#.#.###.#.#
|
||||
#.#...#.#.....#.#.......#.#.#.....#.#.......#.#.......#.....#.....#.#.#.#...#.#.#.#...#.#.#.......#.......#.#.#...#.......#.....#.#...#...#.#
|
||||
#.#.#.###.#.#.#.#######.#.#.#.#.#####.#.#####.#.#.###.#.#####.###.#.#.#.#.###.###.#.#####.#.#.###.###.#.#.#.#.#.###########.#####.#####.#####
|
||||
#.#...#...#.#.#.........#.....#.#.....#.........#...#.#.#...#...#.#.#.#...#...#...#.....#...#.#...#...#.#...#.#.#...........................#
|
||||
###.#.#.###.#########.#.#######.#.#################.###.#.#####.#.#.#.#####.###.#######.#####.#.###.#.#.#.###.#.#######.#.#################.#
|
||||
#.....#...#.......#...#.........#.#.#.............#.....#.....#.....#.#...#.....#.#.....#.........#.#.#.#.....#.....#...#.#...............#.#
|
||||
#.#.#.###.#######.#.#####.###.###.#.#.###.#.###############.#.#######.#.#.#####.#.#.#####.#######.#.###.###########.#.#.###.#############.#.#
|
||||
#.........#.....#.#.#...#...#.#.#.#.#.#...#.#...........#...#.........#.#.....#...#.....#.#.....#.#...#.#.#.......#.#.#...#...#...#.....#...#
|
||||
###.#.###.#.###.#.#.#.#.#.#.#.#.#.#.#.#.#####.###.#####.#.#####.#######.#####.#########.#.#.#.#.#.###.#.#.#.###.#.#.#.###.###.###.#.###.###.#
|
||||
#...........#.#.#...#.#.#.#.#...#.#...#.....#.#...#...#.#.#.....#...........#.............#.#.........#.#.#...#.#.#...#.#.....#...#.#.#...#.#
|
||||
#.###.#.#.###.#.#.#.#.#.###.#.###.#.#######.#.#.###.#.#.#.#.#####.#########.#####.#########.#########.#.#.###.#.#######.#######.###.#.###.#.#
|
||||
#.#.......#.....#...#.#.....#.#...#...#...#...#...#.#.#...#...#...#...#...#.#...#.#.....#...#.....#...#.#.#...#.......#...#.....#...#.#...#.#
|
||||
#.#.#.#.#.#.#########.#######.#.#####.#.#.#######.#.#.###.#####.###.#.#.#.###.#.###.###.#.###.###.#####.#.#.#######.#.#.#.#.###.#.###.#.###.#
|
||||
#.#.....#...#.........#.....#.#...#.#...#.......#.#.#.#...#...#.#...#...#.#.........#...#...#...#.#.....#.#...#...#.#.#.#.#.#...#.....#.....#
|
||||
#.#####.#.###.###.#####.###.#.###.#.###.#.#######.#.#.#####.#.#.#.#######.#.#.#######.#####.###.#.#.###.#.###.#.#.#.#.###.#.#.###.###.#######
|
||||
#.#...#...#.....#.#.#.....#.#...#.#.....#.......#...#.#.....#.#.#...#.......#.......#...#.....#.#...#.........#.#.#.#...#.#.#.....#.....#...#
|
||||
#.###.#.#.#.#####.#.#.#####.###.#.#.#####.#.###.#####.#.#####.#.###.#####.###.#####.###.#######.#####.###.#####.#.#.###.#.#.#######.###.###.#
|
||||
#.....#.#...#.....#...#...#.....#.#.....#.#.............#...#.....#.#...#.#...#...#...#.....#...#...#.#...#.....#.#...#...#.#.....#.#.#.#...#
|
||||
#####.#.#.###.#####.###.#.#.#####.#####.###.###.#####.###.#########.#.#.#.#.#.###.#.#######.#.###.#.#.#.#.###.###.#.#.###.#.#.#.#.#.#.#.#.#.#
|
||||
#.#...........#.....#...#.#.#...#.#...#.#...#.........................#.#.........#.......#.#...#.#.#...#.#...#.....#.#...#.#.#.#...#.#.#.#.#
|
||||
#.#.#######.#.#.#####.###.#.#.#.#.#.#.#.#.#.#.###.#.#####.#.#########.#.#.#############.#.#.###.#.#.#####.#.#.#####.#.#.###.###.#####.#.#.###
|
||||
#.......................#.#...#.#...#.#...#.......#...#...#.........#.#.#.....#...#...#.#.#.....#.#...#.#.#...#.......#...#.....#...#...#...#
|
||||
#.#####.#####.#########.#.###.#.#####.###.#.#.#######.#####.#######.#.#.#.###.#.#.#.#.#.#.#.#####.###.#.#.###.#.###.#####.#######.#.#.###.#.#
|
||||
#.#.....#...#.#.......#.#...#.......#.#...#.#...#...#.............#...#...#.#...#...#.#.#...#...#...................#.....#.......#.#.#...#.#
|
||||
###.#.###.#.#.#.#####.#.###.#####.###.#.###.#.#.#.#.#####.#######.#######.#.#########.#.###.#.#.#.#.#####.#.#######.###.###.#####.###.#.###.#
|
||||
#...#.....#.#.#...#...#.#.#.#...#.#...#...#...#.#.#.....#.#...............#.........#.#...#...#...#.....#.#.......#.......#.#...#.....#.#...#
|
||||
#.#########.#.###.#.###.#.#.###.#.#.#####.###.#.#.###.###.#.#############.#######.###.###.#############.#.#.#.###.#.###.#.#.#.#.#######.#.###
|
||||
#.....#.........#.#...#...................#.....#...#...#.#...#.........#.......#...#.#...#.....#...#...#.#.#.#.#.......#...#.#.#...#...#...#
|
||||
#.###.#.#########.###.###.###.#.#####.#.#.#.#.#####.###.#.#####.#######.#.#####.###.#.#.###.###.###.#.###.###.#.###.###.#####.###.#.#.#####.#
|
||||
#...#.#.....#.....#...#...#...#...#...#...#...#.#...#.#...#.....#.....#...#...#.....#.#.......................#.....#...#.........#.........#
|
||||
#.#.#.#######.#####.###.###.#######.#########.#.#.###.#####.#####.#######.#.#.#######.#######.###.#.#####.#.###.###.#.#.###################.#
|
||||
#S..#.............#.......#...................#.............#...............#.........#...........#.........#...............................#
|
||||
#############################################################################################################################################
|
||||
@@ -1,5 +0,0 @@
|
||||
Register A: 44348299
|
||||
Register B: 0
|
||||
Register C: 0
|
||||
|
||||
Program: 2,4,1,5,7,5,1,6,0,3,4,2,5,5,3,0
|
||||
3450
Inputs/Day18.txt
3450
Inputs/Day18.txt
File diff suppressed because it is too large
Load Diff
402
Inputs/Day19.txt
402
Inputs/Day19.txt
@@ -1,402 +0,0 @@
|
||||
wugw, wrrbgr, rbgr, bgbrb, wuwb, bug, wubur, uwbuwbug, wruu, rbbr, wbgrrg, uuwr, bub, brbggggr, brgguw, gwwuu, uwrbggw, wuwrrr, wbuurww, wwwuwru, gubgr, gubu, ug, ubu, gggrgr, wg, wrgbggu, uwgwubw, bgrgb, uu, gbug, gwuwgr, bgwg, rurgb, rr, ubw, wrr, rggw, ubuu, ubr, ugrr, wrbwrruw, uw, ruggrb, urwwurg, gwr, rurwb, bu, uuu, bbuwb, urbu, ugb, uruub, gwgrrw, wbbw, rwgr, wur, bwbu, bbg, wrbugw, brgr, uurrwg, guruu, uurrrbw, bwwbrguw, gbbgu, bgg, bbwwgbw, rww, uurrr, bgubwb, wwgr, gw, wrgub, wgrg, rugwbb, bgwbuguw, brg, ggbw, bgbubb, wwgu, gwgb, grur, gubw, wbruug, rg, brubbgw, uuugr, rru, brbr, rwbuuu, ubuw, rgru, rwrwgb, wub, rwbu, bwwrr, bwrg, uggbur, gwb, gbugwb, br, rbwu, urubg, uuw, rbb, rgrwu, bguuw, w, www, wurgb, rwwu, rwg, uww, gbwurubb, uuugb, rbrurw, gggbwu, rbrwrgwr, bw, uwrw, bugw, brgguugb, brubw, bbrb, bru, urgr, urwu, bwbb, bur, rwrr, wrrbu, guu, ggugwuw, rwrurb, wbur, gbu, bbb, ur, brw, wrwbb, ugbuwgug, rrugbbru, wwggbw, gwgwgur, rgw, rwwr, wrg, wugrwru, ggwr, ggr, wug, ugu, gbbw, wgww, gwwwuw, gbr, rbwwru, bbru, ruw, gbrgw, gug, bwbuwrb, uwg, rbww, bbbrb, ub, rgrbr, ubg, wugwub, bgr, ru, bwr, bwbug, rgr, wwugr, grg, rwu, wbgg, rgwu, ubugubr, buggur, wwb, rub, wugbb, uubb, uwb, wbb, uwgbw, rubrg, rwubgu, wgwbb, bubrbrww, bg, wwrggu, gr, gggr, ggb, wuuuu, bggwb, ubgrwbr, rgubwu, rwr, gbww, wgbub, ubrb, ruu, rgg, wgrwurrw, ubwggr, uubr, wrwrbrr, ruguw, bwu, guwrug, bgggw, urubr, rruruuw, gur, wrgru, wb, rgwwg, rrguu, wwwugg, rgbg, uwwgg, urr, gwu, ruwb, buwbgur, bbwugb, bubu, rwurwg, wgrb, rrw, uwgwr, ugwu, rgrurg, ww, uwgrrrgb, wrub, bgb, grr, bgwbru, wr, brrbg, rurur, wgbbbur, brwgg, bwgwbw, uuurg, rw, uuwguu, guw, bwg, bwrrwrr, ugr, rbwrg, rwb, urw, uubg, bbwrugr, bgw, brb, rb, rbr, ubbwurb, gbw, buu, wgg, wbw, ugguubw, rurbr, rrwbuur, ubwuwr, urg, wwu, wrguwb, bbgbur, grb, gww, gb, buw, bwbg, grgb, bbu, rbw, rrbu, gruwbw, uur, wwbgr, bwbwu, bgug, uwu, wubbw, rgwr, rrgrr, gwg, bbbubu, wwgrbrw, wuuubb, gbg, uwbwbg, wgwbr, ububb, ubbb, rug, gwbbrb, ubrub, urb, ggrwrgg, rrg, wbr, uub, wbrwbb, ugg, wrgb, bbwu, grurwb, uwbr, ugug, grw, gru, rwgu, wrru, rwgggu, rrr, ugwb, rrrw, brr, buwb, rbwbrg, ugw, rwuuguw, bwgggwb, bugr, wggbrr, uwgrrbub, bgbuuwug, burrrbu, wubwuu, ubwur, ubgwb, uru, brrb, wgb, bwuwgbu, wwuwwbu, bgbbg, wwru, wgr, ggg, guwuu, brbg, gbrb, ugrg, wwgur, wbbu, rwug, gbb, wugr, wuur, ubwurrwg, gwruubgu, wrrw, wubwwg, gugur, urgwu, wrbu, wbg, grwb, ugrrrrb, grbg, ggbbu, gbru, wgw, ggug, ubuub, ggu, wuwrbugb, ugrrrr, gbbubrr, rbgbb, bwwbu, uwwu, wwgbbb, gbbu, b, brwgr, wrb, rwrrw, rubwugg, bbr, wwr, wu, bbgwgbb, rbg, rwwgbbu, bgu, wubuug, ubwww, uggr, rbbbw, rbwgwrbw, bbw, bbgr, rur, ubb, uurbg, wguwb, ubbrgug, wrwr, rwwugb, uwrubb, rrgbbru, bwb, gub, ggbu, wwg, bww, ruwrwg, gbwu, wuu, gbbur, wrubru, rgb, grugwbbw, r, rwww, rbbru, wbrrb, rwgub, ubbrr, wuw, uug, rgu, rggg, bb, g, wru, urgw, ggw, ugwwbrg, grrbw, rbu, bbgugrw, grguw
|
||||
|
||||
urwrggwgbrrwggwuubrrwwugbgbubwbuuugwbguggubrgwwrubub
|
||||
wuwguurugggwbbruubbruwbruugwbguuwrwbrbugurbgugrggb
|
||||
wrbgrwbwbgrrguwbwuugruugrwbugrwuuuuurrugrgggugwuububwrwbg
|
||||
bbbrbwrrwrgrwubbwgbbrbwbruuuwuuwwubbwwgwuwgguurbg
|
||||
bguuubgbwggwgurubuubgurruggbgubwrbrrgbbgugbbugruurggwr
|
||||
uwbbgwbrwubrwuwwbrbubbuggbbbbrugbbrwrubwrg
|
||||
rgrrgruwrrrgwwgrrrrwbuuugrgbbrgbwwruggwrwr
|
||||
wgwwuuruuwrbwbuwwwwbrgurgrgrgruwbrbugbbwggg
|
||||
guuuuwuwrwwrggggurwrugugbubrguwbrrwbwurbbrgwbwgu
|
||||
rrrugwggwgwwuugrgrggbbuwgwwrguubbbwuugbgrugwbbwwugrwgu
|
||||
urubuwwurwgurgwbggurrgrugrbwgrubbwwurbwubwgbgrgrb
|
||||
bbbwgwrbbwruubwwwwwbuubrrrguwguubbbugwrwwgugrbwugbubguwgu
|
||||
rurbwuwgugrrwbrgwrwwubgggbwugbbgbruwwbbwrggwbbgwgwgu
|
||||
ggbgbgwruwguwbwwgruwbbrbgburrwgubuwgbwrbwwwrggwgurwbw
|
||||
guwrwuwrrbwrbgugwguburrwbggurwbbrugwbgrbrwwwbwrrbbbubbw
|
||||
gwrgwrggwrgbbwuwbbwuwrgrggwgrbrwrbwbwuugrbubwwwbw
|
||||
bbwguwgwrggubrgbuuurwwwguubgbbuwbrgggguwbubrbwwrrrbwgu
|
||||
wrbwgbgwbbbwrubwbrgrwbrguguwrggbbwguwubgwbbbguu
|
||||
buwuuwurgbbuwgruwwrbbbrbrgggwwuwrubgrrbbbwwrrbwrwrbbwgu
|
||||
urbrbgugbrbgwbgwrwuuwguwgbgubrgguugbwwgbbbwrrrbubgwgu
|
||||
wgwbguwugbwguwburgbwuruuwwuwbgrbbruggbrwwruwwrugu
|
||||
ubburrrbwuwgubrwgrrbbwwrgugwgrwbugwuwrwwuwguru
|
||||
wwrbgugggrwwrbgbbbbuuurubrugrrurgbrrwrurwbwwggu
|
||||
grbuggwbruggrrrbrwbwgwubgwuubwgrwwugbwggrububgrbgrg
|
||||
brubwgubwrbrgruwwrbgruwrrguwuurwwrubrububrbgwrwrbgbbwrgwu
|
||||
wwrburrburbwbbbrrrggrbuwgubbbgwwbgbgwrububgg
|
||||
uurbgrwburugubguuwgbwruuwwubbugbgwbbggggrggrb
|
||||
uuuuurguwwurrbrrgrurwuwgbrwbggbrrugwguurgg
|
||||
rrgubrwbwwuwbbgrgbuuuwuuubgrubbgwrrgrbbrgwb
|
||||
uugwugrrgrbgrwubbrbuwugbrbgbubuubggbbgwguwwgu
|
||||
uruwwgurbrwrgwrggrgubburubrrurrwugrwbrrgbugbbwbgggwubbu
|
||||
rbbgguugrwgurwgguggggwwwwurbrgwbbbgwwruwrbuugwwgrrugurbb
|
||||
gruurgrrgrgubrugrubwugguugwbguugbrgbuuwrurruruggguwgwgu
|
||||
bguugrgrurgwggbbbrguwugbrrrggrwbguwwwrwwurrwuuwgwggbwubwgu
|
||||
gubgbwgbbruwrwwbbgubrwwrwwwgurrbububbwbwgbwuwbgbuwwgbgwgu
|
||||
wwwruwgubrbbgbburrwgwbgbrwgbrguwrbbbruuuwgrrg
|
||||
wuwbwurruwgbgurbgrwggwwwwrggbuuugbugrbwguggwggrr
|
||||
rrrwwwuwurggbbwuggruugwubgwwgbbgrrgwburwruurwugwuu
|
||||
uwwwuuugrbwbbwugrwrruuwrgurbbgbubuubgugbrurwr
|
||||
bbuurbggwuwbwbuurrrgrwbgrggggbwuwgwrwgrwgwg
|
||||
gbwrwwbwruguugwwbgbwbugwggbubgwugwbuwrrgbg
|
||||
wurbwgubrwubrrrgurgrwuguwgrgwuwwwgwguruwwurgwgu
|
||||
uuwgwuuruwuugrrrgugrubbuwgwugrbrgbgrgwwbubrubw
|
||||
wwbbgguwuwurugguugwggwrurguggburgbguruwbrbbgrbgwuwbw
|
||||
uwrgrbuwbrbgugrrbwuubrrbgbgrbbbguurugggurgrur
|
||||
wbbubggwuurugggbubwrrgbgrubggbggugwwgbggwwubugwbgrrwgb
|
||||
rgguwubwwrbwgbgggbwruwuwugrgrggbwrrwbbbugwbwg
|
||||
ubwrbbbbbbrbggbbgrwwuurwwggurrrbrbuwwuwbwrgruubuwuur
|
||||
bwuggrwwgwubbbwrggugwwrbwrrbubbugwggurgurwg
|
||||
bruugbgwbbwwbrguwrubggwwrggwgrrrrrrrruwgu
|
||||
gugbrugurbuwgrrugugbuugugrbbgwgguuuwggburgwubguuugrwggggr
|
||||
rbbrrbrbbwwgruwrwuwgggrbbbgbuwurgwgwggurrgbggubrrrugwubwru
|
||||
guurwbbubrbbrwgrggrbruubwgbuwgrugrggbbbbuubrwugburww
|
||||
bgrubggwwgwgggwuuggwgurbgggbuwurwbwbrgrguwuruwuwu
|
||||
bubwubbburbbggrwgbwurrwgbwuwrbugbwuuruwwgwubrbuburu
|
||||
brbbgrrbbuuggwbrrrwggwwugugwwbwuwgrbuwrurbuuggugbrgr
|
||||
bbuubwuubbgwwbbbgbbwbbbrgbuwwbbbburguwrgwgrbrbbbgrwrbbbr
|
||||
ggwrbwgggrrwbruubururgwruubbgurwbuwbwrwrbrrugguubrrw
|
||||
gwuguurrrwwgwwgwgwgrurgwuugrrugrbwubwrwrwwbubwwgugbbwgwgr
|
||||
rbgbbggrugwwuguuwggbugbrbgwgbbwggugruubbgugwgbb
|
||||
rrgubuubrbgrrubgguuwbrguwwubbubbububgbbgwgu
|
||||
gbgrgrwbwrugbgbgwwwwubwuwbwbwuwbwrwbgwbugwgu
|
||||
wrruguguguugwwwgwwgrrubbbgrgwgugbrbrwrrgbrubb
|
||||
brgbuwgbubgrurrgwrbubbbggbwruurwbrbbuwgrwuurbgrwrbugurbwbr
|
||||
uggrbrwwwbbrwububrrggrwrwubwuwwubgbuwgbrbbrg
|
||||
urgbggrwwwuruugrurgugrrbbbwwgrbuwuruugbbwrrurrwwwuguw
|
||||
brrgbuwwrurguggrrurbrgrgbbrbburgwwbuwuuuggguwbrwbbgb
|
||||
uwggwgrgrbbgwruwbrwubrbbrrurgrbrgwbwbuwgwgwrgubuuwrbgu
|
||||
brurrrruwrgurbgbwuwwwwrrrgwwuuggrwwgbbwgrbggubr
|
||||
ugrwbbwgbbbruggbgrwrgrguubbruuuwwwrrbguguwugurwgbggb
|
||||
ugwrubwrubuuubbbrurruwurgwgbuwbrgugwurrgwwburbubru
|
||||
wwgruuubggbgwbrbwgbuwwgbrubgggrrrwrugrggwrbrrwwuw
|
||||
bwrrrbwbbwrgwguuwubwruwgbbuugrugbggubwuubwwggrrwbrwrbwrgg
|
||||
rbbgrrwrgbrbuwwurbgwrggrbguuburubwbwbuuwguwrbrw
|
||||
ugrbubbugbrbwgbrgbuuuubrubbbrurwgurgbwuggbrurbrggugurruuwb
|
||||
wubuwurubwrrbrgrguwubuwruugugbubuwrrugbwrgwgwug
|
||||
uugurwrgwburwgbuuuwwwwrbgbgrubrrubbuguuuwbbuw
|
||||
gubuwruubgubwbrbrwwuuurwrurbrruuurrggwurwgw
|
||||
wggrbugwuuubbgrbgwuwbrwwbuuuubwurrwgubwuur
|
||||
wubugrubbrwurbuwbbgwubrgrwbubwwggwrbwggrgwbgrug
|
||||
rwwgwbwwbugrbgwbbbbwgwgbbuurrggwbrrgwgbbuwbrguwgu
|
||||
ruwwubrrrrbwrgruwrrgwrgwbwrguruwrgwubbbuggwrugwgur
|
||||
gwgubguwguwgurrruwbwgbubrwwrbggwguwbbrwwurubburwg
|
||||
ugruburuurgggwgbwugbuwgugrgbgrgbwuugruwbwwggugbwrguguuwgu
|
||||
ggubwuwwrbrubgrrrurrurwbugggrguggbwbgbwwuwwwgwggbggbwuuuw
|
||||
rgbggruubugbrurguurggurgwwrgrbubrrrubrwgbrggurguub
|
||||
rgguwwububrwgwgbguwgurbggrrwwrrbgwrgrubwugu
|
||||
burwurwrrgggwrwguburubgrrwrurgrbrrrwguguuwwburgwuuuruwgu
|
||||
wwuwurwrgggrurbbwgrrrrbwgrurrbggguuwuruuugruruuwburwgrwgur
|
||||
gwrrwruurbwgbuggbgbbgubggwwbuubgruugrwuurgbwuwwu
|
||||
bgggwrbrrrubbbbwrrrbburwgurbburwugubbggwuburbwbuwwgwwbuggwgu
|
||||
rgwuwgbbrugrwguguubwguuruubbgwugbguwurgrgbgruuwrwbg
|
||||
ggbrguguruuugwrgwrwbrbwwwgrwwrubbrwuuurbrwrrb
|
||||
bgruwubbbwrgwwbuuwrrwwuwubgrbwwurwbbugurgbgrbgggurrrw
|
||||
uurbugwuwuwwrrrwbbgwgwubwwbrguwuwrgggwuuruwrrgwbwrbbgrbb
|
||||
gwurwbbwurbbwurubbwwgwwwrrrbuwrgubbwbgrbwwbugrggwu
|
||||
wrwugwwugurwrwrurwurrgrugrubggwubwgbbguurbugrwubgwgww
|
||||
gbggrguuwuwgrwgbrgugbwwbbwuwrbwugrguuwururbbgrbwwggu
|
||||
ggruwrburubgubwurbbwbbwbwrbguubbuwwgwbbwrbbuwgrubrwg
|
||||
rbwrubrbgwwrgguwwgwrbwuurubbrguwbwrrrubbrrubbruwubwggw
|
||||
ubbrrubrbwrubbrwwgrbggbgurrwggwbggbrbrrbgurbrbur
|
||||
bwwurruwugubwrgwrwuwbwbwugurggwbwurruggggbbbrwbggbg
|
||||
wurgrugwugbuggbbrgrburgguwurgurrubguwrrgbuwwg
|
||||
buwuwrrurruuruugggggbwurubbggrgwrgrwgwgwgu
|
||||
bggrbbbgbubuuguwwgubgrgrburrrbwrbwrruwwbuwbwwbwgwgu
|
||||
gwurbugurwbbbrbburwggruwgrwburruruwuugggggwuuwbur
|
||||
rrbwgbbwrgwbwuwgwwuwbrubbwrrrubbgruggbggwgu
|
||||
wrrbruuwubugggbubbubwbgbwwbrwbbgguwrwwwwgugggggwurggggu
|
||||
gwgggbrrugrugbuugbbrugrbgugrwrbwbwrwbgwrubwubrwbbwguuruguw
|
||||
wwgbgwruubrbugrwrbuuurbrgwrrbgugugbbrwbubbrrubgrbugw
|
||||
rbbgwrgbgwgubwrguuugwgrbwurbwbbgwbrggurwugbgbbbuw
|
||||
brgbgburgbrugbwrwgrrbgugbrwugbgbgwbrgwwwwgg
|
||||
rgwbugburuwwrrgbgrbgbwrubrwwbgbubrubwurguwu
|
||||
rugurrgrgrrwgwrbbubrbrwwwuwwwwuurwwwwubbbguwuwggwgu
|
||||
ruggbwbgbbuwbugrubgugubgruggwrwwbbwgrwugwurwuuru
|
||||
wbrrwgbwbrbbbgwrgubuuuwwgrgwrbwbggwwwugbwuwwr
|
||||
rwbgwgwgrrbbbwgwurrrrbrugrbrgubrrwgwwwuwgwrwrbrwuwu
|
||||
wuwrbgwrbbuguuurubwrrurwwgrugbrurgbrgrubrurrwwur
|
||||
gugrurgugrwgwgwrwrrggrwgbwwuwurbrbbgbuwuubuggrwuuu
|
||||
brwwwguwbgrubgrgugruwwrbrugggbggbggbgwrrrguug
|
||||
buwuwugggwwwrgwrugubugbrugwrwuubgbbbwwbgrubb
|
||||
wbrguugwrbwgwgggrggbrgurbggrugubbwrbubbwggwrbuubgrrgrwr
|
||||
wrgrbwgwrbwrwgbrubwgwubbrgrguwrgrbuurgggggg
|
||||
wbuuggwurbwgwguugbuuuwugrwbwwuuuggwbuuwwbbruubwwu
|
||||
buwrgbruwbwwrgbbbuwrrrrrugbbrubbgwguuurbrrgrwuubgwguwbb
|
||||
urbuguubguwuwrwwurwwuuwwbwguugbgbgbububwwbwrwgwugwgu
|
||||
ggrgbrwrbwuurggbgbgrbugggwuubbwrgwrgbgwrrwgwgwuug
|
||||
uwwubwurrwgggwbgrbbruuwruuwbgbrgbgrbrubgbwgwwubwgu
|
||||
rrugububgrbwuguguwrrwwwrgwbwurggruwgbubbruwubuwgbgww
|
||||
uwgwgwbuwgrbgrgugwwwrwwwbuuwguwwgwuggrwbrrruwwbuuw
|
||||
bbrgwubwwuwbruuurguuwbgurwurgbgubgbrrbbwwur
|
||||
bubwrgbuwbuwugbbuburbuwggrrbuwuwrbugbbgrurbwgu
|
||||
ruubggwrgbubwbwugwrbubrrbrbrwgbwgbbuguwbrgurwgggbbbr
|
||||
brrggwurbgrrrruugbubruwrrwggugwgwwrbggrwrbguggbbbru
|
||||
buurwrwwuububbuwwuwwwbgwgubuugbrguugububbgggugbwgu
|
||||
brwuguwwggwbuggurwbuwubwgurwruuwbrurgurwuwurggbbwurruugwbg
|
||||
wrbrggrugurwgugwrggrguwrwugubwurwbrgrrbrbwgbrbuwuggbwbru
|
||||
bbbgrbwwwurubrgwwwbwbrrbbrgrruggbwubgwuwurbugrburwgguurwgwgu
|
||||
ggrrggwbrgguugbwbwugwrwuuruwubrbrbgwbbgrru
|
||||
bwggwrbgrgrrwrgwrubggwwrgwwurbwrururubwuwbruwurwgwwuwu
|
||||
urbrrugruuwbrwwrwurrwrrgbwgubuwwbwgggurrgugbwbrgbugwbggbwu
|
||||
gwugbwrugrgbbwrrbwbwgbguwggrrurbbbbugrggbgb
|
||||
brrgwrbwwbuurwuruwbwwwwrwbbbwggwgggugbguwuburr
|
||||
ruuuwgbguurwgwugwggrwwrbbbwugrbururbwburwwruuwwrugrur
|
||||
wrbuuwrwggwwrrbgwwrbuuggbgrugwrgugguruguwb
|
||||
rbrrwwbuubgrrbuwurwwuwgwguubgrgrbubrwgugwrbgruburbrrug
|
||||
gbwgugrbwbwgrwwbgbrrugwgruubwggbgruuwrwgbwrwrgbuw
|
||||
rwgrbbbgwgubrbwuubrrubbrguubbuwbgrbguggwugurgbguwrrgbb
|
||||
rwgbguwuuwgbrbrrgwgrrwuuuguuggbggggbwburugwurg
|
||||
wgrggbbrbrrruwgguwggrgugbrrbrbwbugbwwrubbbbuwu
|
||||
wrurbrubuuugugwggbugrubruwbburrrrwuuwgwuwggbbuguw
|
||||
gbrrwbwruwrrbrruguuwgbwwbugrwwugwbrgubgrur
|
||||
grrrgguwrrwwrwwgbbrgggwgbguwuuubbwugrrrugrggrb
|
||||
uurgrwubwbrrgurrguuwrbgwrbrurwrugrgubwwgwbwgbrugbgwbuguwgu
|
||||
bwbwwgbbgrwwbrbbbrgbrbwwwuruuubgrgguurbuuwgu
|
||||
grggrwbwgggbrgugrwguwrubwbuwgurrruuwbgbrrgb
|
||||
bbrruubuurbguubwuugrurbwrbgbwubwubwwrwguwug
|
||||
uugbrugbgrbugguugwbwbgrgbuurwwbuubgrgrgbrw
|
||||
wbgrbuuurbbruwwwgwrrbguugbuguggwwwuurruuurbbgwwrbgwg
|
||||
ggrrbggbbgbgwrbgggrbbbrububuwrrbuwbbwrbgrgbgrwbb
|
||||
bgwuguuubrwwuwgbbgbbbuurwwwrwwbrgbggrbbwguguwgu
|
||||
rrbgwruwbbuubbuubrbggbugwwwgbgrwgugbubwbgbbbgbbrgug
|
||||
rbwbrgbbggbburrrwguwwuwrugrgggggrwruuggrbrgubgwrwbrrubggwgu
|
||||
guburwgburrgurggurgbgrwwwbuubbwwruwrubbrbbwrgwwrruubbwbu
|
||||
uwbugwbuwrwurbrwrrrwrwwbrgrbbbwuwrrwrrrbbbwwrwrrbwgbrrgwg
|
||||
bruwrgwrugwggrgrwgrrrwwgwwugbwurggwbrrwbgwgrgurru
|
||||
gwuuruurwwguwugwurrgbuwuwwgrwgurgbbrgwurrwwg
|
||||
wgrbrgurburugugbguwwgwbwwgggbuuugwgwrwbrrrbruburwrwwgwbbrb
|
||||
uwggwbggwgggrgrbrubrbruubguuwgurggwbbrbbgrrbug
|
||||
rurbgwgbwuwuwuuubwuguwrbwgbbrururruwbgwwbuwbrrwrrurwgg
|
||||
ugwuuuurubbgbwrwgbuwrbbrwbwgwuugbrguggbubbggggubgrwuwrbbgg
|
||||
wbbugbrbgbrruwguuruwwgwgwrguwubguuwurbgwbbguwrrrwwwburguuu
|
||||
wuugrbbrrgurgbuuuruwbggrggbubwubbrgbuugrugwbgwguwrw
|
||||
guuwwrbuuurwrrwrwrwrbuugwwbuuuuugugrgbguubrrbggbgu
|
||||
rbwbbruuwwbwgwbwgugggbwwrwugguubrugubwgbbrgrbgu
|
||||
bgrgbuugggbugwbbgwurgwguuuruubrubwbubwgwgwgurrgbubrguubr
|
||||
rbggruugwbuwgugbuubugggwbrwuurgrrbwwbrurbgwbgguugbburgwgwg
|
||||
guwuurbbwwbbuwwuwwggurguwuubuwwwgrugwrubgruurwgbwggb
|
||||
gbrgbwwuggwuwgbgwbbgguwrwbwbwrwrwururbuwbgwgrrwrbuubwrrrbu
|
||||
ggbbwgbbbrbwruggurwguubbwbguwguwgbrwrrruwubrurbuguwgurgu
|
||||
bbwbwrugbwuwbwwbuugrgugugugrgwwuugwrurruwbgwwbwbwr
|
||||
gbwwwuwrwwguwburwuggwbruuwbbrubgrbrwrgwrgrgugwgu
|
||||
rrbwwbrrwgwruwwwrrgwubbugruwguggwwubrrbwwwwggg
|
||||
urrrgwgggrrrurubwurgurwgugwgrugwbbwbwwgbbrwgurgwgwbubgwgu
|
||||
rwgbwbrwwbgrbwggwbuuguuuwgbbubrgrggrwguwbrwrbrwrrwwurg
|
||||
grbrwgbrwgwbwubgrbbgwrgrwuugwbuwuuwbwugrrwg
|
||||
rgrurbbbggrrguburrwwugbgbbgbbbwuwbwrgwgwwbruuruww
|
||||
wubbgwgbggwwggwrwubbrbwrwrbruburbgwwwurgguwgr
|
||||
bbrbgbwrrbgwwwurggwgguwruwbuwbugbubbbbrwbggubuwuwgu
|
||||
uwubbwwbrurwrrrwwurbgwwrubgugrbbgwbbbrwrrrgrbruubbbburrgg
|
||||
rugwrbwugrgwwgwbbwguwbuwbugwwbugwwwurwbbguwgbgrwuwrggbgrr
|
||||
rgwgwwwuwbgwbuuwubbuwbruwgugbbugbbwrbwggwbgbwurubbrrgbrw
|
||||
urwwgrbbgbuwuubrubruburgugbgbwuurgguuwuwubwbuggbwbggwugwgw
|
||||
guugrwbbwwbwbwbuguurubuwwwrrbggbrruwwwurwbbbrbbb
|
||||
ggugbrwbgwrbrbbbrgguggwgrrggwgwrgruurgwurggwwgubgwgu
|
||||
wruugbgugwwrgbwbrbbbgrubrwbgwwguwbbgubwrguwuuwubgur
|
||||
bwuwubbugwgbrrwuuwrgbgbguwuurrbbwrwugwwwrbubgrrrwbw
|
||||
buwrbrgwbgwurrrwguuurbrrbuuurwrgwubbgwbgggguruwbgbggb
|
||||
uwbggrgwbubrbrwwwguguwrrugbbbugbbgwrrwwwgrwgbugurwrurr
|
||||
ggurbuwrwgurrgurgbuwrguwbwbrugbgburwuwuuwuubgggwruubgubwgu
|
||||
gwrrbbbgwbwuwgubbugguwurrwwbrugugwwrwbrgurrrwww
|
||||
gwruwggwrubugwgubrruruurwrggbwgrubbuubgrruwgrburwbgrrbuwgu
|
||||
gguugbgwrrbwwrrgrbrwuggrbwbgbgrwrbuwbbubwgubwuwubbg
|
||||
rruburrrwguwrrgwwuuwwbrgwgrurwurwubrubuurbgbbggrgb
|
||||
wbrgwrbgbrbwgwbuwurgrrruwbwrugwbbbgwbgwbruuuguwuwwbuguwrub
|
||||
wwrgrgbuwbbbwwurgugrruuwwwbrrwuwugwwurwgrwurubguwwg
|
||||
ruburgggurruugrubggwgugbuurgwbbrrggbwggwwrbbgrwb
|
||||
wwggruwuwwguuwwrrgubgwgbwwbrrrwwuuggugwbuurub
|
||||
gwrburbbgbrwugbwrbggrwwwwbrrgrrrurggwbbggbgbubgrrbuwrwu
|
||||
wbuubrwbrgwwubrgrrggrrurwbbwrrgwbrguggwuwwugruw
|
||||
ugbbuugguuwgwbubrwrwwrwgbbbwrwgburuwrbbuuwbw
|
||||
uuuuwbwggrrbbwwrwgrwwbwrurrbruubwwwgbgrgrrwggwwuugbgrrb
|
||||
gbbubwubwbgwubwwgruwbgrburbuwwbgwwgbwrwbwbrgwrrubwwbrug
|
||||
rwbwwruwwwgurgurrgbgubuuguwbwrugbggrwurbbrbbrbuwwrrwww
|
||||
wgwrubgwuubgwgwguguugggwwruurwwgguggbuugwbuuwrbr
|
||||
wwgrwrrgrbbwwwbgbgbubuwrwrbbbrwrgrgguwgwwugggbbgbrbwrgug
|
||||
urugwubwgubrwrbuubguggrbuuuuuwwurrgbrgbgbwwubruwuuwwwggugr
|
||||
buwuburbrgugrubggbgbrburgwrgwwgbuuuuuwgbwbrbuugrwbbbwb
|
||||
uuwgwwbwuurbbggbwrbwrbbruuururwgugwuuurwgrgrwbruwuwru
|
||||
ugubbwgubrgwgwwurbuurwwrbrwggubbguwrggrubrrbuwuubbwbrbrb
|
||||
grwwrrgwrubbwggwgwwuuuwwrwbbwbbguwubwgbrgbrgrgguugrrgrgw
|
||||
wrbrgrgwrwbruruwuwurrbwgwwbrrrwwwwrgrbwgurgrwugwuwgu
|
||||
uuguwwrbgguuwgubbwrwugbrwbbbrbugubbrbrgruugbggbwbrubwg
|
||||
wwbwbbwugbggwbguwggwbgrgubgrbrrrgbrugrgwuggubbrrr
|
||||
brgwbubggbrwbwuggububwbuuwgggrgggwgbwuwguwgwgu
|
||||
gwbwuwuuwurwguggbrbbrrwubbrbrwuuwrbbbgrgurggrrwrg
|
||||
ggugugbrgrrrwuurruuwrgbgbgugbbbrwuwbbgrggbwuggugugugb
|
||||
bgwwurubbguruuuwbuuguwwbbuuggwgbbgrbbubgubruwbgbuwwurgu
|
||||
uuguwgrrbubwrgruggubggwrgururbrruurwgrgbrgug
|
||||
ggwubwbwwbwggguugurbwrrbwrrgwrgrgbubuwuurwgbruubbwgu
|
||||
bwgbguwrgwubgrgbwuwgrggbwwrgbgwbruuwgguggu
|
||||
wbgbuwrrggwgbubgrbuugrrrwrrwguurubuurbgbrb
|
||||
wrbwbrurwrubugrrrbugrwugugrugbwuguubbrgrwwgbrruwbbwg
|
||||
gbuguwgwwgwuggrbggwbrruuwubwrgwbrwgwguwrgbwgu
|
||||
gggggbbururwbggwgwwrrguurwwgwugrrwuggbubrgrrugubgbugubwgu
|
||||
wurbgwbuguwbbgubbgwbburbbrwbbubwrbrubgugbbugwuw
|
||||
uugggbugbwwbrwuguwggrgwrbrgwwrugwgruruwgwubbbwwbbguuwugbr
|
||||
brugggrwruuuggbgwguuurwubgwuuwbruguwwrgwgbugrrwbbrug
|
||||
wurrrrbbbggrwurubbruurbrrbwwgrrrrgruubrrwwwr
|
||||
rugugrwbubrgrwbwwbuugwurrwuuguugrwurwrbbbwrbg
|
||||
rrurbgrgwrwuguggurbrbgwbgugwrbrugbggrugrrrggrw
|
||||
ubwwwwbbguugrurbgrwwgruubggbrrwgbgwrwbrgbugbbbbugwbwbb
|
||||
wwgubgrrruurgrguwrgwuwggbwbwruggrbgrbrbwgguruggwgwuurbbuu
|
||||
ggguurwuuruguggrrwgrwurbwwbwwbwrbrugbgwrwugbruugbgg
|
||||
urgbubgwbrwrgrbwgruguwugwbgrgugrgbwubrgrbwrr
|
||||
uwbwbbbbrwggwrrggwbgbwrgugbrggbwuwgubrwbgbuuwugg
|
||||
wwgbbgwrwrwrbgubgggbrbguguguubbrbbrurgbbgubbbbwgu
|
||||
burwbbguggbwwubrbugbrwwbrgwgruwrrbuggugwgu
|
||||
brrbrguwuwbrrrbuuubwwrbgbubugwwurwugrgrwurbugwwrbugbw
|
||||
gburrrgwuwrbwugugrrrurwrrrbuugruurbbguggugubwgb
|
||||
ruugrbbwbubuggbbuwgbbwgwurbrgrbgruwbrburggubrrwuburuugbur
|
||||
wwbwrbwuwguguuuurwubrwbrburbggrugurwbrrrwwbgurwuwg
|
||||
urggurrrgbbrgrwrwrbuuurbgwrugggrwbrwbgggrugg
|
||||
gurrbgbbrugbwrgwwggrururbbgwgwwbwubgwrrbubwbuubggbrbrr
|
||||
bbwwbgbrbwwrgwwrbgwbgugurugbugwubguwubruurru
|
||||
wuurbgrrgrwurrguuwuurwbwubrbgwbbbbugrwwwwbbbwwgwgwru
|
||||
uwgubbbwuwugwbrgwwguubwwugugwbubguugwgbuurgbrwbruuubuurruw
|
||||
bbruwrwuubwbugbbrbgggbwbwbuwuuubrgugugwbwwrbuwgwuwgu
|
||||
wgrgrbbgruwrgrwgbrwrwguggguwwwubgbwuwrgrbguwu
|
||||
bwbrbbwggwrruuguwgwwgubrbgurrgburuuguuguuwggwwbu
|
||||
ugrbrwugrwbwgbwbwbwrgbgugwurwwgrurrrugbwbggu
|
||||
grwrwbuuwbbrbbbuwrwubbugbbbwwgbwgruwbgrgbwguwwbwuww
|
||||
ugrgbwburbwbgrgubbuurwubrgrwubbrrruwubrugrwrwbggb
|
||||
wwrwwrwrgurgggbrubuuuuurbbrgwrgggwgrwbuwrggruru
|
||||
gwwbbrburbuuuguruubbbggwgrgrubwgruwwrbrgrgruugwrrww
|
||||
ugwrwguggubrrwwurwwwbwbwbbwwwwwguubbwwurrgwwgwbwubwb
|
||||
wburwbggrbgurbwubwubggubrwurguwbbbggbwrbbguwbwbwuurgbgg
|
||||
rwwgggwwwbubgugbubuuwwrbbuwrwwgwggbbbugwbrgbwuuuuw
|
||||
brggrwbbwrubburgwwrbburuwuugwrrwuuwgrrrbwwwgguubwwbbbbuwgu
|
||||
wuwrbwuwbwrugbrwubbbgugbgwgwbubwuurbggwwrrgrbggbw
|
||||
uwrrgrrwwugrburbbwbwbwbwuurgrgubbwwuwrgrwgbugg
|
||||
gbuwgwrwbgbgrruwrgugwuwbgwruwrbgbrrwububbrbrrbgugr
|
||||
bgbbbwwwwbbubwrgwbwrrbgggrwggwgwgbgrbbgggugwru
|
||||
wwgwwbguuwrbwuuwugwrwbgrwbururbugrrrgwbuuwrwwuuu
|
||||
brgruuuugrgwuuguwbbwgrwgbggbgrugrwwbbugrwwrrubwgu
|
||||
wburbrwbwrbwrbrrgggurruuguggwuwbrgwbgbwgbrwubgubugbur
|
||||
rgurgwgrubuuwwrugugbbggurbbgwwrrubgurwbwbbbrurburwrwwub
|
||||
wguuuubwubwgwrwuwwuururbggbgwgbubwwrwrwuuwgwbbbrgr
|
||||
uugubgbguwbggguuggrbwgwwrrguwuwbubwwrgggwgbwgrb
|
||||
gbubrbggrwwgurbbbbbuwbbwggbuwbuwurrgruwwgub
|
||||
buwrrwbuwwgwbuwuurguuwbwrbuugwwwuwgrrbubbrgrbubguruwgu
|
||||
ubruwgrwbwuurrruwbbwwwgrbbbburgwwbbuuwrgwrguburwbuggguw
|
||||
gwuuuuwgbbgbwgggubuugrbbwrrurbbrburrrgwgbwguwubwuww
|
||||
rugugrbbwuggrgbbubggubbggbrgwrbrbgubbwgu
|
||||
uuubbbggurgubgrbguuwwrgbrgrbbrbrubwguwbubwrgwwbugg
|
||||
gbwrrgubbrwgbugbrrruwubwgrwurrwwurwgwrwbrguwrgwwbrwwuwgu
|
||||
wwwbwugurwwguugrbwgruurwwrgguwuggwurugrggwguwg
|
||||
ugbrwwbwwwuwwrgrwuwbuwbgwurubwuwuuwguwubwbburwrwubuw
|
||||
grwgrggggbgwgbgbrwguugwrwbgrrurwbbwburgrwwbbwwgggrwwgugwgu
|
||||
gbrbbgbwgburbbbrwbgbuuguuurrrrwwbggbgrubuuwwwwrb
|
||||
brbugwubbrgbuubwbuguguwuugbrubgbrwwugbuwbgbwuwwbrgubrbwruu
|
||||
rbwrwurbbwubwrgrwrggrwugbbuwburwuggwgwbgbwrgwbgw
|
||||
brurwruuubwwruuwuwwwuggugrbruwbgwbugrrwurugrgubrggbwwr
|
||||
gugrwgubbwbuugwgrgrrrgwbbrguwubruwugbugrbbruuurwgbgur
|
||||
ggbrgubuwwururggrburuuguguurgubbrugurbwrggrrwbwgu
|
||||
rwuugubrrurrbguuugguwwwugrrgwgbrguubgrwbrrwguwbw
|
||||
uwuwrrruwrwwgrwgrbbwwwggwgubgrrrwggubuuuuuubrbbwgu
|
||||
ruurrrgrugrgrgwwugrwwgrbuuguurgrbrbgrwbwgwu
|
||||
buubbwwbwwrwbwwbgurgwbbrrgbwbwbuwwbwbggguburrbrrbwgurgu
|
||||
bgrurgbrrurwwbbrrwbrrrwrgrwbbrugrwbwrrgubbubrrbrgbuuwrgww
|
||||
rwbbwbgwbggwwgugrguwgbuwwubwuwwwwuwbugrwgrgguu
|
||||
bggbubgugwbbrurrubwgwbwwwuubbrguuurwruruwrwwubuurr
|
||||
buwuwbrrubbwuurwbrgwwwwrrgruwggruruggbrgwbwwwbwugrwgr
|
||||
ubbuguurburrrwggwgbwuwwrgwurgruwwwwbwwgruwbugbuugrrggbu
|
||||
ubuwrbwgwrbgugrwubbgrbwrggwrgrubbbbgurwrrwuubwbrgbbbbuggww
|
||||
uruwwuubrbgubrurwbguwrugbwruggbbwwuwuggbrwuwbuggbrbrgrbr
|
||||
uubuuruwrbbwguugwgubbwgwubbruggrgwrrgruuwuwbgwrrrgr
|
||||
gwbububbgwbwgggwrwurugrrruwuwurgbrwbgbwuwuggwgbwuwbur
|
||||
ruguuwwuurgwggbbwgggugugbbuuggwbwbbwgrruuubwrguwrruugwrbb
|
||||
bwwrugwwrgwruubbwwgbwwrwuwubbwurrrubrwwwubbubugugbuwb
|
||||
rrbwwggurwuuubgurbbwgbrbruuwbuuwwrbugggugw
|
||||
rwggguuuwbwuwwubwuuurrubgrguwuwbrgbuwbgugbbbbrwuruuurgrw
|
||||
uugubuwwwrwwuwguubgrrbrrrwrrgwubbwwbwrbgguguuguuwru
|
||||
rwugwruubgurrwrbgubuwrwuwugrwggrwwwugbubugwbbwgwburbbubwu
|
||||
bubbbrgrgbwgubwwruurgrbrbbwgbgrwgggwrbburubwb
|
||||
brwgbbwrbruggwrrbuuuuuuuuwrgbwuggrrrugwuwgr
|
||||
wggbubwgwruwrbgrguugwbruuggwbrrwbgwuwrgwwurgugwurbwbb
|
||||
gwwbrgrrrwrbgwubrwgwrwbgbburgrrwbuwgwgrgwgubbgr
|
||||
rurgrubwgwrrubburwurgrbrgurbrguwugwurrbbbbwwbbuw
|
||||
wgwugubruuugbrgrgwgbrurwbgbwbrbuwgrwurrgruwgu
|
||||
gguwggbrwwugugrbwrbrwgwwgruggurgurwrrrrwbwgu
|
||||
wwgbrrgwwuwubbuuuggbgwgrwbbrgubwwuwurwrbubggrgguurgw
|
||||
wrrrgwrubggugwgwburgbbwguguwwgurrwwgggrguguggrugwwwgu
|
||||
ruwwbrburrrrwgurruwbwgruggrbwuwuurrgbuuwbgbg
|
||||
rbugurbwgurwwrbwrruwgbgwwrwgwggrrguugrbrgwwgwwurubbrubrg
|
||||
bbbbguuuwwurwbwbggbrgwwugwbugrugubwuuwggwbwuwwrgbrguuwr
|
||||
buwubggbrwruburgbubwgbwwrwrgbwgwrwuuurrgrrwwbrrrgubb
|
||||
ggurrgbrbggggrbgwbuwurwbrguugrbuurwrgubwwubbbbwrwuwbur
|
||||
ubbwubgbrwwgrgbgrwbrruuurbwrwrgwbgrrgrbgrgwuuwwururrbr
|
||||
rrugruuwgbwuwgwuwruuwwuuguurrwbwrgugbgwwubbg
|
||||
gubuubrbbrrurrbrrwguguwrwgbbubrbuwwbuwwgubguburuggrgwr
|
||||
wguwrwrwruwbbbbwuubwbguuwurwbubgwwwwrbuugww
|
||||
bbggggggbuwgurgwurbubwubgbgburbwrrbrrrwbwubwwruwuwbggrrugg
|
||||
ggwrgbwruubwwuurgbbwrgbbgwrubwgbrbbbggbrurgugbbwgbgrugu
|
||||
ubuwugruwbrwwbbwbbuwwubgrbgbgggurrrrgbbgwbbwuu
|
||||
rrgwwggwgurgurbbbwubuugbbbgwwrrwrburubgwgu
|
||||
ugrgugbrgrwuugbuwgugrwrbwbugbwggwbwubgbruuuwbrrwrbwuu
|
||||
urgwwubwuubruguwwgurgbwgubgggbbwruwrurwwgbuwrrrbwwuw
|
||||
bgrgubruwrurggrbwuwbbwwugwburbubrrwurwubwrruuurgubrrgub
|
||||
rgbrrrwwbbuwrbruuurggurubggwbbrrbwbbrbgwrbuwgbgg
|
||||
rgguwggugruwwwbrbgrrbwugururguwuuubgruubbwwwu
|
||||
bwwbrrwuurgrruwgrguwwbgrrwrbwuuurgggbrwgbuwbguuuwggwbrrgwgu
|
||||
rbwwwrbubwggrugguugwwgwbuurburbrubuwgbururwgrgwwb
|
||||
wwwgubbwbwbgwubrrgbubuwbbbgrrgrwwrbbuwbubrrguuugruwwruwwb
|
||||
ubrbggrwgrwugwwgrugubrburgggbugwbggbburgugggwbugugguguguw
|
||||
rrrgrgrwgbgwgrgwrurwuwgurrbwwwgbgrgwwbwbubrrubrru
|
||||
wbwgrgbwbgwgbuugburrwburbuwrbwgburrgwuwrggwbwuwgbbbguwrbgr
|
||||
rwgburgwgubuugurwbwbwbuburrrbburgwwwwguwgwwbwbbwwwuwbwgwug
|
||||
rwbuuguuwrrgrwrrgruruuguwwwgbbruwbbwrbrguwgu
|
||||
guwbggbgrbbbbuwrwguwguwgrwurrwrbuurrrgruwwurrw
|
||||
wbwuuuggwbgrwggbrggwbwburgbbrwrrugbbrugurbgwgu
|
||||
wrrubbwrrwbruruwggugwwgrrwugugrgrguuggrubrggugggbrwu
|
||||
rugrgguuuubbuugbbrrwuuwgrbrgbgrbbrbugururrg
|
||||
ugggrgrwgbgwbwwrrgggbwwgbgbwrwwgwubbbrbbbuuwgwbbubbbwubw
|
||||
gwgwuwuuwgbuubbwwwrrurrbgbubuuguwwbrgwubuuwbgwwuwbg
|
||||
rurggguuubuuwrbrgwgguurwgrwugruugwwggrbuuugwbwgu
|
||||
gbburubbgbggrwubgrgrurbwgrrubuwrrbbgrgrwgg
|
||||
wgrrgwurbguwgbuwrbrurruwrbgrrbrgggguugrbwgwrbwwbrgwgu
|
||||
rgbwbrwguubrwwrwugbbbwugwurwwgurbbrgwwugbbbwgb
|
||||
ruwwgugrgrgrwgrwrbrrggwurrrwubrrbbrbwubrbwgu
|
||||
brbwrrrggrgrggbwbgubgrrugwgwuubrbwwurbwbru
|
||||
wrbrwgbwbbguburgrrgwrbrwwurugruggwgrrrurggur
|
||||
gggwrgwwbuwwbrbgbrbbgbbubbuggrgrggbwugugggrbub
|
||||
urgbwrgbgwwrgbwurgggrwgbbgwbwgrwwuuuguggbrbggw
|
||||
wwubrgbwrguwrbrurrwwwgrwrbrbrrbrrwwgbbuwwwbbbwbg
|
||||
rrgugrbrbuwwwuuwwurgubgwbbruuggbbbruuwubur
|
||||
urguwgrrrgbrrwbggbgurrrrrwggrggrrburrrgggbu
|
||||
ruwgguwurbbrgbgwgrrubwbwurwrbwgburrbbgrgburgubwwgb
|
||||
wggwubbrwwwububuugwbwbubrubuguwguwrbbrwbgwgurgu
|
||||
uubggrubwgrgbrurgbuwubgbuuwugwbuururrururgggrurwwrrgrrgbgwgu
|
||||
brrwrbrbggggrwrburbrurbuwuuguwbbrgrruwbugwwburuuugubwgu
|
||||
gbwrruugrgwbgrbruwwgrurbgwwubgwwbbggubgrwubrrburrgwuw
|
||||
uburgbbwrgrwurwbuwrrwbbbggrruwrugubruwbgwubggurbuwwbbuwgu
|
||||
wwrwguuwubrbbruguuruugbwwwrbbuubbuuubbbgrgr
|
||||
uuwgbbgguuggrwwrrrubbbbgurgrruuubwwugwgu
|
||||
guggrgrbrburubbugbugrgrggggugwgwggrrwwgbbwgu
|
||||
rbgbbwrbwggugurgubbwwwrggwgwuwgrbrrbgubbbbruw
|
||||
uuuwgrrrubbrwrbggwgguubbwbrbrwbgrgwbubwggwubgrub
|
||||
rurwruuwwgwrguwugruburbgbuugugwuubrbbwurgrbrbugwubr
|
||||
urrruurwuwbbbwububwrgguwbrgrbuubgrwuguwurwrbubrugu
|
||||
gugwgrrrbrrrgrrwwgrggbuggbwbwgbburbwwggguwrub
|
||||
wguwwwgwggwwurrrguwuwbgrgbrgwugbwbwwggbugbggr
|
||||
gwgrwrgwbbburggrbwwurrrgbguurrrgrbrugwgbwurwguwbgbgrbug
|
||||
rbbrrrbuuurgugwgrrbuwrbrrurwuwgrrrgbugbwgu
|
||||
urwgwbuuwrgwwrrggwwubbrbwguuwbwrggbbwwwwbwrrrwwgbwwurbrrg
|
||||
wwbguurugruuwuubugbgrwgwwggrbubrggwrwruubwrgwub
|
||||
ubgruruguugrwbwbuwbbwruubwgrrurwwruwugwbruuurrwwrrgruugw
|
||||
grbubwruwubgugggrrgrbwgurbgwugwwggrrbrgrbuwbbbrbwgu
|
||||
wrgrrubgggrurgwguurubwgggbwuwrrubrugbrgbrbggwgg
|
||||
gwgbrgrrbbrgubgrubrwrwrugrgubrgruuguwrwubwwwrgbubwwggbbwgu
|
||||
bwbwgbgwbwwbuuwbrubggggbugwgbgbuuwggrwuwrbr
|
||||
wugrwurwgrbugrwrwrwrrgwwuugrrwgrgbgbuwgu
|
||||
urbbubruuggrugwwrbrrguugguuwuuwuuubrbgbbggrgbug
|
||||
rrugubrbbgbwrbggguugrbrrrbruugruuggrbgwbuuwuururugwruug
|
||||
burwbgbgruwrurbrwuwrgurgrrbrbbguwwbbrwgbwbgwrwbruuwbgwgww
|
||||
wbubuuwbrwuwwruggbbugbrrrgbgwguwwgrgurgwrugrguurrrrbbgrbbwgu
|
||||
rbwrbubggwuubugbrubuurruguwrrwgubwrwwububwrgrguw
|
||||
gbrgubrugbwrgwwwwrbugwwgwgwrbrgwuuggrubwrbrugwbbruubwgu
|
||||
wbgrubbrgwgrbrbuuuubuugwubbugwbuggwrburgwugw
|
||||
grwgrbgwwrubruuubburwgbwgugwugwwrbwbwwrguwbbubuuwguwr
|
||||
1000
Inputs/Day2.txt
1000
Inputs/Day2.txt
File diff suppressed because it is too large
Load Diff
141
Inputs/Day20.txt
141
Inputs/Day20.txt
@@ -1,141 +0,0 @@
|
||||
#############################################################################################################################################
|
||||
#.......#...#.......#...#.....#...###...............###.......#...#...#...#.....#.......###.....#...................###.....................#
|
||||
#.#####.#.#.#.#####.#.#.#.###.#.#.###.#############.###.#####.#.#.#.#.#.#.#.###.#.#####.###.###.#.#################.###.###################.#
|
||||
#.#...#.#.#.#.....#.#.#.#...#.#.#.#...#...#...#...#...#.....#.#.#.#.#.#.#...#...#.#.....#...#...#.........#.........#...#.................#.#
|
||||
#.#.#.#.#.#.#####.#.#.#.###.#.#.#.#.###.#.#.#.#.#.###.#####.#.#.#.#.#.#.#####.###.#.#####.###.###########.#.#########.###.###############.#.#
|
||||
#...#.#.#.#.#...#.#.#.#.....#.#.#.#...#.#...#...#...#...#...#.#.#.#.#.#.....#...#.#...###...#...#.....###.#...#...#...#...###...........#...#
|
||||
#####.#.#.#.#.#.#.#.#.#######.#.#.###.#.###########.###.#.###.#.#.#.#.#####.###.#.###.#####.###.#.###.###.###.#.#.#.###.#####.#########.#####
|
||||
#.....#...#...#...#...#.......#.#.###.#.###...#...#.#...#...#.#.#.#.#.#.....#...#.#...#.....#...#.#...#...#...#.#.#.#...#.....#.....#...#...#
|
||||
#.#####################.#######.#.###.#.###.#.#.#.#.#.#####.#.#.#.#.#.#.#####.###.#.###.#####.###.#.###.###.###.#.#.#.###.#####.###.#.###.#.#
|
||||
#.....#.......#.....#...#...#...#...#...#...#...#...#.......#.#.#.#.#.#.#.....###.#...#.....#.###.#.#...#...#...#...#...#...#...###...###.#.#
|
||||
#####.#.#####.#.###.#.###.#.#.#####.#####.###################.#.#.#.#.#.#.#######.###.#####.#.###.#.#.###.###.#########.###.#.###########.#.#
|
||||
#.....#.#...#...#...#...#.#.#.#.....#...#...............#...#...#.#.#...#...#...#.#...#...#.#.#...#.#.#...###.......#...#...#...#...#...#.#.#
|
||||
#.#####.#.#.#####.#####.#.#.#.#.#####.#.###############.#.#.#####.#.#######.#.#.#.#.###.#.#.#.#.###.#.#.###########.#.###.#####.#.#.#.#.#.#.#
|
||||
#.#...#.#.#...#...#...#...#.#.#.#...#.#...#...#.....###...#...#...#.#.......#.#.#.#.#...#.#.#.#...#.#.#.###...#...#.#...#...#...#.#.#.#.#.#.#
|
||||
#.#.#.#.#.###.#.###.#.#####.#.#.#.#.#.###.#.#.#.###.#########.#.###.#.#######.#.#.#.#.###.#.#.###.#.#.#.###.#.#.#.#.###.###.#.###.#.#.#.#.#.#
|
||||
#...#...#...#.#.....#...#...#.#.#.#.#...#.#.#.#...#.#.....#...#.....#.......#.#...#...#...#.#...#.#...#...#.#.#.#.#.#...###.#.#...#...#...#.#
|
||||
###########.#.#########.#.###.#.#.#.###.#.#.#.###.#.#.###.#.###############.#.#########.###.###.#.#######.#.#.#.#.#.#.#####.#.#.###########.#
|
||||
###...#...#.#.###.......#...#.#...#.###.#.#.#.....#.#.#...#.....#.........#.#.#.......#.#...#...#...#.....#.#.#.#.#.#.#...#.#.#...#.........#
|
||||
###.#.#.#.#.#.###.#########.#.#####.###.#.#.#######.#.#.#######.#.#######.#.#.#.#####.#.#.###.#####.#.#####.#.#.#.#.#.#.#.#.#.###.#.#########
|
||||
#...#...#...#...#.........#...#.....#...#.#...#.....#.#.#...###.#.#.....#...#...#.....#...#...#...#.#.....#.#.#.#...#...#...#.#...#...#.....#
|
||||
#.#############.#########.#####.#####.###.###.#.#####.#.#.#.###.#.#.###.#########.#########.###.#.#.#####.#.#.#.#############.#.#####.#.###.#
|
||||
#.............#.#...#...#.....#.#...#...#.....#...#...#.#.#.....#.#.#...###.....#.........#...#.#.#.#.....#.#...#...#...#...#...#.....#...#.#
|
||||
#############.#.#.#.#.#.#####.#.#.#.###.#########.#.###.#.#######.#.#.#####.###.#########.###.#.#.#.#.#####.#####.#.#.#.#.#.#####.#######.#.#
|
||||
#.............#.#.#.#.#.#.....#...#.###.........#...#...#.....#...#.#.#...#.#...#.......#.#...#.#...#.#...#.#.....#...#...#.#.....#.....#.#.#
|
||||
#.#############.#.#.#.#.#.#########.###########.#####.#######.#.###.#.#.#.#.#.###.#####.#.#.###.#####.#.#.#.#.#############.#.#####.###.#.#.#
|
||||
#.............#...#.#.#.#.......#...#...#...###.....#...#.....#.#...#.#.#.#.#...#.#...#...#.###.....#...#...#.........#...#...#...#...#...#.#
|
||||
#############.#####.#.#.#######.#.###.#.#.#.#######.###.#.#####.#.###.#.#.#.###.#.#.#.#####.#######.#################.#.#.#####.#.###.#####.#
|
||||
#.........###.....#.#.#...#.....#.#...#...#.....###...#.#.....#.#...#.#.#...#S..#...#.....#.#...###.....#.............#.#.......#...#...#...#
|
||||
#.#######.#######.#.#.###.#.#####.#.###########.#####.#.#####.#.###.#.#.#################.#.#.#.#######.#.#############.###########.###.#.###
|
||||
#.#.....#...#.....#.#...#.#.....#.#.......#.....#...#.#...###.#.###.#.#.#######...#.......#.#.#.....#...#.....#...#...#.#...........#...#...#
|
||||
#.#.###.###.#.#####.###.#.#####.#.#######.#.#####.#.#.###.###.#.###.#.#.#######.#.#.#######.#.#####.#.#######.#.#.#.#.#.#.###########.#####.#
|
||||
#.#.###.#...#.....#.###.#.#.....#.#...#...#.#...#.#.#.#...#...#.#...#...###...#.#.#...#...#.#.#.....#...#.....#.#.#.#.#.#.....#.....#...#...#
|
||||
#.#.###.#.#######.#.###.#.#.#####.#.#.#.###.#.#.#.#.#.#.###.###.#.#########.#.#.#.###.#.#.#.#.#.#######.#.#####.#.#.#.#.#####.#.###.###.#.###
|
||||
#...#...#...#.....#.#...#.#.....#.#.#.#.#...#.#.#.#.#.#.###...#.#.#########.#.#.#.###...#.#.#.#.#...###.#.......#...#...#...#.#.#...#...#...#
|
||||
#####.#####.#.#####.#.###.#####.#.#.#.#.#.###.#.#.#.#.#.#####.#.#.#########.#.#.#.#######.#.#.#.#.#.###.#################.#.#.#.#.###.#####.#
|
||||
#...#.....#.#.....#.#...#.#.....#...#...#...#.#.#.#...#.#...#.#...#####.....#.#.#.#.....#.#.#.#...#...#.#.....#.....#.....#...#.#.....#.....#
|
||||
#.#.#####.#.#####.#.###.#.#.###############.#.#.#.#####.#.#.#.#########.#####.#.#.#.###.#.#.#.#######.#.#.###.#.###.#.#########.#######.#####
|
||||
#.#.#...#.#.#.....#.....#...#...........#...#.#.#...###.#.#.#.......###...###...#.#...#.#.#...#.......#.#...#.#.#...#.......###.#.......#...#
|
||||
#.#.#.#.#.#.#.###############.#########.#.###.#.###.###.#.#.#######.#####.#######.###.#.#.#####.#######.###.#.#.#.#########.###.#.#######.#.#
|
||||
#.#...#...#...#...#.....#.....#...#.....#.#...#.#...#...#.#.#.......#####.....###...#.#.#.....#.........#...#...#...........#...#.........#.#
|
||||
#.#############.#.#.###.#.#####.#.#.#####.#.###.#.###.###.#.#.###############.#####.#.#.#####.###########.###################.#############.#
|
||||
#...#.......#...#...###.#.#.....#...#...#.#.###.#.#...#...#.#.......#####.....#...#.#.#.#...#.....#.......#...#...###...#...#.#.....#.......#
|
||||
###.#.#####.#.#########.#.#.#########.#.#.#.###.#.#.###.###.#######.#####.#####.#.#.#.#.#.#.#####.#.#######.#.#.#.###.#.#.#.#.#.###.#.#######
|
||||
###...#.....#.###.......#.#.....#...#.#.#...#...#.#...#...#.#.....#.#####...#...#...#.#.#.#.#.....#...#...#.#.#.#.#...#...#...#...#.#.......#
|
||||
#######.#####.###.#######.#####.#.#.#.#.#####.###.###.###.#.#.###.#.#######.#.#######.#.#.#.#.#######.#.#.#.#.#.#.#.#############.#.#######.#
|
||||
###.....#...#.#...#.......#...#.#.#...#.....#.#...###...#.#.#.#...#...###...#.....#...#.#.#...###...#...#.#.#...#.#.#.............#.........#
|
||||
###.#####.#.#.#.###.#######.#.#.#.#########.#.#.#######.#.#.#.#.#####.###.#######.#.###.#.#######.#.#####.#.#####.#.#.#######################
|
||||
#...#.....#...#.....#...#...#...#.#.........#.#.###.....#.#.#.#...#...###.###.....#.#...#...#.....#.......#.#.....#.#.#.........#...........#
|
||||
#.###.###############.#.#.#######.#.#########.#.###.#####.#.#.###.#.#####.###.#####.#.#####.#.#############.#.#####.#.#.#######.#.#########.#
|
||||
#.#...###...#.........#.#.....#...#.....#...#.#...#.....#.#.#.###.#...#E#...#.....#.#.....#.#...............#.......#...#.......#.#.........#
|
||||
#.#.#####.#.#.#########.#####.#.#######.#.#.#.###.#####.#.#.#.###.###.#.###.#####.#.#####.#.#############################.#######.#.#########
|
||||
#...#.....#...#.......#.......#.#.......#.#.#.....#.....#.#.#.#...#...#.#...###...#.#.....#.#.................#...#.....#.........#.........#
|
||||
#####.#########.#####.#########.#.#######.#.#######.#####.#.#.#.###.###.#.#####.###.#.#####.#.###############.#.#.#.###.###################.#
|
||||
#...#...........#...#...#...#...#.........#.....###.....#.#.#.#...#...#...###...#...#.....#.#.#...#.........#.#.#.#...#...#.....#...........#
|
||||
#.#.#############.#.###.#.#.#.#################.#######.#.#.#.###.###.#######.###.#######.#.#.#.#.#.#######.#.#.#.###.###.#.###.#.###########
|
||||
#.#.....#.........#...#...#...#.........#.....#...#...#.#.#.#...#...#...###...#...#.......#.#.#.#...#...#...#...#.#...###...#...#...........#
|
||||
#.#####.#.###########.#########.#######.#.###.###.#.#.#.#.#.###.###.###.###.###.###.#######.#.#.#####.#.#.#######.#.#########.#############.#
|
||||
#.....#.#.........#...#...#...#.......#.#.###...#...#.#.#.#.#...###.#...#...#...#...#.....#.#.#.#.....#...#...###...#...#.....#...#...#.....#
|
||||
#####.#.#########.#.###.#.#.#.#######.#.#.#####.#####.#.#.#.#.#####.#.###.###.###.###.###.#.#.#.#.#########.#.#######.#.#.#####.#.#.#.#.#####
|
||||
#.....#...#...#...#.....#...#.###.....#...#...#...#...#.#.#.#.....#...###...#...#.#...###...#...#...........#.......#.#.#.#...#.#...#.#.....#
|
||||
#.#######.#.#.#.#############.###.#########.#.###.#.###.#.#.#####.#########.###.#.#.###############################.#.#.#.#.#.#.#####.#####.#
|
||||
#...#...#...#...#...#...#...#...#...#...#...#...#...###...#.#.....#...#...#.....#.#.#...###...#.....#...#.........#...#.#...#.#...###.#...#.#
|
||||
###.#.#.#########.#.#.#.#.#.###.###.#.#.#.#####.###########.#.#####.#.#.#.#######.#.#.#.###.#.#.###.#.#.#.#######.#####.#####.###.###.#.#.#.#
|
||||
###...#.......#...#...#.#.#...#...#...#.#.#.....#...#...###.#.....#.#...#.#.....#...#.#.#...#.#...#...#...###...#.......###...#...#...#.#...#
|
||||
#############.#.#######.#.###.###.#####.#.#.#####.#.#.#.###.#####.#.#####.#.###.#####.#.#.###.###.###########.#.###########.###.###.###.#####
|
||||
#...#...#.....#.###...#...###...#.....#...#.......#...#...#.#...#.#.#.....#.#...#...#.#.#...#...#.............#...#.......#.....#...#...#...#
|
||||
#.#.#.#.#.#####.###.#.#########.#####.###################.#.#.#.#.#.#.#####.#.###.#.#.#.###.###.#################.#.#####.#######.###.###.#.#
|
||||
#.#...#...#...#...#.#...#.....#.....#...#...#.....#.......#...#...#.#...#...#.#...#...#.....#...#...........#...#...#.....###...#.....###.#.#
|
||||
#.#########.#.###.#.###.#.###.#####.###.#.#.#.###.#.###############.###.#.###.#.#############.###.#########.#.#.#####.#######.#.#########.#.#
|
||||
#.....#...#.#...#.#...#.#...#.#...#...#.#.#.#...#...#.........###...#...#...#...#...........#.###.#.......#...#.......#...#...#.....#...#.#.#
|
||||
#####.#.#.#.###.#.###.#.###.#.#.#.###.#.#.#.###.#####.#######.###.###.#####.#####.#########.#.###.#.#####.#############.#.#.#######.#.#.#.#.#
|
||||
#.....#.#...###...###.#.....#...#.....#.#.#...#.###...#.....#.....#...#.....#.....#.......#.#...#.#.#.....#...#...###...#...#.......#.#...#.#
|
||||
#.#####.#############.#################.#.###.#.###.###.###.#######.###.#####.#####.#####.#.###.#.#.#.#####.#.#.#.###.#######.#######.#####.#
|
||||
#.....#.#...........#.......#...#...###...###.#.....#...#...#...#...###.......#...#...#...#...#.#...#.......#...#.....#.......###.....#.....#
|
||||
#####.#.#.#########.#######.#.#.#.#.#########.#######.###.###.#.#.#############.#.###.#.#####.#.#######################.#########.#####.#####
|
||||
#.....#.#.........#.........#.#.#.#.........#.....#...###.....#...#.........#...#.....#.......#.#...#...................#...#...#.....#.....#
|
||||
#.#####.#########.###########.#.#.#########.#####.#.###############.#######.#.#################.#.#.#.###################.#.#.#.#####.#####.#
|
||||
#.......#.........#.........#.#...#...#...#.....#.#.#.............#.......#.#.......#.....#...#...#...#...#...#...#...###.#.#.#.#...#.#.....#
|
||||
#########.#########.#######.#.#####.#.#.#.#####.#.#.#.###########.#######.#.#######.#.###.#.#.#########.#.#.#.#.#.#.#.###.#.#.#.#.#.#.#.#####
|
||||
###.......#...#...#.#.......#.#.....#...#.#...#.#...#.#.......#...#...#...#.........#.#...#.#.....#.....#...#...#...#.....#...#...#...#.....#
|
||||
###.#######.#.#.#.#.#.#######.#.#########.#.#.#.#####.#.#####.#.###.#.#.#############.#.###.#####.#.#######################################.#
|
||||
#...#.......#...#...#.........#.........#...#...#.....#.....#.#.#...#.#.........#...#.#...#...#...#.#.......#.....#.......#...#...#...#...#.#
|
||||
#.###.#################################.#########.#########.#.#.#.###.#########.#.#.#.###.###.#.###.#.#####.#.###.#.#####.#.#.#.#.#.#.#.#.#.#
|
||||
#.....#...#...#...#...#...#...#...#.....#.......#...#.......#...#.#...#.....###...#...###...#.#...#.#.#...#...###...#...#...#.#.#.#.#.#.#...#
|
||||
#######.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#####.#####.###.#.###########.#.###.###.###############.#.###.#.#.#.#.###########.#.#####.#.#.#.#.#.#####
|
||||
#.......#...#.#.#.#.#...#.#.#...#...#...#.#.....#...#.###.....#...#...#...#.#...#...#...###.#...#.#.#...#.#...........#.....#...#.#.#...#...#
|
||||
#.###########.#.#.#.#####.#.#########.#.#.#.#####.###.###.###.#.#####.###.#.#.#.#.#.#.#.###.###.#.#.#####.#.###############.#####.#.#####.#.#
|
||||
#...........#.#.#.#.....#.#.........#.#...#...#...#...#...#...#.....#.#...#.#.#...#.#.#.#...#...#...#.....#.#.......#.....#.....#...#...#.#.#
|
||||
###########.#.#.#.#####.#.#########.#.#######.#.###.###.###.#######.#.#.###.#.#####.#.#.#.###.#######.#####.#.#####.#.###.#####.#####.#.#.#.#
|
||||
#.....#...#.#.#.#.#...#.#.....#...#...#.......#...#.###.#...#.......#.#...#.#.....#...#.#...#.#.....#.......#.....#...###.......#.....#...#.#
|
||||
#.###.#.#.#.#.#.#.#.#.#.#####.#.#.#####.#########.#.###.#.###.#######.###.#.#####.#####.###.#.#.###.#############.###############.#########.#
|
||||
#...#.#.#...#...#...#...#...#...#.....#...#...#...#...#.#.###.......#.#...#.###...#.....###...#...#.............#...#...#.....#...#.........#
|
||||
###.#.#.#################.#.#########.###.#.#.#.#####.#.#.#########.#.#.###.###.###.#############.#############.###.#.#.#.###.#.###.#########
|
||||
#...#.#.........#.....#...#.#.......#...#...#.#.#.....#.#.#...#.....#.#...#.....#...#.....###...#.....#.......#...#...#...#...#.#...#.......#
|
||||
#.###.#########.#.###.#.###.#.#####.###.#####.#.#.#####.#.#.#.#.#####.###.#######.###.###.###.#.#####.#.#####.###.#########.###.#.###.#####.#
|
||||
#...#.#.........#.#...#...#...#...#...#.......#.#.###...#.#.#.#.....#.###.......#...#...#...#.#.......#.#.....###...........#...#.....#...#.#
|
||||
###.#.#.#########.#.#####.#####.#.###.#########.#.###.###.#.#.#####.#.#########.###.###.###.#.#########.#.###################.#########.#.#.#
|
||||
#...#...#...#...#.#...#...###...#.....###...###.#...#...#.#.#.###...#.#...#...#...#...#.#...#.........#.#.#...###...###.......#.....#...#...#
|
||||
#.#######.#.#.#.#.###.#.#####.###########.#.###.###.###.#.#.#.###.###.#.#.#.#.###.###.#.#.###########.#.#.#.#.###.#.###.#######.###.#.#######
|
||||
#.......#.#.#.#.#.#...#.#...#...........#.#...#...#...#.#.#.#...#...#...#...#.###...#...#.#.....#...#...#...#...#.#.#...#.......###.#.......#
|
||||
#######.#.#.#.#.#.#.###.#.#.###########.#.###.###.###.#.#.#.###.###.#########.#####.#####.#.###.#.#.###########.#.#.#.###.#########.#######.#
|
||||
#.......#.#...#.#.#.....#.#.###.......#.#...#.#...#...#.#.#...#...#.#.........#.....#.....#...#.#.#...#.........#.#.#.#...#...#...#.#...#...#
|
||||
#.#######.#####.#.#######.#.###.#####.#.###.#.#.###.###.#.###.###.#.#.#########.#####.#######.#.#.###.#.#########.#.#.#.###.#.#.#.#.#.#.#.###
|
||||
#...#...#.....#...###.....#.....#...#...###.#.#...#.###.#.###...#.#.#.#...#...#.....#.#...###.#.#...#.#.....###...#...#.....#...#.#.#.#.#...#
|
||||
###.#.#.#####.#######.###########.#.#######.#.###.#.###.#.#####.#.#.#.#.#.#.#.#####.#.#.#.###.#.###.#.#####.###.#################.#.#.#.###.#
|
||||
#...#.#...#...#.......#...........#.#...#...#.#...#.#...#.#...#.#...#...#.#.#.#...#.#.#.#...#.#.#...#.#...#...#.#.................#...#.#...#
|
||||
#.###.###.#.###.#######.###########.#.#.#.###.#.###.#.###.#.#.#.#########.#.#.#.#.#.#.#.###.#.#.#.###.#.#.###.#.#.#####################.#.###
|
||||
#...#...#...###.....#...#...........#.#.#...#.#.###.#...#...#.#.......#...#.#.#.#.#.#...###...#.#.###.#.#...#...#.###.................#.#...#
|
||||
###.###.###########.#.###.###########.#.###.#.#.###.###.#####.#######.#.###.#.#.#.#.###########.#.###.#.###.#####.###.###############.#.###.#
|
||||
###...#.#...........#.#...#...#.....#.#...#.#.#.#...#...###...#...#...#...#.#...#.#.....#.......#...#.#.#...#...#.....#...#...........#...#.#
|
||||
#####.#.#.###########.#.###.#.#.###.#.###.#.#.#.#.###.#####.###.#.#.#####.#.#####.#####.#.#########.#.#.#.###.#.#######.#.#.#############.#.#
|
||||
#.....#.#.....#.......#.....#.#.#...#.###.#.#.#.#...#.....#.#...#.#.....#.#...#...#.....#...#...#...#...#...#.#.....#...#.#...###...#...#...#
|
||||
#.#####.#####.#.#############.#.#.###.###.#.#.#.###.#####.#.#.###.#####.#.###.#.###.#######.#.#.#.#########.#.#####.#.###.###.###.#.#.#.#####
|
||||
#...#...#.....#...#...........#.#.#...#...#.#...#...#...#.#.#.###.....#.#.#...#...#.......#.#.#.#...#.......#.....#...###...#.....#...#.....#
|
||||
###.#.###.#######.#.###########.#.#.###.###.#####.###.#.#.#.#.#######.#.#.#.#####.#######.#.#.#.###.#.###########.#########.###############.#
|
||||
#...#...#.#.......#.........#...#.#...#...#...#...#...#.#.#.#.#.......#.#...#.....#.......#...#.....#.....#.....#.....#.....#...#...........#
|
||||
#.#####.#.#.###############.#.###.###.###.###.#.###.###.#.#.#.#.#######.#####.#####.#####################.#.###.#####.#.#####.#.#.###########
|
||||
#...#...#.#.#...............#.#...#...#...#...#...#...#...#.#.#...#...#...###.#...#.....#.......#.........#.#...#...#.#.....#.#.#.........###
|
||||
###.#.###.#.#.###############.#.###.###.###.#####.###.#####.#.###.#.#.###.###.#.#.#####.#.#####.#.#########.#.###.#.#.#####.#.#.#########.###
|
||||
#...#.#...#.#.....#.........#.#...#...#...#...###...#.#...#...#...#.#...#...#.#.#.#.....#.#.....#.........#.#...#.#...#...#...#.#...#...#...#
|
||||
#.###.#.###.#####.#.#######.#.###.###.###.###.#####.#.#.#.#####.###.###.###.#.#.#.#.#####.#.#############.#.###.#.#####.#.#####.#.#.#.#.###.#
|
||||
#...#.#.#...#.....#.###.....#.#...#...###...#.....#.#...#.....#.#...#...#...#.#.#.#.......#.....#.........#...#.#.......#...#...#.#.#.#...#.#
|
||||
###.#.#.#.###.#####.###.#####.#.###.#######.#####.#.#########.#.#.###.###.###.#.#.#############.#.###########.#.###########.#.###.#.#.###.#.#
|
||||
###.#.#.#...#.....#.#...#...#.#...#.#.......#...#.#...#.....#.#...###...#.###...#...#.....#.....#.#...#.....#.#.#.....#.....#.....#.#...#.#.#
|
||||
###.#.#.###.#####.#.#.###.#.#.###.#.#.#######.#.#.###.#.###.#.#########.#.#########.#.###.#.#####.#.#.#.###.#.#.#.###.#.###########.###.#.#.#
|
||||
#...#.#.....#...#.#.#.....#...###...#.#...#...#...###.#...#.#.#.........#...#.......#.###.#.....#...#.#.###...#.#...#.#...........#...#.#.#.#
|
||||
#.###.#######.#.#.#.#################.#.#.#.#########.###.#.#.#.###########.#.#######.###.#####.#####.#.#######.###.#.###########.###.#.#.#.#
|
||||
#...#.#.......#...#.#.................#.#.#.#.....#...#...#...#...#.....#...#...#.....#...#...#.###...#...#.....#...#.#...........###.#.#.#.#
|
||||
###.#.#.###########.#.#################.#.#.#.###.#.###.#########.#.###.#.#####.#.#####.###.#.#.###.#####.#.#####.###.#.#############.#.#.#.#
|
||||
###.#.#...#...#...#.#.........#...#...#.#...#...#.#...#.....#...#...#...#.....#.#.###...#...#.#...#.....#.#.#...#.###...#...###.....#...#...#
|
||||
###.#.###.#.#.#.#.#.#########.#.#.#.#.#.#######.#.###.#####.#.#.#####.#######.#.#.###.###.###.###.#####.#.#.#.#.#.#######.#.###.###.#########
|
||||
#...#.###...#...#...#.........#.#.#.#.#.....#...#.....#...#...#.....#...#...#.#.#.#...#...###...#.#.....#.#...#.#.........#.....#...#...#...#
|
||||
#.###.###############.#########.#.#.#.#####.#.#########.#.#########.###.#.#.#.#.#.#.###.#######.#.#.#####.#####.#################.###.#.#.#.#
|
||||
#.....#...#...........#.......#.#.#.#...#...#...#...#...#.#.........#...#.#.#.#...#...#.###...#...#.#.....#.....#...#...........#.....#...#.#
|
||||
#######.#.#.###########.#####.#.#.#.###.#.#####.#.#.#.###.#.#########.###.#.#.#######.#.###.#.#####.#.#####.#####.#.#.#########.###########.#
|
||||
#.....#.#.#...#...#...#.###...#.#.#.#...#.#.....#.#.#...#.#.....#...#.....#.#.#.......#.....#.#.....#.....#...#...#.#.........#...#.........#
|
||||
#.###.#.#.###.#.#.#.#.#.###.###.#.#.#.###.#.#####.#.###.#.#####.#.#.#######.#.#.#############.#.#########.###.#.###.#########.###.#.#########
|
||||
#...#...#.....#.#.#.#.#.#...#...#.#.#...#.#.#...#.#.#...#.#...#...#.......#.#.#...#...#...#...#...#...#...#...#.#...#...#...#...#.#.........#
|
||||
###.###########.#.#.#.#.#.###.###.#.###.#.#.#.#.#.#.#.###.#.#.###########.#.#.###.#.#.#.#.#.#####.#.#.#.###.###.#.###.#.#.#.###.#.#########.#
|
||||
###.............#...#...#.....###...###...#...#...#...###...#.............#...###...#...#...#####...#...###.....#.....#...#.....#...........#
|
||||
#############################################################################################################################################
|
||||
@@ -1,5 +0,0 @@
|
||||
029A
|
||||
980A
|
||||
179A
|
||||
456A
|
||||
379A
|
||||
2244
Inputs/Day22.txt
2244
Inputs/Day22.txt
File diff suppressed because it is too large
Load Diff
3380
Inputs/Day23.txt
3380
Inputs/Day23.txt
File diff suppressed because it is too large
Load Diff
313
Inputs/Day24.txt
313
Inputs/Day24.txt
@@ -1,313 +0,0 @@
|
||||
x00: 1
|
||||
x01: 0
|
||||
x02: 1
|
||||
x03: 1
|
||||
x04: 0
|
||||
x05: 0
|
||||
x06: 1
|
||||
x07: 1
|
||||
x08: 0
|
||||
x09: 1
|
||||
x10: 1
|
||||
x11: 1
|
||||
x12: 1
|
||||
x13: 1
|
||||
x14: 0
|
||||
x15: 1
|
||||
x16: 0
|
||||
x17: 1
|
||||
x18: 0
|
||||
x19: 1
|
||||
x20: 1
|
||||
x21: 0
|
||||
x22: 0
|
||||
x23: 0
|
||||
x24: 1
|
||||
x25: 1
|
||||
x26: 1
|
||||
x27: 0
|
||||
x28: 1
|
||||
x29: 1
|
||||
x30: 1
|
||||
x31: 0
|
||||
x32: 0
|
||||
x33: 1
|
||||
x34: 1
|
||||
x35: 0
|
||||
x36: 0
|
||||
x37: 0
|
||||
x38: 1
|
||||
x39: 0
|
||||
x40: 0
|
||||
x41: 0
|
||||
x42: 0
|
||||
x43: 1
|
||||
x44: 1
|
||||
y00: 1
|
||||
y01: 0
|
||||
y02: 0
|
||||
y03: 1
|
||||
y04: 1
|
||||
y05: 0
|
||||
y06: 0
|
||||
y07: 0
|
||||
y08: 0
|
||||
y09: 0
|
||||
y10: 0
|
||||
y11: 1
|
||||
y12: 0
|
||||
y13: 0
|
||||
y14: 0
|
||||
y15: 0
|
||||
y16: 1
|
||||
y17: 0
|
||||
y18: 0
|
||||
y19: 1
|
||||
y20: 0
|
||||
y21: 1
|
||||
y22: 0
|
||||
y23: 1
|
||||
y24: 0
|
||||
y25: 0
|
||||
y26: 1
|
||||
y27: 0
|
||||
y28: 0
|
||||
y29: 1
|
||||
y30: 0
|
||||
y31: 0
|
||||
y32: 0
|
||||
y33: 1
|
||||
y34: 0
|
||||
y35: 0
|
||||
y36: 0
|
||||
y37: 1
|
||||
y38: 0
|
||||
y39: 0
|
||||
y40: 1
|
||||
y41: 0
|
||||
y42: 1
|
||||
y43: 1
|
||||
y44: 1
|
||||
|
||||
x44 XOR y44 -> drc
|
||||
phq OR frm -> hjs
|
||||
vdh AND nwn -> gqd
|
||||
y40 XOR x40 -> vkn
|
||||
x21 XOR y21 -> cnb
|
||||
cnb AND wmb -> vvk
|
||||
dfb XOR bfn -> hbk
|
||||
bhd XOR mmh -> z06
|
||||
fkc XOR bwj -> z22
|
||||
gnj AND jfw -> spq
|
||||
dwh AND kqn -> fhp
|
||||
x19 AND y19 -> kkg
|
||||
drc XOR qqt -> z44
|
||||
fkc AND bwj -> jbb
|
||||
y32 XOR x32 -> qwt
|
||||
y37 AND x37 -> kgg
|
||||
x07 AND y07 -> dqn
|
||||
dsp AND bvp -> hff
|
||||
pmv OR pkn -> wmt
|
||||
cjf OR pfk -> z45
|
||||
hgq XOR phb -> z27
|
||||
qnq OR dpc -> djp
|
||||
x32 AND y32 -> nbb
|
||||
qwt AND jqm -> fdk
|
||||
x18 XOR y18 -> grp
|
||||
vkf OR hdm -> kqn
|
||||
cqv AND jss -> bwd
|
||||
x00 AND y00 -> jfw
|
||||
cjb XOR srm -> z19
|
||||
jss XOR cqv -> z35
|
||||
ntt OR spq -> ndd
|
||||
cqm XOR qqj -> z43
|
||||
x01 AND y01 -> ntt
|
||||
y14 XOR x14 -> dfb
|
||||
nbk XOR wrk -> z05
|
||||
dvw AND rpg -> z23
|
||||
vvc OR kcv -> qqj
|
||||
bqc XOR fwr -> z26
|
||||
dwh XOR kqn -> z41
|
||||
x15 XOR y15 -> bkb
|
||||
rjm XOR gjr -> z24
|
||||
x22 XOR y22 -> bwj
|
||||
y22 AND x22 -> hpj
|
||||
x08 XOR y08 -> hnf
|
||||
y27 AND x27 -> frm
|
||||
wrw OR swr -> fds
|
||||
gtm AND rmt -> mkv
|
||||
kdh AND qvq -> ghr
|
||||
fgv AND mfm -> kcv
|
||||
hnf AND gqs -> pmv
|
||||
kkg OR qvs -> vdh
|
||||
fdk OR nbb -> rmt
|
||||
y29 AND x29 -> cwd
|
||||
hjk OR bts -> vkg
|
||||
vtk AND npm -> tqb
|
||||
dvw XOR rpg -> dbb
|
||||
y39 XOR x39 -> mnm
|
||||
y05 XOR x05 -> wrk
|
||||
djd AND fds -> dqt
|
||||
tvh OR sqm -> npm
|
||||
cdr XOR cmt -> z10
|
||||
x28 XOR y28 -> hgd
|
||||
x33 XOR y33 -> gtm
|
||||
mnm XOR vhv -> z39
|
||||
fbv XOR bwg -> z38
|
||||
hqs AND nhr -> vbt
|
||||
kth OR qcp -> hgq
|
||||
wjj OR scs -> bfn
|
||||
bkv OR vvk -> fkc
|
||||
cmt AND cdr -> pph
|
||||
dqt OR gqb -> bqc
|
||||
y35 XOR x35 -> jss
|
||||
vkb OR krd -> cdr
|
||||
mqf AND cvh -> trj
|
||||
x36 XOR y36 -> dsp
|
||||
y41 XOR x41 -> dwh
|
||||
y38 XOR x38 -> bwg
|
||||
ghr OR tpc -> jqm
|
||||
ckn XOR hqq -> z07
|
||||
vkn AND vkg -> vkf
|
||||
y28 AND x28 -> wkc
|
||||
x31 XOR y31 -> qvq
|
||||
rjm AND gjr -> swr
|
||||
gcb OR dbb -> rjm
|
||||
y18 AND x18 -> z18
|
||||
y24 AND x24 -> wrw
|
||||
x17 XOR y17 -> kbh
|
||||
y24 XOR x24 -> gjr
|
||||
x26 XOR y26 -> fwr
|
||||
y43 AND x43 -> bvm
|
||||
y15 AND x15 -> sbt
|
||||
y12 XOR x12 -> fvh
|
||||
kvn OR ffb -> cjb
|
||||
y31 AND x31 -> tpc
|
||||
y37 XOR x37 -> bnh
|
||||
y11 AND x11 -> scv
|
||||
hgd AND hjs -> phr
|
||||
jfw XOR gnj -> z01
|
||||
fvh XOR sfk -> z12
|
||||
fds XOR djd -> z25
|
||||
qwt XOR jqm -> z32
|
||||
bvp XOR dsp -> z36
|
||||
phr OR wkc -> jdq
|
||||
y07 XOR x07 -> hqq
|
||||
y43 XOR x43 -> cqm
|
||||
bnh XOR kss -> z37
|
||||
trg OR vbt -> kdh
|
||||
cwd OR pkc -> nhr
|
||||
y19 XOR x19 -> srm
|
||||
dkd AND jdq -> pkc
|
||||
wrk AND nbk -> fnk
|
||||
hjs XOR hgd -> z28
|
||||
rnt AND qbs -> rcp
|
||||
djp XOR mft -> z03
|
||||
cht OR mkv -> mqf
|
||||
hbk XOR bkb -> z15
|
||||
x44 AND y44 -> pfk
|
||||
x26 AND y26 -> qcp
|
||||
ndd XOR jgw -> z02
|
||||
x06 AND y06 -> dhs
|
||||
ckn AND hqq -> cpt
|
||||
y13 AND x13 -> wjj
|
||||
x10 AND y10 -> tvr
|
||||
ffr OR gqd -> wmb
|
||||
y09 XOR x09 -> tjb
|
||||
nhr XOR hqs -> z30
|
||||
hgq AND phb -> phq
|
||||
x00 XOR y00 -> z00
|
||||
y16 AND x16 -> prt
|
||||
dqn OR cpt -> gqs
|
||||
x23 AND y23 -> gcb
|
||||
mft AND djp -> tvh
|
||||
bkb AND hbk -> qtw
|
||||
kfk AND chk -> vgb
|
||||
vhv AND mnm -> hjk
|
||||
y42 XOR x42 -> mfm
|
||||
x25 XOR y25 -> djd
|
||||
fgv XOR mfm -> z42
|
||||
grp XOR fgr -> kvn
|
||||
x16 XOR y16 -> chk
|
||||
x09 AND y09 -> krd
|
||||
cqb OR rmg -> mqm
|
||||
y30 XOR x30 -> hqs
|
||||
kss AND bnh -> dvf
|
||||
y11 XOR x11 -> rnt
|
||||
x04 AND y04 -> ptm
|
||||
y13 XOR x13 -> cbr
|
||||
rnt XOR qbs -> z11
|
||||
hff OR fjf -> kss
|
||||
x25 AND y25 -> gqb
|
||||
kdh XOR qvq -> z31
|
||||
y06 XOR x06 -> mmh
|
||||
cnb XOR wmb -> z21
|
||||
y02 XOR x02 -> jgw
|
||||
x17 AND y17 -> hkn
|
||||
y34 AND x34 -> cvh
|
||||
x27 XOR y27 -> phb
|
||||
x42 AND y42 -> vvc
|
||||
x03 XOR y03 -> mft
|
||||
y35 AND x35 -> nvg
|
||||
x10 XOR y10 -> cmt
|
||||
y20 AND x20 -> ffr
|
||||
x30 AND y30 -> trg
|
||||
ptm OR tqb -> nbk
|
||||
bfn AND dfb -> sjr
|
||||
jgw AND ndd -> qnq
|
||||
y39 AND x39 -> bts
|
||||
y38 AND x38 -> knq
|
||||
npm XOR vtk -> z04
|
||||
prt OR vgb -> jqc
|
||||
kfk XOR chk -> z16
|
||||
rvd OR dhs -> ckn
|
||||
fnk OR wkv -> bhd
|
||||
y03 AND x03 -> sqm
|
||||
x08 AND y08 -> pkn
|
||||
y02 AND x02 -> dpc
|
||||
bwg AND fbv -> pdw
|
||||
mqf XOR cvh -> z34
|
||||
tjb AND wmt -> vkb
|
||||
jdq XOR dkd -> z29
|
||||
x34 XOR y34 -> tfn
|
||||
y21 AND x21 -> bkv
|
||||
tfn OR trj -> cqv
|
||||
fgr AND grp -> ffb
|
||||
bwd OR nvg -> bvp
|
||||
cjv OR hkn -> fgr
|
||||
fhp OR rnc -> fgv
|
||||
sjr OR tck -> z14
|
||||
vkn XOR vkg -> z40
|
||||
kbh XOR jqc -> z17
|
||||
kgg OR dvf -> fbv
|
||||
tjb XOR wmt -> z09
|
||||
tvr OR pph -> qbs
|
||||
qqj AND cqm -> gsg
|
||||
pdw OR knq -> vhv
|
||||
gqs XOR hnf -> z08
|
||||
y20 XOR x20 -> nwn
|
||||
kbh AND jqc -> cjv
|
||||
bqc AND fwr -> kth
|
||||
rcp OR scv -> sfk
|
||||
sbt OR qtw -> kfk
|
||||
bhd AND mmh -> rvd
|
||||
nwn XOR vdh -> z20
|
||||
y29 XOR x29 -> dkd
|
||||
y23 XOR x23 -> rpg
|
||||
jbb OR hpj -> dvw
|
||||
cbr XOR mqm -> z13
|
||||
y33 AND x33 -> cht
|
||||
y12 AND x12 -> rmg
|
||||
mqm AND cbr -> scs
|
||||
sfk AND fvh -> cqb
|
||||
y14 AND x14 -> tck
|
||||
x04 XOR y04 -> vtk
|
||||
y05 AND x05 -> wkv
|
||||
rmt XOR gtm -> z33
|
||||
y01 XOR x01 -> gnj
|
||||
srm AND cjb -> qvs
|
||||
x36 AND y36 -> fjf
|
||||
drc AND qqt -> cjf
|
||||
y40 AND x40 -> hdm
|
||||
y41 AND x41 -> rnc
|
||||
gsg OR bvm -> qqt
|
||||
3999
Inputs/Day25.txt
3999
Inputs/Day25.txt
File diff suppressed because it is too large
Load Diff
@@ -1,6 +0,0 @@
|
||||
where())what()@)select()why()?mul(371,776)/%how()'~+:how()mul(977,266)@$@mul(749,170)how()<;$^#what()select()mul(338,975)>from()+,{select()!!mul(626,938)%/>^{((}]mul(733,977)>)() +$)mul(695,376)!%#how()mul(767,788)<(mul(876,501)mul(18,72)[*when(625,65)<mul(515,137)>*('what()mul(491,884)from()?{>how()mul(645,385)/[when(){what()why()mul(802,476)#'select()who(327,719)+-,##mul(103,807)#(mul(192,909):@'^where(247,392)!who()</mul(305,182)[@[;!;mul(553,402)<%mul(247,89)!mul(91,152)$@mul(502,543)+why()what()[when()@>^mul(875,344)why()mul(205,505)?;?when()!],mul(165,670),#$++'>)'mul(503,815):mul(483,302)~+*}!$where()why()&mul(785,794)/,{why();where(218,722)}when()don't();!mul(405,577)where()@mul(521,472){how()what()'what() where(55,484)mul(360,384)%mul(176,384)}%when()-$%what(436,501)mul(652,387)mul(758,52)-~@,*-@mul(343,835)when()select()](;#mul(76,425)from()>})]mul(720,464)#~)why()why()mul(619,682))mul(15,67)mul(569,569)]where()++&@:[#mul(844,620)select()+^*what()why(197,509) mul(280,807)%^mul(233,435)}?*:+^^what()!when()mul(69,464)& )]$mul(393,827)@]^mul(64,552):^)*<&where()?#mul(51,727)mul(159,242),+what())>+mul(140,116)do()~?mul(590,950)};[*;;when()mul(186,556)]&;#&##*!mul(806,651)^select()who()[mul(820,386);?from()mul(771,404)-$+#]&where()}mul(473,823)don't()when(874,250)'}mul(916,835)mul(432,92)how(), :mul(2,546)who(61,440), -mul(486,858)where(869,462)do()'select()&?+&why()where()>>mul(796,512){~(when():^>*&'mul(927,22)%;where()who()^$mul(203,851)%how()mul(820,954)from())~#<don't()select();@??]?mul(693,878)from()when()@/mul(202,438)mul(266,957)from()])[/how()select()don't()+>mul(741,967)select()what()+[[why()&]mul(42,517)>]why()<mul(577,659)&['<where()>,select(297,821):mul(324,191);%{->:!#mul(567,73)don't()?why():^{$*]why()mul(504,229)'mul(40,787)/select()?who();[who()where();$mul(537,42)[#@&*~<@mul(418,58);{}how()*-don't()[<'@from() mul(38,329)-*mul(381,685)what()</:)^(',when()mul(850,565)@,,%select(95,745)#mul(99,343),]^who()[mul(46,377)mul(788,562)?<mul(101,829)]$#-]select()mul(536,292)who(419,754)mul(933:[>?+,,*%)mul(740,7)#)<how()mul(44,988)mul(693,770)why()-;[mul(76,905)where()];mul(457,100)what()mul(63,750)where()!&who()$>#)?^mul(211,355){~#who()<]who()@>~mul(135,667)-^)]'mul(165,161)<;,mul(350,311);%?~}$how(768,325)*mul(773,359)~!(select()?{why()mul(269,149)when()}*who()}mul(536,90)don't()>$ &!where()*who()&mul(405,425)!+mul(304,694)'<#$<<,#select()<mulselect()<?mul(448,840)!]-;mul(79,274)>):%:* -why()#mul[who()when(918,883){ ^''mul(907,968)what()when()[who()>mul(81'how()+what()select()<mul(66,242)mul(32,790)why()why()mul(707,867);{+[@select()@,mul(183,895)~mul(570)],:select(),%{%from()mul(568,881)[{@/}*mul(989,413)^($who()!}<&;mul(380,574)+why()?select()#mul(812,587)why()when()mul(772,647)>;&'']+how()mul(745,379)]^-mul(403,82)mul(840,830)when()+what()how()[!select()mul(827,564)?:]mul(602,333){what()[[mul(606,272)
|
||||
,who()>}who():#from()mul(960,322)where()'<from()why()what()%where()mul(282,700)mul(591,113)<where()%, )mul(17}{')~!-mul(462,619)]mul(422,776)mul(250,987){((mul(880,386)(<>)?,+when() mul(59,855)'mul(308,433)~<how()>[;<why(98,720)@*mul(406,466)-what()when()'do()^mul(293,490)-@;{^why()who()mul(811,340)]^*what()[mul(705,73),:mul(557,31)mul(678,868)how()how()(when()mul:what(),how()where()when(354,851)who(418,214)when()where()mul(500,581)~what()how()mul(109,217)@>$;:mul(486@!>mul(508,605)what()from()mul(597,956)>#' *mul(834,240)}![{who(983,119)]#what()where()mul(533,711))}what()'/-mul(189,207)^*--$?mul(424,618)mul(407,288)why()<[+mul(170,906)&select()[,#who()+,mul(508,516)?who()!}+select()mul(963,397)*/]mul(129,895)$select()'when()^?mul(604,838)>mul(38,524)?why()~)[#*+:mul(793,697))what();}who())]mul(286,779)--where();mul(864,153)*mul(93,786)[$&&+mul(349,493,'~mul(161,724)~+$what():mul(326,607)what()select()mul(108,288)@(where(287,297)~how()<when()how()from()mul!^@->mul(15,832)select()!%( mul(233,322*;%],&@why(660,737)mul(47,778)?mul(68,311)}do()^/>[mul(572,909)^(,$,*~?mul(550,192){select()$${mul(949,906)?[^]@@^what()do()'<what()$mul(318,25)mul(406,742)'mul+['&{[^++@mul(550,647)'@)-mul(339,137),mul(412,523)(select()what()mul(234,64)!$[>mul(581,669)who()how()$~;(where())how()<mulwho()&?]%don't())~@~+mul(879,734)from()))*@#:$?where()mul(954,523)@what()<mul(481,127)]}<'/[who()why()+mul&%mul(244,792){[~mul(706,361)!;mul(658,168)$]mul(386,274)?what()* who()select()where(685,196)$what()mul(929,590)when()who()who()'mul(122,764)^%:@mul(315,523);~+;?/%&mul(97,566)~>what();<>^mul(859,756)mul(323,125%?}%where()mul(694,499),[mul(290,758)how()from()-/*<mul(179,392)how(930,981) ^())*}'$mul(446,657)*why()?]how()how()?from()mul(685,212)%when()' ;;from()?[mulwho(612,115)select()mul(56,213)[]}who()%,mul(241,98)^</%<&~from()mul(786,775) what()mul(748,183)'from()mul(388,111)where(){*}?&select()who()mul(108,115)mul(795,158) (~don't()*select()@:'!^mulselect()mul(838,249)@do() (~%[from()*)mul(327,71)what()%who(142,172)select()[!,what()}]do()>who()&'where()what()where()when()mul(286,592);: how(824,40)^mul(341,311)'&how()};^how()mul(479,155)-&when()%>!from() mul(743,297)/+% mul(785,803)~&/}#($?select()from()mul(378,606)/%when()mul(304,253)who())mul(19 mul(358,187)!/mul(61,423):%: )mul(773,349)select()mul(380,503)where()#%;do()who()$!(:&where()where()mul(25,688who()mul(539,689)?[/(>mul(915,247)how()@ when()why();;from()mul(192,625)?how()who()why()+<~where()!mul(922,457)how()@:+}[&{don't()mul(663,641)& :*]select()from()^>who(646,961)mul(302,499)mul(779,59)#+ /~;}mul(489]mul(883,556)from()#what()#:when():@$^mul(857,680)why(836,2)[mul(815,638)&why()~:why()~mul(960,833)<>from()where()where()$:who()mul(853,356)%;)+ where()from())do()<]mul(139,315){&+why(765,155),what()>@mul(281,247)mul(797,456) <>/:mul(785,173)when()$~-?:select()when()&mul(185,8)mul(510,671)%,when()how()where()from()who()mul(654,885)*who()mul(227,178)} !mul(256,394)
|
||||
mul(888,165);]~mul(93,961)do();where(449,598)*-& #mul(364,267)how()what()where()&@%mul(173,845)+?>({]^-}!mul(500,764)why() , ;where()}mul(509,958)~#when()&'^(#*}mul(567,675)!why()%:(~where(){mul(659,362/<@+mul(442,603)where(232,716)!how()!;)$what()mul(47,742)don't()&{ what()mul(201,59)-how()where()&select()mul(564,724)&when(){><{who(56,63)>#mul(750,782)$,mul(713,443)(^>*who()mul(255,743)+< what()mul(13,455^when()%';how()<<&'%mul(909,623)[?%when()~[$mul(647,666)+why()mul(303,514)mul(866,565)why()*@what()(mul(528,440)mul(580,935)mul(621,192)(from()?who(),!*-mul(834,426),!]/)how()]why()do()how()}!{why()'@~^who()mul(114,512[#^~ select()*who(){^;mul(813,830)+;[#/[do()select()}/^(@!;*mul(667,761;#why()!(+(mul(427,964)why()^where()!;mul(816,813)&select()what()why()$><do()where();)<mul(238~/]^&when()what()what(181,18)mul(755,285) from()how():mul(452,659)#!}]$/what()mul(64,590)%?where()}&}/'}mul(948,939)~what();^+'~mul(688,702)'mul(557,538):'why()(why()from()%mul(731,311)>from()mul(204,891)*#^[-how()how(275,54)mul(862,293)^^/~>,*)mul(858,212)[how()?>where()mul(45,936)select())select() <)where()how()mul(617,746)/ ~%from()~mul(466,629)mul(604,220)why(235,921)^what()^select()who(540,898)what()>mul(893,561),%~(who()how())#+#mul(845};mul(795,975)who(),',mul(988,400)/$+,!$~mul(931,322)( <:%+when()mul+%<&<where():$&where()mul(795,328)'+][{mul(466,329)^mul(190,896){mul(367,236){ --<{~#where()mul(181,169)how(833,790)[/who()mul(876,536)how()(%;/>mul#'mul(892,416)what()why()mul(369,579)''mul(384,303)when()where()[what()-?$[when()mul(179,420):?:select()}when()when();,mul(246,209)select()mul(966,243)[mul(153,599)when()mul(914,433)[from()when()[--#;'!mul(810,766)select()why()$>!when()mul(931,687);select()how()@&mul(98,464)]mul(652,409)#:mul(516,121){<{() @~;how()mul(123,360))^](mul(277,239)mul(840,613)what()%mul(586,205)^]@#/don't()'[;^,$ from()mul(628,557)<)>];+who()mul(878,975from()mul(143,987)+when()*])%what()mul(603,174-from()~?mul(943,847)where(170,904)&#%]who(888,776)mul(302,183)mul(443,591),why():]~:%mul(77,426)when()where()mul(950,995)&mul(274,396)?[from()where()from()mul(409,518)$do()#^{why()mul(613,963)&^ >>;^how()mul(925,923);}mul(852,446*;& mul(743,312)do()%/who()*$]?mul(475,555)(>select();when()[mul(976,68)select()]what() +when()from()><mul(389,991)select(),mul(309,286)who(),where()why()^what(),^mul(400,11){/what()mul(152,74)/why():<*#++^mul(345,21)]who()}!'how()%(mul(679,89)>why()mul(976#>>how():''%what()mul(828,766)!@(mul(798,719)$]*<how()where()[mul(296,310)mul(681,531[>mul(646,954)@why()}from():$why()%/select()mul(741,161)+mul(91,115)^-}when()%++mul(933,749)from()<{when()(mul(909,579)#>;where()mul(211,740)$where()from()who()&mul(255,95)mul(511,373)&@!who()when()$@$?select()mul(2,521)^{)#mul(294,886)why()(!@mul(7,438)%*~(#{'$mul(234,87){+,how()how()mul(890,233)mul(801,729),;&(&mul(421@/+/from()when()/don't()/mul(672,498)what()mul(14,796)^![*what()when()# mul{!where()$where(871,580)}mul(717,476)&)'%?why(905,632)when()what()mul(815,617),how()mul(827,71)>?mul(837,520)*how()select()what())select(),how()$from()mul(952,273 &@mul(106,964)-[where()mul(778,265)}$'mul(947,970)who()<mul(832,154)}{}%[@mul(78,394)#select()[do()^select(){}#!/usr/bin/perl[@'/?~&>?>mul(780,897)
|
||||
/,mul(904,917)how()from()] :%where()why(824,519)$}mul(433,689)-/{where()%>how()mul(232,555)&'@mul(170,145)?-{#?[mul(130<select(954,54)why():when() mul(152,582);{+?%,mul(911,198)+(}why()^!>?from()mul(575,167;~,${;-/)what()when()mul(688,24)&)#^*mul(251,895)(>from()#}]select()?}%mul(583,40)@what()!-mul(396',)!>%%when()}mul(127,975)#mul(986,310)what();from() <{'<mul(818,513))-[^&[mul(788,658who()*who(180,634)what()mul(183,781)mul(973,625)%how()mul(163,168)#%select())()mul/<mul(995,378)>?from()[&who()when()when()[mul(910,515)$mul(261,324)~</-'where(39,447)mul(872,74)mul(622,70)select() mul(648,514)[who(242,434)]<;?+>-mul(124,305)~select()mul(323,359)*~~mul(524}(;mul(145,708) %}what(487,689)%from()mul(371,88)~!)mul(883,681)why(621,555)from()-mul(175,888)&{];-what(569,630):?mul(229,850)&>'where()'mul(269,654]-why()//from()select()}mul(545,830)[?:}mul(849,642)/;(:)}<~mul(928,739)mul(216,77)select():;(when()@(}*]mul(113,497)(!~~;^[!mul(447,997);select()~[>]}~who()don't());}#why(326,879)+)-<(mul(581,152)> ;mul+how(771,784)+&why(582,346)'select()~what()<,mul(239,575)<(]+*from()]~'<mul(828,834)'mul(58,537)}]<mul(116-**><}@who()<-mul(473,971),:($when()from(41,290)what()];do())@^[@ from()mul(603,541)}mul(811,508)*?/!what()[-{mul(994,800 ?/!where()<why(104,314)mul(281,392)who();{who() ;(]when(133,642)mul(207,843)/%'mul(354,644)mulwhen()*;{mul(300,946)>who()where()what()}:what(){^[do()when(284,569)}>mul(150,172,]/<mul(972,952)~]do()how()>when()^mul(231,419)/do()select() }-#mul(671,892)<>/how(789,349)from()@what()#@)mul(315,222)from()}when()/}mul(930,682)>'where()?who()mul(132,978);;:@/#^}do()+mul(447,390): mul(723,622)?(how();$select()mul(980,864);>^why()[?#mul(734,179)# where(),@how()mul(838,788)/{++%mul(272,849):*%/^</$from()mul(453,461))mul(962,132)mul(375,359)!)%how()(?select()who()mul(142,910)?how()from()<$!mul(298,364)#who()+*who()!don't()mul(816,177)+mul(702,924)}(what()mul(989,523)<,,mul(735,588)how(489,394)mul(484,416)+#do()from()^^ $mul(123,782)mul(853,914)mul(203,868){'mul(909,468)why()/?where()$what()who(401,657)mul(786,343)mul(961,300)]{(!<do()^mul(936~mul(793,152)where()from()'-from()<+do()where(){+:mul(859,728)-where()%select()(mulwhat()mul(806,696)@<-mul(684,756),}who()how()~?:select()select()mul(471,727)from()<<why()what()how() }how()]mul(623,35)when():mul(871,956)mul(400,531)]where(), ;select()from()@select()don't()$/{[mul(519,781)[*mul(746,603 -from(112,309)]+ who()mul(217,136)-{+?select()#@%/mul(899,418)*!$+ *mul(154,146) +~where()mul(859,846)!<~%[{do():!(!{~mul(408,608)},/who()!, -mul(744,613)mul(829,465);~}/,'#+#mul(674,197)what()>%mul(466,441how()who()who()<why()where()select()mul(427,642)where();@+where()how(610,397))^mul(731,688)}())~why(29,145)do()(^{select(),<>'@(mul(692,669)#&mul(39,354)-where()from()who()~don't()*( {where();what()#mul(526,300)select(552,879), when()where()select()&-mul(283,140)&&?^ mul(243,254)how()/}who()mul(282,199)select()!](?'what()@&+mul(31,366)}who()mul(640,530)mul(565,470)mul(290,665){what(445,299)}<#%~ ][mul(320,303)-~from()(who()>[('why()don't()~&{)]mul(720,131)#~!!select()mul(3,408)-[where()from()who()}&}mul(558,189)!?[&(do()-^>mul(429,22)$!:>how()<,select()select(629,810)mul(748,450)(/<]?select()!//mul(679,551)how()who();?what()from()-mul(225,868)@{why()mul(177,830),{?^what())mul(229,827)~what()]'how(958,802)?who() (mul(676,215)[)mul(999,210)?]$*,?]-$,mul(661,825)
|
||||
from()<#from()[@>?$(mul(631,608),+mul(946,420),( (^[^+/{mul(569,409),what()who()~mul(702,265);mul(88,623)}who()what()&mul(676,744)from() !+[do():who()^?mul(336,740)?mulwhy()from()!}where()%%mul(571,353)>$,& }>{*mul(276,415)><-do()~(]}mul(308,489)/from()when(579,867)what()~when()?&mul(633,256)how(){?~mul^why()who()>mul(223,473);why()when(),mul(722,306)from()^mul(200,701)!select()?,mul(711,878)how()where())##'+}#@mul(56,894)@[what()mul&-who()when()when()[%>?mul(281,311)where()where()how(){select()'%mul(949#[?:mul(895,313)/mul(25,736)mul*&):-/%who())mul(301,39)what()(mul(767,317)&!what()mul(271,721)(:where() :*&/mul(881,552)mul(117,678)> #),where()%)&$mul(394,101)<)>&who()what()'+mul(496,283)mul*]@+mul(331,181)select()'?:how()!what()-how()]mul(629,183){{(mul(980,656)! when()@{'-,what(),mul(93,847)++where();@select()when()mul(544,305)'#'<,from()>why()>mul(219,755)what(){ ~]}don't()-when();^^when())?~how()mul(590,547)(!from()when()[?}where()mul(930,301)where()^+when()what(733,168){>mul(899,94);:?mul(928,368)mul'what()how() >($mul(625,960)%'&where()select()~mul(584,72)^!mul(55,527);mul(492,224)?($:,',*select()mul(180,326)<what() mul(268,667)?+mul(235,375) *!]!mul(141,332);mul(356,884)from(695,588){{when()*&mul(711,131)*select()-*&mul(143,130)[select()[from(204,615) what()(mul(653,542)>select():{where()mul(824,130)what()mul(683,478)from(918,839)what()mul(582,660)<@*how()*(mul(681,373)(~~>@::]$mul(873,698)<@+when()-^mul(100,128)[^+:where()how(542,879)&{mul(327,603) $+!when()$mul(505,966) ,$~)>mul(193,642){!/,}* mul(784,245)}?what()when()#mul(4,692)<+&%!)mul(184,826)+mul(469,907)from()how(601,83)mul(307,230),@}where(318,472)from()}:})-mul(898,829?$^@where();what()(mul(258,499)mul(212,108){{!&<who()where()mul(38,864) :'#mul#where()mul(119,346)when()from()how()mul(979,593)~when()who()mulwho()where()from()*?who()])!)mul(941,717)what()from(){select()mul(29,799){{({;$don't()&/mul(321,8)mul(593,740)&:when()>what()who()who()mul(983,25)*);who()!, [don't()select();-%*@mul(798,455)when()$>from()where():do()mul(707,598)how())!:select()how()#do()mul(81,685)who()+where()mul(292,774)?/mul(80,716who()*{#;;*do()&%why()+mul(554,30)!select()],{%/what()mul(600,514)#when())do()@what()'%when()mul(955,368)[#/>:?-how() select()mul(170@?)mul(584,682)what()^,?]#@mul(623,37) ;mul(650,391)/%mul(535,768)how()when()mulwhere()when()when()*(mul(193,547)$)[why()'select()$$who()]mul(446,367),what()~@%*mul(675,581)mul(637,187){mul(727,146)}where()<how() mul(800,526)where()from(970,555)+when(),who()##mul(331,931)+[when()mul(604,25)who(265,522)select(330,185)when(){mul(893,602)select()#'(mul(280,461)-what()'-?)?mul(711,860)%&$^;]mul(389,793) }~from();from(233,583)&#)^mul(502,146)where()[mul(66,348):who()-?mul(511,100)+]@mul(329,746)<+how()$}how()/#where()don't(){~how()when()@where()'mul(479,879)why()who()who()who()}when()!from()+^mul(290,234)where()do(),how()mul(740,873):@who()mul(315where(744,335)(->)mul(896,767)select()'-mul(980,725)select()[ *#mul(159,247)!what()who(560,832){-why()what()~&#mul(567,372)-:!]?/why()+:{mul(277,161)-where()'-who()$how()<what(203,370)]do()/??:#[mul(524,458)why()*@!-}$$<:mul(903,579)&why()-$from()!()mul(102,88)-/]~mul(311,176)who(707,558)where(){what()^]mul(410,763)*&how()~;from():%@%mul(606,429<>who()from()'how(),$$when()mul(429,870):@;<#mul(587,942*&;*do()$$select()mul(3,25)when(),-%+:# from(872,943)}mul(782,821)
|
||||
!>mul(851,461)+!where()$!{@!:)mul(93,494):!mul(951,143)+>)why()-{from()what()mul(988,791)mul(931,510)(:where(245,25){'mul(117,354)'what(); [[<don't()what())]:~#who()+mul(225,504%{]who();why()where()@<$<mul(639,292)&(from(),^ mul(104,198)&~ don't();&&[*when()?mul(181,83){why();>@how()select()do()when()?:from()mul(778,261):,+,mul(314,222);<?;who()what(){+mul(816,477)why()from()'where()^+<mul(199,340){-select()&mul(950,14){how()who()<don't()$}%mul(101,370)mul(615,41)how()>,^what(190,985)select() ?<mul(116,361)!@>*,[who()+:-mul(796,495)~/>do()<,}who()^mul(187,492)>'*$!what()mul(991,172)^&}:-mul(458,567)?mul(883,842)mul(755,150),!:%why()}mul(428,866)why()%why()where() (~:mul(352,708)what(370,596)$mul(898select()$why()~from()select()-when()mul(160,761)who(700,128)*mul(944,190)*#}^}from()where()mul(530,978):,+where()[?>mul(553,289)*$@/mul(286,141)what()@':~mulhow(116,291)%[mul(151,627)mul(362,891)~ %-<?;~mul(440,308)from()?<])mul(721,908)mul(45,682)*where(549,565)?~why()how()when()# mul(283,656)#!$when()~what()how()(mul(645,350),what()~^:select()-mul^<)what()what()do();$$when()mul(174,89)^mul(316,811)<~;:<select(619,564)mul(265,577)&why();why()where()&+ 'mul(365,604)?@&*,~what()$mul(568,621){+select():'[/select()mul(765,39!what())+mul(571,963)-:<+who()why()>/:%mul(275,35)@?&mul(276,797)who()/;who())why()when() ~)mul(400,219)where(757,508)}+'+>do()~?from()]~?why()${mul(674,313)]/!#select()^>how()&[do()mul(763,291)[?}><mul(424,631)#:]]mul(283,356)#/mul(999,277)[;;]mul(475,763)>$:;]/ @]mul(923,77)+:/,mul(974,68)}^<}*?(mul(573,391)?^mul(882,854)what()(from(){%!@+when()mul(263,665)'%/<[who(257,651)mul(131,306)#+[why()&,@{who()!mul(378,207)mul(830,423)how(180,743)[<$-)}-don't()mul(104,63)'$~+)/!(do()(?*when()/<:mul(184,312)-mul(457,714)?how()&where():!<(who()mul(832,385)?;&>select(),'[}-mul(409,111)<'who()who()}what(39,120)!<(@mul(466,625))from()'{:;what(),mul(833,127)$+!]mul(107,815)/ {what()what()mul(37,91)[-, what(812,83)?&mul(376,103)};-mul(640,727)select()[$-mul(64,181)mul(734,97)&@why()<#select()/?/mul(164,82)mul(786,473)@{'}mul(206,560)&~mul(784,62)@*^+what():!from()^[mul(206,626)what()[(,{where()from()why()?who()mul(533,212)#where()+how()']}where()((mul(301,424):what()#what()@ >'!do()@what()<what()when()'mul(89,449)select(871,600)+mul(438,837)-('mul(382,10)mul(547,112)mul(27,677)&]/<!#mul(141,36) where()select()$<why()!+mul(333,145)who()!)>mul(965,812)mul(3,550)from()who()!mul(965,728)#>#!)where()*)mul(497,530):when()#mul(352,808)!~{how()*!&mul(552,920)/where()+where()@-#/?mul(896,130)mul(347,579)~@ /^mul(727,709)#-how()&!&&@why()]mul(475,103)*how()/)~who()mul(542,160)mul(743,692)mul(561,997)why()mul(124,866)+}{why() mul(278,696)how()'what()$;?//where()when()mul(17,188)-+where()why();don't()--%<@why()+mul(356,107)%what()^,select()select(607,736):how()-mul(633,572)who()from()/;}select()mul(772,944)]@+/<]select()*?where()mul(858,850)(select()select()where()mul(181,712)~mul(979,178)#?}%?%do():who(268,689)*mul(941,59))-{&&(mul(296,702):@)where()don't()why()when(),mul(405,639)~$),who(575,232),%mul(671,828)
|
||||
140
Inputs/Day4.txt
140
Inputs/Day4.txt
@@ -1,140 +0,0 @@
|
||||
MSAMXXMASXSXMMSASXMASMXMASXSXSSMSSSMMMSSSSMSAMXASAMXXAXMSMMMAXMAMSAMXAMXMXXMXMASMXSAXMXMAMXSXSXXMSSXMSSMMSSMMMMXSXAXMXMAMMASMSXSXSSXMSSMSSMM
|
||||
MSASASAAXSMAMMSAMXSXXMAMXSASAAAASMSASAASAAAMMMSXXMMMSMMXAAASMMMMSAMXSAXASMMSSMMXAXXMSSXXMSMMASMXMASXAAXAAAAAAMAASXSAMAXSMSMMASAXAXAAAAAMAAAS
|
||||
ASAMASMMMASXMAMAMXXAXSMSAMAMMMMMMAMMMMXXMMMMSASXXMAXAASXSSMSASAMXMSAMXSASAMAASAMXMAAAMXMASAMAMXMMASMMMSMMSSMMMMMSAAASMSMAAMSAMAMXMXMMXSMXXMM
|
||||
MMAMAMAAAMAMMASMMXMMMXAAMMXMMXXXMXSXASXSMSXXMASAMSSSMSMAAMASXMASAAMASXSAMXMSSMMXSMMMXSAXAXAMSSMAMASXMASXMAMMSMMASAMXMMAMMMMMXSXMSMXMASMXSASA
|
||||
XSAMAXSMSXAMSASASXMAAXSSMXXXAXMXSAAXXSAAASASMAMAXAXAMXMSMMMMMSAMMMSXMMMAMXAXAAAAMXMSAXMSSMSMASASMAMXMASXMAXAAAMMSAXXSSXMXSXMXXAMXMMMSMAASMMS
|
||||
MSXMMXMXXMMMMASAMMSMXXAAXXSASMMAMAMMXMMMMMAMMASAMMSAMSXMASXXXSAXSXSMSAMASXMSSMMSXAXMASMXMAXMMXSAMSSSMXSASAMXSSMXSASAMXMAXMASMSSMASAXAMMMSMAM
|
||||
XMAMSAMMSAMXMMMMMAASMMSAMXXMMAMASMXSAMASXMXMXASASXAAASASAMMMASXMSXMASXSASAMAMXAMMSMMXMXAMAMAMSMMSAMAAMSAMXSAAXMASAMXMXMASMXMASASASXSMAXAXMAS
|
||||
SMAMXASAMAMXMMXAMSSSXAMASXXXXXSASAAXASASXMAXMXXXMMXMXSAMXSXAXSMMMAMAMAMMSXMMSMASAAAMXSSMMXSXMAAXMASMMMMAMAMMMMMXSXXAAASAMXAXXSAMXSAMXSMMXSAS
|
||||
XSXSSMMXSAMXMMMMMMAMMXSAMMMMSXMAMMMSAMASASMSSSXAXMAMXMMMMMXSAMAAXAMASXSAMXXSAMXMMSMMAXASAAMASXSMSMMMAAXAMSMSAMSASXSMSMSAMSMMMMMMSMMMAMASXMAS
|
||||
MAMXAAAAXMMAMAAMAMSMSXMASAAAAAMXMAASXMMMMMAAAXSXASAXMXMAXSAMXSSMSSSXSXMXSAXXMSAMXXXMXSAMMMSAMAAAAMASXMXMMMAMAMSAMAXAMASMMAMASAMXAAAMAMAMAMAM
|
||||
SAAMSMMSSXXAXSMSAXXASXMXSXMMSAMXMMMSXSXSAMMMSMMSMMAXSASASMAMAXAAAAAAMMSXMXSXASMSAMAMAMAMXAMAXXXMAMASAMASAMAMMAMAMSMMMAMASXSASASAMSMSMSSSSMAM
|
||||
SXMAAXXAAMSXXAASMMMMMAXMSAMXXAMXXMXMXXAXAXXMAAMXXMSMSASXXMSMMSAMMSMAMAMAMAMMXMXMAXAMASAMMMXSMXMASMMSASASASXSMMMMAAAXMASMSAMXXAMMXAXAMXMAMSAS
|
||||
SAASAXSMXMAMMMMMMAXASXMASMMMSAMMSMAMSMSMSMAMSXXASMMAMMMMSMMAMSXXAXXXMMSAMASASXSXMMXMAMASAMAAMMMAAAASXMASMMXXXXAASXXMXAAXMMMSMMSAMXSMSSMAMSXS
|
||||
SAMAAMSXSMMSMAAXMMSMMMAMSXAAXSMSASASXAAAMSSMMMSXSAMXMAMASASAMXMMMSAMXAMASXXASMSAMSSMSSXMAMSSSXMXSMMSXXXSAMXAXMMMMASXSMMXXSAMXAAAMAAXAXMAXXAM
|
||||
MAXXSXSAMMXAXMSSMMMXMMSMMMSSXXXSAXXXMXMXMAXXAXMASMMSSSMASMMAMAAMAXAMMSSMMXMMMAMAMAAAAXAMMMXAMMMMXXAMXMMSAMMMMAMSMAMAAAMMMMAMMXSMMMXMASMMSMAM
|
||||
XMMMXMMAMSSMSXAXMAASMAXAXAAXMMMMSMASXXSAMAMSMSMAMXSXAAMAMMXMSSMSMSAMAAXAAXMASMSAMSMMMXMMAXMAMAAMMMXXAAAXXMAMMAXXMASMMMMAMMAMSMMAAXSAMXXAAMXM
|
||||
AMAXAMSMMMAASMMSXMXMMAMMMSXMAAAAMMMMAASASAAAAAMXXXMMMMMSMSAMXMAAXSAMMSSMMSSMMAXXMAMASAXMMMSAXMSSMAAXSXMSASXSMMXSAMXMXSXSMMAMXASXMSXXMAMXXSXM
|
||||
XXAMXMAAASMMMAMAMSMSMSSXAXMASXMSMMXMXMXASASMSMSSXSMSXSAXXXASAMXMMMAMAMXAXAMXMASXSMSASXSAAXSMSMXAMMSXMAXXMAMAAAMAMXASXSAXAMMSMXMAXXMSMSSSSMAX
|
||||
MXSXMMSSMSAMXSMMMAASAXMMXSAMAAMAXSAMXXMAMAXAXAAXAXAAAMXSMSMMASAMXSXMASXSMSMXMMSAAAMASASMMMMAAXMXMMMAMXMASMSSMSSSMSXSAMAMMXMAMXXMMSMSAAAMXSMM
|
||||
SAMAAAAAXSXMAXAXSMSMXMASMSXSXXMAXSASMSXMMSMAMMMMMMMMSMMXMAMXAMASAAXSSSMMAMAAMXMMMMMAMXMAAASXMMXMMXMXMSMXAAAAAXAMXXAMAMAMXXSASMMXAMAMAMSAAAMA
|
||||
MASXMMXSMMMMMSXMASXMMAAXASAMXSXSASAMMXXAAAASXMMXMXMAXAAASASMASXMXSXXAXAMAMSSSSSXMAMAMAXSMXXAASMASAXMXAXAXXMXSMSMXMSMASXSAXMASAAASMXMXXXMSSMS
|
||||
MAMMXSAMASXAMXASMMMASMSMMMXMMMAMMMAMAMSMSSXXAXSAMMSMMSSMSASXXSMSAMMMMMSSXXAMMAXMMMXAXXXXMMSMMAASMXXAXMSMSXSAMMXSXXXSMSAMMSMAMMMSMAMXXMSXMAXA
|
||||
MMSMAMXMXMMMMMAMAXMAXMAMXSXSAMMMXSAMAMXAMXASAMSASAMXAXAMXXMASMAMMMMAXXXMMMASMSMMXMASMSXSAAXASMSMSMMXAXAXMXMASXAAMXMMMMXMSXMXMMXXXXSXASMASMMM
|
||||
MSAMMSMSSSXSAAAXXMMAMSAMASASAMMSXMXSAMMAMMMMMXSAMXAMXSAMXMXXXMSMXXMMSMSMXSSMAXAXAMAMAXAXMMSXMXAMAMASASMXSAXMMMMSMASAMXAXXAMASMMSMMSXMXSXMXAX
|
||||
MXASAAAXAAASXXMXSAMXAMASXMMMXSSMMSASAXSSMSXASMMXMMXMMSAMMXSMMMXMAXSAAAAAAMAMMMMSASXMSMSMMAXXXMXSAXMAMXMASMMMXAMAXXSXSXMASAMASAAAAAMAMMMMMSSM
|
||||
SSMMXXSMMMMMAMSASXSMMSASXMAMMMXAASMMSMAAXASAXASXSMSXASASAMXAMSAXAMMSMSMSXXAAMXXMAXAAMMMAMXSSSSMSMXMAMAMMMXAXSXSASMSAMXXAMAXASMMMSMXAMAAAXAAS
|
||||
XAMXMMMAXXXMXMMASAXAAMXMASMSASMMMSXAXMSMMMAXSAMXSAXMXSAMMMSXMXMXASAXXAAAXSSSMXXXMMMMMASAMXAAMSASASXSSSSMSMMXAAMASXSAXAMMSSMMSMSXMMSSSSSSMMSM
|
||||
SAMXSASXSXSMMXMAMAMMMSASXMASMSAAAMMSSMXAMXAAMAMAMXMMMXXMAMXSAAMSXMASXMSMMMMAMXMMMASXSMSASXMXMMXMAMAAXAAAAASMXMMXMASXMMSMAMAXMAMAXMAMXMAMXXAM
|
||||
MMSMMMSASAMXAXMASXSXSAMXAMMMXSXMMXAXAAXMAXMXMAMASAMMASASXXAAXMMASMAMAXXXAASAMASASASAXXXXMAXSMSMMMMMMMSMMMAMAAXMSAMXMXAAMMSSMMAXMMMASMMSMSMMS
|
||||
MAAXAXMAMXMASXMXMMXMAXXSAMXSMSMMMMXXMMMSSSMXXASAXXXAMXAXAMSSMSXASMXSXMXASMXASMSASAMXMMSMSXMMAAXAXXXMAXXXMASMMSAMMMAXMASMMMASXAASASASMAMASAMX
|
||||
MSSMMSXXAAMXXXMAAMMSSXMMXXMSAXMAASMSMXXAAAASMMMMSMSSSMXMMMMAAXMASXMAMXMMMXMAMXMMMMXMSXAASXSMSMSMSSMMSMMXMAXMASASXSMSXAXAASAMXXSAAMASMXMASAMM
|
||||
XAMAXMMXSXSASMMSSMAAMXMAASAMMMMSXMAAXAMMSMMMAXMXAAXAAXMAMASMMMMXMASXSXXSAXXAMXSXASAAMMMMMASAMASAAAMMAAMSSMMAMSXMAMSSXMMSMMASMMMMAMXMXAMAMASX
|
||||
MAXSASXAMAMMSSMXAMMSSXMAMMAMXXAXAMSMSXXAMAXSXMASMSMSMMMXSASASAXASXMAMAMMASAAMAXSAMMSMMAAXAMAMAMMSSMSMSMAAAXSXSAMMMASASAXXSAMXSASMSAMSMSMSAMX
|
||||
MMMMAXMMMAMASAXSAMAMMMMXSSSMMMMSMMAAMAMASMMMMMXXAMAMAMSAMMSASMSASAMAMAMXAMMSMAMSMSMXASMSMASXMAMMAMAXAAXSSMMMASMMXMASXMASAMSSMSASASAMSXAMMASX
|
||||
SASMSMAAMXMXSAMSAMXXAAAMMAMMMAMAASMMMAAXMAMAAXMMXMASAMMASAMMMAXAMAMXSMSMSSXMMXXMAAASAMAAMAXXSXXMAMSMSMXMMMAMXMXMXMASAMAMAMMXMMXMMSAMMMSXSMMM
|
||||
MASAXSSMXSMAMMMMXAXSSXXAMAMXSSSSMMAMSMSSSXSSSSMSASXSASMXMMSAMSMMSASASXAXAMAXMMMMSMXMSMSMSMSASAXSXMMMMMMSXSASXXAMSMMSAMXMXMMMSXSAXMAMAAXMMSAS
|
||||
MSMMMMMSAAMXXAAMAMXXMAXSSMSMMMAMXMAMAMAAXAMXAXAMMSXSXMASXXMAAMAMSAMASXMMMMMMMAXAXXSAMXXAMAMAMXMMAMXAASAAASASAMASXAXMXXSXSMSAMAMXMSSMMMSAMMXM
|
||||
SAAXXAAMSSMMSSSSSMXMMMMMAMXAMMSMASXSSSSMMSMMSMSMXMAXASAMMASAMMAMMAMAMAMAXAAMXXMASAMXMXMAMSMAMMMSAMXSSSMMMMXMMSMXXMMASMSAMAAXMSMAMAXAMAMAMAAM
|
||||
ASMMSMXMAMXAAAAAMXAMAXASXMMSXAAMXSAAAAMXAXASXAAXMASXXMASMMMSMSMXSAMXXAMXMSMSASMMSAMXSXSXMXSAXAMSXMXMAMAMSMSSXAMMMSMMMAMSMAMSMAXAMMSMMAMXMSAS
|
||||
MMMXXXXAASMSMMMMMMXSMSASAAAMMSMSAMMMMMMMSXMMMSMSMAMXMXXMAAAMMAAXMMXXXASAMMASMXAASXMXSAMAMAMMMSMMMSMMAMAAAAXASASAASAMMMAAXAMAMMSMMXAXMSSMXMAA
|
||||
XMMXMASMXSAXMXMXSAMAAMXSXMXSAXAMMXXASXSAXAMXAAMAMXMAMMSMSMMXSMMMAMAXMMMMXSASXMMMMAMAMAMAMSSMAAAAAXXMASMSMMMMSXMAMSAMAMSSSXSXXXAXASMSMMAMAMXM
|
||||
AMXMSAAXAMXMSXSASAXXXXXXMSMMMMAMSSMXSAMASAMSSMSXSASASAXAASMMSAXSSMSMXAAXAMXMAXSXSAMMSMSMSXAMSSSMSSXAMAMXAMSXMASXMSAMXMXAXASAMSAMXSXAMSAMAMMX
|
||||
SAAMMSSMMSASXSMASMMSSMMSAMXAMSSMMAMAMXMASAMAXXAMSASASMMSMXSAMXMMAAAASXMMMSAMXMAASXSXAAAMMMAMXMMAXMAXSAMXSAXMAMXMASXMXXMMMMMAMMMMMMMAXMXMAMXM
|
||||
MXMMAMXAXSXSXAMAMAXAAAAASMMAXAXXXAMXSXSASXMASXSMMAMAMXAAAXMMMAAXMMMMMAAMASXSMAMXMMMXMSMSAMMSMSMMMSAXSASAMMMSAMAAMMMMXMMMSMMMMMAAASXMMSMMAMAA
|
||||
SAMMSMXAMXMMXAMASMMSXMXSMMMSMASMSMSASMMASMSAMXMAMSMMMMASAMXSMXSXSMXXXSMMASXMAXMXMAAAXMAMXSAAMMASAMXMSAMXSXAXAMSSXAASAAAASAAAAXMXMMAAAAMMSSXS
|
||||
SAMMAASXMSAXSXXXAMAXXMMXASAAMAMMAXMASAMAMMXXMASAMAAAXMAMAXAXSAXMASXMAXAMXMAXXASXSMSSSMAMAMXXSSMMXSXMMMMMSMMSSXMXMSSXMMMXSAMSASXSSSSMMXXMXAMX
|
||||
SAMMMMMAASMMXASMXMASAMXXAMSMMSXSXSMMMXMXSSSMSASMXSSMAMASMMSSMXXAMXMAMXAXSSSMMMAAXMAXXMAMMXSXAAXAXSMMAAAMXAAAMXAMMMAMMASAMXMMXXAAAMXXSMSXMASX
|
||||
SMMXSASMMMAMMMMXAMAXAMXMSMMXAXAXAMXSAXXSMAMAMXMAAXAMXSXSXAMAXSMSXXXASMSMAAMXASMAMMMSSSXMSASMSMMMSMASXSSSSMMSSMMMAXMASASASMXXMMMMMMMAAAAXSAMM
|
||||
SAMXSAXAASAMAMASXMASXSSXAASMMMXMASAMXSMMMAMSMAMMMXAMASASMSSMMSAMASMAMAAMMMMSASAAMAMMAMAAMAMAAAMMMMMMAAAMAASXMAXSMSXAMASAMAAXXAAAAAXXMXMMMASA
|
||||
SAMXMAMSMSSXXMMAMXXMAAASMSMASAMSMMASMMXMAMMXMXSASXMMMMMXAXMAAMAMAMMSMSMMMAASXSXMMAXSAMXMMMMSSMMMAMXMXXSXSMMASMMMASXMMAMAMSMSMMMXXSSXMXSASAMX
|
||||
SSMXMAMAAXAXSMSMSMMMMMMXMXMAMMMAAXXMAXMAASMSXMXXMASMSMXMSMXMMSAMXSAAAAXMXMXMAMXSSSXSASMSASAAAAMMAXXXMXMAMXMXMAMMAMAXMAXXMAMSASMSMAMXMAXMXMAS
|
||||
SAXMMMSXSMMMXAAAAAASXSASMAMMMASXSMSSSMASMSAMASXMSMMAAMAMAMXXMXASMMMSSMXSAMXMSMAXAMASAMAAAMMSSMMSSSMASAMXMSSMSMMMASMMSASAMXXSAMAAMAMMMASMXSSM
|
||||
SMMSAMXMMAXAMSMSMSMSASAMMXSASMSAXAXXXAXXAMMSAMMAAMMSMSXXAXXMSSMMAMMMAXAMAXMMMAMMMMMMAMMMMMAMXXMAMAAMMASMAAAAAAASXMXMXMAXMMASMMXMSMXSMASMAMAM
|
||||
SXASMSAMSSMSAMAMAXAMXMAMAXSXSAMMMXMXMSMMMMAMASXMASAXXAASMSMAAXMASAASXMMSAMSASAMAAAXSAMASXMASMMAMMMMXMAMMMMMSMSMSAMXMAMAAXSASMSMXMMAXMXMMAXMM
|
||||
XMAMXMAMAXAXMMAMXSAXXAMMMXMASASMSAAXAAXAXMXSMMAMMMXSXMAMAAMMMMXAASAMXAMMMMSASMMXMXXSASAMASXSAMMMASXMSSXXAXXXMMASAMAMAMXMMMAXAASAAMMSSMMSSSXS
|
||||
SSMMSSSMMSXMASXMASAMSSMAXASASAMAMXXXSSSMXAMXXMMSAAAXAXMMSAMXSMMMMMSSMSAXAAMMMAASXMMSMMXSXMASMMASMSAMAMASMSMAMMMMSSMSMSAXMMSMSMSMSAAMAAXAASMS
|
||||
AAAXAAXMAXAAXXAMXMAMAAXXMAMXMMMAMMMMAAAMMSASAMAMMSMMMMXAMASAMXAMXAAXXAMMMMXAMXAAAAMXMAXXAMAMASAMXSAMAMXMAAMAMAMMASMAASAMXAMXMAXAMMXSSMMMSMXX
|
||||
SXMMMMMMMSSSXSXXXMAMMSMXAAMAAAXAXSAAXMAMAAMSAMASXMXAMXMAMAMASMSSMMSSSMXAAMSMSMSMSXMAMMMSMMASXMMSMMXMAMAXXMSSSMSMAXSMXMMMMAMAMMMMMAXMASASAMMS
|
||||
MASAMXAXXAAXXAMXSMMMAAAXMASMXMSMSAMMMXMMSSMSAMXXAAMMSAXXMSSMMAMXMAMXMXAXMXAAXXXAXMMXSAAAASASMSMAASMSSSSMMXMXAAAMSMXXMASXXAMSMSAMMSMMASXSASAX
|
||||
SAMASXMMMMSMSXMASAAMSSSMSMXMXXAMAMSXSAXAAAAXXAMSMMMXMASXXAAAMSSSSSSSSXSSSSMSXMMSMMSAMMMSMMASAAXMXMAAXSAASMXSMMMAMASXMXAAMMMXASXSAAMMXSMSMMXS
|
||||
MXSAMMSAAXMAMXMAXAMXXAXAXXAMXMASAXAAMAMMSMMMSXMAMASXMASXMMSXMMAAXAAAXAXAAXMMAMMAASXSMAXXAMXMMMXSAMMMMSSMMMASXMXASMMAMXMMAAAMXMMMMSSMXSAMAMAS
|
||||
MMMMSASXSMMAMMMMSSXSSMMMMMSMSSMMMMXMMAXMAXSAXAMMSASAMSMMAXAAMMMMMMMMMXMMSMASAMSMSMAMMXMXAMMMMSAMMXXMXMAXAMASASMMSXXAMAXXSMMSMMXSAMXMAMSMAMAS
|
||||
AAAMMASXXASAMMAMXMAXAXAXSAAAAMSAXMMMSXSMXMMMSSMMMMXAMAAXSMMSMMASAMAXAMXXXMASXMAXAMXMSSSSSMAAAMAXSAMSMMMSMMASMMAMSMMMMXMMXMXXAMASAMXMMMAXSXMS
|
||||
SMSSMSXMMAMAXSXSAMSMXMMMAXMXMMSMMSAMAMXMAMXMAMAXAMSSSMSMAMAAMMASASXMXAXSXMASASAXMAMXSAXAAXXMXXXMMASAAAAAAMAXMSSMMAASMMXSAMXSSMASMSMMMMMSMAAX
|
||||
XAMXMMAMSSXMAAASMXAAASXSSSSXXXXAASXSSSMSSSMMASMMSAAAMAMXAMSSSMASAMXXASAMAMAMMMMSXAASMMMSMMSMSMAMSMMXSMSSSMSSXAXMMMMMAAAMASMAXMASAAAAAASAMAMS
|
||||
MAMAMSMMAXAMXMXMASMSMSAXMAMMMSMMMSAXXAMXAAAMAMAAMMSMSMSSXXXAMMAMASAXMMASAMMMSAASMSMMAXAXMXAAASXMAXMAMMMAMAMAMMSMMSMSMMMSAMMMMMAMMMSMSXSAXSSM
|
||||
AXSAMAMMMMXMMMMSMMXAAMMMMAMAAXAASMMMSMMMSMMMASMXMAMASAAMXMMMMMMSAMMMXSAMASXAXMXSAXAMXMMSSSMMMSXMMMMMMXMAMSMXMXAMXAAAAMXMMMAMXMSXXMAXXMMMMXAX
|
||||
SASMSXSAAMSMMAASXSSMSMSXSXSMSSSMSAAMMAMMMMXSXSXXMMSAMMMMAMMXSAMMASXMAMMSXMMXSXMMMMMASMMAAAASXMAMAASXMASXMAMMXMAMSMSMMSAMSSSXMAMAAASAMXASXSSM
|
||||
XXSXMMSMSMSAXMMXAAAAAAMXXMSAMAAAMXMMSAMMAMASAMAXSMMASXMXMSAASAMSAMAMASAAXSMXAXMAXSMAAAMMSMMMAAXMAMSAXXSASXSAAMXMSXMAAMXXAXMAMAMSMMMXSSSSXAXX
|
||||
MMSAMASMMAMAMSMMSMMSMSMAXAMAMSMMMAMMSXMMAXAMAMMMSASAMXSAMMMXSAMMSSXMXSMMMAMMMXXAAXMAXXXAXMASMMMAMSMXMAMASAMMXSAMXAMMMSMSMSSXMAXAAASAMMMMMMMM
|
||||
AAMXMASAMMMSMMAAXAXXAMAMXSMMMMXAMAXAXSSSSMSXMMMXSAMASAMMSXMMMXMAMMMSAMXXSAMAAMASXMSSMMMSSSMMMASXMAAAMXMSMAMAMSASMSMSXAAAXAAXSSSSSMSAMXAMAAAX
|
||||
SSMAMAMMXSAXAMMMSMMMSMMXAXAXXXMMMSMMMMMAXAMXSAMMMMSXMASAMXSSXMMMSAAMAXXASMSMMSAMAMAAAAXAAXAXSASXSMSMSXMAMXMAXSAMAAAMAMXMMMMMAMXXMASAMXMXSSSX
|
||||
AAXSMXMXXMASXMSXSXMAXAMMMSSMMAASAXASXAAAMXMAXASMAAAAMAMMSAAMSMAAMMMSAMSXMXAXMMASXMMSMMMMSMMMMASXMXXAMMXAMMSXMXMMSMSMXMAAAAXXXXAMXASXMASAMAMX
|
||||
SSMMAMSMSMAMAMSAMXSASAMSMAMXASMSASAMXMMXMAMMSMXMMXSAMASXMMMMASMSSMAMAXMASXMSXSAMXSXXXAXXAAXXXMSAMAMASMSXMAXSXAMXXAXMASXSMSSSMMSSMXMASASAMAMM
|
||||
MMAMXMAASMSXSMMAMAMXSXMXMASMXXAXAMAMXSAXSAMXAMSMMMXMXMXAXSXSAMSAXMXMXAXXMAAAXMASAASMSSSMMSMSAMXAMMSAMMAXASMMSXMAMMMMXAMXMXAAXAAAXSMMSMMMMMSS
|
||||
MMMMSSMSMAXSMASXMXSASAASMXSAMMMMMMXXXAAXMMSSMXAAAAMAAMXMMMAMASAMXASXMMSSSMMMSXAXXAMXAASAAMASMASAMXMASMSMMXAMSMSXSASXSMSASASMMMSSMSAMMAXMSAAA
|
||||
MAAAAXXMMAMAXXMXAAMASXMAXMXXMAXMSAMXSMMMMAAMMSSSMSSSMXAAAXSMMMMXXMASAAAAMMMXXMMSMXAMMSSSMMAMMMAAXAXXMAXXXSAMXASXSASXAASMSAAXMAMAASMXMSMAXMAS
|
||||
SSSMMSSMMSSMMSMXMXMAMASXSSSMSSSXMASAXXSXMSSMAAMXAAAAAXSXMSMMSAXSASASMMMMMASASXAAASMSMAMAMMXMASMMMSMAMMMMMSXMASMAMMMMMMMAMMMMMMSMMMXMSMAMAXSM
|
||||
XAAXXAMAAXAXAAXAMSMMSAMMAAAAAAMXSAMXSAMXAAAMMSXXMMXMMMMASAMAMASXXMASXSXXMAXMXMMXMAAAMAMAXXMMXMAMAXMASAAAMXMAMAMXMASAMMMMMMXAAMXXXMAMAASXMSAS
|
||||
MSMMMASMMSMMSSSXSAAXMASAMSMMMXMAMXMAMXAMMMSMMAXXASXAMSSMMAMXMMSAMXXMASMMMSSMAMSSMXMMSSSXSAXXASAMXXSASMSSSMXMMSMXSASMSAAMAXSXMSASMSSSSSMAMAMX
|
||||
AAXMAMMXMAXAXXMXAXXMMXMXMXMXMAMAMAMSSSXSAAXMMSSMAMXSXAAXSAMXSMMMSSMMXMSXAAAXASAAXSXXMAAASMMMXSXSAAMXSAMAAAASXXAAMMSXSXSSMXSASMAMAXMAMXMXMMXX
|
||||
XSAMXMXSMMSMMMXXMAMMMXXAMAMASASASAMAAXAMMMMAAAAMAMMMMSSMSASXSAAAXMAMXXAMMSXMMMXSMMASMMMMMXSXMMMSXXXAMXMSMSMSASMMSXMASXMAMAMMMAMMSMMSAMXMXXXX
|
||||
MXXMASASAMMMAMMMXSAASMSASASMSXSMSASMSMMMSMSMMSMSASXAAXAMXXMASMMMSSSMSSMSAMMSXAAMAMAMAXXXXAXAAAAXAXMXSAAXAXXMXMASXASAMASXMASAMXMAXXXMMMAMXMMM
|
||||
MMSMXMASXMSMXSASAMSMAASASASASAMASAMAXXXXAAAXXMASASXMSSMSAAMXMASXMAAAMMXMAMASMMXSAMASXMSXMASXMMSMMXMASMSMSMXXASMMSXMAMXMAMXMXXSMXXSXMASAMXASX
|
||||
AAAAAMXMMXSAASMMXMASMAMAMXMXMMMAMMMSMMMAMSMMAMXMAMAMXMASXXSASAMAMSMMMXMMAMMMAAAXASASAMXAMASASMXAXASAMAAAAXMXXMSAMXMSSMMSMMMSMMMMMSASASAXSAMX
|
||||
MMSSXSMMSAMMMMMSMXMSXAMSMSMSMXMXSXAAAAXXXMMSSSMMXSAMXMXMMMSXMASAMAMSMAXSAMXSMMSSMMASMMASMASMMAMMXMMAXSMSMMMSMMMMSAMAAXAAMAAAAAAAXSAMAMXXMASX
|
||||
SXMMASAXMMSMXAXXASMMXSSXAXAAMASMMMSSSMSXAXAAAAXSASASXMMAAAXMAMXMXMXAMAMSASXSXAMAXMMMASAXXXMMMSMSSMMSMXAMXSASAAAASAMXSMSSXMSSXSSSMMMMMMSXMMSA
|
||||
XAASAMSXXXMXSMSMXMXAAXMMMMSMSASAXXAAXAMMMMMMMSMSASAMASMXMXSAMXXMASXMXSASAMAMMMSMMMXSAMMSMMSMXMAMAAAMAXXMXMAXSMMMSAMXXAXAAXAMAMAMAMXMSAMASAMM
|
||||
SXMMAMMMMSXAMSAXASMXMMXAAXXAMMSXMMMXMXMAXAXMMXASXMAMAMMMSAMXMXMMAXAXXMAMAMAMSAAMASAMSSMAMMAMMMAMXMMSSMXAXMSMXMSAXMSSMMMSMMASXMAMASAXMASXMASX
|
||||
AMSXSMAAAAMXSAMSXSAAMMMSMSMAMASASXXXAASASXSXAMAMAMXMAXAMXXMASAAMXSSMSMAMXSSXMSAXAMASAXXASXASXSMMXSAMAMMXSAMXAXMMMMSXASAMXMMMMSMSAMXSXAXASAMA
|
||||
SASAXXSMSXAXAXMAAXXSAAAAXMMMMMSAMAMMSMMMAMMMXMAMAMXXMSMSMMSASMSMMXMAMSASAMXAMMXMASMMMMMMMMAMXAMXAMXSAMMMSAMMMSASXMXXAMXAAXAAXAAMMSMMMMSMMMSS
|
||||
MAMAMAXAMXSASXMSSMMXAMSSSMSMMMMMMXMAAXMMMXAMAXSMSMSMAAMAAAMASAXXAAMAMMXSAMSMMAAXMMXAAAASXSASXSAMXSAMASAAXAMXAXAXMASMSSMSMSMSSSSMAAAXAMAMAXAA
|
||||
MXMSMSMSAAXSMAXAAAXSSXAMMAAAAAMMSXMSSXMASMSSSXMAXASMSMSMMMSASASASMXMXSXMXMAMMMXAAASXMSAXXMAMAMMXMXMSMSMSSSMXMMSSMXMAMAMXXXXAXAMMXXXXMMMMXSSM
|
||||
MXMXAXAMMMSASMMSSMMMMMXSMSMXMXXASAMXAMSSMAAAMAMXMXMAXAXXXXSAXAAMXMASAAAAMSXMAAMMMMSAMMMMMMSMMMMSMMXAMXAAAAAXXAAAAXMMSSMXXSMSSMXMSSSSMXSAMXAX
|
||||
MXMMMMXMMXMMAMXAXAMXXMMMAMAMSSMMSAMMMMXAMXMAMMMXAXMXMXMMSMMMMMMXMSXMASXMAMMSMXSXAAMMXAAMMAAAASAAAXSMSMMMSMXSMMSSMMSAAXMXMMAAXXXMAAAXAAMAMXMX
|
||||
SXMAMSMXXMMMSAMXSXMXAMXSMMAMAAAMMAMMXMSXMASMXAMXSAMASAXMAXAMXAXAXXAMAMXAXXAAXAXXMMMXXMMMMSMSMSXSMMXXAAAAXAAAMAMAAASMSMSAMMMMSSSMMSMMMMMAAAMM
|
||||
AMMAMMXXASMAMXSXMASMMAAXMSXMSSMMSSMSAMXAMASAMXAMXMSASMSSMXXSSSSMASAMSSMSMMSSMMMAMXXSXXAXMMMMASAXMSSSXSMSSMMXMASMMMXAAMMAMXMASMAAAAXXXAXSSMSA
|
||||
MSSMSAAMSMMMSMMASAMASAMXMMMMAAAXAMASXSXSMMSMAMAXAXMXSAXAMSMXMMAMMAMMMAAMXXAMXXAMXSMSASMMMAAMAMAXMAAMMMXMXMSXSASXSMMMMSSSMMMSSSSMMMXAMMXMAMAX
|
||||
XMAMXMASXAAAAAXXMASXMMMAAXSSSMXSAMXMASAMAMXXMASMMXSAMXMAMAAAMSXMMMXAXAMXXMSMASXMMXAMAMAASMMSAMXMMMSMASAXMXMAMAMAAXMAXXAAAMSMMXXAXXMXXMAMAMMS
|
||||
SMMMSXMAXXMMXMXSSMMASASXSMAAAXASAMXAASASMMSXMAMAMXMMSXSAMMSSXMASXXSXXSAMXSAMXXAAMXMMAMXMMAASAMXSMMMXAMAXXSMMMXMSMSXMXMXMMMMAMXSXMXMASMMSMSAS
|
||||
MAAAXMAMAMSXSMXMAASMMAAAMMMMMMASAMXMAMAMAXXAMASAMMSXXAXAXXMAXSAMMXMASMAAXSMSXSSMMMASXSASMXMSAMAAAAAMMXSASAAXXMAMAAXAMSAMXMXAMMMSAXMXXAAXAMAM
|
||||
SAMSSXXXMAMAAXAMMMMXMSMAMAAMXSASXXXXXXSSMMMXMASAMASAMXMMMSAMXXSXXAMXMSMSMMXAAXMASXMMASASAMASXMASMMSSMAMXAXMMMSAMXMXXAXMXASMXSAXXSXSMSMMMMMSM
|
||||
MXAAMMMXMAMXMSXSXMASAMXXMXMSASAMXSMMMMMAMMSAMXSAMSXMXAXMAXXXMMMMSSSSXMXAAMMMMMSXMAXMAMASAMXMXMAXAAAXMXMSXXSXMASAXSMSSXMMMXAASXMXMXMAAXMXSAMX
|
||||
MMMASXSSSSSSXAASXSAMASXSSMAMAXAMAMMAAAXXMASASASXMAMXSMSMSSXXMASASAAMMSMSXMAAAAXMMXMMXSASXMSSMXAXMMSMMSXMAXXAMXMMSXAAXAMASMMMMXMASAMXMSAXMASA
|
||||
XASAMAMAAXAAMMSMAMXSAMAAAMAMMXMMXXASMMSAMXXMMMMXSSMXAAXXMXMXMSSSMMMMAXMMMMSSMSSSMSAXAMAMAAAAAMSSXAMAAXAMXMSSMMAXMMMMSXSAMAAMXSMMSASAAMMMMXMX
|
||||
SXMMMAMMMMMMXSAMXMMMXMMSMMMSMXSASAAXAXMASAXSASXMAMASXAMXAAAXMAMMMMMMSSXSAXAXXAAAASXMMSSSMMMMMMMAMSSMMSSMXMAMASXXAAAXXMMMSSMSAAMAXAMMXMXASAMX
|
||||
MMSASXSAMXMMXMXXXSXMXSAMXSAXAAMAMMXMMMSAMXMMASMMAXAAXAAMSMSMMASAAMAMXMASXMMSAMMMMMXSXAAAAMXMAXXAXXAAXAMXXMXXMSMSSSSSMXAMAXXMASMSSMMMMMSXXASX
|
||||
AAXAMASMSMSMMMSSMMAMASAMXMMMMMSASXXMXAMXSSSMAMXSMMSSSMSMMMAASMSMSMSSMMAMAMAXMXSXXXSAMSSXMMXXAMSXMSXMMSSMMMSXXMAXAAXAXSSSMSMSXXAMXXAXAAMXSAMA
|
||||
MMSAMXMXAAAXXAAAASXMASAMXXAAAASXSASAMXSXMAAMMMXAXAMAMXAAXSSXMMSXMAXXAMXSAMXXXASXMMXMAXMASMSMXXMAMAASAMAAAAXXAMXMMMMSMMXAXSAMXMAMXSSSXSAAMAMX
|
||||
XXAXXXMSMSMSMMSSMMAMXXXAMXSMMMSMMAMSAMXAMXMMMSSMMMMMAXXMMXXXMASAMMMSMMXSMSMSMMMAXAAXMXMASAAXMASXMSSMASMMMSSXSMMXXXAAAXSXMMSMXSAMXMXSAMXXSAMM
|
||||
XMASMAMMXMXXXAXXMSXSMSXMXAAMMAMAMXMXXMXAMAXAXAAASASXSSSSXMAXSXMMMAAAAAAMXMAAMXSMMSMMSASAMXMMSAMXXXAMXMXMSAMAXASXSMSSSMXASAMXMSXSMSAMXMSASASM
|
||||
MXAXMAMMMSXMMMMMXXAAXMASMSSXMASXMMSXXMASXMSMSSSMMASAAAAXMXSXMAXAMXMMSMXXAMSMSMMSAAMAXXXASXMAMMSSXXMMSMAMMAMMXAMMAAMMXMSSMMSSMMXMAMAXSAMXSAMX
|
||||
SXMSSMXSAAAAASASMMMMAMXMAAAASXMXMASXMASXAXAAMMMAMSMMMMMMAAXASMSMSXSAXXXXMXAMXMAASXMASMSMMAMXSXAXASAMXMASMXMXMSMMMXMMAMXMASAMAXSMASMMXXSAMXMX
|
||||
SASAMXAMMXXMAMASMAAXSSSMSMSMMASXMASMAXMSMMMMMASAMAMSMMMSMMSAMAAXAAMMMXSAMSAMAMXMXXMAMXAMXXSSMMXSMAAMXSMSAASXMAAXXMASASMSMMMSMMAXAXXAMMMXSMSS
|
||||
SXMASMMXXXSXSMAMMSSMMAMAAXMASAMAAXSMMMMXXAAASXXMMAXMAAAAAXMXMMMMMSMSAMXAMAASMSMSSXMXSSMMSMMAAMAMXAAXMSAMMMSASMXMSSMMAMMAXAAAXAMMSXSAAASXMMAS
|
||||
SMSAMAXMSMMAMMXMAXXASAMMMMSAMMSMMMMXAAMSMXSMSAMXMMSMMMXXSMMASXSAXAAMSSMSMMXMAAAXMXSAAAXAAAMSXMXSMSSXAXXXXXSMMSAAAMXMSMSSMMSXSSXAMMSXSMSASMAM
|
||||
SAMXSSMMSAMXMASMMSSXMAMXAMMASASMSMAXMSMAMMMAMMMAASAMXXSAMXSXSAASXMXMMXAXMAXMSMMMMAMMSMMSSMMMSMMXMAMMSMSMSMXSAXMMMSAMXASAAAAXSXMXSAMMXASAMMSS
|
||||
MAMXAXMASMMMAMMAAXMMSAMSSMMAMXMAXMMSMAXXSAMAMAMSSMASAAMMMXMMMMMMMMMXMMSMAXXMXXMXMASAMXXMAASAMXAAMASMAXAAAXMMSSMSXSASXMMSMMSSMAMAMMMAMMMXMAMX
|
||||
SAMMMXMAMAMMAMSMMSAAMAXMAAMSSSMSMMAAXMASMMSSMMXMAMAMMSMAMSASXSXAAAXMMAXXASMMAXAASXMASMSMSMMASMSXSAXXMMMSMMSAAMXMASMMAMXXXXXXMAMASXMXSXMSMSMM
|
||||
XAXASXMASAMSAXAAMMMMSMMMMXMAAXAMAMSMSMMAMXAAXXASXMXSXAXAXSAMAMXMSMSASAMSXSASAMSASAMXXAXXMASAMXMAMMSMSAAAAAMMMSAMMMAMAMAMMASMXXSAXAMAMAAMAAMA
|
||||
SMSMSASASAMSXSMSMXAAXAAXXSAMXMAMSMMAAXXMMMMSMSXSAMXMXMMMXMSMSMAMAMSXMAMAAMMMXXXAMMSSMMMMXMAMXAMAMSAASMSMMMSAXSXSMSSMASASXASASXMMSMMASAMMMMSS
|
||||
AXAAXAMXSXMSAXMMMMMSSSMSAMAXMMXMAAMSMMXXAAMXAMXMAMASAXASAMXMAXMMAMMXSXMMMMASXSMSMAAXAAASAMMMMMXAMMMMMAAXXXMMXMXSXAXXXMAAMAMXAXSAAASASXXSAAXX
|
||||
MSMSMXMXSMMMXMAMSASAMXAAASAMXSASMSMMXMSMSMSMSMSSMSASASASASXSMSXSXMXAMMMSXSAMAMAMMMMSSMXXASXMASMMSXMAMMMXSMMSXMASMMMMMMSMMASAMXMMSXMASXAXMXMX
|
||||
XAXAAXMASAXAMMXAAMMSSMMSMMMMXSASAMXMAMAMMAMAXXMAMSXSXMASMMAAAAXAXSMSXSAAXMASAMAMASMMMSMSMMMMXSAAAASXSMXAAAAXAMASXXAAMAXXMASAXAXMMMMXMMMXMAAX
|
||||
SSSMSXSAXXMMMSAMMXMAXAXMASXSMMAXXAAMSSSXSAMAMXSXMMAMXMXMXMSMMMSMSMAMAMMSSMXAMSASASASAMXAXAMSASMMMMMMAAMSSMMSAMXSMMMSMASXSMSMSMSMAAAAXAXAXXSA
|
||||
MAMAMMMAXSAMASXXAAMXXSASMXAAXMAMMSXAAAMASASMMASMMMAMMMMSAMXMAMAXAMAMXMAXAXMAXAXXXSAMXSSMXMSMASASXXAMMMMXAXAAASAMASAAMXMASAMAMXAMMMXMMMMAASMX
|
||||
MAMAMAMAMXAMASXMSXSMMMASXMSMMXXMMAAMMSMASMMAMAXAASASAASMMMXSAXSSSMSSSMSSSMSAMXMXMMMMXMXXAMAMXMASMSSSXXSXMMXXXMAMAMSSSSMMMAMAMMSSMSAMSSSMMXAX
|
||||
SXMAXMMASXMMMXMAAAXAAMAMAXXAAAMSXMMSAXMASMSASMSSMSASMSMMXSAXMSMAAAXAMAMAMAXMAAMAAAAMSMSAMMAMXSAXMAXMAMSXSASMSSSMAMAMAAASMXMXSXAAAMASAAAXXMXM
|
||||
SMSMSASAMAMAMSXXMSMMSSMSSMMSXXAAAAAMXXMXSASXMAXMASXXMMXXSMAXSAMMMMMAMXMAMMMMMSSMSSXSAAXASXSMMMASMMXSMMMXMASAAAMAXMASMXMMAAXAMMMMMSSMMSMASMMM
|
||||
MAAAAAMMMASASAAMXMAXAAXAMXAXMASXSMMSMSMXMAMAMXMMMMMSXMASMMMMMASMMSMSMMSAMMASAMAXAAMMMXMAMAAMSMMMMMASAXSAMAMMMMSSMSMMXSMXXMMASAXXAXAAMAMAXXAX
|
||||
MXMSMMMSSXMXXMXAAXXMSSMSSMMSSMXAMMMAAAAMMXMMSMAMMAAXAAXAMASXSMMAMSAAAASAMSAMASXMMSSMASAMMSMMXAXSAMMSAMMAMXSAMXAAAXXSAMSAAMSAXMSMMXMXSASMSSSS
|
||||
XSXXXXAXMMSSSXSSSSMMXMAMAXMAASMMMMXMSMSAMXMAAXMMSMSSSMSMSASAAXMAMMMMMMSAMMASAMAAXAMXMMMSAMAXSMMSASAMAMSXMAXAMXSMMXXMAMXSSMMMSXAASAXMSXSAAXAA
|
||||
MAAMAMXXAXAAAAAXMAMMAMMMAXMSMMXMASAMXMAXXAMXMMSAAXXAMAAXMASMMMSSSMSSSMXAMSMMMXSXMMSMSMXMASMMMAASXMMSMMAMMSSMMMXAMAMSSMAMXMASAMXMMASAMXMMMMMM
|
||||
AMXSMMXSMMMSMMMMMAMXAMAMASXMAAMMASASAMXMSMSSXAMXSSMMMMMMSASASAXAAMAAMASAMXMAMMMASXMAAAASMMXAXSMSMMAMAXMXAAXAAASAMXAAXXXMASXMXSSSSXMXXMMAXASX
|
||||
SXAAXMAAAAMAAAXAMSSSXSXSSMMSMMSMASAMXMAMXAAXMMMXXMAXAXSXMASXMAMMMMSSMMMXMASASMSAMMMMMSMMSASMMXAXAMAXMMXMMSXXMXSMASMSXMMMMMSMXAAXAXAXMMSAMXSS
|
||||
MMXMAMSSSMSSSMXSXXAMAAXSAMAXAAXMAMXMASXMMMMXSAAMSSMMMXMAMXMASXMSXAAXAXMASMSASAMXMASXMMAAMMMMSMSMSSMSAMXAAMMSMMMXAXXMASASAAMXMMXMMMXSXAMXMMXX
|
||||
MSMSMAAXAXMXMMSMMMAMXMXSAMSMMMMMAMXXAMAXXMAASAAXXAXMMASAMASAMAASMMSSMAXASAMXMAMXSAMXSSMMMSAAAAAAAAXSAMXMXSAXAAAMMSMXMMASMXMAXXASXSMAMXMSAMXM
|
||||
SAAAAMMSMMSAMXAAASAMAXAXXMAMASASMSSMSSMMSMMXSMSXSAMXSASASMSAMMMMAMMAMAMSMMMXSXMMMXSMXASAAMMSSSMSMSMMAMAMMMASMMMMSAAAMSASASMSMMASAMAMSMAMXMSM
|
||||
SMSMSMAAXAMASXSSMSASXMMSMSMSASXSAAMAMAXAAASAXAAXXMAMMASAMXSAMXAASMXAMASAAAMAMAAASAMXSAMMMSAAAAAXMAXSASASAMXMMAAXSMSMXAAXASAMXMAMAMSXXMASAXAX
|
||||
XMAXXMMSMMSXMXMAXSXMXXXAXSXMXSXMMMMASXMASAMXMXMMAXSAMXMXMASAMSSSXASXSXSMSMMXSMMSMXSAMXMSAAMMSMMMXAASXSXSXSMMSMMMMXAXAMXMXMAMXMASAMAXXMASXSAS
|
||||
1379
Inputs/Day5.txt
1379
Inputs/Day5.txt
File diff suppressed because it is too large
Load Diff
130
Inputs/Day6.txt
130
Inputs/Day6.txt
@@ -1,130 +0,0 @@
|
||||
........#...........................#...........#............................................................................#....
|
||||
...........#..............................................##.#....................##.......#.............##..............#........
|
||||
...................#..#........#..#..##.................#......##..................#.....#....#.............#...........#...##....
|
||||
..........#......#..................................................#...................#........#..#.....#.......................
|
||||
.........#...#......#...................................#............#...#........#.............#..#........................#.....
|
||||
..##.#...........#......#.....#.#...#..............#.#......#.......#..............#.............#..................#.......#.....
|
||||
...#.................................####...........#..........#..#.....#........#...........................................#....
|
||||
..........#......................#............................#....................#..............#......#....#.................#.
|
||||
...#.................#.........#.........#.#.....#....#.................................................................#.#.......
|
||||
.......#.......................#...........#..................................#.............#..................#......#.#.........
|
||||
....................#.#.........#.........#................................#........#.#.........................#..#....#.........
|
||||
........#.............#....#.....#................................##.....#..................#.....................#...............
|
||||
..............#...................#..........................................#..........#........................#................
|
||||
...........#...................................................................................#..........#.........##.#..........
|
||||
............#....................#...................#.................................#.......#............#.......#.............
|
||||
..........................................#.....#.............#.#.......................##......#.....#...........................
|
||||
........................#...#..................#......................................................#.#..#......................
|
||||
...#.....#.....................#..........................................#................................................#.....#
|
||||
..##....................................#.....................#.............#.......#.............................................
|
||||
........#..................#......#................................#.......................................................#......
|
||||
.........#................#...............................##.#.....................#...........................#...........#.#....
|
||||
............#.....#..................................#.....#........#................#............................................
|
||||
.....................................................##..............#.....#.....#.......#........................................
|
||||
..........#..#..............#..#...#.......................#..........................................#...........................
|
||||
...............#.............................................................#..#......#.......#..#....................#..........
|
||||
.#......................#....##.#....................#..#...#............................#............................#....#....#.
|
||||
...#...................................................................................................................#.......#..
|
||||
.#....#..............#....................#......................................#.......................#....#..#................
|
||||
........#.....................#............................................#...............#......................................
|
||||
....#........#..........................................................................#..............................###.......#
|
||||
........#..#.....................#..................#..................##..........#..............................................
|
||||
..........................#...#................#....................................................#..#............#.............
|
||||
......#..............#................................#.....................#.................................#............#......
|
||||
...................................................#....................#.................#.....#................................#
|
||||
..........................#...............#....#........................#.............................................#...........
|
||||
##..............#..............................#....#.......................#.................................................#...
|
||||
...........................#.............................................................#.#................#......#........#.##..
|
||||
........#..................#...#..............#..............................#.....#..........#...................................
|
||||
..........#......#.##..#.....#.......##.....#......................................................#..................#...........
|
||||
....#.........#................#............................................#..#...#............#.....#..#........................
|
||||
#.......#..............#.....................#..........#....#......#......................................#........#.............
|
||||
.........#..........................................................................#.........#............................#......
|
||||
..........................#...#.......#...............#..............#.......................#...#................................
|
||||
.......................................................................#.........................................#...............#
|
||||
...................#.....#.......................................................#.............................................#..
|
||||
...##.....................#....#................................#........#...#....#.......##......................................
|
||||
.................................................................#.......#................................#.........#.............
|
||||
#..........................#.#........................#............................................#...#.........#................
|
||||
................#.#........#...................#...............................#.........#............#.........#.................
|
||||
...#...................................#.....................................................................#..#......#..........
|
||||
.................................................#..........................................#....#................................
|
||||
..............##.#...............................................#......................................................##........
|
||||
...........#..............................................#.....................................##.....#.........#................
|
||||
#.......................#..........................#......#...................#.#.................................................
|
||||
..............##..........................#............................................................#................#.........
|
||||
.......................#...#.........#....................................................................#............#..........
|
||||
.....#.................##.................................................#...........#..............#....#.................#.....
|
||||
.........#................................................#....................#.......#.........................##.#.............
|
||||
...........#............#...#...................#.........#....................................................#..................
|
||||
....................#.....................................................................#..........#.#..........................
|
||||
............................##..#.......................#.......#...................#.#..........#..........................#...#.
|
||||
..................#...........#.......#.............................................................#.............................
|
||||
...##......................#....##..................................#...............#.#..#........................................
|
||||
..#..............................##..................................................................#.......#....................
|
||||
...#.......#..........#.#.................................................##....#...............#...............#..........#.....#
|
||||
.....................................................##....................#..#..#...........................#....................
|
||||
...#......................#........#..................#.##..............#..............#....................................#.....
|
||||
...............#..........................#..........................................................#.#..#..............#........
|
||||
....................##....................#..#...................................#................................................
|
||||
...........................#..............#.....................................#.........................##......................
|
||||
...............#.................................................................#.....................#..........................
|
||||
......#..........#...#...........#................................................#...#.................................#..#......
|
||||
..........#............................#.............#.....................#........#............#.........#......................
|
||||
...........#...........#..........#....#......................................................................#........#.........#
|
||||
......................#...............##.................................................................................#.....#..
|
||||
...#................#........#..........#...................#............^...........#.................#.#......##.#.............#
|
||||
.......................##..............#......#.....................................#.....#.........................#.#.#.........
|
||||
.................#..#..........................................#...................#...#.........#................................
|
||||
..#.#.....#.............................................................#.#.......................................................
|
||||
..............................#...............###...............#..........##..........................#...#..#..........##.......
|
||||
.................................#.....#.........#......................................................#................#........
|
||||
...............##.#..................................................#........................#...................#.........#..##.
|
||||
.........#.................................#......#...............................................................................
|
||||
..................#......................#.#.........................................................#.....#......................
|
||||
.#..................#.............................#...............................................................................
|
||||
...................#...................#.#........#......#...........................#......................#..........#..........
|
||||
.............#...................................................................................................#................
|
||||
..........................#................................................#........#..#..........................................
|
||||
.#........................................................#.......#......#..#.....................................................
|
||||
..................##..............#.............#................#...............................#......#......#........#....#.#..
|
||||
#.............#....................................#.....................................................#........................
|
||||
............................#................................................................#....#.....#................#........
|
||||
.........#.......................................................................................................................#
|
||||
..#.........................................................................................#........#.#...........#..............
|
||||
...........#......................#.......#................................#...#.......#...............#..........................
|
||||
.......................#...#..#.......#..................#........#.....#.........#...............................................
|
||||
..#..##...................#..........#................................................#.........#...................#.............
|
||||
........................##..........................#.......#..........................#...#.#....................................
|
||||
..........................................................................................#.............#...........#............#
|
||||
..............................#.............................................................................................#.#..#
|
||||
.............#..........#...........................#.........................#........#.....................#............#......#
|
||||
....................................#..........................................................................................#..
|
||||
.........#.................................#...........................................................................#..........
|
||||
.#..............................#......#......#.#................................#.................#......#....#..#..#...........#
|
||||
.#...#................#.......#............#.........#...#..........#......#.........................#....................#.......
|
||||
..............#........................#................................................................................#.........
|
||||
.........#........#..#.........#........#......#..#..............................................#................#...............
|
||||
...........#......................#.......#..................................#....#...#......#..........#.........................
|
||||
...........#........................................................#.#...........#................#..............................
|
||||
.#...........................#...................#...#..................................................................#........#
|
||||
....................................................................#...................#.....#......#...........................#
|
||||
...#..#..............#......................#......#..#...............#..............#..............#..............#..............
|
||||
...........#........................#............#.#...........#..................................................................
|
||||
............#........................#.................................................#..............#.#....................#....
|
||||
............................#...........................#............................#........#..........................#........
|
||||
#................................................................#...........................#.............#.#........#.#.......#.
|
||||
............#..........#..............#.......#...#................................#.........#.#................#........#....#...
|
||||
...#.....................#..........#.............#....................................................#.#........................
|
||||
...............#..................................................#......................#...............#........................
|
||||
......#............................#..................#.....#...........................................................#...#.#...
|
||||
#................#..........................................................................................#..........#.......#..
|
||||
.................................................................#..............#...................#...................#.#.......
|
||||
...............#..............................................#.................#...............#...........................#.....
|
||||
.............................#...#........................#....................#........#.....................................#.##
|
||||
...............##..#.....#..#....#.#...#...........................................#.#........#........#.......#..................
|
||||
.......#........................#....#..#............................................................#.......#....................
|
||||
........#....................#........#....#.................#........................#.............#.............................
|
||||
#...#...........#......................................................#...............#...........#..#..#....#................#..
|
||||
................................#........................................................#...#..#......#....#.....#....#...#......
|
||||
..#..............#............................#........#....#......#.................................................#............
|
||||
850
Inputs/Day7.txt
850
Inputs/Day7.txt
@@ -1,850 +0,0 @@
|
||||
453693978: 7 219 8 44 2 9 3 2 6 4 1 6
|
||||
61192589: 81 8 83 9 879 6 4 2 6 7 9
|
||||
6066: 65 29 87 9 14 5 21 3
|
||||
1957116: 171 37 224 6 42
|
||||
198050: 342 577 3 2 711
|
||||
41665119255: 7 7 8 124 371 3 6 2 51 5
|
||||
3166026: 5 33 9 66 6
|
||||
1662321: 5 4 7 622 17 6 1 52 43 2
|
||||
265653132: 630 1 4 9 22 8 498 8 5 7
|
||||
1060: 88 9 55 4 39 73
|
||||
157494755: 3 1 4 98 951 5
|
||||
1952833595452: 7 234 5 550 3 483 3 82
|
||||
467: 2 71 5 251 5 64
|
||||
7316189440: 6 2 6 443 1 512 7 4 8 8 7
|
||||
33138: 4 8 8 8 7 1 49 99 2 6 5 1
|
||||
913284: 2 89 585 39 270 2 1 3 6
|
||||
1215195700: 81 4 79 913 52 4
|
||||
298632108: 6 6 3 6 15 73 210 5
|
||||
318936618: 150 160 832 403 693
|
||||
2102812: 3 323 434 5 82
|
||||
3848880609: 716 5 82 59 651
|
||||
4940008: 658 1 935 55 31
|
||||
311641: 23 9 1 6 8 7 6 7 3 5 1 586
|
||||
722421: 81 9 30 3 8
|
||||
33606277360: 672 5 6 277 36 1
|
||||
13106566: 2 73 2 1 24 38 63 66
|
||||
54290459591: 4 9 7 1 554 6 7 2 62 859
|
||||
4886125: 1 56 5 829 2 7 5 1 1 4 9 2
|
||||
274540788: 6 3 715 6 3 68 51 3 3 2 3
|
||||
34447941395840: 3 1 852 309 9 70 2 4 7 5
|
||||
4575402861600: 15 153 1 35 5 6 68 740
|
||||
13778598989: 459 3 85 989 89
|
||||
105779: 3 6 584 993 7
|
||||
146019901569: 1 460 1 98 94 1 5 6 9 69
|
||||
1993182: 51 58 924 451 460
|
||||
6265483638730: 9 93 62 2 98 7 570 89
|
||||
196996630250: 7 2 76 3 3 1 3 8 57 56 3 4
|
||||
3944294: 2 21 4 7 4 996 1 5 7 3
|
||||
1427032798: 13 9 65 228 823 178 1
|
||||
480: 7 4 5 30
|
||||
356848870313: 574 635 862 9 69 8
|
||||
4991679: 9 6 6 59 9 79 1 1 29 81 2
|
||||
96014924: 2 899 48 230 3 10 34
|
||||
530314220: 68 99 15 786 18
|
||||
27235017: 353 75 890 751
|
||||
28227685247: 1 8 889 21 8 8 5 6 3 7 8
|
||||
23386943686: 7 5 3 54 2 9 12 7 5 5 3 49
|
||||
4671109: 7 7 85 18 6
|
||||
65643: 8 55 6 9 449 1 6 3
|
||||
28442705797959: 9 2 8 7 507 6 579 795 9
|
||||
604412418874: 85 90 73 6 79 8 8 62 8 6
|
||||
142652179: 24 680 578 6 82 82 7 9
|
||||
318206557831966: 3 24 7 98 55 7 83 1 966
|
||||
940: 1 33 4 93 6 9 2 2 79 1 67
|
||||
5659883: 5 285 2 661 9 5 6 310 7
|
||||
462378: 66 6 319 910 244
|
||||
16578901: 69 8 624 6 3 1
|
||||
58541640192: 4 9 4 7 92 907 8 6 9 1 8
|
||||
7340642493: 67 5 39 72 39 8 7 95
|
||||
452912147: 461 214 982
|
||||
48011225806: 4 80 112 25 556 249
|
||||
994133176: 5 7 9 7 3 5 696 3 31 68 5
|
||||
1671942: 6 5 943 3 41 4 59
|
||||
2011: 854 1 663 74 419
|
||||
2350244: 39 17 3 2 2 2
|
||||
599522955: 1 6 3 192 1 733 89 298
|
||||
150499563: 3 660 5 348 118
|
||||
1974967: 405 9 758 5 82
|
||||
1526491271: 309 9 717 22 817 4 6
|
||||
291350: 32 91 81 72 1
|
||||
2331564579753: 4 208 7 8 5 6 542 4 7 7 6
|
||||
9094800: 3 50 44 53 26
|
||||
8558953: 3 82 5 89 50
|
||||
5818: 578 3 8
|
||||
101507885: 3 65 33 89 9 10 5 77 5
|
||||
234179567: 8 3 993 765 301 62
|
||||
13394703: 4 615 99 55 3
|
||||
12726838: 50 6 7 8 3 4 2 936 83 2 9
|
||||
159408: 4 908 174 1 720
|
||||
257838: 444 5 58 28
|
||||
134142820: 6 8 99 1 9 7 28 3 4 3 4 7
|
||||
99344148: 2 1 788 29 5 9 6 544 7 9
|
||||
2522113308: 5 331 6 9 1 6 3 4 39 99 2
|
||||
140321: 4 3 5 4 31 9
|
||||
20942125931928: 68 562 429 219 8 89
|
||||
253357107: 361 41 7 341 2 19 7 58
|
||||
2576029514834: 5 1 3 605 83 1 4 834
|
||||
3812481: 8 507 2 74 1
|
||||
38667377388: 3 5 77 23 47 73 32 6 47
|
||||
154599952490: 3 2 3 671 64 6 87 8 3 1
|
||||
6771960: 3 9 66 3 3 337 6 90 3 1 8
|
||||
43692: 90 7 45 4 2
|
||||
318124: 1 8 497 80 44
|
||||
172874771: 2 8 9 1 3 9 7 63 2 7 63 8
|
||||
4129352: 502 4 4 8 511 4 2 469 1
|
||||
30132480: 4 148 672 59 5
|
||||
390439859: 29 8 6 4 6 9 81 9 9 27 2 7
|
||||
65515806624: 5 663 155 373 639 98
|
||||
5014677: 2 758 9 202 633
|
||||
1490: 81 7 16 78 3
|
||||
23528003: 4 9 8 6 6 7 5 7 83 13 5 1
|
||||
7929094: 23 407 7 2 121 85
|
||||
276945: 37 5 91 94 5
|
||||
561691819: 1 6 7 682 5 5 7 9 86 17
|
||||
12070408538: 9 163 43 3 5 1 1 8 7 5 38
|
||||
14816: 4 37 3 6 54 16 544
|
||||
9301982: 903 906 6 857 18 89
|
||||
236: 7 8 131 90
|
||||
924816: 14 66 8 16
|
||||
94248002483: 6 8 22 816 165 247 8 3
|
||||
775651572420: 98 383 3 6 3 73 210 2
|
||||
31344: 4 4 8 5 821 6 8 59 4 388
|
||||
30930: 6 15 50 119 62
|
||||
154217932: 22 13 1 719 67 6 8 498
|
||||
23474981: 3 65 250 41 18 65 81
|
||||
178893876: 3 7 7 8 96 9 33 33 4 7 2 6
|
||||
618737127839: 39 61 312 801 195
|
||||
4517: 6 3 1 1 5 236 925 52
|
||||
1014255: 7 727 51 99 9 3 1 856 7
|
||||
1588: 87 7 32 9 671
|
||||
112938355813: 21 9 573 9 5 580 4 3 5
|
||||
12794721648: 3 99 764 6 65 2 8 8 2 48
|
||||
784111270947: 4 542 47 29 35 9 970
|
||||
133997465978: 4 69 2 4 4 31 3 2 1 5 97 5
|
||||
16625917453: 222 5 591 66 8 6 2 4 13
|
||||
145: 70 69 4
|
||||
1756138126: 20 15 121 1 5 7 81 126
|
||||
928811: 7 190 65 680 986
|
||||
21408695: 2 9 5 690 8 6 1 3 47 2 2 5
|
||||
368451: 66 302 4 4 8
|
||||
27863124: 3 19 5 1 995 89 216 7 4
|
||||
957338381: 354 2 3 9 6 3 823 7 8 1 1
|
||||
44521661: 48 680 341 4 1 76 625
|
||||
10437926: 148 585 4 89 10 2 3 2
|
||||
88019880: 3 312 7 30 884
|
||||
791624: 8 79 5 8 9
|
||||
89138231364: 274 609 3 533 609
|
||||
4293432: 3 6 4 5 9 5 8 9 528 72 39
|
||||
6358683: 4 1 6 21 5 8 31 37 4
|
||||
3764592: 51 1 324 4 591
|
||||
19530679599: 882 5 415 5 2 26 53 3 6
|
||||
87417: 3 280 24 19 99
|
||||
533489: 4 9 37 4 1 5 90
|
||||
5011: 3 6 5 22 490
|
||||
73338720: 293 93 52 23 91 80
|
||||
126: 9 1 1 1 13 1 93 9
|
||||
3615788: 90 4 1 57 85
|
||||
147888: 4 79 17 485 78
|
||||
193516984: 487 87 2 76 6 65 8 68
|
||||
2589283728: 2 58 9 2 19 5 46 9 4 730
|
||||
64553362: 645 533 60
|
||||
22331998272: 2 642 77 7 845 4 23 2
|
||||
8657594: 778 86 6 6 5 5 9 4
|
||||
5562082: 2 88 21 180 82
|
||||
44600739: 88 9 78 223 3 25 2 89
|
||||
1175: 8 2 6 68 87
|
||||
77262: 97 784 353 4 857
|
||||
1958152581: 847 682 3 1 231
|
||||
89632318: 9 7 56 145 172 6 20
|
||||
29470: 459 49 58 4 5
|
||||
5458120200000: 4 6 815 6 65 36 90 530
|
||||
683299: 7 276 8 5 59 44 419
|
||||
7405744: 25 715 574 2 1
|
||||
15815402: 3 546 7 1 7 8 7 4 5 4 9 9
|
||||
4153776591: 13 577 8 2 88 320 271
|
||||
5994590716: 99 787 8 926 1 73
|
||||
1905139223188: 945 8 6 457 6 95 42
|
||||
154417: 193 8 17
|
||||
168145522524: 957 766 7 66 38 96 7
|
||||
4795006: 2 21 5 204 9 59 47
|
||||
7043070062: 6 8 1 6 85 8 33 7 4 2 9 2
|
||||
62697036236: 28 3 70 82 722 3 236
|
||||
12178755: 8 8 77 4 3 558 5 3 81 5
|
||||
32779766156: 693 473 93 773 156
|
||||
115249713: 90 243 4 29 2 596
|
||||
68054: 73 4 951 2 1 4 52 2 1 9
|
||||
802077409221: 92 7 3 17 848 2 2 3 1 5 3
|
||||
142074998208: 640 71 85 7 8 44 719
|
||||
8632: 5 9 7 58 4
|
||||
2624715: 4 1 5 8 619 8 1 1 4 3 4 8
|
||||
4759740: 937 8 357 79 9 60
|
||||
4635323000: 9 8 284 8 368 2 7 79 77
|
||||
248375402756: 2 34 2 32 3 910 68 9 4
|
||||
125065077: 8 41 531 78 6 35 79 4 7
|
||||
182358: 4 182 3 855 30 8 1 2
|
||||
3812369: 77 29 2 2 493
|
||||
1609831: 218 737 251 7 654
|
||||
2024734: 756 4 8 37 9 94
|
||||
552808080: 8 72 93 12 626 22 5
|
||||
52118327: 2 161 674 6 790 4 9
|
||||
160697381: 2 89 8 7 39 16 10 2 6 53
|
||||
275832: 26 8 34 39 24
|
||||
144618480: 398 5 757 8 3 8 11 3 3 4
|
||||
2550199: 6 8 7 8 41 137 79
|
||||
212959799662: 2 660 8 15 979 9 661
|
||||
173540566353: 22 8 3 9 180 6 2 1 8 7 51
|
||||
4867527232: 4 46 54 108 9 7 9 6 4 8 2
|
||||
30630: 6 36 258 6 30
|
||||
912202863: 5 86 2 15 1 5 286 1
|
||||
400914580: 371 29 914 5 80
|
||||
43596216103: 768 89 2 2 2 3 7 9 9 5 9
|
||||
8946096736: 4 2 710 32 23 3 4 5
|
||||
15609768411359: 9 707 567 4 4 8 67 60
|
||||
4122784380: 280 748 89 165
|
||||
10977874: 68 6 1 16 3 7 2 81 91
|
||||
2908919: 99 976 2 315 30 1 689
|
||||
29609: 1 4 19 17 3 86 681 28 4
|
||||
245700: 12 1 351 5 3 45
|
||||
367: 1 3 3 55 37
|
||||
62951499517: 9 32 5 73 8 364 520
|
||||
734005: 73 39 74 24 6
|
||||
124853195948528: 88 69 9 482 698 6 79 9
|
||||
3636750240572: 5 6 5 9 5 5 210 6 6 4 5 74
|
||||
112035399: 651 10 169 326 3 99
|
||||
84854: 9 4 8 831 89 3
|
||||
233936125149: 9 6 811 648 97 261 44
|
||||
5809: 5 5 7 17 5 62 2
|
||||
87092610443: 9 9 84 1 8 78 4 14 4 4 3 1
|
||||
15382371424083: 9 6 3 8 919 69 92 95 85
|
||||
117071: 291 4 1 57 1 2 90
|
||||
487732407: 6 4 63 10 8 973 4 406 1
|
||||
1157798799: 5 82 8 78 383 798 799
|
||||
11910216899: 5 69 842 1 7 13 6 8 6 3 9
|
||||
906: 4 5 6 87 803
|
||||
7607716138743: 73 89 98 986 911 486
|
||||
8026454: 2 91 49 28 9
|
||||
987004: 1 8 2 274 5 8 26 474 44
|
||||
402628876: 5 7 82 2 409 833 77 76
|
||||
30661956: 8 6 491 5 81 9 20 9 3 13
|
||||
33657773: 4 7 13 803 39 770
|
||||
23941915: 73 49 5 4 3 98 5 12
|
||||
19880498446: 763 46 620 1 7 2 2 3
|
||||
1382284: 91 83 9 7 79 24
|
||||
20366858: 45 1 5 731 84 102 4 5 6
|
||||
93755256: 30 71 7 1 44 5 7
|
||||
164884487835: 850 4 722 4 4 487 835
|
||||
1341603775: 52 860 1 3 775
|
||||
1072: 16 225 1 88 742
|
||||
7246685: 74 704 4 97 9
|
||||
1427830680364: 48 392 9 5 2 590 358 6
|
||||
47410058: 39 84 17 2 4 5 7
|
||||
428546912: 2 9 3 971 6 4 6 7 3 3 5 12
|
||||
9674801499: 276 42 29 4 875
|
||||
33994953: 679 868 31 5 3
|
||||
10034366578321: 4 3 6 27 6 80 7 753 23
|
||||
21580: 8 37 695 90 26
|
||||
2831604330: 7 831 8 39 3 9 3 6 5 56
|
||||
103563266: 6 9 7 7 5 6 2 4 1 98 64 8
|
||||
34404349: 1 772 7 1 40 9 8 9 7 4 4 7
|
||||
59764: 1 66 90 1 32 34 569 67
|
||||
3837946112: 4 1 7 9 320 9 7 884 308
|
||||
392845: 490 4 80 59 467
|
||||
2237: 354 6 6 93 3 2 11
|
||||
530442: 22 1 6 4 41
|
||||
667875343107: 1 9 540 5 5 76 3 28 2 1 7
|
||||
27334270016: 77 6 74 857 80 68 1 7
|
||||
9133: 64 4 493 8 34
|
||||
1093: 1 6 63 471 184
|
||||
2345410: 2 3 45 407 3
|
||||
698287110552: 775 867 7 5 672 9 2 70
|
||||
18068437: 4 104 61 20 956 37
|
||||
368540: 2 606 3 43 6 41
|
||||
864: 9 6 9
|
||||
1418: 75 9 1 16 74
|
||||
30118881: 6 5 1 4 4 9 992 1 3 88 5 1
|
||||
311278809: 432 33 2 4 9 4 1 9 3 4 3
|
||||
46589936700: 88 21 8 9 58 5 7 75 4
|
||||
8569194: 4 15 54 8 3 58 7 2 3
|
||||
481417: 937 5 73 8 1 7
|
||||
2397863: 6 80 45 286 8 2 8 23
|
||||
24256960: 5 28 442 4 98
|
||||
22569840: 94 68 6 36 645
|
||||
42699365540: 6 70 4 37 656 6 554 10
|
||||
38737384769: 8 5 392 5 2 863 7 8 94
|
||||
2389502926: 95 2 805 6 2 60 24 52 7
|
||||
5752: 86 9 3 579 82 4
|
||||
63029652680: 1 7 3 3 50 701 5 7 6 683
|
||||
3090035: 3 7 5 618 35
|
||||
1373: 28 1 4 6 247
|
||||
2919: 7 6 3 9 34 385
|
||||
67269: 9 4 5 6 6 5 9 680 7 157 5
|
||||
6172980: 6 1 944 59 9 2 55
|
||||
161860638588: 3 56 58 473 38 5 89
|
||||
664801: 1 3 8 9 490 979 60
|
||||
3317827: 8 42 394 1 348
|
||||
187757: 872 5 43 220 57
|
||||
12552562: 5 25 525 62
|
||||
29106: 4 4 6 10 9 5 2 4 12 4 62 7
|
||||
202769: 18 2 25 2 65 4
|
||||
481787: 489 31 82 23 8
|
||||
243818: 72 72 815 43 9 9 3 9 3 8
|
||||
255915710: 365 584 9 8 4 7 6 18
|
||||
649896756: 40 922 81 675 6
|
||||
90209784: 86 4 8 4 8 2 9 41 7 553 4
|
||||
1938043461875: 585 2 316 1 60 6 6 46
|
||||
344395030560: 68 321 1 8 570 346
|
||||
68445524: 58 9 95 45 5 24
|
||||
101817063790: 29 7 5 5 1 74 9 1 2 758 5
|
||||
8208761: 5 5 5 5 8 5 6 617 69 7 1
|
||||
120768: 98 9 6 8 17
|
||||
3116048: 3 3 11 4 1 7 1 7 8 6 253 6
|
||||
2514187687609: 251 41 876 87 607 2
|
||||
816971: 99 6 3 82 3
|
||||
1132216: 92 246 837 148 4
|
||||
22172: 7 6 3 37 633 31 7
|
||||
2749313: 6 218 82 3 1 112 7
|
||||
4280: 385 42 2 5 5
|
||||
2653814829: 9 3 9 176 3 37 7 19 54
|
||||
2862201: 9 7 5 80 67 6 133 3 4 4 9
|
||||
3370: 5 3 21 85 560 5
|
||||
33510727: 5 336 55 7 745 4 8 3 5 2
|
||||
8542478027: 7 9 6 423 8 1 96 973 54
|
||||
625114645518: 598 7 791 132 1 51 7
|
||||
94520255: 14 36 8 9 30 8 7 603 5 3
|
||||
269825453: 8 5 54 424 5 94 333
|
||||
8990: 54 35 90
|
||||
1939417840: 58 41 62 83 40
|
||||
25841539: 82 340 8 764 8
|
||||
5583873650: 5 3 508 2 6 4 3 1 3 4 9 48
|
||||
2487933: 8 69 8 5 3 11 1 3
|
||||
1270416845906: 973 680 98 91 1 211
|
||||
46166671264: 4 54 5 8 601 4 83 871
|
||||
115632308: 472 81 410 51 8
|
||||
206282: 293 1 6 9 7
|
||||
21933071: 57 5 579 1 846 35 775
|
||||
1729624: 4 27 1 1 1 328 9 5 4 6 5 6
|
||||
75757: 941 8 2 60 412
|
||||
1352210: 1 598 3 777 83 7 6 8 1 2
|
||||
347983: 5 8 4 832 9 2 53 4
|
||||
53321843: 8 9 1 555 117 69 5 7 40
|
||||
509941350: 8 160 89 2 5 73 4 510
|
||||
16749548152: 933 6 735 9 548 152 2
|
||||
182715414753: 653 6 6 453 7 658 7 53
|
||||
22751389220402: 34 82 726 135 6 90 2
|
||||
7477875: 53 6 73 255 75
|
||||
17145951: 557 66 95 16 465 6
|
||||
29997394: 688 436 5 93 1
|
||||
830276218: 88 468 801 8 93 99 21
|
||||
413822746: 4 902 530 227 46
|
||||
8475989: 61 731 55 523 5 3 751
|
||||
213173385: 7 419 5 82 91 143 244
|
||||
8476: 315 34 6 16 9 1 4
|
||||
215132022208: 651 865 7 571 33 382
|
||||
1737558: 5 8 9 328 1 3 4 42 2 6 3 9
|
||||
7212898: 98 8 92 74 27
|
||||
3376916: 422 8 323 579 9 7
|
||||
21912156: 22 6 166 15 7 2
|
||||
2424528990: 7 4 84 7 410 39
|
||||
399686: 7 4 27 2 84
|
||||
479369: 51 9 87 6 6 2 34 1 68
|
||||
5366794: 3 264 201 94 2
|
||||
24942: 917 2 938 9 9 3 4 766 7
|
||||
45408317: 82 66 264 8 318
|
||||
955693: 41 3 911 6 93
|
||||
1763: 11 7 8 32 5 2
|
||||
7137940: 7 8 86 68 6 46 50 123 4
|
||||
375924: 644 6 5 97 631
|
||||
51789: 970 83 5 409 9 1 724
|
||||
4633540: 927 4 891 1 336 8 3 5 5
|
||||
3827074: 2 4 7 5 3 3 9 6 234 8 53 3
|
||||
174783: 8 76 5 59 7 525 798
|
||||
18220965653: 3 5 796 308 2 6 6 929
|
||||
450081: 923 64 456 1 8
|
||||
1580629050: 6 907 7 60 4 7 8 975 7 6
|
||||
53908033: 71 857 9 97 8 90 883
|
||||
200570582525: 8 532 2 2 6 6 770 3 34 8
|
||||
2049329780118: 75 90 11 9 2 667 3 10 9
|
||||
335240782: 85 493 8 78 5
|
||||
515973: 2 7 3 30 63
|
||||
491045376: 520 8 93 5 378
|
||||
52900144900: 730 2 89 93 37 22
|
||||
411113430: 485 53 6 4 9 1 5 909 7
|
||||
428079459263: 850 1 6 5 7 945 8 9 3 6 3
|
||||
10267334400: 2 8 1 1 29 879 4 6 911 8
|
||||
1148385886: 4 2 5 3 9 8 8 49 4 3 91 8
|
||||
5042966021: 6 59 634 1 4 8 955 6 2 9
|
||||
153826991: 64 742 8 3 99
|
||||
84651: 1 84 54 6 5 1
|
||||
38009515: 36 7 791 6 328 743 6
|
||||
10646: 5 20 4 361 98 82
|
||||
58142385: 3 6 4 8 6 4 1 4 1 8 7 63
|
||||
11447010: 899 6 590 85 82 32 90
|
||||
148080024328: 16 411 9 662 417 1 6
|
||||
415528025: 1 29 2 8 3 7 7 117 7 178
|
||||
940546890: 3 62 7 237 68 183 31 3
|
||||
9075990043624: 8 9 28 76 525 41 2 626
|
||||
424464: 424 459 5
|
||||
8532951: 73 18 762 29 51
|
||||
9591544: 83 491 557 30 4
|
||||
34543862: 6 864 32 5 1 9 1 537 6 2
|
||||
335: 23 11 82
|
||||
30000: 5 561 53
|
||||
228530406544: 5 2 952 2 1 4 60 65 4 7
|
||||
117821: 34 38 9 9 4 730
|
||||
294451: 985 78 277
|
||||
67315140: 54 2 1 4 6 963 188 4 2
|
||||
767382521: 1 5 3 186 1 5 385 6 4 1 8
|
||||
72: 5 1 2 9
|
||||
4199365273188: 5 307 59 92 758 86
|
||||
36909183: 9 205 3 5 3 6 91 6 6 3 7 3
|
||||
4228426: 86 9 2 3 79 44 3 351 6
|
||||
3101601: 5 1 31 88 1 5 6 594 5 2
|
||||
14125920447: 5 92 1 8 3 3 397 7 771
|
||||
74256718132: 9 9 44 403 5 8 939 423
|
||||
14732109: 8 501 4 408 9 3 42
|
||||
881310249: 979 9 2 10 251 1
|
||||
126469: 9 45 4 715 98 471
|
||||
674696887: 2 4 842 4 55 7 88 26 5 2
|
||||
1665232268: 1 6 65 2 3 138 8 6 802
|
||||
2499735: 51 574 42 56 5 2 95
|
||||
134637242: 138 8 97 503 739
|
||||
18438: 15 82 960 391 53 7
|
||||
121068: 158 1 3 76
|
||||
139306754996: 5 4 62 6 25 283 4 9 1 9 6
|
||||
12209400: 8 2 3 9 48 918 95 2
|
||||
6913282747: 864 5 7 1 5 8 52 9 6 4 6 7
|
||||
18079451: 451 8 9 8 9 4 316 7 7
|
||||
358746938735: 7 751 8 51 6 29 6 8 2 6 2
|
||||
354669920028: 510 3 31 715 84 972
|
||||
38034: 607 48 58 1 44
|
||||
349019647: 2 2 974 479 2 8 64 32
|
||||
15031: 6 74 619 5 5 21 8 64 70
|
||||
31157828: 519 2 587 4 68 3
|
||||
121029120588: 29 1 4 824 4 85 5 7 8 9 9
|
||||
5203105: 518 2 30 65 38
|
||||
1787278: 102 584 5 6 235
|
||||
1818: 51 327 53 2 956
|
||||
23589640: 24 54 2 91 9 5 5 5 38 2
|
||||
11185866008155: 3 54 5 984 659 3 81 5 4
|
||||
5159414: 12 8 8 1 258 37 26
|
||||
943: 27 4 6 8 5 26
|
||||
1507815: 218 56 55 3 68 10 5
|
||||
781435: 2 6 3 1 436
|
||||
404002479853: 4 8 5 6 6 9 921 8 6 1 1 74
|
||||
117808: 7 3 1 90 119
|
||||
13344: 76 61 1 1 96
|
||||
29321: 291 1 40 69 9
|
||||
8616607: 2 78 583 60 86 524
|
||||
7794317578: 9 2 3 9 9 5 8 43 4 6 35
|
||||
2845227: 2 2 845 809 78 22 9 90
|
||||
415532023: 9 50 35 9 3 41 7 8 75 1
|
||||
24380364: 405 3 3 7 394 6
|
||||
5561933: 2 64 71 612 77
|
||||
43868704: 69 4 3 3 27 538 3 4 88 8
|
||||
2030282568: 6 2 7 5 9 43 5 7 7 680 24
|
||||
27749412203: 360 5 76 9 408 3 1 201
|
||||
27842: 64 7 5 60 662
|
||||
767760: 457 20 4 7 3
|
||||
58361: 88 829 4 500 7 2 9
|
||||
817389: 28 193 15 1 2 36 95 9
|
||||
696008: 26 73 83 239 2 5 8
|
||||
1586875: 9 90 30 110 65 225
|
||||
22312441922: 8 3 4 60 2 488 3 75 5 45
|
||||
153426394832: 27 4 311 1 4 7 2 4 4 7 3 2
|
||||
205905: 25 9 795
|
||||
55771301: 94 593 6 23 301
|
||||
76140038424: 47 2 300 5 9 62 5 6 92 4
|
||||
19026558: 2 27 9 9 639 2 3 4 5 4 12
|
||||
10591093: 7 3 6 5 5 1 82 6 7 4 65 4
|
||||
34476157: 8 38 67 38 86 156
|
||||
236957826051: 383 42 690 3 618
|
||||
41953947120: 6 962 46 6 57 8 95
|
||||
91726: 9 364 4 7
|
||||
103501474: 5 906 6 136 28 25 8
|
||||
2306986833: 233 33 95 610 3
|
||||
5183417876687: 4 89 106 178 766 85
|
||||
1613979: 1 160 3 9 80
|
||||
6211199231: 97 252 8 63 21 192
|
||||
1075782: 2 8 30 1 78 20 452 22
|
||||
97694735: 3 2 370 47 96 72 5 7 7 5
|
||||
137890590151: 1 3 9 7 67 7 6 489 6 80 9
|
||||
2910853: 3 2 292 60 5 178 9 10 9
|
||||
231046: 19 16 660 5 43
|
||||
3745: 89 2 5 4 2 5
|
||||
1244: 7 438 68 9 6 223 493
|
||||
1590: 55 908 46 581 1
|
||||
9887612034: 318 619 910 5 1 203 4
|
||||
648753846: 700 57 89 856 6
|
||||
69616: 1 69 6 41 102 4 7 304
|
||||
726504624: 72 6 504 607 14
|
||||
7366176: 9 9 1 7 938 7 8 8 43 7 5
|
||||
961848: 957 9 39 51
|
||||
1207774165: 6 6 3 93 5 3 83 7 416 1 4
|
||||
2179548541632: 21 7 426 173 56 264
|
||||
2520: 21 19 3 21 1
|
||||
1360262: 90 7 2 182 80 48 7 90
|
||||
1927043167: 29 662 72 43 167
|
||||
10689713431: 9 6 4 83 6 57 4 83 923 7
|
||||
946187: 1 38 24 10 185
|
||||
8362219: 96 26 19 867 4
|
||||
264: 13 2 4
|
||||
2784905: 5 8 5 44 388 552 905
|
||||
78379479: 38 5 9 3 2 456 7 6 2 8 79
|
||||
76: 4 6 3 60 5
|
||||
10715175424869: 855 4 225 17 66 84 71
|
||||
1509802788: 2 7 6 4 9 64 70 7 7 83 4
|
||||
132789652: 9 154 89 44 9 5 2
|
||||
17956425: 46 399 387 5 8
|
||||
660210: 4 2 1 3 22 22 631 961
|
||||
192932438388: 304 366 382 3 578
|
||||
239253759: 4 8 136 13 4 5 8 757
|
||||
732994: 739 16 97 64 7
|
||||
26087: 4 62 72 814 401
|
||||
160480426: 89 15 579 18 1
|
||||
379310: 35 31 30 4 34 74
|
||||
207366390: 5 898 893 46 268 385
|
||||
15765: 1 7 563 4
|
||||
2266789870: 4 341 73 557 997 9 3 6
|
||||
96665484: 2 964 43 13 9 484
|
||||
365768: 79 3 7 121 768
|
||||
142963608282: 2 6 9 5 7 8 22 380 8 2 83
|
||||
2498: 2 850 2 729 37 30
|
||||
11935499: 3 6 323 852 5 4 54 43
|
||||
71923: 222 576 3 9 77
|
||||
3431484: 240 3 68 21
|
||||
100190754049: 555 31 52 42 41 992
|
||||
5751501: 5 7 51 223 275
|
||||
122835227404: 89 1 373 37 63 27 404
|
||||
4837305: 432 8 95 3 454 5 9 829
|
||||
3649109600: 4 7 2 21 9 3 365 20 152
|
||||
655120053: 27 478 2 84 5 129 2
|
||||
3576368741749: 946 7 8 1 6 3 9 4 175 1 1
|
||||
2893325: 78 22 2 42 177 40 5
|
||||
1924937835: 20 3 2 5 4 307 9 5 66 5 4
|
||||
643751: 650 99 24 7 4
|
||||
45: 3 3 26 9 3
|
||||
660: 2 4 87 559 8
|
||||
2539: 4 403 892 35 1
|
||||
3674: 362 8 46
|
||||
1162251792: 62 6 5 7 36 39 474 542
|
||||
2368091154: 3 2 8 575 13 858
|
||||
66120: 64 4 5 8 10 19
|
||||
7486826365: 4 5 4 7 31 205 3 4 3 7 2 7
|
||||
386307741: 9 1 70 7 1 63 675 4 7 9 6
|
||||
10230561458: 8 9 14 10 69 5 8 9 7 821
|
||||
154794180: 85 6 226 79 17
|
||||
159148110: 81 246 4 235 93 22
|
||||
984556511: 62 9 27 1 97 4 18 978
|
||||
23606766469: 389 4 446 5 5 25 3 42 4
|
||||
5939892044: 54 700 81 2 970 3 41
|
||||
32603669: 649 9 21 5 3 200 2 470
|
||||
980: 58 7 512 60 4
|
||||
140631198724: 2 5 7 4 92 39 217 8 724
|
||||
122630144587: 4 41 1 589 3 28 94 590
|
||||
28426054754: 61 237 9 10 699 951 3
|
||||
26993694: 9 260 1 8 36 94
|
||||
5508: 56 4 83 37 491
|
||||
2566794: 47 946 3 1 83 838
|
||||
730292037: 9 5 3 89 783 725 5 4 37
|
||||
7719: 4 61 95 388 738
|
||||
1371461493: 150 71 91 4 79 2 9
|
||||
305217: 8 54 1 66 26 91 3
|
||||
33935249: 5 75 1 9 2 6 95 3 459 1 4
|
||||
16749: 8 7 937 712 98
|
||||
151413850: 1 6 650 7 3 13 4 745 5 1
|
||||
8008143: 773 5 3 7 5 69
|
||||
121022047: 3 2 6 3 3 702 4 3 4 3 60 6
|
||||
3488486358: 329 31 654 1 523
|
||||
184688494: 1 1 3 1 6 89 2 127 4 2 9 5
|
||||
1711196664021: 63 980 41 26 328 5 22
|
||||
6581064: 76 10 5 24 86
|
||||
137584: 5 10 98 4 7 384
|
||||
3890756: 1 29 363 1 99 57
|
||||
24153773792: 8 69 616 19 752 2 8 3 6
|
||||
16858296: 6 738 83 39 7
|
||||
12071831817: 9 5 9 2 5 210 5 7 5 384 7
|
||||
1675: 96 335 312 8 2 173
|
||||
713182: 701 5 7 18 2
|
||||
1462: 2 2 7 1 30 6 7 9 2 8 2 993
|
||||
4012: 434 9 66 6 1 5 1 3 8 4 5 7
|
||||
2509636115739: 883 3 449 211 573 8
|
||||
441509: 734 2 9 282 251
|
||||
1587801154: 494 29 6 3 801 1 52 1
|
||||
423094: 6 389 3 89 27 31 251 4
|
||||
1757133170: 872 31 764 54 65
|
||||
247757499: 147 3 8 3 4 4 9 88 42 1 1
|
||||
1727313: 65 11 28 5 2 809 98
|
||||
70450601: 99 3 4 89 20 372 5 55 2
|
||||
4541108057: 805 161 564 1 8
|
||||
24042847: 9 5 9 3 243 4 7 9 2 9 83 6
|
||||
2108110977: 398 1 23 93 1 999 23
|
||||
5610241: 6 935 2 39
|
||||
72098: 1 60 19 9 99
|
||||
1197518856112: 9 9 8 84 8 3 76 6 10 1 4
|
||||
158774: 7 3 97 37 3 711 62
|
||||
11060285775: 8 1 4 836 3 7 10 7 7 25 3
|
||||
8140: 27 96 1 3 3 2 95 7 3 727
|
||||
10121438: 1 436 9 92 70
|
||||
860403: 710 4 3 6 302 5
|
||||
927083: 542 74 7 5 43
|
||||
16882215034: 57 894 9 5 5 9 1 4 9 6 3 1
|
||||
63578: 7 2 1 563 77
|
||||
4088249760043: 32 12 234 760 70 20 2
|
||||
31374736: 6 5 364 6 2 8 1
|
||||
4399214: 936 47 13
|
||||
23925060150: 53 16 68 60 2 75
|
||||
2543: 6 547 3 5 871 8
|
||||
122579998: 3 78 11 7 748
|
||||
291594: 444 470 57 97 3
|
||||
2409360: 343 3 3 3 9 824 7 4 5
|
||||
1238038362: 5 5 509 92 5 36 9 7 97
|
||||
525001557: 8 4 1 7 7 140 3 5 1 434 3
|
||||
390649328: 477 8 1 90 44 5 328
|
||||
17363355: 77 26 6 289 3 7 806
|
||||
19956: 97 24 2 20 486
|
||||
91153855713: 2 3 1 3 6 6 7 7 989 7 34 3
|
||||
5739997: 951 603 4 418 59 65 4
|
||||
626980232: 6 202 67 80 18 5 2
|
||||
4747733: 47 321 8 147 95 38
|
||||
107928: 5 9 3 170 2 6 4 61 508 4
|
||||
23558102: 7 2 16 4 7 5 6 6 5 9 1 99
|
||||
3185485154: 88 48 4 6 6 1 2 593 6 55
|
||||
23136: 238 3 96 1
|
||||
638: 1 4 6 487 5
|
||||
1708208892: 2 9 45 187 58 43 1 2
|
||||
14968528167: 8 579 51 5 28 167
|
||||
9945460932: 6 9 5 6 8 5 916 360 4 33
|
||||
5557436: 4 1 3 63 44 7 73 1 2 1 6 9
|
||||
862: 674 190 1
|
||||
250758036025: 3 330 120 753 27
|
||||
3525594141: 71 8 8 6 1 1 2 8 9 49 44
|
||||
7239: 721 2 9 1
|
||||
9508: 479 638 2 36 4 421 7
|
||||
103: 3 1 1 5 98
|
||||
390780: 49 452 4 195 1
|
||||
363428: 790 17 41 116 377
|
||||
155757666973: 7 2 2 8 8 44 9 6 66 9 7 5
|
||||
7060895263377: 38 393 7 47 43 559 7
|
||||
691906033: 3 6 48 49 33 6 247 7 8
|
||||
34158764: 853 835 4 536 4
|
||||
80088635: 23 201 42 96 2 1 3 5
|
||||
13013: 18 7 77 3 332
|
||||
50774459: 837 8 35 80 5 2 91 6 2
|
||||
327169: 390 7 824 33 8
|
||||
376192: 43 970 80 9 79 3
|
||||
730012804: 78 709 2 165 8 1
|
||||
4787861: 477 823 956 7 1
|
||||
2115126258: 787 5 79 756 9 789 9
|
||||
10684275841: 9 98 3 1 4 79 6 7 48 40 9
|
||||
8744258566: 152 1 94 34 6 82 3 4 1 3
|
||||
57560529: 5 49 985 234 40
|
||||
91086832317: 3 7 91 8 68 318 4 6 5 4 1
|
||||
10313078819: 515 650 2 7 875 6 6
|
||||
134021197048: 40 67 423 94 5 45
|
||||
3004143: 6 9 8 43 5 269 3
|
||||
29492: 6 649 28 696 4
|
||||
2597274: 6 4 395 9 9 626
|
||||
68091255: 6 714 82 12 5 5 3 9 86 5
|
||||
2845: 7 4 44 1
|
||||
104652062010: 95 153 72 620 10
|
||||
1170739907: 282 106 415 2 5
|
||||
1267124: 2 239 86 545
|
||||
73548167869: 5 8 41 3 762 2 7 742 4 8
|
||||
97610: 536 45 168
|
||||
30385962006: 5 45 2 157 5 4 6 9 5 5 5 6
|
||||
34136389: 1 453 7 836 9
|
||||
2859663: 6 641 303 7 83 4 4 9 3
|
||||
831006074: 220 4 26 58 65 54
|
||||
5595: 3 78 66 3 246
|
||||
19003371840: 39 10 44 2 9 5 895 192
|
||||
1551347724: 2 5 950 622 9 3 3 1 1 3 6
|
||||
13541596: 728 186 7 93 2
|
||||
649502: 76 4 3 468 4 6 24 9 2 1
|
||||
19761: 9 12 941
|
||||
795078: 107 4 894 2 9 6 9 6 2 6
|
||||
837304819: 6 834 6 4 83 4 5 3 4 3 4
|
||||
5986344: 2 36 8 25 8 2 9 7 6 8 78
|
||||
88505841: 436 3 5 9 7 2 9 816 8 41
|
||||
24532: 82 32 8 94 9
|
||||
467483: 9 13 512 25 2
|
||||
6636537605: 3 53 1 8 1 56 5 40 4 33 5
|
||||
8150: 56 25 53
|
||||
689417616: 2 334 21 41 7 616
|
||||
639347: 63 90 3 38 9
|
||||
3941: 16 7 16 4 3
|
||||
55039: 417 64 8 7 54 39
|
||||
46002735: 89 813 51 718 17
|
||||
456590: 43 6 1 34 47 37 587 7 8
|
||||
1991724104: 18 3 2 1 4 1 136 4 1 10 4
|
||||
59472469157: 3 33 12 6 469 157
|
||||
714290736: 868 1 991 1 8 9 9 7 7 8 6
|
||||
3612781652: 2 7 3 3 73 274 427 410
|
||||
15855368368: 3 321 62 77 914 368
|
||||
1785304: 1 3 4 9 7 3 9 339 56 6 3 8
|
||||
248248: 1 409 22 33 8
|
||||
85008: 73 2 408 8 22
|
||||
275270328357: 9 6 8 9 9 2 6 930 54 6 34
|
||||
5663910: 79 34 7 500 671
|
||||
11127: 79 967 3 4 630
|
||||
179132250: 9 5 3 3 69 909 2 7 8 962
|
||||
4158095: 7 9 35 58 93 8 62 499
|
||||
3554470140: 6 5 2 73 324 99 4 3 23
|
||||
24449671: 8 7 5 8 83 29 4 2 1 4 70 1
|
||||
13718997648: 507 762 349 27 650
|
||||
1149: 3 51 11 406 149
|
||||
364809367069: 4 2 5 95 4 3 9 4 117 7 6 7
|
||||
78161431493: 76 2 161 35 3 2 49 495
|
||||
149614581: 149 60 78 1 66 84
|
||||
147777: 829 5 602 20 31
|
||||
767044338: 451 3 9 345 9 632 6 79
|
||||
36147907: 3 6 14 76 72 238
|
||||
3552: 8 8 5 1 32 960 1
|
||||
127596066: 3 7 20 343 66
|
||||
525466393: 3 93 4 82 45 8 6 66 394
|
||||
67036412837: 6 6 9 321 543 161 645
|
||||
49566812: 486 9 620 47 6 5 49 1
|
||||
36941: 2 4 614 8 92
|
||||
232740: 7 13 69 7 2 4 56 8 4 6 36
|
||||
103981615845: 259 984 9 8 51 6 38 6 1
|
||||
192070: 305 15 2 22 3 1 3
|
||||
668719800: 41 7 906 13 3 2 611 5 8
|
||||
93386: 2 25 79 881
|
||||
4979436: 65 5 9 415 714
|
||||
1514021: 16 43 1 1 2 858 365
|
||||
6538594: 90 8 9 2 7 4 9 54 6 9 11 4
|
||||
23056640: 9 70 2 74 493 5 8 1
|
||||
1530672212: 1 78 4 2 3 6 663 9 1 4 7 2
|
||||
4062698: 577 89 61 90 3 8
|
||||
28841858187: 331 51 87 48 8 18 7
|
||||
267849863: 666 3 62 464 4 5
|
||||
50616209: 7 1 6 666 209
|
||||
51813: 5 17 6 9 44
|
||||
43065: 69 12 6 96 74
|
||||
1265168131485: 8 6 8 4 41 9 95 5 8 8 9 9
|
||||
277830795: 1 371 7 735 795
|
||||
670242195: 1 69 551 81 95
|
||||
351738: 878 88 6 41 4 1
|
||||
60511327: 9 160 6 4 5 6 7 25 876 3
|
||||
8723027848: 3 49 34 74 62 481 8
|
||||
376702259433: 76 970 413 109 429 8
|
||||
981338733: 3 845 75 9 387
|
||||
332372089: 217 4 14 4 93 7 65 6 7 7
|
||||
13062184: 32 55 7 55 35 4 28 5 85
|
||||
555428252: 8 226 8 48 5 7 2 4 7 8 1 9
|
||||
153435: 6 11 35 84 778 387 3
|
||||
8052295745: 67 6 44 705 48 8 63
|
||||
9637546: 23 1 419 470 73
|
||||
235413707139: 8 7 89 17 2 326 64 71
|
||||
152664989: 9 2 6 861 5 54 2 2 67 8 9
|
||||
10599157: 47 425 401 7 520
|
||||
321048168: 437 4 8 91 168
|
||||
6133466570: 613 338 4 82 570
|
||||
364395: 2 670 5 3 4 4 71 9 9 651
|
||||
96144271: 93 41 273 426 6 3
|
||||
296100266: 7 416 700 262 7
|
||||
12: 3 4 5
|
||||
316640576: 765 5 3 80 3 8 10 69 64
|
||||
3742903512: 440 341 55 4 85
|
||||
2424885: 999 485 97 365 5
|
||||
1109686976: 3 564 542 680 6 9 73
|
||||
130649102: 87 2 180 48 2 813 2
|
||||
351996258059: 1 841 90 8 12 3 31 5 56
|
||||
19712180: 69 7 5 3 2 42 952 6 1 61
|
||||
161820433: 174 6 500 62 85 5 6
|
||||
1751: 893 698 6 11 7 136
|
||||
865218480617: 7 3 564 5 4 7 840 3 1 5 4
|
||||
29024: 56 2 173 5 24
|
||||
137761920: 77 281 755 384
|
||||
234: 18 2 6 9
|
||||
85892: 8 749 98 99 249 5 39
|
||||
6668277571: 6 9 7 140 8 20 139 986
|
||||
58381: 138 21 556 4 872
|
||||
39749790: 2 659 9 5 2 6 5 2 8 331 3
|
||||
16910718: 54 86 5 73 726
|
||||
196244: 2 301 436 924 44
|
||||
680: 3 1 76 7 46 3 5
|
||||
24098: 21 3 8 5 651 9
|
||||
72406081: 76 1 987 9 964 4 2 7
|
||||
401310: 9 4 69 824 4 441
|
||||
482255395: 9 533 25 55 395
|
||||
336753: 86 5 76 995 3
|
||||
2009631: 2 7 488 4 70 6 1 50 878
|
||||
39840: 7 32 108 6 20
|
||||
5677304803: 3 8 989 803 48 8 759 7
|
||||
109641032174: 3 61 289 561 76 40 14
|
||||
509254455841: 4 26 69 895 172 461
|
||||
30807424: 1 489 63 42 4
|
||||
1305895444: 65 557 83 24 6
|
||||
36122860: 7 665 97 80 60
|
||||
432561944: 465 50 6 465 1 6 5 8 8
|
||||
1598755: 13 2 1 1 6 8 5 3 6 7 295 5
|
||||
214270585186: 5 2 479 31 90 3 8 497
|
||||
820817: 5 250 3 227 94 11 9 2
|
||||
87935: 6 8 8 81 5 34 384 5 4 8 1
|
||||
3181124: 4 2 356 6 5 79 45
|
||||
57558: 9 306 260 55 1
|
||||
469698: 3 376 14 76 698
|
||||
427158: 348 601 75 18 6
|
||||
259325: 47 42 9 54 99 8 32 3
|
||||
1854090496: 3 7 6 2 7 70 27 3 1 48 1 6
|
||||
951: 8 7 21 93 109 4
|
||||
805719131: 6 7 8 2 6 3 102 7 23 9 7 7
|
||||
3719908556832: 499 91 4 1 2 4 640 8 8 4
|
||||
144066: 29 108 3 559 39
|
||||
258758334: 2 586 1 58 1 334
|
||||
12025: 665 7 2 662 9
|
||||
87559383: 9 179 7 2 32 7 6 90 3
|
||||
288550536146: 5 476 74 4 2 606 145
|
||||
275093262: 4 430 760 7 834 860 4
|
||||
6227179152: 5 496 7 872 73 17
|
||||
254426: 31 350 1 453 8
|
||||
28668: 6 3 3 6 246 317 4 5 3 4
|
||||
204246: 7 8 1 34 2 460 5 3 7 6 1
|
||||
966451: 533 5 8 36 933 5 43 3
|
||||
1000614359: 1 8 794 8 4 2 908 7 3
|
||||
54277578: 180 4 5 252 6 3
|
||||
960344059020: 8 5 1 745 7 4 1 47 5 4 9 8
|
||||
1794254145263: 84 471 547 987 84
|
||||
61238: 3 50 359 7 96 38
|
||||
262072: 1 76 9 4 7 34 238
|
||||
163767141: 35 56 9 1 9 4 178 1 8 1
|
||||
4278695529: 62 69 695 526 3 1
|
||||
657492404523: 491 13 72 355 65 2 62
|
||||
12144984: 121 3 5 9 986
|
||||
2877557499: 57 484 9 129 531
|
||||
588122: 5 6 3 48 65
|
||||
6876603: 176 5 719 1 21 43
|
||||
1275198662: 2 83 751 6 662
|
||||
12739432716: 53 290 76 543 6 5 9 5 9
|
||||
412298231633: 9 34 9 4 5 3 3 25 5 63 1 7
|
||||
277472967211: 41 445 9 5 4 76 4 7 209
|
||||
20790: 45 7 15 9 7
|
||||
48961044215: 8 5 8 80 4 7 6 9 1 26 84 5
|
||||
270911: 2 83 25 215 518
|
||||
1640: 795 3 8 7 6 805 2 3 1 7 3
|
||||
111034: 33 35 5 37 7 41 6
|
||||
72864: 61 91 55 4 11 8
|
||||
5341448448: 1 88 5 8 7 4 9 3 7 6 4 392
|
||||
849: 801 3 1 45
|
||||
1677855061: 414 49 9 919 1
|
||||
1954728: 839 9 384 93 52 6 60 6
|
||||
3579938: 8 838 89 6 2
|
||||
54951093321: 5 495 109 332 3
|
||||
779284807: 9 463 784 5 234 5 2 65
|
||||
295479: 2 312 5 47 4 4 297 6
|
||||
86113396: 5 877 30 976 5 908
|
||||
417248766: 6 6 84 542 8 26 14 61 6
|
||||
7928: 7 925 6
|
||||
2561662: 88 3 24 3 76 39 90 676
|
||||
17824: 126 3 9 947 45 62 4
|
||||
474147901: 10 53 1 4 2 5 30 90 5 9
|
||||
332807: 61 5 135 318 6 6 599
|
||||
248428: 9 46 15 7 4
|
||||
5058558453: 35 239 55 261 2
|
||||
203986: 44 83 9 124 161
|
||||
5566: 602 8 1 9 8 5 29 4 7 3 6 5
|
||||
71442: 904 36 38 2
|
||||
52410: 5 2 90 6 3 9
|
||||
9126793: 39 2 520 67 93
|
||||
285020268: 315 28 3 59 358 39
|
||||
@@ -1,50 +0,0 @@
|
||||
.....wV....q.....................................n
|
||||
.......w......q.h.....Vn.........................D
|
||||
............w.S..G.....................DT.........
|
||||
......S........h......e..T.....y......D...........
|
||||
......m.......Ae.......T........o.................
|
||||
....m....S........................................
|
||||
...m..........................n........8..........
|
||||
.........2...G......................n.............
|
||||
..2........V.......h................Q.............
|
||||
............................o.....................
|
||||
.Z......I..U....e...u.....G....o..................
|
||||
...N..G.........................................y.
|
||||
.....I............q.......h...................s...
|
||||
......U........qI....o.V..Rz........8........k....
|
||||
......d.Z.........................R.......8y......
|
||||
.........e..............T.....l...................
|
||||
.......2.........................u...R............
|
||||
.....d.............................Q..............
|
||||
...................v.....................s.Q....M.
|
||||
........2..........4.....................8..7.k...
|
||||
...........x..N..................A..........k.....
|
||||
...........ZN...........v...............K.........
|
||||
...d.......N.....................Ky.6.............
|
||||
...........................l6.....................
|
||||
....L....g.................4.......k..K.......0...
|
||||
..............L...........4R................s.....
|
||||
U......r..............H.4.........................
|
||||
.......U.............a.......H.............u......
|
||||
......xY...............l..........................
|
||||
...................................6..u...........
|
||||
........Y......L......l............0..............
|
||||
......9..L...........A.....v..HEa........K........
|
||||
..................v........6.EX.............z.....
|
||||
d..Y.............m......A.........................
|
||||
......................a.i......M...........z......
|
||||
...................g.......................0......
|
||||
...............................H.........i........
|
||||
..........3................W........E...i...0.....
|
||||
.................t.a....g.................5.......
|
||||
.r...t...........................7.....5..........
|
||||
....................................7....5........
|
||||
....................g.Y...wMz.....................
|
||||
9..........O....3................W.7..E..XD...1...
|
||||
t..............3.x.....9..........W.M.............
|
||||
...9............W.................................
|
||||
Z.............x................X.i......5.........
|
||||
...........3.....................................1
|
||||
...................O.......s....X.................
|
||||
..............r...................................
|
||||
..........................O.................1.....
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user