Check if the game is valid or not
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++
#include <bits/stdc++.h>
using namespace std;
string check_valid( int a[], int n)
{
int spec = 3;
for ( int i = 0; i < n; i++) {
if (a[i] == spec) {
return "Invalid" ;
}
spec = 6 - a[i] - spec;
}
return "Valid" ;
}
int main()
{
int n = 4;
int a[n] = {1, 1, 2, 3};
cout << check_valid(a, n);
return 0;
}
|
Java
import java.io.*;
class GFG {
static String check_valid( int a[], int n)
{
int spec = 3 ;
for ( int i = 0 ; i < n; i++) {
if (a[i] == spec) {
return "Invalid" ;
}
spec = 6 - a[i] - spec;
}
return "Valid" ;
}
public static void main (String[] args) {
int a[] = { 1 , 1 , 2 , 3 };
int n = a.length;
System.out.println(check_valid(a, n));
}
}
|
Python3
def check_valid( a , n ):
spec = 3
for i in range (n):
if a[i] = = spec:
return "Invalid"
spec = 6 - a[i] - spec
return "Valid"
n = 4
a = [ 1 , 1 , 2 , 3 ]
print (check_valid(a, n))
|
C#
using System;
class GFG {
static String check_valid( int []a, int n)
{
int spec = 3;
for ( int i = 0; i < n; i++) {
if (a[i] == spec) {
return "Invalid" ;
}
spec = 6 - a[i] - spec;
}
return "Valid" ;
}
public static void Main ()
{
int []a = {1, 1, 2, 3};
int n = a.Length;
Console.WriteLine(check_valid(a, n));
}
}
|
PHP
<?php
function check_valid( $a , $n )
{
$spec = 3;
for ( $i = 0; $i < $n ; $i ++)
{
if ( $a [ $i ] == $spec )
{
return "Invalid" ;
}
$spec = 6 - $a [ $i ] - $spec ;
}
return "Valid" ;
}
$n = 4;
$a = array (1, 1, 2, 3);
echo check_valid( $a , $n );
?>
|
Javascript
<script>
function check_valid(a, n)
{
let spec = 3;
for (let i = 0; i < n; i++)
{
if (a[i] == spec)
{
return "Invalid" ;
}
spec = 6 - a[i] - spec;
}
return "Valid" ;
}
let a = [ 1, 1, 2, 3 ];
let n = a.length;
document.write(check_valid(a, n));
</script>
|
Output :
Valid
Time Complexity: O(n)
Auxiliary Space: O(1)
Last Updated :
03 Aug, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...