Advertisement
dmkozyrev

z10.m

Nov 29th, 2015
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.11 KB | None | 0 0
  1. function z10 (r)
  2.     n=1;
  3.     while ~r.is_mark
  4.         b=kvadrat (r,n);
  5.         if b==0
  6.             break
  7.         end
  8.         n=n+2;
  9.     end
  10. end
  11.  
  12. function result=around_the_wall(r,u,v)
  13.     count=0;
  14.     while r.is_bord (v)
  15.         r.step (u)
  16.         count=count+1;
  17.     end
  18.     if ~ r.is_bord(v)
  19.         r.step(v)
  20.         result=true;
  21.     else
  22.         result=false;
  23.     end
  24.     while count>0
  25.         r.step(invert (u))
  26.         count=count-1;
  27.     end
  28. end
  29.  
  30.  
  31. function s = invert (s)
  32.     if s == 'w'
  33.         s = 'o';
  34.     elseif s == 'o'
  35.         s = 'w';
  36.     elseif s == 'n'
  37.         s = 's';
  38.     elseif s == 's'
  39.         s = 'n';
  40.     end
  41. end
  42.  
  43.  
  44. function y=kvadrat (r,n)
  45.     y=1;
  46.     for s = 'oswn'        
  47.         if s == 'o' || s == 'w'
  48.             z = 'n';
  49.         else
  50.             z = 'o';
  51.         end
  52.        
  53.         for k=1:n
  54.             around_the_wall(r, z, s);
  55.             if r.is_mark
  56.                 y=0;
  57.                 return
  58.             end
  59.         end
  60.     end
  61.     around_the_wall(r, 'n', 'w');
  62.     around_the_wall(r, 'w', 'n');
  63. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement