Google Onsite Interview question - Unsolved
Difference between en1 and en2, changed 82 character(s)
This question is originally posted on [LeetCode](https://leetcode.com/discuss/interview-question/799477/google-phone-screen-reject) by several anonymous users but it doesn't have any good answer there. ↵

You are implementing a board game where you are given a size N x M for the board, where N is the number of rows and M is the number of columns.↵
In this board game, you are playing with some fixed size lego pieces, where each player places 1 piece on the board every turn until no more piece can fit onto the board, and the last player to move wins.↵

The problem is to implement a method for making a move on this board, placing a piece wherever there is space available and returns a boolean indicating whether or not the player that has just made the move has won.↵

Follow up question: The method should also find if there is any move that can be made that will make it so that the next player is unable to place a piece anywhere on the board in their next turn, and make that move.↵

You choose how to represent the board and lego pieces in the problem and lego piece would be rectangular.↵

Simple example (small board for demonstration purposes, board length = 2 x 3, lego piece length = 1 x 2):↵
Empty Board:↵

~~~~~↵
O O O↵
O O O↵
~~~~~↵



Board after player 1 makes move, placing lego piece at the top right corner:↵

~~~~~↵
O X X↵
O O O↵
~~~~~↵



At this point, player 2 can make a move that will prevent player 1 from placing another piece:↵

~~~~~↵
O X X↵
X X O↵
~~~~~↵



and so the method should be able to find and make that winning move, rather than an alternative move that would↵
miss an opportunity for a win:↵

~~~~~↵
O X X↵
O X X

~~~~~↵

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en2 English satyamcse 2020-10-30 19:18:07 82
en1 English satyamcse 2020-10-30 19:17:00 1650 Initial revision (published)