Sección de policías
La sección de ladrones se puede encontrar aquí .
Gracias a FryAmTheEggman , Peter Taylor , Nathan Merrill , xnor , Dennis , Laikoni y Mego por sus contribuciones.
Desafío
Su tarea es escribir 2 programas diferentes (programas completos / funciones / etc. ) en el mismo idioma y la misma versión (por ejemplo, Python 3.5 ≠ Python 3.4, por lo que no está permitido), y cuando se le da n (usando argumentos STDIN / function / etc. ), calcule a (n) donde a es una secuencia OEIS de su elección. Uno de esos programas es más corto que el otro. Solo necesita enviar el programa más largo de los dos. El otro debe guardarse en caso de que no se agriete después de 7 días. Su envío se agrieta cuando su programa ha sido superado (ya sea por 1 byte o más).
Por ejemplo, si la tarea que eligió fue realizar 2 × n , este podría ser un envío válido (en Python 2):
Python 2, 16 bytes, puntaje = 15/16 = 0.9375
print(2*input())
Calcula A005843 , (desplazamiento = 0).
Si su envío ha sido descifrado, entonces debe indicarlo en su encabezado así:
Python 2, 16 bytes, puntaje = 15/16 = 0.9375, [agrietado] + enlace
print(2*input())
Calcula A005843 , (desplazamiento = 0).
Compensar
Esto se puede encontrar en cada página OEIS. Por ejemplo, para A005843 , el desplazamiento es 0,2
. Solo necesitamos usar el primero, que es 0
. Esto significa que la función se define para todos los números ≥ 0.
En otras palabras, la función OEIS (n) comienza con n = 0 . Su programa debe funcionar para todos los casos proporcionados por OEIS.
Más información se puede encontrar aquí .
Puntuación
La puntuación que obtiene por su envío es igual a la siguiente fórmula:
Puntuación = Longitud (en bytes) del código secreto ÷ Longitud (en bytes) del código público
El ejemplo anterior tiene el puntaje 15 ÷ 16 = 0.9375.
La presentación con la puntuación más baja gana. Solo los envíos que hayan publicado su solución serán elegibles para ganar.
Reglas
- La tarea que debe hacer es una secuencia OEIS de su elección.
- Dado n , salida OEIS (n) . La desviación no está permitida, por lo que debe producir exactamente la misma secuencia (cuando se le da n, debe generar OEIS (n)).
- Los envíos que no se descifran dentro de un período de 7 días se consideran seguros después de que se haya publicado la solución (los envíos anteriores a 7 días que no tienen su solución publicada aún son vulnerables a ser descifrados).
- En su envío, debe publicar lo siguiente: nombre del idioma , recuento de bytes , código completo , por lo que no hay enlaces de pastebin, etc. (para evitar respuestas como Unary), secuencia OEIS , puntaje con longitudes de ambos programas y, además, la codificación que es usado
- Nota: la misma secuencia no se puede publicar dos veces en el mismo idioma. (Por ejemplo, si la secuencia A005843 se ha realizado en Pyth, no puede usar Pyth nuevamente para esa misma secuencia).
- La entrada y la salida están en decimal (base 10)
Tabla de clasificación
<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>
Nota
Este desafío está terminado. El ganador final es feersum con su respuesta Semilla . ¡Felicidades! :).
Todavía puedes enviar nuevos policías, pero ten en cuenta que ya no están compitiendo.
Respuestas:
Semilla , 5861 bytes, puntaje = 5012/5861 = 0.85
La secuencia es primos ( A000040 ) con desplazamiento 1. a (1) = 2, a (2) = 3, a (3) = 5, etc.
Los programas Befunge-98 fueron probados con este intérprete .
Solución:
fuente
Jalea , 5 bytes , puntaje 0.8 (4/5) [ ¡agrietado! ]
Calcula A127721 .
Pruébalo en línea!
Aquí está la solución:
n
R
: lista de[1, 2, ..., n]
ÆḊ
: ¡En nuestro caso, esto en realidad devolverá la raíz cuadrada de la suma de los cuadrados (que puede ser útil en futuros juegos de golf)!Ḟ
: piso el resultado.La documentación para
ÆḊ
lecturas:La clave se extiende a matrices no cuadradas . El "determinante" de una matriz no cuadrada generalmente no está definido, pero una definición razonable es
sqrt(det(A A^T))
(que para una matriz cuadrada se reduce a|det(A)|
). En nuestro caso,A A^T
es una matriz 1 x 1 que contiene la suma de los cuadrados. ¡La raíz cuadrada del determinante de eso nos da exactamente lo que necesitamos para eliminar el último byte!fuente
Retina , 28 bytes, puntuación = 0.9286 ... (26/28), agrietada por feersum
Calcula A192687 , (desplazamiento = 0).
Pruébalo en línea! (La primera línea habilita un conjunto de pruebas separado por salto de línea).
Esta es la diferencia entre las secuencias masculinas y femeninas de Hofstadter . ( Desafío PPCG relevante ) .
Este fue mi código original:
De todos modos, esta respuesta fue un poco arriesgada, porque la solución real se basa en una expresión regular que anuncié como la expresión regular de prueba de Fibonacci más corta conocida en el chat hace unos meses. Afortunadamente, nadie parecía recordar eso. :)
fuente
Hexagonía , 91 bytes, Puntuación = 0.725274725 (66/91) [Agrietado]
Calcula A000045 (secuencia de Fibonacci, desplazamiento 0).
No me sorprendería demasiado si alguien logra vencer esto y mi versión más golf
, aunque debería ser difícil.Editar: Santa vaca, @MartinEnder me azotó con una solución de 33 bytes.
Golfizado (91):
Formateado:
Pruébalo en línea!
No voy a publicar una explicación para esto, es demasiado horrible ...
Golfizado (66):
Formateado:
De colores:
Pruébalo en línea!
Explicación:
El diseño de memoria que utilicé se parece un poco a esto:
La inicialización (en negro) establece a = 0 yb = 1. Luego, el bucle principal:
a
a la celda de entrada -'"
(
{{=+
"+{=*
'+
'+}=*
"=+
"+
}+
Una vez que la celda de entrada alcanza 0, el MP se mueve a a, imprime y sale.
Lo que podría haber hecho para guardar más bytes es usar &, que simplemente establece la celda actual en su vecino izquierdo o derecho. También podría haber tenido un mejor control de flujo, pero está bien como está.
fuente
&
es mover la entrada alrededor de los bordes a / b / a + b para que intercambien sus roles en la próxima iteración. De esa manera, no necesito mover a, by a + b para nada.M , 10 bytes , puntaje 0.6 (6/10) [ agrietado ]
Un poco tramposo ya que M y Jelly son bastante similares, pero están permitidas por las reglas. Esta versión se basa en el crack de @ LeakyNun a mi respuesta de Jelly.
Esto calcula la secuencia A068943 . Pruébalo en línea!
Solución prevista
El siguiente código funciona en M / Jelly.
De hecho, tenía una solución de 4 bytes a la que agregué un poco de pelusa para que pareciera más difícil de descifrar usando la fuerza bruta.
Pruébalo en línea!
Este es el que voy a explicar.
fuente
Pila de gatos , 14 bytes, puntuación = 13/14 = 0.929 [ agrietada ]
Eso es 10 bytes de código, más 4 para los argumentos
-nm
.Calcula A017053 . En caso de que OEIS esté inactivo, eso es
a(n) = 7n + 6
, comenzando enn = 0
.El código completo (utilizable sin
-m
argumento) es![_-_:-_-_-_-:_-_]!
La solución oculta fue
fuente
Muñeco de nieve , 50 bytes, puntaje = 0.9 (45/50) [ descifrado por Lynn ]
Esta es una subrutina que toma un número como argumento y devuelve otro número.
Calcula A122649 (desplazamiento = 1).
Pruébalo en línea!
fuente
Haskell, 15 bytes, puntaje = 13/15 (0.866) ( agrietado )
A109613 con desplazamiento 0. Repite cada número impar dos veces.
fuente
Brachylog , 27 bytes, puntaje = 0.666 ... (18/27), ¡Agrietado!
Calcula A010551 (desplazamiento = 0).
Puedes probarlo en línea aquí .
Explicación
Como la gran mayoría de las personas no conocen este idioma, y dado que publico esta respuesta principalmente para que la gente lo vea (ver: Wiki Brachylog ), proporcionaré una breve explicación del código anterior:
fuente
Haskell, 4 bytes / 5 bytes ( descifrado por Leaky Nun )
Comencemos simple. A000012 , la secuencia de todos los 1 (desplazamiento 0). Aquí hay una tabla:
5 bytes:
fuente
Java 7, 53 bytes, puntaje = 0.9623 (51/53) Agrietado
Calcula la secuencia de Perrin, A001608
Primer intento de código de golf, siéntase libre de señalar cualquier error.
Explicación después de la fisuración:
millas acortaron los primeros tres valores (0,1,2) -> (3,0,2) a
mientras que mi propia solución fue un poco sobre-diseñado
Combinando los dos trucos, obtienes
para un byte de 47
que se ve bastante compacto para Java :)
fuente
Cheddar, 7 bytes, puntaje = 0.8571 (6/7), [agrietado]
Bastante simple, solo los poderes de dos. OEIS A000079
Pruébalo en línea!
fuente
J, 17 bytes, puntaje = 0.8235 (14/17) ( agrietado )
Calcula A002478 .
Lo curioso es que esta versión fue originalmente la corta que se mantuvo en secreto.
fuente
Python 2, 43 bytes, puntaje = 0.9302 (40/43), agrietado
f=lambda n:n==1or-(-sum(map(f,range(n)))/3)
Calcula A072493
Veamos si alguien puede jugar golf en los 3 bytes.
fuente
True
se usa para representar1
?s=1;exec"a=-(-s/3);s+=a;"*input();print a
por 41.if x
es verdadero) es un retorno válido.Pyke, 11 bytes, puntaje = 0.45 (5/11) [agrietado]
Calcula OEIS A180255
Pruébalo aquí!
fuente
Z
está documentado; el idioma afirma estar basado apilar pero después de la*
hay sólo ceros en la pila a pesar de tener un efecto sobre el resto del código; orden de los parámetros no se especifica claramente)Jalea , 9 bytes , puntaje 0.5556 (5/9) [ agrietado ]
Esto calcula la secuencia A119259 . Pruébalo en línea!
fuente
Brachylog , 11 bytes, puntaje = 10/11 = 0.909, ¡agrietado!
Calcula A173426 .
Pruébalo en línea!
Explicación
fuente
J, 20 bytes, puntaje = 0.75 (15/20) ( agrietado )
Calcula A001654 .
Mi solución para 15 bytes fue
fuente
Sesos , 14 bytes, puntaje = 0.8571 (12/14) ( agrietado )
Calcula A000290 .
Pruébalo en línea!
Consejos
Este archivo binario ha sido generado por el siguiente ensamblador:
fuente
MATL , 11 bytes, puntaje = 0.8181 (9/11), agrietado
Calcula la función de Möbius , o A087811 (desplazamiento 1).
Pruébalo en línea!
Recursos para ladrones
Creo que este debería ser fácil, pero de todos modos aquí hay algo de ayuda.
Explicación del código:
Documentación de idioma .
Sala de chat MATL .
fuente
YftdA_wn^
Gelatina , 11 bytes , puntaje 0.5455 (6/11) [ agrietado ]
Esto calcula la secuencia A068943 . Pruébalo en línea!
fuente
MarioLANG , 87 bytes, puntaje = 0.839 (73/87), agrietado
Calcula A000217 , los números triangulares. Offset 0.
Pruébalo en línea!
Solución corta:
Dado que el crack solo tomó 1 byte, compartiré mi solución en 73 bytes, que usa un algoritmo completamente diferente:
Pruébalo en línea!
El primer programa presenta todos los números de n a 1 a lo largo de la cinta, luego suma todos los números hasta que se encuentra con una celda de valor 0. Lo hace copiando cada celda en las dos celdas adyacentes, decrementando la copia correcta y repitiendo el proceso hasta llegar a 0. Durante este proceso, la cinta se ve así (para n = 5):
... y así. Luego se mueve hacia la izquierda, sumando las celdas hasta llegar a una celda con 0.
El segundo programa solo funciona con tres celdas de la cinta. Hasta que la primera celda llegue a 0, hace lo siguiente:
Después de que la primera celda llegue a 0, la tercera celda contendrá n + (n-1) + (n-2) + ... + 2 + 1.
fuente
:
si está en la línea de fondo, por lo que incluí la nueva línea final en el enlace. Martin y yo discutimos esto en otra de mis respuestas de MarioLANG.M , 18 bytes , puntaje 0.3889 (7/18) [ agrietado ]
Este enfoque se basa en el golf de @ Sp3000 de mi respuesta Jelly.
El código calcula la secuencia A116881 (sumas de filas de CM (1,2) ). Pruébalo en línea!
fuente
Haskell, 28 bytes, puntaje = 0.3571 (28/10), agrietado
A006519 , la potencia más alta de 2 divisiones
n
, comenzando enn=1
.Si bien obtienes crédito por descifrar cualquier código más corto, considero que el verdadero acertijo se reduce a 10 bytes.
fuente
05AB1E , 9 bytes, puntaje = 0.6667 (6/9), Agrietado
Calcula: A087811
Pruébalo en línea
fuente
Hexagonía , 7 bytes, puntaje = 0.857 (6/7), agrietado
No está diseñado para ser la presentación ganadora, pero definitivamente es un cracker cerebral. En realidad no es tan difícil si lo piensas: p. Código:
O una versión más legible:
Calcula A052246 .
Pruébalo en línea! .
fuente
J, 9 bytes, puntaje = 0.6667 (6/9) ( descifrado por Dennis )
Calcula A056594 .
fuente
J, 10 bytes, puntaje = 0.9 (9/10) ( descifrado por Dennis )
Calcula A000326 .
Esta debería ser fácil.
Intérprete en línea .
Quickref .
fuente
05AB1E , 7 bytes, puntaje = 0.571 (4/7), Agrietado
Calcula: A006331
Pruébalo en línea
Después de jugar al golf 5 versiones únicas de esta secuencia antes de encontrar esta versión pública, espero no haber dejado ninguna mejora obvia, por lo que al menos será un desafío para los ladrones.
fuente
M , 9 bytes , puntaje 0.6667 (6/9) [ agrietado ]
Un poco tramposo ya que M y Jelly son bastante similares, pero están permitidas por las reglas. El crack de @miles a mi respuesta de Jelly no funciona en M; Carece del
œċ
átomo.Esto calcula la secuencia A119259 . Pruébalo en línea!
fuente