Advertisement
Guest User

Untitled

a guest
Feb 21st, 2019
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.48 KB | None | 0 0
  1. ClearAll["Global`*"];
  2.  
  3. ks = {{-2, -1}, {-2, 1}, {-1, -2}, {-1, 2}, {1, -2}, {1, 2}, {2, -1}, {2, 1}};
  4.  
  5. chCorners[kp_] :=
  6. Switch[kp,
  7. {2, 6}, {{2, 6}, {1, 8}, {3, 7}},
  8. {3, 7}, {{3, 7}, {1, 8}, {2, 6}},
  9. {6, 2}, {{6, 2}, {8, 1}, {7, 3}},
  10. {7, 3}, {{7, 3}, {8, 1}, {6, 2}},
  11. {6, 7}, {{6, 7}, {8, 8}, {7, 6}},
  12. {7, 6}, {{7, 6}, {8, 8}, {6, 7}},
  13. _, {kp}];
  14.  
  15. tryNext[p1_, p2_] :=
  16. Module[{path1 = p1, path2 = p2, lp, ns1, ns2, np1, np2},
  17. count = count + 1;
  18. ns1 = Table[Last[path1] + ks[[i]], {i, 1, 8}];
  19. ns2 = Table[Last[path2] + ks[[j]], {j, 1, 8}];
  20. If[count == 984, Print[Length[path2], " a ", path2]];
  21. Do[
  22. If[
  23. (! done) && (0 < ns1[[i, 1]] < 9) && (0 < ns1[[i, 2]] < 9) &&
  24. ! (MemberQ[path1, ns1[[i]]] || MemberQ[path2, ns1[[i]]]),
  25. np1 = Join[path1, chCorners[ns1[[i]]]];
  26. lp = Length[np1] + Length[path2] - 1;
  27. If[(count == 984), Print[Length[path2], " b ", path2]];
  28. done = (lp == 64) && MemberQ[ks, Last[np1] - Last[path2]];
  29. If[lp < 64,
  30. Do[
  31. If[
  32. (! done) && (0 < ns2[[j, 1]] < 9) && (0 < ns2[[j, 2]] < 9) &&
  33. ! (MemberQ[np1, ns2[[j]]] || MemberQ[path2, ns2[[j]]]),
  34. np2 = Join[path2, chCorners[ns2[[j]]]];
  35. tryNext[np1, np2]],
  36. {j, 1, 8}]]],
  37. {i, 1, 8}]];
  38.  
  39. done = False;
  40. count = 0;
  41. (* Starting two paths from lower left corned, {1,1} *)
  42. tryNext[{{1, 1}, {2, 3}}, {{1, 1}, {3, 2}}];
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement