J'essayais de résoudre ce problème ici: - https://www.spoj.pl/problèmes / Phival /
Les questions vous demandent de produire autant de chiffres décimaux du rapport doré (1 + sqrt (5)) / 2 que possible et essayez de minimiser la longueur de code. P>
C'est ce que j'ai en ce moment. Ce code peut-il être fait de plus court? P>
from decimal import * getcontext().prec=7050 print(1+Decimal(5).sqrt())/2
4 Réponses :
Vous pouvez sortir de l'espace avant l'astérisque.
Mise à jour: strong> p> Vous avez ajouté la partie sur une espace insignifiante, j'ai donc commencé à penser à une approche différente. Si WhitSpace n'est pas compté, vous pourrez peut-être faire quelque chose comme celui-ci P> Il code chaque chiffre sous forme de nombre d'espaces sur une ligne dans une constante de chaîne multi-lignes . De toute évidence, vous pouvez ajouter plus de lignes pour obtenir plus de chiffres. Il devrait courir assez vite car il y a très peu de calcul. Il utilise 50 Strike> (mise à jour 2: 45) caractères non-blancs pour produire n'importe quel nombre de chiffres de chiffres. P> p>
Merci. Mais la longueur de la source est comptée comme le nombre de caractères espaces non blancs.
@Jack_Carver: Avec les nouvelles informations sur l'espace blanc, j'ai proposé une autre approche pouvant donner de meilleurs résultats.
Vous pouvez effectuer n'importe quel code Python à seulement 44 caractères (ou 42 en Python2) si l'espace blanc n'est pas compté Pastebin.com/UHR9TWQT < / a>
En raison d'un score élevé pour le code abrégé, je pense que la meilleure approche pourrait être juste
Score (NDIGITS = 1, Codelen = 6) -> 2500001 CODE>,
Score (7050, 68) -> 227638 CODE> Il doit y avoir "au moins 1000 [chiffres] après la décimale indiquer."
Eh bien, j'ai essayé l'approche JavaScript-ISH, et cela ne fonctionne apparemment pas en python: semble que votre code est assez proche de la solution la plus courte possible. P> < / p>
Oui. Mais en raison de la nature variée de la formule, je ne peux pas comprendre exactement la longueur de la source minimale. La meilleure solution Python a un score de "307962" où comme le mien donne "212528".
Prendre accordé, le code requis pour générer les premiers 1000000 chiffres serait plus de 10 ^ 1000000 caractères de longueur! p> p> recours à une approche code> à une extrême, cela utilise seulement 19 caractères non-blancs:
Le moyen le plus rapide de le faire serait d'avoir une page Web qui accueille 1 million de chiffres de PHI et que votre programme soit simplement
Echo Curl MySite.com \ Phi Code> :-)
Pourquoi définir la précision à 7050? Pourquoi pas 9999? Tout comme court-coque, mais beaucoup plus de chiffres.
@delnan il dépasserait le timelimit.
@GlowCoder .. très intelligent :) .. Mais cela ne fonctionnerait pas sur le Spoj.
Pour référence, codegolf.stackexchange.com a un tas de ces problèmes spoj.pl sur eux