Juan es un programador fanático de juegos así que programó uno para sus amigos, el cual se describe a continuación.
Hay una canasta vacía y cada jugador cuenta con bolitas para ir agregándolas a la misma. Por cada turno el jugador puede agregar una o dos bolitas a la canasta. El jugador que logre que la canasta tenga exactamente 15 bolitas al terminar su turno entonces es el ganador. Por ejemplo:
Jugador 1: Agrega 2 bolitas => canasta tiene 2 bolitas Jugador 2: Agrega 1 bolita => canasta tiene 3 bolitas Jugador 1: Agrega 2 bolitas => canasta tiene 5 bolitas Jugador 2: Agrega 2 bolitas => canasta tiene 7 bolitas Jugador 1: Agrega 2 bolitas => canasta tiene 9 bolitas Jugador 2: Agrega 2 bolitas => canasta tiene 11 bolitas Jugador 1: Agrega 1 bolita => canasta tiene 12 bolitas Jugador 2: Agrega 2 bolitas => canasta tiene 14 bolitas Jugador 1: Agrega 1 bolita => canasta tiene 15 bolitas
Finalmente vemos que el jugador 1 es el ganador.
Juan programó este juego para dos jugadores: un jugador es un humano y el otro jugador simularía ser una "inteligencia artificial". El truco (matemático) de Juan está en que siempre gana la inteligencia artificial.
Sin embargo, su amigo Carlos pudo ganar y Juan se enojó mucho porque él está seguro que su "inteligencia artificial" siempre gana. ¿Cómo hizo Carlos para ganar?. Juan te entregó su código para que lo ayudes a encontrar el problema:
#include <stdio.h> #include <stdlib.h> void main(void){ printf("Ingrese su nombre:\n"); int turno = 2; int suma = 0; char nombre[80]; scanf("%s", nombre); int n = 0; while(suma < 15){ printf("\nElige un número:\n"); scanf("%d", &n); while(n <= 0 || n >= 3){ printf("Reintente, 1 ó 2:\n"); scanf("%d", &n); } suma += n; printf("La suma es: %d\n", suma); turno = 1; if(suma == 15){ break; } n = 3 - n; printf("\nLa computadora eligió: %d\n", n); suma += n; printf("La suma es: %d\n", suma); turno = 2; } if(turno == 2){ printf ("PERDISTE\n"); }else{ printf ("GANASTE: XXXXXX\n"); // En esta instrucción se muestra el código ganador. } }
Para pasar este desafío debes descargar el programa compilado de acuerdo a tu plataforma. Encontrarás diferentes alternativas cuando presiones el botón "Jugar".
Tu objetivo es hacer que el programa ejecute la sentencia donde se imprime el código.
El programa ha sido compilado con el flag -fno-stack-protector para evitar la protección de stack. Es decir:
gcc desafio8.c -fno-stack-protector