aoc 1+2
This commit is contained in:
50
www/statics/aoc/2018/22_solution-1.linq
Normal file
50
www/statics/aoc/2018/22_solution-1.linq
Normal file
@@ -0,0 +1,50 @@
|
||||
<Query Kind="Program" />
|
||||
|
||||
void Main()
|
||||
{
|
||||
var input = File.ReadAllLines(Path.Combine(Path.GetDirectoryName(Util.CurrentQueryPath), @"22_input.txt"));
|
||||
|
||||
var depth = long.Parse(input[0].Split(' ')[1]);
|
||||
(long x, long y) target = ( long.Parse(input[1].Split(' ')[1].Split(',')[0]), long.Parse(input[1].Split(' ')[1].Split(',')[1]) );
|
||||
|
||||
long[,] map = new long[target.x + 1, target.y + 1]; // erosion_level
|
||||
|
||||
for (long xx = 0; xx <= target.x; xx++) map[xx, 0] = ((xx * 16807) + depth) % 20183;
|
||||
for (long yy = 0; yy <= target.y; yy++) map[0, yy] = ((yy * 48271) + depth) % 20183;
|
||||
|
||||
for (long x = 1; x <= target.x; x++)
|
||||
{
|
||||
for (long y = 1; y <= target.y; y++)
|
||||
{
|
||||
map[x, y] = ((map[x-1, y] * map[x, y-1]) + depth) % 20183;
|
||||
}
|
||||
}
|
||||
|
||||
long risk = 0;
|
||||
for (long x = 0; x <= target.x; x++)
|
||||
{
|
||||
for (long y = 0; y <= target.y; y++)
|
||||
{
|
||||
if (x == 0 && y == 0) continue;
|
||||
if (x == target.x && y == target.y) continue;
|
||||
risk += map[x,y] % 3;
|
||||
}
|
||||
}
|
||||
|
||||
risk.Dump();
|
||||
|
||||
//StringBuilder b = new StringBuilder();
|
||||
//for (long y = 0; y <= target.y; y++)
|
||||
//{
|
||||
// for (long x = 0; x <= target.x; x++)
|
||||
// {
|
||||
// if (map[x, y] % 3 == 0) b.Append('.');
|
||||
// if (map[x, y] % 3 == 1) b.Append('=');
|
||||
// if (map[x, y] % 3 == 2) b.Append('|');
|
||||
// }
|
||||
// b.AppendLine();
|
||||
//}
|
||||
//b.ToString().Dump();
|
||||
}
|
||||
|
||||
// Define other methods and classes here
|
||||
Reference in New Issue
Block a user