-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAoC11a.asv
32 lines (23 loc) · 1.03 KB
/
AoC11a.asv
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
clear; close; clc
data = readmatrix('inputAoC11test.txt', VariableWidth = ones(10, 1));
data = padarray(data, [1 1], NaN); %dá margin 1 matrixu. hodnoty NaN -> nemusíme používat try, catch
steps = 100;
flashCount = 0;
for i = 1:2 %steps
data = data + 1; %přičtu každému prvku 1
[y, x] = find(data > 9); %uložím lokace 10tek do 'y' a 'x'
for j = 1:length(x) %probliknutí každého prvku který je v 'x' a 'y'
data = flash(y(j), x(j), data);
end
end
function data = flash(y, x, data)
a = y; %y
b = x; %x
d = data(y, x);
if d < 10 , return, end
data(a-1:a+1, b-1:b+1) = data(a-1:a+1, b-1:b+1) + 1; %přidání 1 do okolí a sama sebe
data(y, x) = -Inf; %nesmí probliknout znovu v tento step
data = flash(a-1, b-1, flash(a, b-1, flash(a+1, b-1, data))); %flashnutí spodní části
data = flash(a-1, b, flash(a+1, b, data)); %flashnutí prostředku
data = flash(a-1, b+1, flash(a, b+1, flash(a+1, b+1, data))); % flashnutí vrchu
end