No RPG de mesa chamado Pathfinder, há uma façanha que os personagens podem fazer, chamada Geometria Sagrada , que permite que um personagem que possui o recurso aprimore seus feitiços em troca de fazer algumas contas: para usá-lo, o personagem rola um número de seis lados. dados iguais às suas classificações em uma habilidade específica, consulta uma tabela com base no nível da magia para determinar quais três números primos são as "Constantes Primárias" para esse nível de mágica e calcula se é ou não possível produzir uma das Constantes Primárias por executando alguma combinação de adição, subtração, multiplicação e divisão e agrupamento entre parênteses em todos os números acumulados.
A tabela de constantes principais por nível de feitiço é a seguinte:
+-------------+-----------------+
| Spell Level | Prime Constants |
+-------------+-----------------+
| 1st | 3, 5, 7 |
| 2nd | 11, 13, 17 |
| 3rd | 19, 23, 29 |
| 4th | 31, 37, 41 |
| 5th | 43, 47, 53 |
| 6th | 59, 61, 67 |
| 7th | 71, 73, 79 |
| 8th | 83, 89, 97 |
| 9th | 101, 103, 107 |
+-------------+-----------------+
Assim, por exemplo, se um personagem tem 5 níveis de habilidade e está lançando uma mágica de 4º nível, jogaria cinco dados de seis lados e precisaria calcular um valor de 31, 37 ou 41. Se eles rolou 6, 6, 4, 3 e 1, então eles poderiam produzir um valor de 37 executando o seguinte cálculo: (6 × 6) + (4-3) × 1 = 37, ou eles poderiam produzir um valor de 41 fazendo ([6 + 6] × 3) + 4 + 1 = 41. Como resultado, o lançamento do feitiço seria bem-sucedido.
Para este quebra-cabeça de programação, seu trabalho é escrever uma função com dois parâmetros de entrada, Nível de ortografia e Nível de habilidade, rolar um número de dados de seis lados igual ao parâmetro Nível de habilidade e calcular se você pode produzir (pelo menos) um dos as constantes principais associadas ao parâmetro Spell Level e, em seguida, produz um valor booleano.
As respostas seriam classificadas principalmente pela eficiência de seu algoritmo (tenho certeza de que um algoritmo de força bruta seria dimensionado muito rapidamente à medida que o parâmetro Skill Ranks aumenta) e, em seguida, pelo tamanho do código-fonte enviado em bytes.