Advertisement
Prohause

Expedition

Jun 8th, 2018
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.95 KB | None | 0 0
  1. function expedition(primary, secondary, overlay, start) {
  2. for (let i = 0; i < overlay.length; i++) {
  3. let [pointX, pointY] = overlay[i];
  4. for (let j = 0; j < primary.length; j++) {
  5. for (let k = 0; k < primary[j].length; k++) {
  6. if (j >= secondary.length || k >= secondary[j].length || j + pointX >= primary.length || k + pointY >= primary[j].length) {
  7. break;
  8. }
  9. let current = primary[j + pointX][k + pointY];
  10. let modifier = secondary[j][k];
  11. if (modifier === 1) {
  12. if (current === 0) {
  13. primary[j + pointX][k + pointY] = 1;
  14. }
  15. else {
  16. primary[j + pointX][k + pointY] = 0;
  17. }
  18. }
  19. }
  20. }
  21. }
  22.  
  23. let point = {x:start[0],y:start[1]};
  24. let counter = 1;
  25. primary[point.x][point.y]=1;
  26.  
  27. while (true) {
  28. if (primary[point.x][point.y + 1] === 0) {
  29. point.y++;
  30. counter++;
  31. primary[point.x][point.y]=1;
  32. if (point.y === primary[0].length - 1) {
  33. break;
  34. }
  35. continue;
  36. }
  37.  
  38. if (primary[point.x + 1][point.y] === 0) {
  39. point.x++;
  40. counter++;
  41. primary[point.x][point.y]=1;
  42. if (point.x === primary.length - 1) {
  43. break;
  44. }
  45. continue;
  46. }
  47.  
  48. if (primary[point.x][point.y - 1] === 0) {
  49. point.y--;
  50. counter++;
  51. primary[point.x][point.y]=1;
  52. if (point.y === 0) {
  53. break;
  54. }
  55. continue;
  56. }
  57.  
  58. if (primary[point.x - 1][point.y] === 0) {
  59. point.x--;
  60. counter++;
  61. primary[point.x][point.y]=1;
  62. if (point.x === 0) {
  63. break;
  64. }
  65. continue;
  66. }
  67.  
  68. break;
  69.  
  70. }
  71. //console.log(primary);
  72. console.log(counter);
  73.  
  74. function calculate(point) {
  75. let x = point.x;
  76. let y = point.y;
  77.  
  78. if (x < primary.length / 2) {
  79. if (y < primary[0].length / 2) {
  80. return 2;
  81. }
  82. else {
  83. return 1;
  84. }
  85. }
  86. else {
  87. if (y < primary[0].length / 2) {
  88. return 3;
  89. }
  90. else {
  91. return 4;
  92. }
  93. }
  94. }
  95.  
  96. if (point.x === primary.length - 1) {
  97. console.log('Bottom');
  98. }
  99. else if (point.y === primary[0].length) {
  100. console.log('Right');
  101. }
  102. else if (point.x === 0) {
  103. console.log('Top');
  104. }
  105. else if (point.y === 0) {
  106. console.log('Left');
  107. }
  108. else{
  109. let quadrant = calculate(point);
  110. console.log(`Dead end ${quadrant}`);
  111. }
  112.  
  113.  
  114. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement