Section de flics
La section des voleurs peut être trouvée ici .
Merci à FryAmTheEggman , Peter Taylor , Nathan Merrill , xnor , Dennis , Laikoni et Mego pour leurs contributions.
Défi
Votre tâche consiste à écrire 2 programmes différents (programmes complets / fonctions / etc. ) dans le même langage et la même version (par exemple, Python 3.5 Python 3.4, ce qui n’est donc pas autorisé), et n (avec les arguments STDIN / function). / etc. ), calculez a (n) où a est une séquence OEIS de votre choix. L'un de ces programmes est plus court que l'autre. Il vous suffit de soumettre le programme plus long des deux. L'autre doit être sauvegardé au cas où il ne serait pas fissuré après 7 jours. Votre soumission est fissurée lorsque votre programme a été passé au golf (que ce soit par un octet ou plus).
Par exemple, si la tâche que vous avez choisie consistait à exécuter 2 × n , il pourrait s'agir d'une soumission valide (en Python 2):
Python 2, 16 octets, score = 15/16 = 0.9375
print(2*input())
Calcule A005843 , (offset = 0).
Si votre soumission a été fissurée, vous devez l'indiquer dans l'en-tête de la manière suivante:
Python 2, 16 octets, score = 15/16 = 0.9375, [fissuré] + lien
print(2*input())
Calcule A005843 , (offset = 0).
Décalage
Cela se trouve sur chaque page OEIS. Par exemple, pour A005843 , le décalage est 0,2
. Nous avons seulement besoin d'utiliser le premier, qui est 0
. Cela signifie que la fonction est définie pour tous les nombres ≥ 0.
En d'autres termes, la fonction OEIS (n) commence par n = 0 . Votre programme doit fonctionner pour tous les cas donnés par OEIS.
Plus d'informations peuvent être trouvées ici .
Notation
Le score que vous obtenez pour votre soumission est égal à la formule suivante:
Score = Longueur (en octets) du code secret ÷ Longueur (en octets) du code public
L'exemple ci-dessus a le score 15 ÷ 16 = 0,9375.
La soumission avec le score le plus bas gagne. Seules les soumissions qui ont publié leur solution seront éligibles pour gagner.
Règles
- La tâche que vous devez effectuer est une séquence OEIS de votre choix.
- Donné n , sortie OEIS (n) . La déviation n'est pas autorisée, vous devez donc produire exactement la même séquence (lorsque n est donné, vous devez générer OEIS (n)).
- Les soumissions qui ne sont pas fissurées dans un délai de 7 jours sont considérées comme sûres après la publication de la solution (les soumissions de plus de 7 jours qui n'ont pas leur solution affichée sont toujours vulnérables au craquage).
- Dans votre soumission, vous devez publier les éléments suivants: nom de la langue , nombre d'octets , code complet , donc pas de liens pastebin, etc. (pour éviter les réponses telles que Unary), séquence OEIS , partitionnez les longueurs des deux programmes et l'encodage est utilisé.
- Remarque: la même séquence ne peut pas être postée deux fois dans la même langue. (Par exemple, si la séquence A005843 a été réalisée en Pyth, vous ne pouvez plus utiliser Pyth pour cette même séquence.)
- Entrée et sortie en décimal (base 10)
Classement
<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>
Remarque
Ce défi est terminé. Le vainqueur final est feersum avec sa réponse Seed . Toutes nos félicitations! :)
Vous pouvez toujours envoyer de nouveaux flics, mais sachez qu'ils ne sont plus en concurrence.
Réponses:
Graine , 5861 octets, score = 5012/5861 = 0,85
La séquence est des nombres premiers ( A000040 ) avec le décalage 1. a (1) = 2, a (2) = 3, a (3) = 5 etc.
Les programmes Befunge-98 ont été testés avec cet interprète .
Solution:
la source
Jelly , 5 bytes , score 0,8 (4/5) [ fissuré! ]
Calcule A127721 .
Essayez-le en ligne!
Voici la solution:
n
R
: liste de[1, 2, ..., n]
ÆḊ
: Dans notre cas, cela retournera en fait la racine carrée de la somme des carrés (ce qui peut être utile pour le golf à venir)!Ḟ
: sol le résultat.La documentation pour
ÆḊ
lit:La clé est étendue aux matrices non carrées . Le "déterminant" d'une matrice non carrée est généralement indéfini, mais une définition raisonnable est
sqrt(det(A A^T))
(qui pour une matrice carrée se réduit à|det(A)|
). Dans notre cas,A A^T
est une matrice 1 x 1 contenant la somme des carrés. La racine carrée du déterminant de cela nous donne exactement ce dont nous avons besoin pour éliminer le dernier octet!la source
Retina , 28 octets, score = 0,9286 ... (26/28), fissuré par le feersum
Calcule A192687 , (offset = 0).
Essayez-le en ligne! (La première ligne active une suite de tests séparée par saut de ligne.)
C'est la différence entre les séquences masculines et féminines de Hofstadter . ( Défi PPCG pertinent. )
C'était mon code d'origine:
Cette réponse était un peu un pari quand même, parce que la solution actuelle est basée sur une regex que j’ai annoncé être la plus courte regex de test de Fibonacci connue dans le chat il ya quelques mois. Heureusement, personne ne semblait s'en souvenir. :)
la source
Hexagony , 91 bytes, Score = 0.725274725 (66/91) [Cracked]
Calcule A000045 (séquence de Fibonacci, décalage 0).
Je ne serai pas trop surpris si quelqu'un parvient à battre ceci et ma version plus golfée
, même si cela devrait être difficile.Sainte Vache, @MartinEnder m'a fouetté avec une solution de 33 octets.
Golfé (91):
Formaté:
Essayez-le en ligne!
Je ne vais pas poster une explication à cela, c'est trop horrible ...
Golfé (66):
Formaté:
Coloré:
Essayez-le en ligne!
Explication:
La disposition de la mémoire que j'ai utilisée ressemble un peu à ceci:
L'initialisation (en noir) définit a = 0 et b = 1. Ensuite, la boucle principale:
a
la cellule d'entrée -'"
(
{{=+
"+{=*
'+
'+}=*
"=+
"+
}+
Une fois que la cellule entrée atteint 0, le MP passe à a, imprime et quitte.
Ce que j’aurais pu faire pour économiser plus d’octets, c’est d’utiliser &, qui définit simplement la cellule actuelle sur son voisin gauche ou droit. J'aurais aussi pu avoir un peu plus de contrôle de flux, mais ça va comme ça.
la source
&
c’est de déplacer l’entrée autour des bords a / b / a + b pour qu’ils échangent leurs rôles à la prochaine itération. De cette façon, je n'ai pas besoin de déplacer a, b et a + b du tout.M , 10 octets , score 0,6 (6/10) [ fissuré ]
Un peu trompeur puisque M et Jelly sont assez similaires, mais autorisés par les règles. Cette version est basée sur la réponse de @ LeakyNun à ma réponse sur Jelly.
Ceci calcule la séquence A068943 . Essayez-le en ligne!
Solution envisagée
Le code suivant fonctionne dans M / Jelly.
J'avais en fait une solution de 4 octets à laquelle j'ai ajouté des peluches pour le rendre plus difficile à résoudre en utilisant la force brute.
Essayez-le en ligne!
C'est celui que je vais expliquer.
la source
Stack Cats , 14 octets, score = 13/14 = 0.929 [ fissuré ]
C'est 10 octets de code, plus 4 pour les arguments
-nm
.Calcule A017053 . Dans le cas où OEIS est en panne, c'est
a(n) = 7n + 6
à partir den = 0
.Le code complet (utilisable sans
-m
argument) est![_-_:-_-_-_-:_-_]!
La solution cachée était
la source
Bonhomme de neige , 50 octets, score = 0.9 (45/50) [ fissuré par Lynn ]
C'est un sous-programme qui prend un nombre comme argument et retourne un autre nombre.
Calcule A122649 (offset = 1).
Essayez-le en ligne!
la source
Haskell, 15 octets, score = 13/15 (0,866) ( fissuré )
A109613 avec décalage 0. Répète chaque nombre impair deux fois.
la source
Brachylog , 27 octets, score = 0.666 ... (18/27), Cracked!
Calcule A010551 (offset = 0).
Vous pouvez l' essayer en ligne ici .
Explication
Comme la grande majorité des gens ne connaissent pas cette langue et que je poste cette réponse principalement pour inciter les gens à la consulter (voir: le wiki de Brachylog ), je vais vous donner une brève explication du code ci-dessus:
la source
Haskell, 4 octets / 5 octets ( fissuré par Leaky Nun )
Commençons simple. A000012 , la séquence de tous les 1 (décalage 0). Voici un tableau:
5 octets:
la source
Java 7, 53 octets, score = 0.9623 (51/53) fissuré
Calcule la séquence de Perrin, A001608
Première tentative de code de golf, n'hésitez pas à signaler les erreurs éventuelles.
Explication après la fissuration:
miles raccourci les trois premières valeurs (0,1,2) -> (3,0,2) à
alors que ma propre solution était un peu sur-ingénierie
En combinant les deux astuces, vous obtenez
pour un 47 octets
qui a l'air plutôt compact pour Java :)
la source
Cheddar, 7 octets, score = 0,8571 (6/7), [fissuré]
Assez simple, juste les pouvoirs de deux. OEIS A000079
Essayez-le en ligne!
la source
J, 17 octets, score = 0,8235 (14/17) ( fissuré )
Calcule A002478 .
Ce qui est amusant, c’est que cette version était à l’origine la version courte à garder secrète.
la source
Python 2, 43 octets, score = 0.9302 (40/43), fissuré
f=lambda n:n==1or-(-sum(map(f,range(n)))/3)
Calcule A072493
Voyons si quelqu'un peut jouer au golf avec les 3 octets.
la source
True
est utilisé pour représenter1
?s=1;exec"a=-(-s/3);s+=a;"*input();print a
pour 41.if x
est vraie) est un retour valide.Pyke, 11 octets, score = 0.45 (5/11) [fissuré]
Calcule OEIS A180255
Essayez-le ici!
la source
Z
est non documenté; le langage prétend être basé sur une pile, mais après,*
il ne reste que des zéros sur la pile même si cela a un effet sur le reste du code; l'ordre des paramètres n'est pas clairement défini.)Gelée , 9 octets , score de 0,5556 (5/9) [ fissuré ]
Ceci calcule la séquence A119259 . Essayez-le en ligne!
la source
Brachylog , 11 octets, score = 10/11 = 0,909, fissuré!
Calcule A173426 .
Essayez-le en ligne!
Explication
la source
J, 20 octets, score = 0,75 (15/20) ( fissuré )
Calcule A001654 .
Ma solution pour 15 octets était
la source
Sesos , 14 octets, score = 0,8571 (12/14) ( fissuré )
Calcule A000290 .
Essayez-le en ligne!
Conseils
Ce fichier binaire a été généré par l'assembleur suivant:
la source
MATL , 11 octets, score = 0,8181 (9/11), fissuré
Calcule la fonction Möbius ou A087811 (décalage 1).
Essayez-le en ligne!
Ressources pour les voleurs
Je pense que celui-ci devrait être facile, mais de toute façon voici une aide.
Explication du code:
Documentation linguistique .
Salle de discussion MATL .
la source
YftdA_wn^
Jelly , 11 octets , score 0.5455 (6/11) [ fissuré ]
Ceci calcule la séquence A068943 . Essayez-le en ligne!
la source
MarioLANG , 87 octets, score = 0.839 (73/87), fissuré
Calcule A000217 , les nombres triangulaires. Décalage 0.
Essayez-le en ligne!
Solution courte:
Comme la fissure n'a pris qu'un octet, je vais partager ma solution en 73 octets, ce qui utilise un algorithme totalement différent:
Essayez-le en ligne!
Le premier programme affiche tous les nombres de n à 1 le long de la bande, puis additionne tous les nombres jusqu'à trouver une cellule de valeur 0. Pour ce faire, il copie chaque cellule dans les deux cellules adjacentes, décrémente la copie de droite et répète le processus jusqu'à atteindre 0. Pendant ce processus, la bande ressemble à ceci (pour n = 5):
... etc. Ensuite, il se déplace vers la gauche, en sommant les cellules jusqu'à atteindre une cellule avec 0.
Le deuxième programme ne fonctionne qu'avec trois cellules de la bande. Jusqu'à ce que la première cellule atteigne 0, il effectue les opérations suivantes:
Lorsque la première cellule atteint 0, la troisième cellule contiendra n + (n-1) + (n-2) + ... + 2 + 1.
la source
:
si c'est sur la ligne du bas, c'est pourquoi j'ai inclus le retour à la ligne final dans le lien. Martin et moi en avons discuté dans une autre de mes réponses à MarioLANG.M , 18 octets , note de 0,3889 (7/18) [ fissuré ]
Cette approche est basée sur la réponse de Jelly de @ Sp3000 au golf .
Le code calcule la séquence A116881 (somme des lignes de CM (1,2) ). Essayez-le en ligne!
la source
Haskell, 28 octets, score = 0,3571 (10/28), fissuré
A006519 , la plus grande puissance de 2 divisant
n
, à partir den=1
.Bien que vous obteniez du crédit pour tout code plus court, j’estime que le vrai casse-tête est de passer à 10 octets.
la source
05AB1E , 9 octets, score = 0.6667 (6/9), fissuré
Calculs : A087811
Essayez-le en ligne
la source
Hexagony , 7 octets, score = 0,857 (6/7), fissuré
Non conçu pour être la soumission gagnante, mais certainement un casse-tête. Ce n’est pas si difficile d’y penser: p. Code:
Ou une version plus lisible:
Calcule A052246 .
Essayez-le en ligne! .
la source
J, 9 octets, score = 0.6667 (6/9) ( fissuré par Dennis )
Calcule A056594 .
la source
J, 10 octets, score = 0.9 (9/10) ( fissuré par Dennis )
Calcule A000326 .
Celui-ci devrait être facile.
Interprète en ligne .
Quickref .
la source
05AB1E , 7 octets, score = 0.571 (4/7), fissuré
Calculs : A006331
Essayez-le en ligne
Après avoir joué au golf cinq versions uniques de cette séquence avant de trouver cette version publique, j'espère n'avoir laissé aucune amélioration évidente pour que ce soit au moins un défi pour les voleurs.
la source
M , 9 octets , score 0,6667 (6/9) [ fissuré ]
Un peu trompeur puisque M et Jelly sont assez similaires, mais autorisés par les règles. La réponse de @miles à ma réponse de gelée ne fonctionne pas dans M; il manque l'
œċ
atome.Ceci calcule la séquence A119259 . Essayez-le en ligne!
la source