Home Page Castellano

¿Cómo Jugar?

Normas del Juego



Indice:

 
El dilema del Prisionero Clásico

  • En el dilema del prisionero entre dos jugadores, cada jugador tiene dos opciones posibles:

    D: Defraudar
    C: Cooperar

    Cada jugador no sabe qué opción va a elegir el otro.

    Existen cuatro posibilidades: que ninguno defraude, que lo hagan los dos, que lo haga sólo el primero, o que lo haga sólo el segundo. Los puntos ganados en cada caso se muestran en la siguiente tabla:

    Si... ...entonces
    el jugador 1... y el jugador 2... el jugador 1 recibe... y el jugador 2 recibe...
    Coopera Coopera 3 3
    Coopera Defrauda 0 5
    Defrauda Coopera 5 0
    Defrauda Defrauda 0 0



    Se trata de conseguir el mayor número de puntos. El juego puede jugarse una o muchas veces seguidas.

    Pensemos que sólo se juega una vez. Lo mejor para un jugador en principio es siempre defraudar:

  • Si el otro coopera, es mejor defraudar (yo gano 5 y él 0, en vez de ganar ambos 3).

  • Si el otro defrauda, también es mejor defraudar (para ganar ambos 0, en vez de ganar él 5 y yo 0).

    Parece que los jugadores buenos serán aquellos que siempre defraudan.

    Sin embargo, pensemos ahora que el juego se repite, y que existen varias parejas de jugadores.

    Los jugadores que se dediquen a defraudarse mutuamente ganaran ambos 0; en cambio jugadores que cooperen mutuamente ganaran 3 sin cesar. Si los jugadores son capaces de recordar lo que han hecho sus contrincantes, esta información puede ser muy interesante para decidir las futuras acciones.

    [ Volver al Indice ]


  •  
    Cómo jugar a este juego

  • Por favor, lee estas normas y los ejemplos antes de jugar.

  • La admisión de participantes finaliza el 1 de febrero de 1998.

  • Cada participante (persona) en el juego puede crear uno o varios jugadores virtuales.

  • Los jugadores virtuales creados se pondrán todos juntos en una "sopa de jugadores". Esta sopa es un programa que se está desarrollando en estos momentos. Por ahora se puede adelantar que el progrma admitirá las siguientes variantes:
    • Jugar varias partidas todos contra todos; por ejemplo, cada jugador jugará 100 partidas seguidas con cada uno de los restantes jugadores
    • Con la pretensión de simular más fielmente el juego del prisionero en la vida real, existirá la opción de que los jugadores se muevan al azar por un plano. Al encontrarse dos jugadores, jugarán una "partida al prisionero" y después seguirán moviéndose. El plano podrá se tan grande como se desee, y se podrán definir varios tipos de "barreras" creando así mapas de obstáculos en el mundo virtual de jugadores.


  • Para crear un jugador es preciso rellenar y enviar este formulario. Cuando se cierre la admisión de participantes, existirá un fichero con las definiciones de todos los agentes. Entonces se ejecutará el programa con ese fichero, y cada día se actualizarán las paginas de este web con el estado del juego.

  • Un jugador está definido por una serie de reglas que describen cómo va a comportarse frente a otros jugadores. Lo normal son jugadores con unas cuatro reglas, aunque pueden ser más. El máximo de reglas por jugador es 50.

  • Puedes crear tus propias reglas siguiendo las normas de la gramática, o puedes usar las mismas reglas que aparecen en los ejemplos para crear tus propios agentes, o modificarlas ligeramente.

  • Un jugador nace inicialmente con 0 puntos, y consigue mas puntos según esta tabla.

    Si... ...entonces
    el jugador 1... y el jugador 2... el jugador 1 recibe... y el jugador 2 recibe...
    Coopera Coopera 3 3
    Coopera Defrauda 0 5
    Defrauda Coopera 5 0
    Defrauda Defrauda 0 0


    Un jugador no es capaz de distinguir si está jugando contra un jugador distinto cada vez, o siempre contra el mismo. Los jugadores guardan una memoria de las partidas pero no son capaces de distinguirse entre sí. Por ejemplo, un jugador puede tener almacenado lo siguiente:

    PA = 9
    YO C D C D C C D C  
    EL D D C C C D C D  
    NP 1 2 3 4 5 6 7 8 9


    NP: Número de Partida
    PA: Partida Actual


  • A continuación se muestran varios ejemplos de agentes. Se recomienda leer los ejemplos, ya que en ellos se explica cómo crear agentes.

    [ Volver al Indice ]


  •  
    Ejemplo 1: "Siempre Cooperar"

    Se trata de cooperar siempre


    BEGIN JUGADOR
      NOMBRE JUGADOR:jugador_ejemplo_1
      BEGIN REGLA
        CONDICION:SIEMPRE
        ACCION:COOPERAR
      END REGLA
    END JUGADOR



    Los espacios y tabuladores son opcionales, se ignoran.

    El "NOMBRE JUGADOR" puede ser cualquier combinacion de numeros, letras y los simbolos "_" y "-", sin espacios.

    Por favor, poner en el nombre de jugador algo que os identifique y os distinga de otros jugadores. Este campo es como una Clave, Password o Pseudonimo. No pongais vuestro nombre de pila sin más, es mejor añadir por ejemplo un número.

    Y por favor, que nadie ponga como nombre de jugador "jugador_ejemplo_1". Podeis copiar un jugador de los ejemplos pero debeis cambiar el nombre.


    Otra forma de hacer lo mismo es:



    BEGIN JUGADOR
      NOMBRE JUGADOR:jugador_ejemplo_1
      BEGIN REGLA
        PRIORIDAD:0
        CONDICION:SIEMPRE
        ACCION:COOPERAR
      END REGLA
    END JUGADOR



  • A cada regla se le puede asignar una prioridad. La prioridad es útil cuando existen varias reglas, y es posible que la condición sea cierta para más de una regla. En ese caso se ejecutará la regla de prioridad más alta (con el número más alto). Si se diera el caso de que la prioridad más alta la tiene más de una regla del conjunto de las que pueden dispararse, entonces el programa elegirá una al azar.

    [ Volver al Indice ]


  •  
    Ejemplo 2: "Siempre Defraudar"

    Se trata de defraudar siempre


    BEGIN JUGADOR
      NOMBRE JUGADOR:jugador_ejemplo_2
      BEGIN REGLA
        CONDICION:SIEMPRE
        ACCION:DEFRAUDAR
      END REGLA
    END JUGADOR



  • Si se cumple la condición SIEMPRE (siempre se cumple), entonces se defrauda

    Otra forma de hacer lo mismo es:


    BEGIN JUGADOR
      NOMBRE JUGADOR:jugador_ejemplo_2
      BEGIN REGLA
        CONDICION:SIEMPRE
        ACCION:DEFRAUDAR(100%)
      END REGLA
    END JUGADOR



  • Si se cumple la condición SIEMPRE (siempre se cumple), entonces se defrauda el 100% de las veces

    Otra forma de hacer lo mismo es:


    BEGIN JUGADOR
      NOMBRE JUGADOR:jugador_ejemplo_2
      BEGIN REGLA
        CONDICION:SIEMPRE
        ACCION:COOPERAR(0%)
      END REGLA
    END JUGADOR



  • Si se cumple la condición SIEMPRE (siempre se cumple), entonces se coopera el 0% de las veces, es decir, se defrauda siempre.

    [ Volver al Indice ]


  •  
    Ejemplo 3: "Cooperar y Defraudar alternativo"

    Se trata de cooperar y defraudar alternativamente


    BEGIN JUGADOR
      NOMBRE JUGADOR:jugador_ejemplo_3
      BEGIN REGLA
        PRIORIDAD:2
        CONDICION:NP=MULTIPLO DE 2
        ACCION:COOPERAR
      END REGLA
      BEGIN REGLA
        PRIORIDAD:1
        CONDICION:SIEMPRE
        ACCION:DEFRAUDAR
      END REGLA
    END JUGADOR



  • La primera regla tiene mayor prioridad que la segunda
  • Si el número de partida es multiplo de 2 (partidas pares), se coopera
  • El resto de los casos, se defrauda

    [ Volver al Indice ]


  •  
    Ejemplo 4: "Cooperar el 47% de las veces"

    Se trata de cooperar el 47% de las veces y defraudar el resto


    BEGIN JUGADOR
      NOMBRE JUGADOR:jugador_ejemplo_4
      BEGIN REGLA
        CONDICION:SIEMPRE
        ACCION:COOPERAR(47%)
      END REGLA
    END JUGADOR



  • La regla se cumple siempre, y consiste en cooperar 47 veces de cada cien. Para ello se genera un numero al azar de 1 a 100. Si el numero es menor o igual que 47, se coopera y en caso contrario, se defrauda.

    Otra forma de hacer lo mismo es:


    BEGIN JUGADOR
      NOMBRE JUGADOR:jugador_ejemplo_2
      BEGIN REGLA
        PRIORIDAD:2
        CONDICION:47%
        ACCION:DEFRAUDAR
      END REGLA
      BEGIN REGLA
        PRIORIDAD:1
        CONDICION:SIEMPRE
        ACCION:COOPERAR
      END REGLA
    END JUGADOR



  • La primera regla tiene mayor prioridad que la segunda. Para saber si se cumple la condición de la primera regla, se genera un número al azar de 1 a 100. Si el numero es menor o igual que 47, entonces la condición se cumple y se ejecuta la accion, que es defraudar. Si no se cumple, entonces se analiza la otra regla, que siempre se cumple y por tanto se coopera.

    [ Volver al Indice ]


  •  
    Ejemplo 5: "Donde las dan las toman"

    Se trata de cooperar la primera vez, y repetir la última jugada de nuestro contrincante el resto de las partidas.


    BEGIN JUGADOR
      NOMBRE JUGADOR:jugador_ejemplo_5
      BEGIN REGLA
        PRIORIDAD:2
        CONDICION:NP=1
        ACCION:COOPERAR
      END REGLA
      BEGIN REGLA
        PRIORIDAD:1
        CONDICION:EL=COOPERAR EN NP=PA-1
        ACCION:COOPERAR
      END REGLA
      BEGIN REGLA
        PRIORIDAD:1
        CONDICION:EL=DEFRAUDAR EN NP=PA-1
        ACCION:DEFRAUDAR
      END REGLA
    END JUGADOR



  • Si la partida es la primera, se coopera.
  • Si el contrario ("EL") ha cooperado en la partida anterior, es decir, en numero de partida igual a la partida actual menos uno ("NP=PA-1"), entonces se coopera
  • Si el contrario ("EL") ha defraudado en la partida anterior, es decir, en numero de partida igual a la partida actual menos uno ("NP=PA-1"), entonces se defrauda

    [ Volver al Indice ]


  •  
    Ejemplo 6: "Mezcla de cooperador y toma y daca"

    Se trata de cooperar la primera vez, y el resto de las partidas se hace: el 40% de las veces se coopera, y el 60% restante, se coopera solo si nuestro contrincante ha cooperado en sus dos ultimas partidas.


    BEGIN JUGADOR
      NOMBRE JUGADOR:jugador_ejemplo_6
      BEGIN REGLA
        PRIORIDAD:4
        CONDICION:NP=1
        ACCION:COOPERAR
      END REGLA
      BEGIN REGLA
        PRIORIDAD:3
        CONDICION:40%
        ACCION:COOPERAR
      END REGLA
      BEGIN REGLA
        PRIORIDAD:2
        CONDICION:EL=COOPERAR EN NP=PA-1 AND EL=COOPERAR EN NP=PA-2
        ACCION:COOPERAR
      END REGLA
      BEGIN REGLA
        PRIORIDAD:1
        CONDICION:SIEMPRE
        ACCION:DEFRAUDAR
      END REGLA
    END JUGADOR



  • Regla 1: Si la partida es la primera, se coopera.
  • Regla 2: Se genera un número al azar de 1 a 100. Si el numero es menor o igual que 40, entonces la condición se cumple y se ejecuta la accion, que es cooperar. Si no se cumple, entonces se analizan las reglas 3 y 4.
  • Regla 3: Si el contrario ("EL") ha cooperado en la partida anterior, es decir, en numero de partida igual a la partida actual menos uno ("NP=PA-1"), y en la anterior a esta ("NP=PA-2"), entonces se coopera
  • Regla 4: Si no se ha cumplido ninguna de las anteriores, se defrauda

    [ Volver al Indice ]


  •  
    Gramática en Lex y Yacc

    El formato de las reglas es el siguiente: (descrito segun Lex y Yacc)


    Este formato puede parecer muy complicado, pero en realidad es muy sencillo. De todas formas, para crear tus propias reglas puede ser mas fácil guiarte por los ejemplos, y no por esta gramática.
    
    Un jugador se compone de reglas
    jugador		:		"BEGIN JUGADOR"
    				"NOMBRE JUGADOR:"
    				IDENTIFICADOR
    				reglas
    				"END JUGADOR"
    		;
    			
    Puede haber una o más reglas
    reglas		:		regla
    		|		regla
    				reglas
    		;			
    
    Una regla tiene la forma: "SI condiciones ENTONCES conclusion", y puede tener ademas una prioridad
    regla		:		"BEGIN REGLA"
    				listaCondiciones
    				accion
    				"END REGLA"
    		|		"BEGIN REGLA"
    				prioridad
    				listaCondiciones
    				accion
    				"END REGLA"
    		;
    
    A cada regla se le puede asignar una prioridad para que en el caso de poder dispararse mas de una regla, se ejecute la regla de prioridad mas alta. 
    prioridad	:		"PRIORIDAD:"
    				NUMERO
    		;
    			
    listaCondiciones:		"CONDICIONES:"
    				condiciones
    		;
    
    Puede haber una o más condiciones separadas por AND, o puede no haber condición y la regla ser cierta siempre
    condiciones	:		condicion
    				"ENTONCES"
    		|		condicion
    				"AND"
    				condiciones
    				"ENTONCES"
    		|		"SIEMPRE"
    		;
    
    condicion	:		cond_el
    		|		cond_yo
    		|		cond_np
    		;
    			
    cond_el		:		"EL"
    				jugada
    				"EN NP="
    				partida
    		;
    
    cond_yo		:		"YO"
    				jugada
    				"EN NP="
    				partida
    		;
    
    cond_np		:		"NP="
    				partida
    		|		"NP=MULTIPLO DE"
    				NUMERO
    		;
    
    partida		:		NUMERO
    		|		"PA-"
    				NUMERO
    		;
    			
    accion		:		"ACCION:"
    				jugada
    		|		"ACCION:"
    				jugada
    				tantoPorCiento
    		;								
    
    
    jugada		:		"COOPERAR"
    		|		"DEFRAUDAR"
    		;
    			
    tantoPorCiento	:		"("
    				NUMERO
    				"%"
    				")"
    		;	
    
    
    
    [0-9]+				{ return NUMERO; }
    [A-Za-z0-9\_\-]+		{ return IDENTIFICADOR; }
    
    
    
    

    [ Volver al Indice ]


     
    Proponer nuevas reglas

    Puedes proponer nuevas reglas no contempladas por la gramática y si es posible las incluiremos para hacer el juego más potente. Envia tus comentarios o sugerencias a esta dirección

    [ Volver al Indice ]


    [ Jugar Ya! | ¿Cómo Jugar? | Resultados del Juego ]
    [ Home Page de Gaia | Home Page del Juego ]
    [ Más información | Normas de la primera edición el juego | Resultados de la primera edición el juego ]
    [ Mail a Gaia | Mail al Juego ]

    En Internet en http://geocities.datacellar.net/SiliconValley/Vista/3497/
    ender_11@geocities.com

    1