Advertisement
Guest User

Untitled

a guest
Dec 10th, 2018
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.22 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace Advent2018.Day11
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             Part2();
  14.         }
  15.         static void Part1() {
  16.             int serial = 7315;
  17.             int[,] grid = new int[300, 300];
  18.             for (int j = 0; j < 300; j++)
  19.             {
  20.                 for (int i = 0; i < 300; i++)
  21.                 {
  22.                     int x = i + 1;
  23.                     int y = j + 1;
  24.                     int rackId = x + 10;
  25.                    
  26.                     int power = rackId * y;
  27.                     power += serial;
  28.                     power *= rackId;
  29.                     //get 100's digit
  30.                     int digit = ((power - (power % 100)) / 100) % 10;
  31.                     power = digit - 5;
  32.  
  33.                     grid[i, j] = power;
  34.                 }
  35.             }
  36.             int max = 0;
  37.             int maxi = 0;
  38.             int maxj = 0;
  39.  
  40.             for(int j = 0; j < 298; j++)
  41.             {
  42.                 for(int i = 0; i < 298; i++)
  43.                 {
  44.                     int total = 0;
  45.                     for(int jj = 0; jj < 3; jj++)
  46.                     {
  47.                         for(int ii = 0; ii < 3; ii++)
  48.                         {
  49.                             total += grid[i + ii, j + jj];
  50.                         }
  51.                     }
  52.                     if (total > max)
  53.                     {
  54.                         max = total;
  55.                         maxi = i;
  56.                         maxj = j;
  57.                     }
  58.                 }
  59.             }
  60.             Console.WriteLine("Max: " + (maxi + 1) + "," + (maxj + 1));
  61.         }
  62.  
  63.         static void Part2()
  64.         {
  65.             int serial = 7315;
  66.             int[,] grid = new int[300, 300];
  67.             for (int j = 0; j < 300; j++)
  68.             {
  69.                 for (int i = 0; i < 300; i++)
  70.                 {
  71.                     int x = i + 1;
  72.                     int y = j + 1;
  73.                     int rackId = x + 10;
  74.  
  75.                     int power = rackId * y;
  76.                     power += serial;
  77.                     power *= rackId;
  78.                     //get 100's digit
  79.                     int digit = ((power - (power % 100)) / 100) % 10;
  80.                     power = digit - 5;
  81.  
  82.                     grid[i, j] = power;
  83.                 }
  84.             }
  85.             int max = 0;
  86.             int maxi = 0;
  87.             int maxj = 0;
  88.             int maxs = 3;
  89.             for (int s = 1; s < 300; s++)
  90.             {
  91.                 Console.Write(".");
  92.                 for (int j = 0; j < (301 - s) ; j++)
  93.                 {
  94.                     for (int i = 0; i < (301 - s); i++)
  95.                     {
  96.                         int total = 0;
  97.                         for (int jj = 0; jj < s; jj++)
  98.                         {
  99.                             for (int ii = 0; ii < s; ii++)
  100.                             {
  101.                                 total += grid[i + ii, j + jj];
  102.                             }
  103.                         }
  104.                         if (total > max)
  105.                         {
  106.                             maxs = s;
  107.                             max = total;
  108.                             maxi = i;
  109.                             maxj = j;
  110.                         }
  111.                     }
  112.                 }
  113.             }
  114.             Console.WriteLine("Max: " + (maxi + 1) + "," + (maxj + 1) + "," + maxs);
  115.         }
  116.     }
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement