bot saves princess

filter map findIndex

by trentHarlem

HTML

<h1>
bot saves princess
</h1>
<p>
Grid cell = "-"<br>
Bot = "m"<br>
Princess = "p"<br>
first line is width of grid.<br>
subsequent lines are gris line arrays.<br><br>
example:<br>
3<br>
---<br>
-m-<br>
p--<br>
</p>

JavaScript

const size = 3 // dimension of grid
const grid = [
  ['-', '-', '-'],
  ['-', 'm', '-'],
  ['p', '-', '-']
]
const gridLen = grid.length - 1
// princess will always be in one of the 4 corners of the grid.
// grid[0][0]       			// top left
// grid[0][gridLen] 			// top right
// grid[gridLen][0] 			// bottom left
// grid[gridLen][gridLen] // bottom right
const topLeft = grid[0][0]
const topRight = grid[0][gridLen]
const botLeft = grid[gridLen][0]
const botRight = grid[gridLen][gridLen]

function displayPathtoPrincess(dimension, grid) {
  //console.log(grid.filter(arr=>arr.findIndex('p')));
  const princessIndex = grid.filter(a => a.findIndex(isP = (el) => el !== 'p')).flat().indexOf('p');
  //const princessLineINDEX = grid.map(arr=>arr.indexOf('p'))
  const princessArray = grid.map(arr => arr.findIndex(isP = (el) => el === 'p')).indexOf(0);
const princessLocation = [princessArray,princessIndex]
const princess = grid[princessArray][princessIndex]

  console.log(princessArray,'expcted 2') 
  console.log(princessIndex,'expected 0')
  console.log(princessLocation,'expected [2,0]')
  console.log(princess,'expected p')
  //console.log(grid.filter(arr=>!arr.indexOf('p')).findIndex('p'));
  //console.log(grid.filter(arr=>!arr.indexOf('p')));
  //console.log(grid.filter(arr=>arr.includes('p')));
}

displayPathtoPrincess(3, grid)