Autor Tema: ¿Cómo hace la máquina para ordenar un mahjong cuando ya no hay más movimientos?

0 Usuarios y 1 Visitante están viendo este tema.

23 Febrero, 2020, 10:24 pm
Leído 1601 veces

manooooh

  • $$\Large \color{#9c57a6}\pi\,\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 4,791
  • País: ar
  • Karma: +1/-0
  • Sexo: Masculino
Hola!

Esta es una duda personal, y es que acabo de ver a mis padres (que yo soy muy joven :laugh: :laugh:) jugando al juego mahjong (ese juego que tiene unas fichas puestas una encima de la otra, y uno tiene que deshacerse de la torre eliminando las fichas que no estén "pegadas" con otras y que sean del mismo tipo), y me pregunté:

Suponiendo que lo jugamos en un ordenador (lo cual es bastante común ver), ¿cómo idearon los programadores que cuando ya no hay más fichas por sacar (por mera intervención del jugador) el juego hace un shuffle (mezcla) de todas las fichas restantes para seguir jugando?

Me parece asombroso que no sea algo aleatorio, pues seguramente así tampoco se pueda jugar demasiado, ya que se saca un par y seguro que acaba ahí la cosa. Pero lo increíble es que se mezclan de tal forma de que el jugador pueda ganar.

¿Cómo se modeliza esta situación matemáticamente?

¿Hay otros juegos con la misma lógica? Es que me parece alucinante.

Gracias!!
Saludos

24 Febrero, 2020, 12:22 am
Respuesta #1

Abdulai

  • Moderador Global
  • Mensajes: 3,044
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino

Acá uno mas que preguntarse cómo lo harán tiene que preguntarse cómo lo haría.


- Tengo una lista con los lugares permitidos y una lista de pares de fichas disponibles.
   while(fichas){
       Elijo aleatoriamente dos lugares permitidos y coloco un par de fichas.
       Actualizo las listas.
   }

07 Marzo, 2020, 12:41 am
Respuesta #2

manooooh

  • $$\Large \color{#9c57a6}\pi\,\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 4,791
  • País: ar
  • Karma: +1/-0
  • Sexo: Masculino
Hola Abdulai, muchas gracias por tu respuesta

Acá uno mas que preguntarse cómo lo harán tiene que preguntarse cómo lo haría.


- Tengo una lista con los lugares permitidos y una lista de pares de fichas disponibles.
   while(fichas){
       Elijo aleatoriamente dos lugares permitidos y coloco un par de fichas.
       Actualizo las listas.
   }

¿Y cómo sería armar la lista con los lugares permitidos? Pensá que un juego suele tener decenas de mahjongs distintos, ¿cómo se lo curran los programadores para no enfocarse tanto en la programación de 100 niveles de mahjongs y dedicarse a cuestiones más importantes?

Se me ocurre este pequeño mahjong:


¿De qué manera el sistema shufflea las fichas?

Es decir no me queda claro cómo almacena semejante información en una lista. Digo "semejante" porque al principio el juego está configurado de una manera; supongamos que hay \( 3 \) maneras que el usuario puede buscar para sacar un par de fichas. Si saca la 1ra alternativa se le habilitan fichas "sacables" o no; si usa la 2da alternativa pasa lo mismo pero con otras fichas; y así sucesivamente. Debería tener un árbol de derivación enorme para algo que, en principio, parece fácil con el código que proponés.

No digo que no se pueda implementar esto, pero considerando la velocidad en que suele shufflear y que en un juego normal pueden haber muchos mahjongs distintos me cuesta verlo.

Por eso quizá viéndolo desde un modelo matemático, con algunas fórmulas y tal me esclarezca el panorama un poco más de lo que tu código me ayudó.

Gracias y saludos