Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- x = importdata('input.txt');
- L = size(x,1);
- g = zeros(L,L);
- % not counting = 0, open = 1, trees = 2, lumberyard = 3
- for i=1:L
- g(i,x{i,:}=='.') = 1;
- g(i,x{i,:}=='|') = 2;
- g(i,x{i,:}=='#') = 3;
- end
- g = [zeros(L,1),g,zeros(L,1)];
- g = [zeros(1,L+2);g;zeros(1,L+2)];
- gNew = g;
- N = 1000;
- y = zeros(N,1);
- for i=1:1000
- for r=2:size(g,1)-1
- for c=2:size(g,2)-1
- switch g(r,c)
- case 1
- 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
- gNew(r,c) = 2;
- end
- case 2
- 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
- gNew(r,c) = 3;
- end
- case 3
- 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)
- gNew(r,c) = 3;
- else
- gNew(r,c) = 1;
- end
- end
- end
- end
- g=gNew;
- y(i,1)=sum(sum(g==2))*sum(sum(g==3));
- end
- disp(y(10,1)) %Part 1
- % Plot first 1000 values of resource value
- plot(y,'.')
- % Visual inspection of plot to find period:
- % Period = 977-949 = 28
- % y(977) = 214914
- % mod(1000000000-977,28) = 23
- % y(977+23) = 228490
Advertisement
Add Comment
Please, Sign In to add comment