0Pricing
Coding Interview Prep · Lección

Estados ganadores y perdedores en juegos

Razone sobre quién gana con un juego óptimo

Estados ganadores y perdedores en juegos es una lección gratuita de Coding Interview Prep en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Coding Interview Prep, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Coding Interview Prep incluye 4 lecciones en total.

Dos jugadores, juego perfecto

En un juego combinatorio, dos jugadores se turnan, ambos juegan a la perfección y pierde quien no puede mover. Su tarea consiste simplemente en predecir quién gana. 🎯

Cada posición tiene una etiqueta

Cada posición del juego es un estado. Su tarea consiste en etiquetar cada estado como victoria o derrota para el jugador al que le toca mover.

Qué significa un estado ganador

Un estado es un estado ganador si el jugador al que le toca mover tiene al menos un movimiento que conduce a un estado perdedor para el oponente.

Qué significa un estado perdedor

Un estado es un estado perdedor cuando cualquier movimiento que haga entrega al oponente un estado ganador. Está atrapado haga lo que haga.

El caso base

La posición en la que no puede mover en absoluto es el caso base. El jugador que se encuentra en ella ya ha perdido, así que márquela como derrota.

Construir desde abajo

Comience por los casos base y avance hacia fuera. La etiqueta de cada estado nuevo depende únicamente de los estados a los que conducen sus movimientos.

Un movimiento acertado basta

Para ganar, solo necesita un movimiento hacia un estado perdedor para el oponente. Encontrar una única vía de escape es suficiente.

Un pequeño ejemplo

Puede retirar 1 o 2 piedras de una pila; gana quien retire la última. Con 0 piedras, el jugador al que le toca mover pierde, así que es un estado perdedor.

Programar la comprobación de victoria

Esta recursión etiqueta un estado probando cada movimiento y aplicando la recursión al resultado. ⚙️

def win(n):
    if n == 0:
        return False
    return any(not win(n - k) for k in (1, 2))

Usar memoización para mantener la rapidez

Los estados se repiten entre las distintas ramas, así que almacene en caché cada resultado. Un memo sencillo convierte el trabajo exponencial en tiempo lineal.

from functools import lru_cache
@lru_cache(None)
def win(n):
    return n != 0 and any(not win(n - k) for k in (1, 2))

La simetría es un atajo

Si una posición es perfectamente simétrica, el segundo jugador a menudo puede imitar los movimientos y ganar. Esté atento a esa estrategia de simetría.

Comprobación rápida

Se encuentra ante un estado. ¿Cuándo es un estado perdedor para usted?

Repaso

Ahora puede etiquetar los estados: una victoria tiene un movimiento hacia una derrota del oponente; una derrota no tiene ninguno. Construya desde los casos base y use memoización. 🧠

Preguntas frecuentes

¿La lección «Estados ganadores y perdedores en juegos» es gratis?

Sí — el texto completo de «Estados ganadores y perdedores en juegos» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Coding Interview Prep, actualiza a CoddyKit PRO. El curso de Coding Interview Prep incluye 4 lecciones en total.

¿Qué aprenderé en «Estados ganadores y perdedores en juegos»?

Razone sobre quién gana con un juego óptimo Practicas Coding Interview Prep con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Coding Interview Prep?

No se requiere experiencia previa. Coding Interview Prep en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Estados ganadores y perdedores en juegos»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Coding Interview Prep?

Sí. Cada lección de Coding Interview Prep incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Estados ganadores y perdedores en juegos
  2. Nim y el número de Grundy
  3. Meet in the Middle
  4. Depure rápido: pruebas de estrés y triaje
← Volver a Coding Interview Prep