Search a Word in a 2D Grid of characters | Rows and columns in the given grid ; For searching in all 8 direction ; This function searches in all 8 - direction from point ( row , col ) in grid [ ] [ ] ; If first character of word doesn 't match with  given starting point in grid. ; Search word in all 8 directions starting from ( row , col ) ; Initialize starting point for current direction ; First character is already checked , match remaining characters ; If out of bound break ; If not matched , break ; Moving in particular direction ; If all character matched , then value of must be equal to length of word ; Searches given word in a given matrix in all 8 directions ; Consider every point as starting point and search given word ; Driver code
let R , C ; let x = [ - 1 , - 1 , - 1 , 0 , 0 , 1 , 1 , 1 ] ; let y = [ - 1 , 0 , 1 , - 1 , 1 , - 1 , 0 , 1 ] ; function search2D ( grid , row , col , word ) { if ( grid [ row ] [ col ] != word [ 0 ] ) return false ; let len = word . length ; for ( let dir = 0 ; dir < 8 ; dir ++ ) { let k , rd = row + x [ dir ] , cd = col + y [ dir ] ; for ( k = 1 ; k < len ; k ++ ) { if ( rd >= R rd < 0 cd >= C cd < 0 ) break ; if ( grid [ rd ] [ cd ] != word [ k ] ) break ; rd += x [ dir ] ; cd += y [ dir ] ; } if ( k == len ) return true ; } return false ; } function patternSearch ( grid , word ) { for ( let row = 0 ; row < R ; row ++ ) { for ( let col = 0 ; col < C ; col ++ ) { if ( search2D ( grid , row , col , word ) ) document . write ( " " + row + " " + col + " " ) ; } } } R = 3 ; C = 13 ; let grid = [ [ ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' ] , [ ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' ] , [ ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' ] ] ; patternSearch ( grid , " " ) ; document . write ( " " ) ; patternSearch ( grid , " " ) ;