Dada una string binaria que representa los puntajes de un partido de Voleibol. La tarea es encontrar al ganador del partido de acuerdo con las siguientes condiciones:
- En voleibol, los dos equipos juegan entre sí y el equipo que anote primero 15 puntos será el ganador, excepto en el caso en que ambos equipos hayan llegado a 14 puntos.
- En el caso de que ambos equipos hayan alcanzado los 14 puntos, el equipo que mantenga una ventaja de dos puntos será el ganador.
En la string binaria dada, 0 significa que el equipo de GEEK pierde un punto y 1 significa que el equipo de GEEK gana un punto. Tienes que averiguar si el equipo de GEEK había ganado o perdido el partido.
Ejemplos:
Input : score[] = 01011111111110110101 Output : GEEK's won Input : score[] = 010101010101010101010101010100 Output : GEEK's lost
Caso I: Cuando uno del equipo anota primero 15 puntos y el segundo equipo ha anotado menos de 15 puntos. Luego, recorra la string binaria dada y almacene el conteo de ceros y unos. Después de eso, si obtienes la cuenta de uno para ser 15 y la cuenta de cero menos de 15, entonces GEEK ganó y, por otro lado, si obtienes la cuenta de cero para ser 15 y la cuenta de uno menos de 15, entonces GEEK perdió.
Caso II: cuando ambos equipos anotan 14 puntos, reinicie el conteo de ambos a cero y por cada cero o uno incremente su conteo y verifique simultáneamente si abs (conteo [0] – conteo [1]) es igual a 2, si esto sucede entonces significa que cualquiera del equipo ha anotado dos puntos más que su oponente y será el ganador. Puede encontrar al ganador en el valor de count[0] y count[1].
A continuación se muestra la implementación del enfoque anterior:
C++
// Cpp program for predicting winner #include <bits/stdc++.h> using namespace std; // function for winner prediction void predictWinner(string score, int n) { int count[2] = { 0 }, i; for (i = 0; i < score.size(); i++) { // increase count count[score[i] - '0']++; // check losing condition if (count[0] == n && count[1] < n - 1) { cout << "GEEKS lost"; return; } // check winning condition if (count[1] == n && count[0] < n - 1) { cout << "GEEKS won"; return; } // check tie on n-1 point if (count[0] == n - 1 && count[1] == n - 1) { count[0] = 0; count[1] = 0; break; } } for (i++; i < score.size(); i++) { // increase count count[score[i] - '0']++; // check for 2 point lead if (abs(count[0] - count[1]) == 2) { // condition of lost if (count[0] > count[1]) cout << "GEEKS lost"; // condition of win else cout << "GEEKS won"; return; } } } // driver program int main() { string score = "1001010101111011101111"; int n = 15; predictWinner(score, n); return 0; }
Java
// Java program for // predicting winner import java.io.*; import java.util.*; import java.lang.*; class GFG { // function for // winner prediction static void predictWinner(String score, int n) { int count[] = new int[2], i; for (i = 0; i < score.length(); i++) { // increase count count[score.charAt(i) - '0']++; // check losing // condition if (count[0] == n && count[1] < n - 1) { System.out.print("GEEKS lost"); return; } // check winning condition if (count[1] == n && count[0] < n - 1) { System.out.print("GEEKS won"); return; } // check tie on n-1 point if (count[0] == n - 1 && count[1] == n - 1) { count[0] = 0; count[1] = 0; break; } } for (i++; i < score.length(); i++) { // increase count count[score.charAt(i) - '0']++; // check for 2 point lead if (Math.abs(count[0] - count[1]) == 2) { // condition of lost if (count[0] > count[1]) System.out.print("GEEKS lost"); // condition of win else System.out.print("GEEKS won"); return; } } } // Driver Code public static void main(String[] args) { String score = "1001010101111011101111"; int n = 15; predictWinner(score, n); } }
Python3
# Python 3 program for predicting winner # function for winner prediction def predictWinner(score, n): count = [0 for i in range(2)] for i in range(0, len(score), 1): # increase count index = ord(score[i]) - ord('0') count[index] += 1 # check losing condition if (count[0] == n and count[1] < n - 1): print("GEEKS lost", end = " ") return # check winning condition if (count[1] == n and count[0] < n - 1): print("GEEKS won", end = " ") return # check tie on n-1 point if (count[0] == n - 1 and count[1] == n - 1): count[0] = 0 count[1] = 0 break i += 1 for i in range(i, len(score), 1): # increase count index = ord(score[i]) - ord('0') count[index] += 1 # check for 2 point lead if (abs(count[0] - count[1]) == 2): # condition of lost if (count[0] > count[1]): print("GEEKS lost", end = " ") # condition of win else: print("GEEKS won", end = " "); return # Driver Code if __name__ == '__main__': score = "1001010101111011101111" n = 15 predictWinner(score, n) # This code is contributed by # Surendra_Gangwar
C#
// C# program for predicting winner using System; class GFG { // function for winner prediction public static void predictWinner(string score, int n) { int[] count = new int[2]; int i; for (i = 0; i < score.Length; i++) { // increase count count[score[i] - '0']++; // check losing // condition if (count[0] == n && count[1] < n - 1) { Console.Write("GEEKS lost"); return; } // check winning condition if (count[1] == n && count[0] < n - 1) { Console.Write("GEEKS won"); return; } // check tie on n-1 point if (count[0] == n - 1 && count[1] == n - 1) { count[0] = 0; count[1] = 0; break; } } for (i++; i < score.Length; i++) { // increase count count[score[i] - '0']++; // check for 2 point lead if (Math.Abs(count[0] - count[1]) == 2) { // condition of lost if (count[0] > count[1]) { Console.Write("GEEKS lost"); } // condition of win else { Console.Write("GEEKS won"); } return; } } } // Driver Code public static void Main(string[] args) { string score = "1001010101111011101111"; int n = 15; predictWinner(score, n); } } // This code is contributed by Shrikant13
Javascript
<script> // JavaScript program for predicting winner // function for winner prediction function predictWinner(score, n) { count = new Array(2).fill(0); for(let i = 0;i < score.length; i++) { // increase count index = score.charCodeAt(i) - '0'.charCodeAt(0) count[index]++ // check losing condition if (count[0] == n && count[1] < n - 1) { document.write("GEEKS lost"," ") return } // check winning condition if (count[1] == n && count[0] < n - 1){ document.write("GEEKS won"," ") return } // check tie on n-1 point if (count[0] == n - 1 && count[1] == n - 1){ count[0] = 0 count[1] = 0 break } } i += 1 while(i < score.length) { // increase count index = score.charCodeAt(i) - '0'.charCodeAt(0) count[index] += 1 // check for 2 point lead if (Math.abs(count[0] - count[1]) == 2){ // condition of lost if (count[0] > count[1]) document.write("GEEKS lost"," ") // condition of win else document.write("GEEKS won"," "); return } i++ } } // Driver Code let score = "1001010101111011101111" let n = 15 predictWinner(score, n) // This code is contributed by ShinjanPatra </script>
GEEKS won
Este artículo es una contribución de Shivam Pradhan (anuj_charm) . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA