Era uma vez um servo sábio que salvou a vida de um príncipe. O rei prometeu pagar o que o servo fosse capaz de imaginar. Sabendo que o rei adorava xadrez, o servo disse ao rei que gostaria de receber grãos de trigo. Um grão na primeira casa de um tabuleiro de xadrez, com o número de grãos dobrando a cada casa seguinte.
Calcule o número de grãos de trigo em um tabuleiro de xadrez.
Um tabuleiro de xadrez tem 64 casas. A casa 1 tem um grão, a casa 2 tem dois grãos, a casa 3 tem quatro grãos, e assim por diante, dobrando a cada vez.
Escreva um código que calcule:
Em Euphoria, um atom pode guardar qualquer tipo de número, e o subtipo integer é reservado para números inteiros.
Em linguagens de estilo C, é possível resolver este exercício retornando um número inteiro sem sinal de 64 bits.
No entanto, os inteiros em Euphoria têm sinal e são um bit menores que a palavra da máquina, o que os torna pequenos demais para este exercício, enquanto os atoms conseguem guardar inteiros maiores, com os 64 bits de precisão necessários.
Existe uma versão de 32 bits do Euphoria, que continua existindo para que aplicações legadas possam continuar usando dll/so de 32 bits pré-compiladas quando não há uma versão de 64 bits disponível, ou quando o wrapper para elas está cheio de deslocamentos de 32 bits fixos no código. Essa versão é totalmente inadequada para resolver esta tarefa, já que esses atoms têm apenas 53 bits de precisão. Se você estiver com dificuldade para resolver este exercício localmente, verifique se está usando uma versão de 64 bits do Euphoria.
Crie sua conta no Exercism para aprender e dominar Euphoria com 64 exercícios e mentoria humana de verdade, tudo de graça.