Había una vez un sirviente sabio que salvó la vida de un príncipe. El rey prometió pagarle lo que el sirviente fuera capaz de imaginar. Como sabía que al rey le encantaba el ajedrez, el sirviente le dijo que quería granos de trigo. Un grano en la primera casilla de un tablero de ajedrez, y el número de granos se duplicaba en cada casilla siguiente.
Calcula la cantidad de granos de trigo que hay en un tablero de ajedrez.
Un tablero de ajedrez tiene 64 casillas. La casilla 1 tiene un grano, la casilla 2 tiene dos granos, la casilla 3 tiene cuatro granos, y así sucesivamente, duplicándose cada vez.
Escribe código que calcule:
En Euphoria, un atom puede contener cualquier tipo de número, con el subtipo integer pensado para números enteros.
Es posible resolver este ejercicio en lenguajes tipo C devolviendo un entero sin signo de 64 bits.
Sin embargo, los enteros en Euphoria tienen signo y son un bit más pequeños que la palabra de la máquina, por lo que son demasiado pequeños para este ejercicio, mientras que los atoms pueden contener enteros más grandes con los 64 bits de precisión necesarios.
Existe una versión de 32 bits de Euphoria, que sigue existiendo para que las aplicaciones heredadas puedan seguir usando dll/so de 32 bits ya compiladas cuando no hay disponible una versión de 64 bits, o cuando el wrapper para dicha versión está lleno de desplazamientos de 32 bits codificados directamente en el código. Esta versión es del todo inadecuada para resolver esta tarea, ya que esos atoms solo tienen 53 bits de precisión. Si tienes problemas para resolver este ejercicio de forma local, asegúrate de que estás usando una versión de 64 bits de Euphoria.
Regístrate en Exercism para aprender y dominar Euphoria con 64 ejercicios y mentoría humana real, todo gratis.