Edit: je publierai bientôt une version plus récente de cette question meta-golf
. Restez sage!
Edit # 2: Je ne mettrai plus à jour le défi, mais le laisserai ouvert. La meta-golf
version est disponible ici: /codegolf/106509/obfuscated-number-golf
Contexte:
La plupart des nombres peuvent être écrits avec seulement 6 symboles différents:
e
(Constante d'Euler)-
(Soustraction, pas négation)^
(Exponentiation)(
)
ln
(Un algorithme naturel)
Par exemple, vous pouvez convertir le nombre imaginaire en i
utilisant cette équation:
(e-e-e^(e-e))^(e^(e-e-ln(e^(e-e)-(e-e-e^(e-e)))))
Objectif:
Étant donné n'importe quel entier k
par tout moyen raisonnable, affichez la représentation la plus courte possible de ce nombre en utilisant uniquement ces 6 symboles.
Exemples:
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)"
Remarques:
- Les parenthèses de fin comptent pour le nombre total de caractères.
ln(
ne compte que pour 1 caractère.- Tout le reste compte pour 1 caractère.
n^0=1
- L'ordre des opérations s'applique
- Parenthesis multiplication est acceptable, par exemple
(2)(8)=16
,2(5)=10
eteln(e)=e
. ln e
n'est pas valide, vous devez faireln(e)
code-golf
math
number
number-theory
Julian Lachniet
la source
la source
ln(ee...e)
) est la meilleure façon de représenter les points positifs. Edit: non, ce n'est pas.ln(e^(ln(eeeee)ln(eeee)))
est mieux pour 20ln(eeee)^ln(ee)
est plus court queln(eeeeeeeeeeeeeeee)
pour le 16Réponses:
Python 3, 402 octets
Exemple d'utilisation:
Notez que bien que le format de sortie puisse ne pas le refléter, le code compte correctement toutes les longueurs selon les spécifications de la question.
Il s'agit d'une bruteforce stupide à travers toutes les longueurs possibles de chaînes. Ensuite, j'utilise des remplacements pour que Python puisse l'évaluer. Si c'est égal à ce que nous voulons, je vérifie également d'exclure les signes négatifs unaires en vérifiant l'AST.
Je ne suis pas très bon au golf en Python, alors voici le code semi-non-golfé si quelqu'un veut aider!
la source