Hinweis: Dies ist der Thread der Polizei , in dem man den verschlüsselten Code posten sollte. Hier ist der Räuber-Thread, in dem die geknackte Quelle veröffentlicht und mit der Antwort des Polizisten verknüpft werden sollte.
Aufgabe: Schreiben Sie das kürzeste sichere Programm, das die Quadratwurzel einer ganzen Zahl n mit dem Quadrat von n multipliziert
Das sind Bullen und Räuber , daher gelten folgende Regeln:
- Schreiben Sie in Ihrer Antwort eine verschlüsselte Version Ihres Quellcodes (die Zeichen sollten in beliebiger Reihenfolge geschrieben werden). Die verschlüsselte Version sollte nicht funktionieren!
- Sie können Eingaben auf jede übliche Art und Weise vornehmen. Gleiches gilt für die Ausgabe. Hardcoding ist verboten
- Nachdem der Code von den Räubern geknackt wurde (falls dies passiert), müssen Sie erwähnen, dass Ihr Code in Ihrem Titel geknackt wurde, und einen Spoiler mit Ihrem genauen Code in den Körper Ihrer Antwort einfügen
- Das gleiche gilt für sichere Antworten (erwähne, dass es sicher ist und füge den Spoiler hinzu )
- Der Code gilt als sicher, wenn ihn innerhalb von 5 Tagen nach seiner Veröffentlichung niemand geknackt hat, und Sie können dies optional im Titel angeben
- Sie müssen Ihre Programmiersprache angeben
- Sie sollten Ihre Byteanzahl angeben
- Sie müssen den Rundungsmechanismus in Ihrer Antwort angeben (siehe unten)
Sie können davon ausgehen, dass das Ergebnis niedriger als 2 32 ist und n immer positiv ist. Wenn das Ergebnis eine Ganzzahl ist, müssen Sie den genauen Wert mit oder ohne Dezimalstelle zurückgeben. Andernfalls beträgt die minimale Dezimalgenauigkeit 3 Dezimalstellen mit einem beliebigen Rundungsmechanismus, sie kann jedoch auch mehr enthalten. Sie müssen den Rundungsmechanismus in Ihrer Antwort angeben. Sie dürfen nicht als Bruchteile zurückgeben (Zähler-, Nennerpaare - sorry, Bash!)
Beispiele:
In -> Out
4 -> 32.0 (or 32)
6 -> 88.18163074019441 (or 88.182 following the rules above)
9 -> 243.0
25 -> 3125.0
Die kürzeste sichere Antwort bis Ende April wird als Gewinner gewertet.
quelle
Antworten:
05AB1E, 20 Byte - sicher
Ein ganz anderer Ansatz als meine vorherigen Antworten.
Keine Rundung.
Beispiel läuft
Ich habe keinen Zweifel, @Emigna wird es im Handumdrehen knacken, aber eh, man muss es versuchen! :-D
Lösung
Dies beruht auf der Tatsache, dass diese Sequenz:
u_0 = 1, u_ {n + 1} = u_n * (u_n ^ 2 + 3 x) / (3 u_n ^ 2 + x)
Konvergiert zu sqrt (x) und ist dabei kubisch schnell (ich habe leider nicht herausgefunden, wie man mathematische Gleichungen in PCG formatiert).
Ausführliche Erklärung
Probieren Sie es online!
quelle
Python 3 , 44 Bytes ( geknackt )
Keine Rundung. Fließkomma-Genauigkeit.
quelle
MATL , 12 Bytes ( geknackt von @tehtmi )
Keine Rundung; verwendet Gleitkomma.
Geplante Lösung (anders als von @tehtmi gefunden):
Erläuterung
quelle
Röda , 28 Bytes ( Gebrochen von @tehtmi )
Beachten Sie das Leerzeichen am Anfang. Keine Rundung, aber es werden Gleitkommazahlen verwendet, sodass die Genauigkeit begrenzt ist.
quelle
Perl, 42 Bytes (sicher)
Es gibt 41 Byte Code und
-p
Flag (keine anderen Flags).Das Ergebnis wird nicht gerundet (oder vielmehr auf den gleichen Punkt aufgerundet, den Perl damit aufgerundet hätte
$_ = (sqrt $_) * ($_ ** 2)
).Lösung:
Erläuterung:
quelle
$_=
. Undeval
irgendwo ist ein . (das ist nicht viel, aber ich glaube, ich kann dir nicht mehr geben, ohne dir zu viele Informationen zu geben)Oktave, 43 Bytes (Sicher)
Dies ist ein Skript, das Eingaben über die Befehlszeile erfordert (es ist keine Funktion). Es ist Gleitkommagenauigkeit (also keine Rundung).
Lösung:
Erläuterung:
quelle
C, 50 Bytes ( geknackt von Fergusq )
Verwendet die Standardrundung nach IEEE754. Wie in der Antwort von fergusq angegeben, kann dies
-lm
abhängig von Ihrem Compiler erforderlich sein .quelle
Mathematica, 131 Bytes, nicht konkurrierend ?, geknackt
Dies wurde von @ lanlock4 geknackt ! Ich habe jedoch immer noch Internetpunkte, mit denen ich jemanden beschenken kann, der die ursprüngliche Lösung findet, bei der alle Charaktere tatsächlich benötigt werden ....
Dies ist als Puzzle gedacht. Obwohl Sie die obigen Zeichen verwenden können, wie Sie möchten, möchte ich, dass die Antwort dem Formular folgt
Die erste und dritte Zeile sind nur ein Wrapper, um die Rundung und Anzeige zu ermöglichen (jede Ausgabe wird auf genau drei Dezimalstellen gerundet), und die zweite Zeile ist die verschlüsselte Version der Eingeweide des Codes. Beispielausgaben:
(Mathematica ist keine freie Software, aber es gibt eine Wolfram-Sandbox, in der es möglich ist, bescheidene Codemengen zu testen. Zum Beispiel das Ausschneiden und Einfügen des Codes
definiert eine Funktion, die Sie anschließend wie
f@6
oder aufrufen könnenf[9]
und die das Gleiche tut wie die unverschlüsselte Version des obigen Codes. Muss das wirklich konkurrenzlos sein?)quelle
Swift - 64 Bytes (sicher)
Keine Rundung und zeigt eine
.0
Gerade an, wenn das Ergebnis eine Ganzzahl ist.quelle
Haskell, 16 Bytes ( Gebrochen von @nimi )
Keine besondere Rundung
quelle
R, 28 Bytes ( Gebrochen von @Flounderer )
Standard R Fließkommagenauigkeit.
quelle
C #, 172 Bytes ( geknackt von SLuck49 )
Dieser Code ist ein vollständiges Programm.
Am Anfang stehen sieben Leerzeichen.
Die Eingabe wird von STDIN gelesen und auf STDOUT gedruckt. Das Ergebnis ist in
double
, keine Rundung erfolgt.Originalcode ungolfed:
quelle
JavaScript (ES7), 20 Bytes ( Gebrochen von @IlmariKaronen )
Standardmäßige JavaScript-Genauigkeit.
quelle
Python 2, 60 Bytes ( Gebrochen von @notjagan )
Keine Rundung. Genauigkeit von bis zu 10 Dezimalstellen.
quelle
Python 3.6, 59 Bytes
Keine Rundung. Fließkomma-Genauigkeit.
quelle
Haskell, 64 Bytes ( geknackt von Laikoni )
Standard Haskell Gleitkommaoperationen.
Meine ursprüngliche Version ist:
quelle
Fourier ,
124119 BytesEs gibt keine Leerzeichen oder Zeilenumbrüche.
Die Quadratwurzel wird auf die nächste ganze Zahl gerundet, da Fourier nur Ganzzahlen zu verarbeiten scheint (und da @ATaco die Erlaubnis erhalten hat, hoffe ich, dass dies in Ordnung ist).
Behebung eines Bearbeitungsfehlers. Wenn Sie dies bereits geknackt haben, war das vorherige funktionsfähig
Es wurde mir klar, dass ich einen Teil des Codes falsch verstanden hatte und mehr Zeichen verwendete, als ich brauchte
Wenn ich etwas verpasst habe, lass es mich wissen
quelle
Informiere 7 , 71 Bytes ( Gebrochen von @Ilmari Karonen )
Der Code enthält 17 Leerzeichen und 2 neue Zeilen. Dies ist ein vollständiges Infrom 7-Programm, das eine Funktion definiert, die das Ergebnis mit einer Genauigkeit von 5 Dezimalstellen ausgibt.
quelle
R, 19 Bytes (Gebrochen von @Steadybox)
Standardrundung
R, 33 Bytes (geknackt von @plannapus)
R, 31 Bytes (geknackt von @plannapus)
h=f`l`u`n`c`t`i`o`n([],[])^(.9)
quelle
Oktave, 30 Bytes (Sicher)
Ein bisschen einfacher als meine erste. Sollte nicht zu schwer sein, aber es ist hoffentlich ein lustiges Puzzle.
quelle
^
? Hmmm ...@(e)(e**((i/(i+i))+~sum(e:j)))
klar, aber es ist nurn^1.5
... das ist knifflig.Ohm, 11 Bytes
Verwenden Sie mit
-c
Flagge. Verwendet CP-437-Codierung.quelle
OCaml , 13 Bytes ( geknackt von @Dada )
Keine Rundung (im Rahmen von IEEE 754).
quelle
Javascript, 123 Bytes, Gebrochen von notjagan
Dieser Code ist eine vollständige Funktion
Ganz am Anfang der Zeichenliste befindet sich ein Leerzeichen
Die Rundung dieser Antwort ist die Gleitkomma-Genauigkeit für Javascript, die Genauigkeit liegt bei jeder Antwort innerhalb von 10 ^ -6.
Wurde kürzer, weil die Präzision nicht so hoch gehalten werden musste, wie ich dachte.
Ich hatte erkannt, dass es viel einfacher zu lösen sein würde, als ich es ursprünglich gemacht hatte, aber es war bereits da: P
Anfangscode:
Newton-Methode, angewendet 5 mal ab der nächsten Potenz von 2
quelle
Python 3.6 - 52 Bytes ( geknackt von @xnor )
Standard-Python-Rundung
quelle
Ruby, 35 Bytes (geknackt von xsot )
Keine Rundung. Fließkomma-Genauigkeit.
quelle
05AB1E , 47 Bytes
Rundet nicht, verwendet Gleitkomma-Genauigkeit.
quelle
CJam, 8 Bytes ( geknackt von E
nmigmna )Keine Rundung. Verwendet doppelte Präzision.
quelle
R, 32 Bytes ( geknackt von @plannapus )
Standard-Gleitkommagenauigkeit.
quelle
Excel, 26 Bytes
Keine Rundung.
Hinweis: Da Excel eine kostenpflichtige Software ist, funktioniert dies auch im kostenlosen LibreOffice
quelle
RProgN 2 , 6 Bytes ( geknackt von @notjagan )
Keine Rundung, zeigt viele Nachkommastellen an. Zeigt für eine ganzzahlige Lösung keine an.
quelle
n²√n
? Ich kann es leicht berechnen lassenn² + √n
, aber ich kann nicht für das Leben von mir sehen, wie Sie die Ausdrücke bekommen, um sich zu multiplizieren.