Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- clear all
- data =readlines("Input.txt");
- data = char(data)
- gridbefore = zeros(width(data),height(data));
- grid = zeros(width(data),height(data));
- hashPrev = keyHash(0);
- hashCur = keyHash(1);
- grid(1,1) = bitset(grid(1,1),2);
- while hashPrev ~= hashCur
- hashPrev = keyHash(grid);
- [rows, cols] = find(grid-gridbefore);
- gridbefore = grid;
- for i = 1:length(rows)
- row = rows(i);
- col = cols(i);
- if col-1 >= 1
- if bitget(grid(row,col),3)
- if data(row,col-1) == '|'
- grid(row,col-1) = bitset(grid(row,col-1),4);
- grid(row,col-1) = bitset(grid(row,col-1),2);
- elseif data(row,col-1) == '\'
- grid(row,col-1) = bitset(grid(row,col-1),4);
- elseif data(row,col-1) == '/'
- grid(row,col-1) = bitset(grid(row,col-1),2);
- else
- grid(row,col-1) = bitset(grid(row,col-1),3);
- end
- end
- end
- if col+1 <= width(grid)
- if bitget(grid(row,col),1)
- if data(row,col+1) == '|'
- grid(row,col+1) = bitset(grid(row,col+1),2);
- grid(row,col+1) = bitset(grid(row,col+1),4);
- elseif data(row,col+1) == '\'
- grid(row,col+1) = bitset(grid(row,col+1),2);
- elseif data(row,col+1) == '/'
- grid(row,col+1) = bitset(grid(row,col+1),4);
- else
- grid(row,col+1) = bitset(grid(row,col+1),1);
- end
- end
- end
- if row-1 >= 1
- if bitget(grid(row,col),4)
- if data(row-1,col) == '-'
- grid(row-1,col) = bitset(grid(row-1,col),3);
- grid(row-1,col) = bitset(grid(row-1,col),1);
- elseif data(row-1,col) == '\'
- grid(row-1,col) = bitset(grid(row-1,col),3);
- elseif data(row-1,col) == '/'
- grid(row-1,col) = bitset(grid(row-1,col),1);
- else
- grid(row-1,col) = bitset(grid(row-1,col),4);
- end
- end
- end
- if row+1 <= width(grid)
- if bitget(grid(row,col),2)
- if data(row+1,col) == '-'
- grid(row+1,col) = bitset(grid(row+1,col),1);
- grid(row+1,col) = bitset(grid(row+1,col),3);
- elseif data(row+1,col) == '\'
- grid(row+1,col) = bitset(grid(row+1,col),1);
- elseif data(row+1,col) == '/'
- grid(row+1,col) = bitset(grid(row+1,col),3);
- else
- grid(row+1,col) = bitset(grid(row+1,col),2);
- end
- end
- end
- end
- hashCur = keyHash(grid);
- end
- part1 = length(find(grid))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement