Dies ist ein Bullen-und-Räuber, wenn Sie nicht mit dem Format vertraut sind. Klicken Sie auf das Tag, um zum Wiki zu gelangen. Es wird keinen Räuberfaden für diese Frage geben.
Bullen
Als Cops müssen Sie zwei Sequenzen aus der Online-Enzyklopädie der ganzzahligen Sequenzen auswählen und ein Programm schreiben, das das n-te Element einer Sequenz als Eingabe verwendet und das n-te Element der zweiten Sequenz ausgibt. Anschließend geben Sie eine Antwort einschließlich des Codes und lassen die ausgewählten Sequenzen aus. Räuber werden versuchen, die Sequenzen zu finden, die Sie ausgewählt haben. Wenn Sie die Sequenzen finden, die Sie sich vorgestellt haben, oder einige andere Sequenzen, für die Ihr Programm Ihre Antwort als geknackt markieren muss . Wenn ein Räuber Sie mit einem Riss informiert, von dem Sie glauben, dass er nicht gültig ist, können Sie einen Beweis vorlegen, dass es sich nicht um einen Riss handelt. Ansonsten müssen Sie es so markieren.
Laut den üblichen Antworten, die seit 7 Tagen nicht geknackt wurden, können sie als sicher eingestuft werden. Ein Cop kann seine Antwort als sicher markieren, indem er die Sequenzen aufdeckt, an die er gedacht hat. Sobald eine Antwort sicher ist, kann sie nicht mehr geknackt werden.
Das Ziel ist es, die Anzahl der Bytes Ihres Programms zu minimieren, während Sie ungerissen bleiben.
Beispiel
Der folgende Python-Code übersetzt das n-te Element von A000290 (die quadratischen Zahlen) in A000217 (die dreieckigen Zahlen):
lambda x:sum(range(0,int(x**.5+1)))
Bestimmungen und Anforderungen
Wenn Sie eine Sequenz auswählen, deren Endlichkeit nicht nachgewiesen wurde, müssen Sie alle Begriffe ausgeben, die möglicherweise nicht nur auf der OEIS-Seite aufgeführt sind
Als Ausnahme zu den vorherigen Regeln müssen Sprachen ohne Ganzzahlen mit unendlicher Genauigkeit keine Zahlen außerhalb ihres Bereichs ausgeben oder eingeben.
Die Größe Ihrer Eingabesequenz darf nachweislich nicht kleiner als die Ausgabesequenz sein.
Ihre Eingabesequenz darf keine Wiederholungselemente enthalten (ansonsten ist die Aufgabe so gut wie unmöglich).
Das OEIS enthält einen Index auf seiner Seite (die erste Zahl nach dem "OFFSET" -Header). Dies ist standardmäßig Ihr Offset für n (n entspricht dem Index für das erste Element in der Sequenz), wenn Sie einen anderen Index auswählen, den Sie in angeben müssen Deine Antwort.
Wenn Sie einen anderen Versatz als den im OEIS aufgelisteten auswählen, müssen Sie dennoch alle Elemente in Ihrer Eingabesequenz dem entsprechenden Element in Ihrer Ausgabesequenz zuordnen.
Wenn Ihr Programm eine Eingabe erhält, die nicht in der Eingabereihenfolge enthalten ist, kann es tun, was es will (undefiniertes Verhalten). Es ist jedoch wahrscheinlich in Ihrem besten Interesse, weiterhin eine Ganzzahl auszugeben.
Es ist unsportlich, absichtlich die Ausführung Ihres Codes zu erschweren, sei es durch zeitaufwändige Ausführung oder durch unfreie Sprachauswahl . Während ich letztere durchsetzen werde, kann ich erstere nicht objektiv durchsetzen. Ich bitte Sie jedoch, es nicht zu versuchen, um Spaß zu haben, da dies die Herausforderung speziell für diejenigen mit schwächeren Computern erschwert.
Räuber
Deine Aufgabe als Räuber ist es, ungerissene, unsichere Antworten auszuwählen und die Sequenzen zu finden, zwischen denen sie liegen. Wenn Sie eine Lösung finden, die funktioniert (nicht unbedingt die von der Polizei beabsichtigte Lösung), kommentieren Sie die Sequenzen zu der entsprechenden Antwort.
Räuber sollten sich nicht zu sehr darum kümmern, zu überprüfen, ob zwei bestimmte Sequenzen eine Lösung sind. Sie sollten eine Lösung veröffentlichen, wenn sie mit allen Einträgen in OEIS übereinstimmt. Wenn dies nicht die Reihenfolge ist, an die ein Polizist gedacht hat, kann der Polizist den Beweis erbringen, dass es falsch ist, oder ihn als geknackt markieren, wenn er keinen findet.
quelle
Antworten:
Jelly , 14 Bytes (Gebrochen von @Wolfram)
Probieren Sie es online!
Es sollte ziemlich offensichtlich sein, was dies bewirkt. Tatsächlich gebe ich zum Nutzen der Nicht-Jelly-Benutzer sogar eine Erklärung:
Erläuterung
Die Frage ist, warum es das tut?
Riss
Die fraglichen Sequenzen waren A201647 und A201647 . Sie sind endlich und unterscheiden sich nur in den letzten beiden Elementen:
Wenn also die Eingabe niedrig ist, lasse ich sie gleich und passe einfach eine Funktion an die Transformation der letzten beiden an.
quelle
Jelly , 7 Bytes (Gebrochen von Jonathan Allan)
Probieren Sie es online!
Was es macht
quelle
p
,ÆF
Erträge(p,1)
undÆd
Renditen2
, soḅ
wird uns2p+1
, was bedeutet ,ÆẸ
die erste Primzahl ergeben wird,2
an die Macht dieses Ergebnis erhöht2^(2p+1)
.Python 3, 256 Bytes ( geknackt! )
Probieren Sie es online!
Tut mir leid, wenn dieser Code schrecklich aussieht, ich denke, das ist mein erster Python-Golf. Das Casting in Python erleichtert das Codieren.
quelle
q
?k
scheint die Variable nicht verwendet zu werden, sodass Sie einige Bytes sparen können, indem Sie sie entfernen.Verarbeitung , 184 Bytes, SICHER!
Eine Funktion, die ein int aufnimmt und ein int zurückgibt. Solange sich die eingegebene Nummer im
int
Bereich befindet, sollte das Programm einwandfrei funktionieren.Das ist nicht langsam, nur unlesbar. Viel Glück!
Ich bin überrascht, dass diese Einreichung so lange gedauert hat. Na ja, zumindest ist es die erste sichere Einreichung :)
A000578 bis A000290
Mit anderen Worten: die Würfel zu den Quadraten.
Erläuterung
Bei der Beantwortung der Frage, ob keine Zeichenfolgen (oder Zahlen) angehängt sind , habe ich eine Liste von Verarbeitungskonstanten gefunden, die Ints darstellen. Hat zum Beispiel
CORNER
einen Wert von0
. Die vollständige Liste finden Sie hier . Um den Wert einer Konstanten zu ermitteln, können Sie einfachprint
.Auf diese Weise entschied ich mich, bestimmte Zahlen mit Kombinationen dieser Konstanten zu tauschen, um sie zu verschleiern. Folgendes erhalten Sie also, wenn Sie die Konstanten durch ihre jeweiligen int-Werte ersetzen.
Selbst jetzt wird nicht der vollständige Code angezeigt. Die Farben bleiben erhalten. Bei der Verarbeitung haben Farbvariablen Int-Werte, z. B. Weiß (
#ffffff
) ist-1
,#fffffe
ist-2
,#fffffd
ist-3
und so weiter. Dies kann durchprint
die Farbe ermittelt werden. Vereinfachen wir also die Farben.Wir sind ungefähr auf halbem Weg :) Um die Werte zu verstehen, müssen wir die numerischen Ausdrücke vereinfachen.
Viel klarer! Vereinfachen wir nun den Logarithmus.
Fast vorbei! Jetzt müssen wir diesen
(int)sqrt(red(color(-65536))/16))
Bissen herausfinden .color(-65536)
ist rot, alsorgb(255, 0, 0)
. Jetzt gibt diered()
Funktion den Wert der roten Komponente im Argument zurück (das ist eine Farbe). Wie viel Rot steckt in Rot? Die Antwort lautet255
: Damit bekommen wirDas Einsetzen in das Programm führt zu:
Ja, es ist geschafft!
Zusammenfassend ergibt dies das Quadrat (durch zweimaliges Multiplizieren in der for-Schleife) der Kubikwurzel der eingegebenen Zahl.
quelle
Mathematica (oder was auch immer) - Cracked!
Ich weiß, dass Mathematica keine freie Software ist, aber diese Funktion ist trivial, um auf eine beliebige Lieblingssprache zu portieren, in der Sie es ausführen möchten. Sie berechnet buchstäblich den Wert des gegebenen Grad-9-Polynoms, das an der Eingabe-Ganzzahl ausgewertet wird, und nimmt dann den Ganzzahl-Quotienten von diesem Wert und der 42-stelligen Zahl in der letzten Zeile. Wertet zum Beispiel
f[100]
zu aus-3024847237
.quelle