Guest User

Untitled

a guest
Dec 17th, 2018
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.82 KB | None | 0 0
  1. x = importdata('input.txt');
  2. L = size(x,1);
  3. g = zeros(L,L);
  4. % not counting = 0, open = 1, trees = 2, lumberyard = 3
  5. for i=1:L
  6.     g(i,x{i,:}=='.') = 1;
  7.     g(i,x{i,:}=='|') = 2;
  8.     g(i,x{i,:}=='#') = 3;
  9. end
  10. g = [zeros(L,1),g,zeros(L,1)];
  11. g = [zeros(1,L+2);g;zeros(1,L+2)];
  12.  
  13. gNew = g;
  14. N = 1000;
  15. y = zeros(N,1);
  16. for i=1:1000
  17.     for r=2:size(g,1)-1
  18.         for c=2:size(g,2)-1
  19.            
  20.             switch g(r,c)
  21.                
  22.                 case 1
  23.                    
  24.                     if (g(r-1,c-1)==2) + (g(r-1,c)==2) +(g(r-1,c+1)==2)+(g(r,c-1)==2)+(g(r,c+1)==2) + (g(r+1,c-1)==2) + (g(r+1,c)==2) + (g(r+1,c+1)==2) > 2
  25.                         gNew(r,c) = 2;
  26.                     end
  27.                    
  28.                 case 2
  29.                    
  30.                     if (g(r-1,c-1)==3) + (g(r-1,c)==3) +(g(r-1,c+1)==3)+(g(r,c-1)==3)+(g(r,c+1)==3) + (g(r+1,c-1)==3) + (g(r+1,c)==3) + (g(r+1,c+1)==3) > 2
  31.                         gNew(r,c) = 3;
  32.                     end
  33.                    
  34.                 case 3
  35.                    
  36.                     if ((g(r-1,c-1)==3) + (g(r-1,c)==3) +(g(r-1,c+1)==3)+(g(r,c-1)==3)+(g(r,c+1)==3) + (g(r+1,c-1)==3) + (g(r+1,c)==3) + (g(r+1,c+1)==3) > 0) && ((g(r-1,c-1)==2) + (g(r-1,c)==2) +(g(r-1,c+1)==2)+(g(r,c-1)==2)+(g(r,c+1)==2) + (g(r+1,c-1)==2) + (g(r+1,c)==2) + (g(r+1,c+1)==2) > 0)
  37.                         gNew(r,c) = 3;
  38.                     else
  39.                         gNew(r,c) = 1;
  40.                     end
  41.                    
  42.             end
  43.            
  44.         end
  45.     end
  46.     g=gNew;
  47.     y(i,1)=sum(sum(g==2))*sum(sum(g==3));
  48. end
  49. disp(y(10,1)) %Part 1
  50.  
  51. % Plot first 1000 values of resource value
  52. plot(y,'.')
  53. % Visual inspection of plot to find period:
  54. % Period = 977-949 = 28
  55. % y(977) = 214914
  56. % mod(1000000000-977,28) = 23
  57. % y(977+23) = 228490
Advertisement
Add Comment
Please, Sign In to add comment