NilsKirchhoff

AoC 2017 - Day 2

Dec 2nd, 2017
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.94 KB | None | 0 0
  1. public class Day2 {
  2.  
  3.     public static void main(String[] args) {
  4.         // AoC 2017 - Day 1 - Problem 2
  5.        
  6.         int[][] sheet = new int[16][16];
  7.         String str = "414 382 1515  319 83  1327    116 391 101 749 1388    1046    1427    105 1341    1590 " +
  8.                 "960    930 192 147 932 621 1139    198 865 820 597 165 232 417 19  183 " +
  9.                 "3379   987 190 3844    1245    1503    3151    3349    2844    4033    175 3625    3565    179 3938    184 " +
  10.                 "116    51  32  155 102 92  65  42  48  91  74  69  52  89  20  143 " +
  11.                 "221    781 819 121 821 839 95  117 626 127 559 803 779 543 44  369 " +
  12.                 "199    2556    93  1101    122 124 2714    625 2432    1839    2700    2636    118 2306    1616    2799 " +
  13.                 "56 804 52  881 1409    47  246 1368    1371    583 49  1352    976 400 1276    1240 " +
  14.                 "1189   73  148 1089    93  76  3205    3440    3627    92  853 95  3314    3551    2929    3626 " +
  15.                 "702    169 492 167 712 488 357 414 187 278 87  150 19  818 178 686 " +
  16.                 "140    2220    1961    1014    2204    2173    1513    2225    443 123 148 580 833 1473    137 245 " +
  17.                 "662    213 1234    199 1353    1358    1408    235 917 1395    1347    194 565 179 768 650 " +
  18.                 "119    137 1908    1324    1085    661 1557    1661    1828    1865    432 110 658 821 1740    145 " +
  19.                 "1594   222 4140    963 209 2782    180 2591    4390    244 4328    3748    4535    192 157 3817 " +
  20.                 "334    275 395 128 347 118 353 281 430 156 312 386 160 194 63  141 " +
  21.                 "146    1116    153 815 2212    2070    599 3018    2640    47  125 2292    165 2348    2694    184 " +
  22.                 "1704   2194    1753    146 2063    1668    1280    615 163 190 2269    1856    150 158 2250    2459 ";
  23.            
  24.         // Parsing Sheet into an array
  25.         int i=0;
  26.             for (int j=0; j<16; j++) {
  27.                
  28.                 for (int k=0; k<16; k++) {
  29.                     int zahl = 0;
  30.                     while (str.charAt(i)-'0' >= 0 && str.charAt(i)-'0' <= 9) {
  31.                         zahl = zahl * 10;
  32.                         zahl = zahl + str.charAt(i)-'0';
  33.                         if (i < str.length()-1)
  34.                             i++;
  35.                         }
  36.                 if (zahl != 0)
  37.                     sheet[j][k] = zahl;
  38.                 if (i < str.length()-1)
  39.                     i++;                   
  40.                 }      
  41.             }
  42.            
  43.         /* Check if parsing works
  44.         for (int[] reihe : sheet) {
  45.             for (int spalte : reihe) {
  46.                 System.out.print(spalte + " ");
  47.             }
  48.                 System.out.println();
  49.         }
  50.         */
  51.            
  52.            
  53.         //Finding the biggest and smalles value and ad them up row by row
  54.         int summe = 0, diff = 0, big = 0, small = 0;
  55.         for (int j=0; j<16; j++) {
  56.             big = 0; small = 0; diff = 0;
  57.             for (int k=0; k<16; k++) {
  58.                 if (small == 0)
  59.                     small = sheet[j][k];
  60.                 if (sheet[j][k] > big)
  61.                     big = sheet[j][k];
  62.                 if (sheet[j][k] < small)
  63.                     small = sheet[j][k];
  64.             }
  65.             diff = big - small;
  66.             summe = summe + diff;
  67.         }
  68.        
  69.         System.out.println("Checksum: " + summe);
  70.        
  71.        
  72.        
  73.         //Finding the 2 numbers with a 0 modulo devider
  74.         summe = 0;
  75.         int ggT = 0;
  76.         for (int j=0; j<16; j++) {
  77.             ggT = 0;
  78.             for (int k=0; k<16; k++) {
  79.                 for (int l=1; l<(16-k); l++) {
  80.                     if (sheet[j][k] % sheet[j][k+l] == 0) {
  81.                         ggT = sheet[j][k] / sheet[j][k+l];
  82.                     } else if (sheet[j][k+l] % sheet[j][k] == 0) {
  83.                         ggT = sheet[j][k+l] / sheet[j][k];
  84.                     }
  85.                 }
  86.             }
  87.             summe = summe + ggT;
  88.         }
  89.        
  90.         System.out.println("Checksum 2: " + summe);
  91.        
  92.  
  93.     }
  94.  
  95. }
Advertisement
Add Comment
Please, Sign In to add comment