Cops Abschnitt
Die Räuberabteilung finden Sie hier .
Vielen Dank an FryAmTheEggman , Peter Taylor , Nathan Merrill , xnor , Dennis , Laikoni und Mego für ihre Beiträge.
Herausforderung
Ihre Aufgabe ist es, 2 verschiedene Programme ( vollständige Programme / Funktionen / etc. ) In derselben Sprache und derselben Version (z. B. Python 3.5 ≠ Python 3.4, so dass dies nicht zulässig ist) und bei Angabe von n (unter Verwendung von STDIN / Funktionsargumenten) zu schreiben / etc. ), berechne a (n), wobei a eine OEIS-Sequenz deiner Wahl ist. Eines dieser Programme ist kürzer als das andere. Sie müssen nur das längere Programm der beiden einreichen . Der andere muss gespeichert werden, falls er nach 7 Tagen nicht geknackt wird. Ihr Beitrag wird geknackt, wenn Ihr Programm überholt ist (egal ob 1 Byte oder mehr).
Wenn die von Ihnen gewählte Aufgabe beispielsweise die Ausführung von 2 × n war , könnte dies eine gültige Übermittlung sein (in Python 2):
Python 2, 16 Bytes, Score = 15/16 = 0,9375
print(2*input())
Berechnet A005843 (Offset = 0).
Wenn Ihr Beitrag geknackt wurde, müssen Sie das in Ihrer Kopfzeile wie folgt angeben:
Python 2, 16 Bytes, Score = 15/16 = 0,9375, [geknackt] + Link
print(2*input())
Berechnet A005843 (Offset = 0).
Offset
Diese finden Sie auf jeder OEIS-Seite. Beispielsweise ist für A005843 der Versatz 0,2
. Wir müssen nur den ersten verwenden, nämlich 0
. Dies bedeutet, dass die Funktion für alle Zahlen ≥ 0 definiert ist.
Mit anderen Worten beginnt die Funktion OEIS (n) mit n = 0 . Ihr Programm muss in allen von OEIS angegebenen Fällen funktionieren.
Weitere Informationen finden Sie hier .
Wertung
Die Punktzahl, die Sie für Ihre Einreichung erhalten, entspricht der folgenden Formel:
Score = Länge (in Bytes) des Geheimcodes ÷ Länge (in Bytes) des öffentlichen Code
Das obige Beispiel hat die Punktzahl 15 ÷ 16 = 0,9375.
Die Einsendung mit der niedrigsten Punktzahl gewinnt. Nur Einsendungen, die ihre Lösung eingereicht haben, sind gewinnberechtigt.
Regeln
- Die Aufgabe, die Sie ausführen müssen, ist eine OEIS-Sequenz Ihrer Wahl.
- Bei n wird OEIS (n) ausgegeben . Eine Abweichung ist nicht zulässig, daher müssen Sie genau dieselbe Sequenz erstellen (wenn Sie n angeben, müssen Sie OEIS (n) ausgeben).
- Einreichungen, die nicht innerhalb von 7 Tagen geknackt werden, gelten nach der Veröffentlichung der Lösung als sicher (Einreichungen, die älter als 7 Tage sind und deren Lösung nicht veröffentlicht wurde, sind weiterhin anfällig für das Knacken).
- In Ihrem Beitrag müssen Sie die folgenden Dinge posten: Name der Sprache , Anzahl der Bytes , vollständiger Code , also keine Pastebin-Links usw. (um Antworten wie Unary zu verhindern), OEIS-Sequenz , Punktzahl mit Längen beider Programme und zusätzlich die Kodierung dafür wird genutzt.
- Hinweis: Dieselbe Sequenz kann nicht zweimal in derselben Sprache veröffentlicht werden. (Wenn die Sequenz A005843 beispielsweise in Pyth erstellt wurde, können Sie Pyth für dieselbe Sequenz nicht erneut verwenden.)
- Eingabe und Ausgabe sind beide dezimal (Basis 10)
Bestenliste
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><style>table th,table td{padding: 5px;}th{text-align: left;}.score{text-align: right;}table a{display: block;}.main{float: left;margin-right: 30px;}.main h3,.main div{margin: 5px;}.message{font-style: italic;}#api_error{color: red;font-weight: bold;margin: 5px;}</style> <script>QUESTION_ID=88979;var safe_list=[];var uncracked_list=[];var n=0;var bycreation=function(x,y){return (x[0][0]<y[0][0])-(x[0][0]>y[0][0]);};var byscore=function(x,y){return (x[0][1]>y[0][1])-(x[0][1]<y[0][1]);};function u(l,o){jQuery(l[1]).empty();l[0].sort(o);for(var i=0;i<l[0].length;i++) l[0][i][1].appendTo(l[1]);if(l[0].length==0) jQuery('<tr><td colspan="3" class="message">none yet.</td></tr>').appendTo(l[1]);}function m(s){if('error_message' in s) jQuery('#api_error').text('API Error: '+s.error_message);}function g(p){jQuery.getJSON('//api.stackexchange.com/2.2/questions/' + QUESTION_ID + '/answers?page=' + p + '&pagesize=100&order=desc&sort=creation&site=codegolf&filter=!.Fjs-H6J36w0DtV5A_ZMzR7bRqt1e', function(s){m(s);s.items.map(function(a){var he = jQuery('<div/>').html(a.body).children().first();he.find('strike').text('');var h = he.text();if (!/cracked/i.test(h) && (typeof a.comments == 'undefined' || a.comments.filter(function(b){var c = jQuery('<div/>').html(b.body);return /^cracked/i.test(c.text()) || c.find('a').filter(function(){return /cracked/i.test(jQuery(this).text())}).length > 0}).length == 0)){var m = /^\s*((?:[^,;(\s]|\s+[^-,;(\s])+).*(0.\d+)/.exec(h);var e = [[n++, m ? m[2]-0 : null], jQuery('<tr/>').append( jQuery('<td/>').append( jQuery('<a/>').text(m ? m[1] : h).attr('href', a.link)), jQuery('<td class="score"/>').text(m ? m[2] : '?'), jQuery('<td/>').append( jQuery('<a/>').text(a.owner.display_name).attr('href', a.owner.link)) )];if(/safe/i.test(h)) safe_list.push(e);else uncracked_list.push(e);}});if (s.items.length == 100) g(p + 1);else{var s=[[uncracked_list, '#uncracked'], [safe_list, '#safe']];for(var i=0;i<2;i++) u(s[i],byscore);jQuery('#uncracked_by_score').bind('click',function(){u(s[0],byscore);return false});jQuery('#uncracked_by_creation').bind('click',function(){u(s[0],bycreation);return false});}}).error(function(e){m(e.responseJSON);});}g(1);</script><link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/Sites/codegolf/all.css?v=7509797c03ea"><div id="api_error"></div><div class="main"><h3>Uncracked submissions</h3><table> <tr> <th>Language</th> <th class="score">Score</th> <th>User</th> </tr> <tbody id="uncracked"></tbody></table><div>Sort by: <a href="#" id="uncracked_by_score">score</a> <a href="#" id="uncracked_by_creation">creation</a></div></div><div class="main"><h3>Safe submissions</h3><table> <tr> <th>Language</th> <th class="score">Score</th> <th>User</th> </tr> <tbody id="safe"></tbody></table></div>
Hinweis
Diese Herausforderung ist beendet. Der endgültige Gewinner ist feersum mit seiner Seed-Antwort . Herzliche Glückwünsche! :).
Du kannst immer noch neue Cops einreichen, aber sei dir bewusst, dass sie nicht mehr miteinander konkurrieren.
Antworten:
Seed , 5861 Bytes, Score = 5012/5861 = 0,85
Die Sequenz ist Primzahlen ( A000040 ) mit Versatz 1. a (1) = 2, a (2) = 3, a (3) = 5 usw.
Die Befunge-98-Programme wurden mit diesem Interpreter getestet .
Lösung:
quelle
Jelly , 5 Bytes , Score 0.8 (4/5) [ geknackt! ]
Berechnet A127721 .
Probieren Sie es online!
Hier ist die Lösung:
n
R
: Liste von[1, 2, ..., n]
ÆḊ
: In unserem Fall wird die Quadratwurzel der Quadratsumme zurückgegeben (was beim zukünftigen Golfen nützlich sein kann)!Ḟ
: Boden das Ergebnis.Die Dokumentation für
ÆḊ
liest:Der Schlüssel wird auf nicht quadratische Matrizen erweitert . Die "Determinante" einer nichtquadratischen Matrix ist normalerweise undefiniert, aber eine vernünftige Definition ist
sqrt(det(A A^T))
(die sich für eine quadratische Matrix auf reduziert|det(A)|
). In unserem FallA A^T
handelt es sich um eine 1 x 1-Matrix, die die Summe der Quadrate enthält. Die Quadratwurzel der Determinante davon gibt uns genau das, was wir brauchen, um das letzte Byte zu entfernen!quelle
Retina , 28 Bytes, Score = 0,9286 ... (26/28), durch Feersum geknackt
Berechnet A192687 (Offset = 0).
Probieren Sie es online! (Die erste Zeile aktiviert eine durch Zeilenvorschub getrennte Testsuite.)
Dies ist der Unterschied zwischen Hofstadters männlichen und weiblichen Sequenzen. ( Relevante PPCG-Herausforderung. )
Dies war mein ursprünglicher Code:
Diese Antwort war ohnehin ein bisschen riskant, da die eigentliche Lösung auf einem regulären Ausdruck basiert, den ich vor einigen Monaten im Chat als den kürzesten bekannten regulären Ausdruck für Fibonacci-Tests angekündigt habe. Zum Glück schien sich niemand daran zu erinnern. :)
quelle
Hexagony , 91 Bytes, Score = 0,725274725 (66/91) [Gebrochen]
Berechnet A000045 (Fibonacci-Sequenz, Offset 0).
Es wird mich nicht überraschen, wenn es jemand schafft, diese und meine Golfversion zu schlagen
, obwohl es schwierig sein sollte.Edit: Heilige Kuh, @MartinEnder hat mich mit einer 33-Byte-Lösung ausgepeitscht.
Golfen (91):
Formatiert:
Probieren Sie es online!
Ich werde keine Erklärung dafür veröffentlichen, es ist zu schrecklich ...
Golfen (66):
Formatiert:
Farbig:
Probieren Sie es online!
Erläuterung:
Das von mir verwendete Speicherlayout sieht ungefähr so aus:
Die Initialisierung (in Schwarz) setzt a = 0 und b = 1. Dann die Hauptschleife:
a
zur Eingabezelle -'"
(
{{=+
"+{=*
'+
'+}=*
"=+
"+
}+
Sobald die Eingabezelle 0 erreicht, bewegt sich der MP zu a, druckt und beendet.
Was ich getan haben könnte, um mehr Bytes zu sparen, ist & zu verwenden, wodurch die aktuelle Zelle entweder auf ihren linken oder rechten Nachbarn gesetzt wird. Ich hätte auch eine etwas bessere Flusskontrolle haben können, aber es ist in Ordnung, wie es aussieht.
quelle
&
, um die Eingabe um die Kanten a / b / a + b zu verschieben, damit sie bei der nächsten Iteration ihre Rollen tauschen. Auf diese Weise muss ich a, b und a + b überhaupt nicht bewegen.M , 10 Bytes , Score 0,6 (6/10) [ geknackt ]
Ein bisschen betrogen, da M und Jelly ziemlich ähnlich sind, aber nach den Regeln erlaubt. Diese Version basiert auf @ LeakyNuns Crack zu meiner Gelee-Antwort.
Dies berechnet die Sequenz A068943 .Probieren Sie es online!
Beabsichtigte Lösung
Der folgende Code funktioniert in M / Jelly.
Ich hatte tatsächlich eine 4-Byte-Lösung, zu der ich etwas Flaum hinzugefügt habe, um es schwieriger zu machen, mit roher Gewalt zu knacken.
Probieren Sie es online!
Dies ist der, den ich erklären werde.
quelle
Stack Cats , 14 Bytes, Score = 13/14 = 0.929 [ geknackt ]
Das sind 10 Byte Code plus 4 für die Argumente
-nm
.Berechnet A017053 . Falls OEIS ausfällt, fängt das
a(n) = 7n + 6
bei ann = 0
.Der vollständige Code (ohne
-m
Argument verwendbar ) ist![_-_:-_-_-_-:_-_]!
Die versteckte Lösung war
quelle
Schneemann , 50 Bytes, Score = 0,9 (45/50) [ geknackt von Lynn ]
Dies ist eine Unterroutine, die eine Zahl als Argument verwendet und eine andere Zahl zurückgibt.
Berechnet A122649 (Offset = 1).
Probieren Sie es online!
quelle
Haskell, 15 Bytes, Score = 13/15 (0,866) ( geknackt )
A109613 mit Versatz 0. Wiederholt jede ungerade Zahl zweimal.
quelle
Brachylog , 27 Bytes, Score = 0,666 ... (18/27), Gebrochen!
Berechnet A010551 (Offset = 0).
Sie können es hier online ausprobieren .
Erläuterung
Da die allermeisten Leute diese Sprache nicht kennen und ich diese Antwort hauptsächlich veröffentliche, um die Leute dazu zu bringen, sich damit zu beschäftigen (siehe: Brachylog's Wiki ), werde ich den obigen Code kurz erläutern:
quelle
Haskell, 4 Bytes / 5 Bytes ( geknackt von Leaky Nun )
Fangen wir einfach an. A000012 , die Folge aller Einsen (Offset 0). Hier ist eine Tabelle:
5 Bytes:
quelle
Java 7, 53 Bytes, Score = 0,9623 (51/53) Gebrochen
Berechnet die Perrin-Sequenz A001608
Erster Code Golf Versuch, zögern Sie nicht, auf Fehler hinzuweisen.
Erklärung nach dem Knacken:
Meilen verkürzten die ersten drei Werte (0,1,2) -> (3,0,2) auf
während meine eigene lösung etwas überarbeitet war
Wenn Sie die beiden Tricks kombinieren, erhalten Sie
für ein 47-Byte
das sieht für Java ziemlich kompakt aus :)
quelle
Cheddar, 7 Bytes, Score = 0,8571 (6/7), [geknackt]
Ziemlich einfach, nur die Potenzen von zwei. OEIS A000079
Probieren Sie es online!
quelle
J, 17 Bytes, Score = 0,8235 (14/17) ( geknackt )
Berechnet A002478 .
Das Lustige ist, dass diese Version ursprünglich die kurze war, die geheim gehalten werden sollte.
quelle
Python 2, 43 Bytes, Score = 0,9302 (40/43), geknackt
f=lambda n:n==1or-(-sum(map(f,range(n)))/3)
Berechnet A072493
Mal sehen, ob irgendjemand alle 3 Bytes abwerfen kann.
quelle
True
wird, um darzustellen1
?s=1;exec"a=-(-s/3);s+=a;"*input();print a
für 41.if x
wahr ist), ist eine gültige Rückgabe.Pyke, 11 Bytes, Score = 0,45 (5/11) [geknackt]
Berechnet OEIS A180255
Probieren Sie es hier aus!
quelle
Z
ist undokumentiert; die Sprache behauptet, stapelbasiert zu sein, aber nach dem*
es nur Nullen auf dem Stapel gibt, obwohl dies Auswirkungen auf den Rest des Codes hat; die Reihenfolge der Parameter ist nicht eindeutig festgelegt)Jelly , 9 Bytes , Ergebnis 0.5556 (5/9) [ geknackt ]
Dies berechnet die Sequenz A119259 . Probieren Sie es online!
quelle
Brachylog , 11 Bytes, Score = 10/11 = 0,909, geknackt!
Berechnet A173426 .
Probieren Sie es online!
Erläuterung
quelle
J, 20 Bytes, Score = 0,75 (15/20) ( geknackt )
Berechnet A001654 .
Meine Lösung für 15 Bytes war
quelle
Sesos , 14 Bytes, Score = 0,8571 (12/14) ( geknackt )
Berechnet A000290 .
Probieren Sie es online!
Hinweise
Diese Binärdatei wurde vom folgenden Assembler generiert:
quelle
MATL , 11 Bytes, Score = 0,8181 (9/11), geknackt
Berechnet die Möbius-Funktion oder A087811 (Offset 1).
Probieren Sie es online!
Ressourcen für Räuber
Ich denke, das sollte einfach sein, aber hier ist trotzdem etwas Hilfe.
Code Erklärung:
Sprache Dokumentation .
MATL- Chatroom .
quelle
YftdA_wn^
Jelly , 11 Bytes , Ergebnis 0.5455 (6/11) [ geknackt ]
Dies berechnet die Sequenz A068943 . Probieren Sie es online!
quelle
MarioLANG , 87 Bytes, Score = 0,839 (73/87), geknackt
Berechnet A000217 , die Dreieckszahlen. Offset 0.
Probieren Sie es online!
Kurze Lösung:
Da der Riss nur 1 Byte abnahm, teile ich meine Lösung in 73 Byte, die insgesamt einen anderen Algorithmus verwendet:
Probieren Sie es online!
Das erste Programm legt alle Zahlen von n bis 1 auf dem Band ab und addiert dann alle Zahlen, bis es auf eine Zelle mit dem Wert 0 stößt. Dazu wird jede Zelle in die beiden benachbarten Zellen kopiert, die richtige Kopie dekrementiert und der Vorgang wiederholt, bis 0 erreicht ist. Während dieses Vorgangs sieht das Band folgendermaßen aus (für n = 5):
... und so weiter. Dann bewegt es sich nach links und summiert die Zellen, bis es eine Zelle mit 0 erreicht.
Das zweite Programm funktioniert nur mit drei Zellen des Bandes. Bis die erste Zelle 0 erreicht, geschieht Folgendes:
Nachdem die erste Zelle 0 erreicht hat, enthält die dritte Zelle n + (n-1) + (n-2) + ... + 2 + 1.
quelle
:
wenn es in der untersten Zeile steht, weshalb ich die nachgestellte Zeile in den Link aufgenommen habe. Martin und ich haben das in einer anderen meiner MarioLANG-Antworten besprochen.M , 18 Bytes , Score 0,3889 (7/18) [ geknackt ]
Dieser Ansatz basiert auf @ Sp3000s Golf meiner Jelly-Antwort.
Der Code berechnet die Sequenz A116881 (Zeilensummen von CM (1,2) ). Probieren Sie es online!
quelle
Haskell, 28 Bytes, Score = 0,3571 (10/28), geknackt
A006519 , die höchste Potenz von 2 Teilen
n
, beginnend bein=1
.Während Sie für einen kürzeren Code krachen, sehe ich das eigentliche Rätsel als auf 10 Bytes reduziert an.
quelle
05AB1E , 9 Bytes, Score = 0,6667 (6/9), gerissen
Berechnet: A087811
Probieren Sie es online aus
quelle
Hexagony , 7 Bytes, Score = 0,857 (6/7), geknackt
Nicht entworfen, um die gewinnende Unterordnung zu sein, aber definitiv ein Gehirncracker. Es ist eigentlich nicht so schwer, wenn Sie darüber nachdenken: p. Code:
Oder eine besser lesbare Version:
Berechnet A052246 .
Probieren Sie es online! .
quelle
J, 9 Bytes, Score = 0,6667 (6/9) ( geknackt von Dennis )
Berechnet A056594 .
quelle
J, 10 Bytes, Score = 0,9 (9/10) ( geknackt von Dennis )
Ermittelt A000326 .
Dieser sollte einfach sein.
Online-Dolmetscher .
Quickref .
quelle
05AB1E , 7 Bytes, Score = 0,571 (4/7), gerissen
Berechnet: A006331
Probieren Sie es online aus
Nachdem ich 5 einzigartige Versionen dieser Sequenz golfen habe, bevor ich diese öffentliche Version gefunden habe, hoffe ich, dass ich da draußen keine offensichtlichen Verbesserungen hinterlassen habe, so dass es zumindest eine Herausforderung für die Räuber wird.
quelle
M , 9 Bytes , Score 0,6667 (6/9) [ geknackt ]
Ein bisschen betrogen, da M und Jelly ziemlich ähnlich sind, aber nach den Regeln erlaubt. @ Meilen Crack auf meine Gelee-Antwort funktioniert nicht in M; es fehlt die
œċ
Atom.Dies berechnet die Sequenz A119259 . Probieren Sie es online!
quelle