O xogo da oca. Regras
O xogo da oca é un clásico que tivo o seu teito de fama en España nos anos noventa grazas a un programa de televisión e ata unha miniserie con xente coma Anthony Quinn, Charlton Heston e Anabel Alonso, baseada nunha coñecida ruta xacobea e dunha calidade dubidosa. Supoño que moitísimas familias españolas cantaron o “de oca a oca”, e case todas estarán de acordo en que despois “tiro porque me toca”, pero igual aí remata o consenso. Como o xogo pasa dos cincocentos anos, existen moreas de regras, variantes e interpretacións das casas especiais. Velaquí algunhas que non coñecía:
- Cando caes nunha oca, avanzas tanto coma o valor do dado que te levou a ela.
- Se sacas un 9 na primeira tirada, en lugar de avanzar sitúaste nunha das casas nas que aparecen dados debuxados (a máis lonxana se o resultado foi un 5+4, a que está máis preto se foi un 6+3). Isto é preciso se aplicas a norma anterior, xa que crearía unha vitoria automática pola posición das ocas.
- Se caes nunha casa con outra peza, intercámbianse as posicións.
- Se caes no pozo ou no cárcere, quedas atrapado ata que alguén entre.
- O labirinto leva á casa 30.
- A oca da 59 leva á casa final, onde toca tirar outra vez e contar cara atrás.
A miña tarefa, imposta por min mesmo, foi conciliar as regras da miña infancia coas da miña familia estendida e as que aparecen pola rede, de xeito que sexan doadas de lembrar, aplicar e que non sexan unha ofensa ao deseño de xogos modernos (inda que xa sabemos que un xogo sen decisións quizais non sexa tal). Aquí está o resumo da versión actual:
- Os xogadores determinan a orde de xogo lanzando cadanseu dado.
- Xógase con un único dado por xogador.
- O xogo comeza na casa 1. Por tanto, un 4 na primeira tirada leva á oca da casa 5.
- As pontes da 6 e 12 leva dunha a outra e hai nova tirada.
- A posada da 19 fai perder unha tirada.
- Os dados da 26 e 53 levan duns a outros e hai nova tirada.
- O pozo da 31 fai perder dúas tiradas.
- O labirinto da 42 leva á casa 30.
- O cárcere do 52 fai perder dúas tiradas.
- A morte do 58 leva á casa 1.
- A oca da 59 outorga a vitoria, non importa que se chegue contando cara diante ou contando cara atrás.
- Hai que chegar á casa 63 cunha tirada exacta, se o número é máis grande, hai que retroceder o número de movementos restantes.
Por esixencias alleas, presenciei e xoguei moitas partidas da oca con estas regras. A única variante que se me ocorreu para dar algo de control aos xogadores pasa por permitir volver tirar unha vez cada tirada, tendo que ficar con ese segundo resultado. Dese xeito converteríase nun sistema de apurar a sorte e pode haber decisións divertidas, especialmente sobre se pasar ou non os dados da 23. Mais, ao mesmo tempo, parte da graza do xogo é que se xoga só, así que tampouco vou ser eu o que lle quite o mérito.
O xogo da oca. Probabilidades?
Logo de tanto xogar á oca coas regras da casa, deume por pensar que estar máis adiante no taboleiro non é necesariamente mellor, porque podes deixar, por exemplo, de ter acceso aos dados que adiantan moito. Para corroborar a miña intuición, pensei en facer un pequeno programiña que empregara o método Monte Carlo para calcular o número medio de roladas precisas para acadar a vitoria dende cada casa do xogo. Isto requiriría algo de tempo pola miña parte, pero é do tipo de cousas que non me importa programar e sempre o paso ben. Pero logo de deixar a idea en barbeito durante un par de meses, decidín que quizais era un bo traballo para unha intelixencia artificial xenerativa desas que están tan de moda. Puxen os requisitos nunha lapela de ChatGPT e agardei polo resultado.
Lembro ben a primeira vez que empreguei ChatGPT. Tratábase dunha versión preliminar, á que tiña acceso porque probara antes o modelo máis bruto. Pedinlle un código para xerar un servidor web o máis sinxelo posible en Erlang. O resultado foi tal e como o faría eu, cunha coñecida librería de terceiros, pero inventando algunhas funcións que xa me tiñan unha pinta sospeitosa. Evidentemente, non aforrei nada de tempo, pero quedei inicialmente abraiado polo potencial da ferramenta. Mais, case instantaneamente, ese sentimento trocou nunha profunda tristeza. Non por cuestións éticas, ambientais ou sociais, xa que eran temas sobre os que inda non pensara, senón pola imposibilidade de desenvolver algo similar pola miña conta, nin sequera con axuda da miña empresa. Para isto precisábase un nivel industrial ao que nunca tería acceso.
Dalgún xeito, iso rompeu para sempre unha das miñas ilusións informáticas: que son capaz de implementar case calquera cousa con tempo e ganas. Sen dúbida, e por poñer un exemplo, sabía que non está na miña man recrear todo o núcleo de Linux, pero penso que si podería montar un pequeno sistema operativo, ou un sinxelo compilador de C por menos de 20.000€. Ou facer un videoxogo máis ou menos complexo. Ou algunha versión limitada dos programas que emprego acotío. No mundo da intelixencia artificial xa fixera cousiñas coma detección de cartas de póker, ou pequenos modelos de linguaxe baseados nos meus textos, pero endexamais terei capacidade de montar algo tan potente como ChatGPT. Agora sei que tampouco querería, pero ese non é o tema.
Pode que pensase todo iso nos minutos que tardou ChatGPT en criar o programa que lle pedín. Non son usuario desas cousas e era a primeira vez que pedía algo tan complexo, así que levei sorpresa con que tardara tanto. Boa parte do tempo pasouno xerando programas que fallaban con erros que logo intentaba corrixir. Na miña mente desexaba que rematase xa con tanta enerxía malgastada, e tamén agardaba que o resultado fose penoso para confirmar o meu nesgo. Mais o código que finalmente apareceu na miña pantalla tiña unha pinta estupenda.
Coido que non aclarei na miña petición o de analizar o número de roladas precisas para gañar dende cada casa, polo que o resultado final só contaba a distribución dende a primeira, algo que se vía ben no gráfico incluído (supoño que os números eran os correctos, pero non tiña maneira de contrastalos). As regras do xogo que empregaba por defecto eran diferentes das miñas, pero a función principal aceptaba un mapa onde as podiamos especificar, polo que era xenérico abondo para ser modificado facilmente sen problema. Non é como o faría eu, xa que sempre intento ter os mínimos niveles de abstracción, pero era difícil non estar satisfeito co resultado. Era unha base perfecta sobre a que podería implementar eu ese par de detalles que botei de menos. Ou, se cadra, pedirlle á máquina que tamén o fixera por min.
Pero non o fixen. Borrei inmediatamente a conversación. Sentinme estraño por empregar esta ferramenta. Non me apetecía ler, revisar e modificar o código obtido, e moito menos continuar a interactuar na conversación. É probable que aforrara tempo con esta vía respecto a facer o programa a man, pero non penso que pague a pena para satisfacer unha dúbida tan banal. Prefiro adiar o desenvolvemento e volver outro día coas respostas e unha satisfacción persoal maior.

