Check if the game is valid or not

• Difficulty Level : Easy
• Last Updated : 21 Apr, 2021

Three players P1, P2 and P3 are playing a game. But at a time only two players can play the game, so they decided, at a time two players will play the game and one will spectate. When one game ends, the one who lost the game becomes the spectator in the next game and the one who was spectating plays against the winner. There cannot be any draws in any game. Player P1 and P2 will play the first game. Input is the number of games played n and in next line winner of n games.

Examples :

Input :
No. of Games : 4
Winner of the Game Gi : 1 1 2 3
Output : YES
Explanation :
Game1 : P1 vs P2 : P1 wins
Game2 : P1 vs P3 : P1 wins
Game3 : P1 vs P2 : P2 wins
Game4 : P3 vs P2 : P3 wins
None of the winners were invalid

Input :
No. of Games : 2
Winner of the Game Gi : 2 1
Output : NO
Explanation :
Game1 : P1 vs P2 : P2 wins
Game2 : P2 vs P3 : P1 wins (Invalid winner)
In Game2 P1 is spectator

Approach :
Start with P1 and P2 and continue the game while making the loser new spectator by subtracting the current spectator and winner from total sum of three players i.e. 6. An invalid entry will halt the process.

Below is the implementation for the above approach:

C++

 // C++ program to check if the game// is valid#include using namespace std; string check_valid(int a[], int n){    // starting with player P1 and P2    // so making P3 spectator    int spec = 3;    for (int i = 0; i < n; i++) {             // If spectator wins a game        // then its not valid        if (a[i] == spec) {            return "Invalid";        }                 // subtracting the current spectator        // and winner from total sum 6 which        // makes losing player spectator        spec = 6 - a[i] - spec;    }         // None of the winner is found spectator.    return "Valid";} // Driver program to test above functionsint main(){    int n = 4;    int a[n] = {1, 1, 2, 3};    cout << check_valid(a, n);    return 0;}

Java

 // Java program to check if the game// is validimport java.io.*; class GFG {           static String check_valid(int a[], int n)    {        // starting with player P1 and P2        // so making P3 spectator        int spec = 3;                 for (int i = 0; i < n; i++) {                     // If spectator wins a game            // then its not valid            if (a[i] == spec) {                return "Invalid";            }                         // subtracting the current spectator            // and winner from total sum 6 which            // makes losing player spectator            spec = 6 - a[i] - spec;        }                 // None of the winner is found spectator.        return "Valid";    }         // Driver program to test above functions    public static void main (String[] args) {                 int a[] = {1, 1, 2, 3};        int n = a.length;                 System.out.println(check_valid(a, n));             }} // This code is contributed by vt_m

Python3

 # Python3 code to check if the game# is valid def check_valid( a , n ):     # starting with player P1 and P2    # so making P3 spectator    spec = 3    for i in range(n):                 # If spectator wins a game        # then its not valid        if a[i] == spec:            return "Invalid"                 # subtracting the current spectator        # and winner from total sum 6 which        # makes losing player spectator        spec = 6 - a[i] - spec         # None of the winner is found spectator.    return "Valid" # Driver code to test above functionsn = 4a = [1, 1, 2, 3]print(check_valid(a, n)) # This code is contributed by "Sharad_Bhardwaj".

C#

 // C# program to check if the game// is validusing System; class GFG {     static String check_valid(int []a, int n)    {        // starting with player P1 and P2        // so making P3 spectator        int spec = 3;                 for (int i = 0; i < n; i++) {                     // If spectator wins a game            // then its not valid            if (a[i] == spec) {                return "Invalid";            }                         // subtracting the current spectator            // and winner from total sum 6 which            // makes losing player spectator            spec = 6 - a[i] - spec;        }                 // None of the winner is found spectator.        return "Valid";    }         // Driver program    public static void Main ()    {        int []a = {1, 1, 2, 3};        int n = a.Length;                 Console.WriteLine(check_valid(a, n));             }} // This code is contributed by vt_m



Javascript



Output :

Valid

My Personal Notes arrow_drop_up