Skip to content

Instantly share code, notes, and snippets.

@ThomasTheGerman
Created December 24, 2020 13:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ThomasTheGerman/4d30fbc4e9ff4abeaa9281fbd221e8ba to your computer and use it in GitHub Desktop.
Save ThomasTheGerman/4d30fbc4e9ff4abeaa9281fbd221e8ba to your computer and use it in GitHub Desktop.
tic
tiles = getData('input.txt');
part1 = sum(groupcounts(tiles)==1)
un = unique(tiles);
tiles = un(groupcounts(tiles) ==1);
grid = zeros(250,250);
for i = 1:length(tiles)
grid(real(tiles(i))+125,imag(tiles(i))+125) = 1;
end
spy(grid);
for k = 1:100
grid = generation(grid);
spy(grid);
end
part2 = nnz(grid)
toc
function [nextgrid] = generation(grid)
directions = [2;-2;1-1i;-1-1i;-1+1i;1+1i];
nextgrid = zeros(250,250);
[tilesX,tilesY] = ind2sub(size(grid),find(grid));
tiles = complex(tilesX-125,tilesY-125);
for i = 1:length(tiles)
n = 0;
tile = tiles(i);
neighbors = tile+directions;
for j = 1:6
if grid(real(neighbors(j))+125,imag(neighbors(j))+125) == 1
n = n+1;
else
m = 0;
grand_neighbors = neighbors(j)+directions;
for k = 1:6
if grid(real(grand_neighbors(k))+125,imag(grand_neighbors(k))+125) == 1
m = m+1;
end
end
if m == 2
nextgrid(real(neighbors(j))+125,imag(neighbors(j))+125) = 1;
end
end
end
if n > 0 && n <= 2
nextgrid(real(tile)+125,imag(tile)+125) = 1;
end
end
end
function data = getData(inputfile)
inp = string(strsplit(fileread(inputfile),"\n"))';
inp = strip(inp(1:end-1));
data = zeros(length(inp),1);
dirs = ["se","sw","nw","ne","w","e"];
for i = 1:length(inp)
for j = 1:length(dirs)
c = count(inp{i},dirs{j});
inp{i} = erase(inp{i},dirs{j});
switch dirs{j}
case "e"
data(i) = data(i) + c*2;
case "w"
data(i) = data(i) - c*2;
case "se"
data(i) = data(i) + c*(1-1i);
case "sw"
data(i) = data(i) + c*(-1-1i);
case "nw"
data(i) = data(i) + c*(-1+1i);
case "ne"
data(i) = data(i) + c*(1+1i);
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment