Note: Ceci est le fil des flics , où l'on devrait poster le code brouillé. Voici le fil de discussion des voleurs où la source fissurée doit être publiée et liée à la réponse du policier.
Tâche: Écris le programme sûr le plus court qui multiplie la racine carrée d’un entier n par le carré de n
C'est des flics-and-robbers , alors les règles sont les suivantes:
- Dans votre réponse, postez une version brouillée de votre code source (les caractères doivent être écrits dans n’importe quel ordre). La version brouillée ne devrait pas fonctionner!
- Vous pouvez prendre une entrée de n'importe quelle manière standard, il en va de même pour la sortie. Le codage en dur est interdit
- Une fois le code craqué par les voleurs (si cela se produit), vous devez mentionner que votre code a été déchiffré dans votre titre et ajouter un spoiler au corps de votre réponse avec votre code exact.
- Il en va de même pour les réponses sûres (mentionnez que c'est sûr et ajoutez le spoiler )
- Le code est considéré comme sûr si personne ne l'a déchiffré dans les 5 jours suivant sa publication et vous pouvez éventuellement le spécifier dans le titre.
- Vous devez spécifier votre langage de programmation
- Vous devez spécifier votre nombre d'octets
- Vous devez indiquer le mécanisme d'arrondi dans votre réponse (voir ci-dessous)
Vous pouvez supposer que le résultat est inférieur à 2 32 et que n est toujours positif. Si le résultat est un entier, vous devez renvoyer la valeur exacte avec ou sans point décimal. sinon, la précision décimale minimale sera de 3 décimales avec le mécanisme d'arrondi de votre choix, mais vous pouvez en inclure davantage. Vous devez indiquer le mécanisme d'arrondi dans votre réponse. Vous n'êtes pas autorisé à retourner sous forme de fractions (numérateur, paires de dénominateurs - désolé, Bash!)
Exemples:
In -> Out
4 -> 32.0 (or 32)
6 -> 88.18163074019441 (or 88.182 following the rules above)
9 -> 243.0
25 -> 3125.0
La réponse la plus courte et sûre d’ici fin avril sera considérée comme gagnante.
la source
Réponses:
05AB1E, 20 octets - sûr
Une autre approche totalement différente de mes réponses précédentes.
Pas d'arrondi.
Exemple fonctionne
Je ne doute pas que @Emigna va le résoudre en un tour de main, mais eh, il faut essayer! :-RÉ
Solution
Ceci utilise le fait que cette séquence:
u_0 = 1, u_ {n + 1} = u_n * (u_n ^ 2 + 3 x) / (3 u_n ^ 2 + x)
converge vers sqrt (x) et rapidement cubiquement (désolé, je n’ai pas trouvé comment formater les équations mathématiques dans PCG).
Explication détaillée
Essayez-le en ligne!
la source
Python 3 , 44 octets ( fissuré) )
Pas d'arrondi. Précision en virgule flottante.
la source
MATL , 12 octets ( fissuré par @tehtmi )
Pas d'arrondi; utilise la virgule flottante.
Solution envisagée (différente de celle trouvée par @tehtmi):
Explication
la source
Röda , 28 bytes ( fissuré par @tehtmi )
Notez l'espace au début. Pas d'arrondi, mais il utilise des nombres à virgule flottante, ce qui limite la précision.
la source
Perl, 42 octets (sûr)
Il y a 41 octets de code et d'
-p
indicateur (aucun autre indicateur).Le résultat n'est pas arrondi (ou plutôt arrondi au même point que Perl aurait arrondi en faisant
$_ = (sqrt $_) * ($_ ** 2)
).Solution:
Explication:
la source
$_=
. Et il y a uneval
quelque part. (ce n'est pas beaucoup, mais je sens que je ne peux pas vous en dire plus sans vous donner trop d'informations)Octave, 43 octets (sûr)
Ceci est un script qui nécessite une entrée à partir de la ligne de commande (ce n'est pas une fonction). C'est une précision en virgule flottante (donc pas d'arrondi).
Solution:
Explication:
la source
C, 50 octets ( fissuré par fergusq )
Utilise l'arrondi IEEE754 standard. Comme indiqué par la réponse de fergusq, peut nécessiter en
-lm
fonction de votre compilateur.la source
Mathematica, 131 octets, non en concurrence?, Fissuré
Cela a été craqué par @ lanlock4 ! Cependant, il me reste des points Internet à attribuer à quelqu'un qui trouve la solution originale, où tous les personnages sont réellement nécessaires ....
Ceci est conçu comme un casse-tête. Bien que vous puissiez utiliser les caractères ci-dessus comme bon vous semble, j’ai bien l'intention que la réponse suive le formulaire
où les première et troisième lignes ne sont qu'un emballage pour rendre les arrondis et les afficher légaux (toutes les sorties sont écrites avec exactement trois décimales, arrondies), et la deuxième ligne est la version brouillée des entrailles du code. Exemples de sortie:
(Mathematica est un logiciel non-libre, mais il existe un bac à sable Wolfram où il est possible de tester de petites quantités de code. Par exemple, couper et coller le code
définit une fonction, que vous pouvez ensuite appeler comme
f@6
ouf[9]
, et qui fait la même chose que la version non cryptée du code ci-dessus. Alors, est-ce que cela doit vraiment être non compétitif?)la source
Swift - 64 octets (sûr)
Aucun arrondi, et affiche
.0
même si le résultat est un entier.la source
Haskell, 16 octets ( fissuré par @nimi )
Aucun arrondi particulier
la source
R, 28 octets ( fissuré par @Flounderer )
Précision standard en virgule flottante.
la source
C #, 172 octets ( fissuré par SLuck49 )
Ce code est un programme complet.
Il y a sept espaces au début.
L'entrée est lue sous STDIN et imprimée sur STDOUT. Le résultat est dans
double
, pas d'arrondi.Code original non-golfé:
la source
JavaScript (ES7), 20 bytes (Cracked by @IlmariKaronen)
Standard JavaScript precision.
la source
Python 2, 60 Bytes (Cracked by @notjagan)
No rounding involved. Accurate up to 10 decimal digits.
la source
Python 3.6, 59 bytes
No rounding. Floating point accuracy.
la source
Haskell, 64 bytes, (cracked by Laikoni)
Standard Haskell floating point operations.
My original version is:
la source
Fourier,
124119 BytesThere are no whitespaces or newline characters.
Square root is rounded to the nearest whole number because Fourier doesn't seem to handle anything other than integers (and since @ATaco got permission, I hope this is ok)
fixed an editing mistake, if you were already cracking this, the previous was functional
Realized that I had misunderstood part of the code, and was using more characters than I needed to
If I missed anything let me know
la source
Inform 7, 71 bytes (Cracked by @Ilmari Karonen)
The code includes 17 spaces and 2 new lines. This is a full Infrom 7 program defining a function that prints the result with a precision of 5 decimal places.
la source
R, 19 bytes (Cracked by @Steadybox)
Standard rounding
R, 33 bytes (Cracked by @plannapus)
R, 31 bytes (Cracked by @plannapus)
h=f`l`u`n`c`t`i`o`n([],[])^(.9)
la source
Octave, 30 bytes (Safe)
A bit simpler than my first one. Shouldn't be too hard, but it's hopefully a fun puzzle.
la source
^
? Hmmm...@(e)(e**((i/(i+i))+~sum(e:j)))
but it's onlyn^1.5
...this one's tricky.Ohm, 11 bytes
Use with
-c
flag. Uses CP-437 encoding.la source
OCaml, 13 bytes (Cracked by @Dada)
No rounding (within IEEE 754 scope).
la source
Javascript, 123 bytes, Cracked by notjagan
This code is a full function
There is one space character at the very start of the list of characters
The rounding of this answer is the floating point precision for Javascript, accuracy is within 10^-6 for every answer.
Got shorter because the precision didn't need to be maintained quite as high as I thought it did.
I had realized that it would be much easier to solve than I initially had made it but it was already there :P
Initial code:
Newtons method, applied 5 times from the closest power of 2
la source
Python 3.6 - 52 bytes (Cracked by @xnor)
Standard Python rounding
la source
Ruby, 35 bytes (cracked by xsot)
No rounding. Floating point accuracy.
la source
05AB1E, 47 bytes
Does not round, uses floating point accuracy.
la source
CJam, 8 bytes (Cracked by E
nmigmna)No rounding. Uses double precision.
la source
R, 32 bytes (Cracked by @plannapus)
Standard floating-point accuracy.
la source
Excel, 26 bytes
No rounding.
Note: As Excel is paid software, this works also in free LibreOffice
la source
RProgN 2, 6 Bytes (Cracked by @notjagan)
No rounding, displays many decimal places. Does not display any for an integer solution.
la source
n²√n
? I can easily get it to calculaten² + √n
, but I can't for the life of me see how you got the terms to multiply.