Advertisement
dmkozyrev

mark_chess_n

Nov 14th, 2015
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.96 KB | None | 0 0
  1. function mark_chess(n, u, v);
  2.     r = Rob_abs;
  3.     go_to_corner(r, u, v);
  4.     u = invert(u);
  5.     v = invert(v);
  6.     not_finished = true;
  7.     i = 0;
  8.     while not_finished
  9.         flag = true;
  10.         mark_col(r, u, v, n, flag);
  11.         i = i +1;
  12.         if i == n
  13.             i = 0;
  14.             flag = ~flag;
  15.         end
  16.         not_finished = ~r.is_bord(v);
  17.         if not_finished
  18.             r.step(v);
  19.         end    
  20.     end
  21. end
  22.  
  23. function v = invert(u)
  24. %функция возвращает направление v , противоположное направлению u
  25. side = [ 'w' , 'n' , 's' , 'o'];
  26. for i = 1:length(side)
  27.     if u == side(i)
  28.         v = side(5-i);
  29.         break;
  30.     end
  31. end
  32. end
  33.  
  34. function go_to_corner(r , u , v)
  35.     while ~( r.is_bord(u) && r.is_bord(v) )
  36.         if ~r.is_bord(u)
  37.             r.step(u);
  38.         end
  39.         if ~r.is_bord(v)
  40.             r.step(v);
  41.         end
  42.     end
  43. end
  44.  
  45. function mark_col(r, u, v, n, flag)
  46.     i = 0;
  47.     while ~r.is_bord(u)
  48.         if flag
  49.             r.mark;
  50.         end
  51.         i = i+1;
  52.         r.step(u);
  53.         if i == n
  54.             i = 0;
  55.             flag = ~flag;
  56.         end
  57.     end
  58.     u = invert(u);
  59.     while ~r.is_bord(u)
  60.         r.step(u);
  61.     end
  62. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement