Ninja And Flip Game

Posted: 11 Mar, 2021
Difficulty: Easy

PROBLEM STATEMENT

Try Problem

Ninja and his friend are playing a game called flip game. They are given a string ‘STR’ containing only two characters, ‘$’ and ‘*.’

In this game, Ninja and his friend take turns to flip two consecutive “$$” to “**”. The flip game ends when Ninja or his friend can no longer make a move, i.e., there is no consecutive “$$” present in the ‘STR’ and, therefore, the other person will be the winner of the game.

Both the players play the game optimally in alternate turns. Given that Ninja starts the game i.e. takes the first turn, your task is to find out if he wins the game.

For example:
Let 'STR' = "$$**".

There are consecutive "$$" in 'STR' and it is Ninja's turn to begin the game. So, Ninja changes the consecutive "$$" to "**". This changes 'STR' to "****". 

Now, as it is his friend's turn and there are no more consecutive "$$", Ninja wins the game.
Input Format:
The first line of input contains an integer ‘T’ which denotes the number of test cases or queries to be run. Then the test cases follow.

The first and the only line of each test case contains an input string ‘STR’.
Output Format :
For each test case, print 'true' if Ninja wins the flip game otherwise print 'false'. 

Print the output of each test case in a separate line.
Note:
You do not need to print anything; it has already been taken care of. Just implement the given function.
Constraints:
1 <= ‘T’ <= 100
1 <= |’STR’| <= 20
‘STR[i]’ = {‘*’, ‘$’}

Where ‘T’ denotes the total number of test cases, ‘STR’ represents the input string that is given to Ninja and his friend, and |’STR’| represents the length of the string.

Time Limit: 1 second
Approach 1

As we know in our turn we can flip only consecutive “$$” to “**”. So we try to convert every possible consecutive “$$” to “**” and if we win the game then we return true.

 

Here is the algorithm:

  1. If the length of the ‘STR’ is less than 2:
    • Return false.
  2. We run a loop for ‘i‘= 0 to ‘i’ < length of ‘STR’ - 1:
    • If the current character and next character of ‘STR’ is “$”:
      • Change this consecutive “$$” to “**” and store this string in ‘CHANGED_STR’.
      • Call the recursive function canNinjaWin(‘CHANGED_STR’).
      • Now, it is Ninja’s friend’s turn. If he loses the game then Ninja wins.
      • Return true.
  3. Return false.
Try Problem