Advertisement
Guest User

Untitled

a guest
Dec 16th, 2023
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 2.87 KB | Source Code | 0 0
  1. clear all
  2. data =readlines("Input.txt");
  3. data = char(data)
  4. gridbefore = zeros(width(data),height(data));
  5. grid = zeros(width(data),height(data));
  6. hashPrev = keyHash(0);
  7. hashCur = keyHash(1);
  8. grid(1,1) = bitset(grid(1,1),2);
  9. while hashPrev ~= hashCur
  10.     hashPrev = keyHash(grid);
  11.     [rows, cols] = find(grid-gridbefore);
  12.     gridbefore = grid;
  13.     for i = 1:length(rows)
  14.         row = rows(i);
  15.         col = cols(i);
  16.         if col-1 >= 1
  17.             if bitget(grid(row,col),3)
  18.                 if data(row,col-1) == '|'
  19.                     grid(row,col-1) = bitset(grid(row,col-1),4);
  20.                     grid(row,col-1) = bitset(grid(row,col-1),2);
  21.                 elseif data(row,col-1) == '\'
  22.                     grid(row,col-1) = bitset(grid(row,col-1),4);
  23.                 elseif data(row,col-1) == '/'
  24.                     grid(row,col-1) = bitset(grid(row,col-1),2);
  25.                 else
  26.                     grid(row,col-1) = bitset(grid(row,col-1),3);
  27.                 end
  28.             end
  29.         end
  30.         if col+1 <= width(grid)
  31.             if bitget(grid(row,col),1)
  32.                 if data(row,col+1) == '|'
  33.                     grid(row,col+1) = bitset(grid(row,col+1),2);
  34.                     grid(row,col+1) = bitset(grid(row,col+1),4);
  35.                 elseif data(row,col+1) == '\'
  36.                     grid(row,col+1) = bitset(grid(row,col+1),2);
  37.                 elseif data(row,col+1) == '/'
  38.                     grid(row,col+1) = bitset(grid(row,col+1),4);
  39.                 else
  40.                     grid(row,col+1) = bitset(grid(row,col+1),1);
  41.                 end
  42.             end
  43.         end
  44.         if row-1 >= 1
  45.             if bitget(grid(row,col),4)
  46.                 if data(row-1,col) == '-'
  47.                     grid(row-1,col) = bitset(grid(row-1,col),3);
  48.                     grid(row-1,col) = bitset(grid(row-1,col),1);
  49.                 elseif data(row-1,col) == '\'
  50.                     grid(row-1,col) = bitset(grid(row-1,col),3);
  51.                 elseif data(row-1,col) == '/'
  52.                     grid(row-1,col) = bitset(grid(row-1,col),1);
  53.                 else
  54.                     grid(row-1,col) = bitset(grid(row-1,col),4);
  55.                 end
  56.             end
  57.         end
  58.         if row+1 <= width(grid)
  59.             if bitget(grid(row,col),2)
  60.                 if data(row+1,col) == '-'
  61.                     grid(row+1,col) = bitset(grid(row+1,col),1);
  62.                     grid(row+1,col) = bitset(grid(row+1,col),3);
  63.                 elseif data(row+1,col) == '\'
  64.                     grid(row+1,col) = bitset(grid(row+1,col),1);
  65.                 elseif data(row+1,col) == '/'
  66.                     grid(row+1,col) = bitset(grid(row+1,col),3);
  67.                 else
  68.                     grid(row+1,col) = bitset(grid(row+1,col),2);
  69.                 end
  70.             end
  71.         end
  72.  
  73.     end
  74.     hashCur = keyHash(grid);
  75. end
  76. part1 = length(find(grid))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement