Advertisement
Guest User

robot

a guest
Oct 31st, 2018
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Octave 0.75 KB | None | 0 0
  1. function mark_x(r, points_arr)
  2.     global pos marked
  3.     global points
  4.     points = points_arr;
  5.     pos = [0, 0];
  6.     marked = [];
  7.     go_around(r)
  8. end
  9.  
  10. function go_around(r)
  11.     global pos marked
  12.     if !ismember(pos, marked, 'rows')
  13.         marked = [marked; pos];
  14.         for s = 'nosw'
  15.             if r.is_bord(s) == 0
  16.                 step(r, s)
  17.                 go_around(r)
  18.                 s = reverse(s);
  19.                 step(r, s)
  20.             end
  21.         end
  22.     end
  23. end
  24.  
  25. function step(r, s)
  26.     global pos points
  27.     r.step(s)
  28.     switch s
  29.         case 'n'
  30.             pos(2)++;
  31.         case 's'
  32.             pos(2)--;
  33.         case 'o'
  34.             pos(1)++;
  35.         case 'w'
  36.             pos(1)--;
  37.     end
  38.     if ismember(pos, points, 'rows')
  39.         r.mark()
  40.     end
  41. end
  42.  
  43. function s = reverse(s)
  44.     switch s
  45.         case 'n'
  46.             s = 's';
  47.         case 's'
  48.             s = 'n';
  49.         case 'o'
  50.             s = 'w';
  51.         case 'w'
  52.             s = 'o';
  53.     end
  54. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement