Guest User

Untitled

a guest
Dec 11th, 2018
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.16 KB | None | 0 0
  1. p0 = '..#..####.##.####...#....#######..#.#..#..#.#.#####.######..#.#.#.#..##.###.#....####.#.#....#.#####'=='#';
  2. N = 300; % Padding
  3. p = [false(1,N),p0,false(1,N)];
  4.  
  5. mostLeftPlantIdx  = N+1;
  6. mostRightPlantIdx = N+length(p0);
  7.  
  8. x = importdata('input.txt');
  9. L = length(x);
  10. r = false(L,6);
  11. for i=1:L
  12.     r(i,1:5) = x{i}(1:5)=='#';
  13.     r(i,6)   = x{i}(10)=='#';
  14. end
  15.  
  16. allSum = zeros(200,1);
  17. for generation=1:200
  18.     pNew = p;
  19.     for plantIdx = mostLeftPlantIdx-5:mostRightPlantIdx+5
  20.         ruleFound = false;
  21.         for ruleIdx = 1:size(r,1)
  22.             if isequal( r(ruleIdx,1:5) , p(plantIdx-2:plantIdx+2)) % matching rule found
  23.                 pNew(plantIdx) = r(ruleIdx,6);
  24.                 ruleFound = true;
  25.             end
  26.         end
  27.         if ~ruleFound
  28.             pNew(plantIdx) = false;
  29.         end
  30.     end
  31.     if generation == 20
  32.         disp(sum(find(p)-(N+1))) % Part 1
  33.     end
  34.     p                    = pNew;
  35.     mostLeftPlantIdx     = find(p,1,'first');
  36.     mostRightPlantIdx    = find(p,1,'last');
  37.     allSum(generation,1) = sum(find(p)-(N+1));
  38. end
  39. disp(allSum(end) + (allSum(end)-allSum(end-1)) * (50000000000-length(allSum))) % Part 2
Advertisement
Add Comment
Please, Sign In to add comment