Skip to content
Related Articles

Related Articles

Improve Article
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 <bits/stdc++.h>
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 functions
int 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 valid
import 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 functions
n = 4
a = [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 valid
using 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

PHP




<?php
// PHP program to check if
// the game is valid
function check_valid( $a, $n)
{
    // starting with player P1 and P2
    // so making P3 spectator
    $spec = 3;
    for ($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 Code
$n = 4;
$a = array(1, 1, 2, 3);
echo check_valid($a, $n);
 
// This code is contributed by vt_m
?>

Javascript




<script>
 
// Javascript program to check if the game
// is valid
function check_valid(a, n)
{
     
    // Starting with player P1 and P2
    // so making P3 spectator
    let spec = 3;
       
    for(let 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 code
let a = [ 1, 1, 2, 3 ];
let n = a.length;
   
document.write(check_valid(a, n));
 
// This code is contributed by sanjoy_62
 
</script>

Output : 



Valid

 

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with industry experts, please refer DSA Live Classes




My Personal Notes arrow_drop_up
Recommended Articles
Page :