Editar: em breve postarei uma versão mais recente desta pergunta meta-golf
. Fique ligado!
Editar # 2: não vou mais atualizar o desafio, mas o deixarei em aberto. A meta-golf
versão está disponível aqui: /codegolf/106509/obfuscated-number-golf
Fundo:
A maioria dos números pode ser escrita com apenas 6 símbolos diferentes:
e
(Constante de Euler)-
(Subtração, não negação)^
(Exponenciação)(
)
ln
(Logaritmo natural)
Por exemplo, você pode converter o número imaginário i
usando esta equação:
(e-e-e^(e-e))^(e^(e-e-ln(e^(e-e)-(e-e-e^(e-e)))))
Objetivo:
Dado qualquer número inteiro k
por qualquer meio razoável, produza a menor representação possível desse número usando apenas esses 6 símbolos.
Exemplos:
0 => "e-e"
1 => "ln(e)"
2 => "ln(ee)"
// Since - cannot be used for negation, this is not a valid solution:
// ln(e)-(-ln(e))
-1 => "e-e-ln(e)"
Notas:
- Os parênteses finais contam para a quantidade total de caracteres.
ln(
conta apenas como 1 caractere.- Tudo o resto conta como 1 caractere.
n^0=1
- Ordem de operações aplicável
- Parêntese multiplicador é aceitável, por exemplo
(2)(8)=16
,2(5)=10
, eeln(e)=e
. ln e
não é válido, você deve fazerln(e)
ln(eeee)^ln(ee)
é menor que ln(eeeeeeeeeeeeeeee)
para 16
ln(ee...e)
) é a melhor maneira de retratar aspectos positivos. Edit: não, não é.ln(e^(ln(eeeee)ln(eeee)))
é melhor para 20