En Game of Nim , dos jugadores se turnan para quitar objetos de montones o de la pila de piedras.
Supongamos que dos jugadores A y B están jugando el juego. A cada uno se le permite tomar solo una piedra de la pila. El jugador que recoja la última piedra del montón ganará el juego. Dado N el número de piedras en la pila, la tarea es encontrar el ganador, si el jugador A comienza el juego.
Ejemplos:
Input : N = 3. Output : Player A
Player A remove stone 1 which is at the top, then Player B remove stone 2 and finally player A removes the last stone. Input : N = 15. Output : Player A
Para N = 1, el jugador A quitará la única piedra del montón y ganará el juego.
Para N = 2, el jugador A quitará la primera piedra y luego el jugador B quitará la segunda o la última piedra. Entonces el jugador B ganará el juego.
Entonces, podemos observar que el jugador A gana cuando N es impar y el jugador B gana cuando N es par.
A continuación se muestra la implementación de este enfoque:
C++
// C++ program for Game of Nim with removal // of one stone allowed. #include<bits/stdc++.h> using namespace std; // Return true if player A wins, // return false if player B wins. bool findWinner(int N) { // Checking the last bit of N. return N&1; } // Driven Program int main() { int N = 15; findWinner(N)? (cout << "Player A";): (cout << "Player B";); return 0; }
Java
// JAVA Code For Game of Nim with // removal of one stone allowed import java.util.*; class GFG { // Return true if player A wins, // return false if player B wins. static int findWinner(int N) { // Checking the last bit of N. return N & 1; } /* Driver program to test above function */ public static void main(String[] args) { int N = 15; if(findWinner(N)==1) System.out.println("Player A"); else System.out.println("Player B"); } } // This code is contributed by Arnav Kr. Mandal.
Python3
# Python3 code for Game of Nim with # removal of one stone allowed. # Return true if player A wins, # return false if player B wins. def findWinner( N ): # Checking the last bit of N. return N & 1 # Driven Program N = 15 print("Player A" if findWinner(N) else "Player B") # This code is contributed by "Sharad_Bhardwaj".
C#
// C# Code For Game of Nim with // removal of one stone allowed using System; class GFG { // Return true if player A wins, // return false if player B wins. static int findWinner(int N) { // Checking the last bit of N. return N & 1; } /* Driver program to test above function */ public static void Main() { int N = 15; if(findWinner(N) == 1) Console.Write("Player A"); else Console.Write("Player B"); } } // This code is contributed by vt_m.
PHP
<?php // PHP program for Game of // Nim with removal of one // stone allowed. // Return true if player A wins, // return false if player B wins. function findWinner($N) { // Checking the last bit of N. return $N&1; } // Driver Code $N = 15; if(findWinner($N)) echo "Player A"; else echo "Player B"; // This code is contributed by vt_m. ?>
Javascript
<script> // JavaScript program For Game of Nim with // removal of one stone allowed // Return true if player A wins, // return false if player B wins. function findWinner(N) { // Checking the last bit of N. return N & 1; } // Driver code let N = 15; if(findWinner(N)==1) document.write("Player A"); else document.write("Player B"); // This code is contributed by sanjoy_2. </script>
Producción :
Player A
Complejidad Temporal: O(1).
Este artículo es una contribución de Anuj Chauhan . 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.