Nota: este desafío está terminado. Las presentaciones son bienvenidas pero no pueden ganar.
Este es el hilo conductor de la policía. El hilo de los ladrones va aquí .
Escriba un código que genere el entero 1
. Si agrega, elimina o sustituye un solo carácter (de su elección), el código debería generar el entero 2
. Cambie un carácter más (el mismo u otro), y el código debería salir 3
. Continúe así todo lo que pueda, pero hasta un máximo de 10. Formatos de salida predeterminados como ans = 1
los aceptados. Puede ignorar la salida a STDERR (o equivalente).
Debe revelar el idioma, el recuento de bytes de su código inicial, la cantidad de enteros para los que funciona, así como una cantidad opcional de caracteres del código inicial. Nota: No tiene que revelar ningún personaje, pero recuerde que revelar personajes podría dificultar a los ladrones, ya que deben usar el mismo personaje en la misma posición. Puede elegir qué carácter usar para denotar caracteres no revelados (por ejemplo, subrayado), pero asegúrese de especificar esto.
Los policías pueden proporcionar el código no descifrado después de una semana y llamar al envío "SEGURO". El envío ganador será el envío sin descifrar más corto que produce el número 10. Si no hay envíos sin descifrar capaces de imprimir 10, el código más corto que produce 9 ganará, y así sucesivamente. Tenga en cuenta que los ladrones no tienen que hacer los mismos cambios que usted, y no tienen que reproducir el código exacto (a menos que revele todos los caracteres). Solo deben reproducir la salida.
Las presentaciones publicadas después del 24 de noviembre son bienvenidas pero no son elegibles para la victoria (porque probablemente habrá menos ladrones).
Publicación de ejemplo:
La siguiente publicación es una presentación en el idioma MyLang
, tiene una longitud de 9 bytes y funciona para los números 1 a 8.
MyLang, 9 bytes, 8 números
Esta presentación funciona durante 1 - 8. No Revelados caracteres se indican con un guión: _
.
abc____i
Tabla de clasificación
Descargo de responsabilidad: la tabla de clasificación no se prueba y es posible que los envíos no descifrados no aparezcan en la lista.
<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=99546;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>
fuente
1
, ¿cómo puedo evitar que los ladrones agreguen)
repetidamente para generar el resto de los números? Lo mismo sería válido para bastantes idiomas1
salga, entonces parece que CJam es una mala elección de lenguaje para este desafío. No hay forma de evitar que los ladrones hagan eso.10
. Esa regla está en su lugar porque muchas presentaciones probablemente se pueden extender al infinito (en teoría), por lo que la puntuación basada en el número más alto alcanzado no tendría sentido.cracked
de alguna forma. Esto es lo que hace actualmente el script de usuario de rediseño .Respuestas:
Hexagonía , 18 bytes, 10 números, SEGURO
Esta presentación funciona durante 1 - 10. No Revelados caracteres se indican con un guión:
_
.Puedes probar Hexagony en línea aquí.
Mi solución:
Hex para la salida 1:
Pruébalo en línea!
<
borde de la memoria está0
, entonces aparece.1
5
8
, pero se invierte<
y recupera8
el camino.5
nuevo1
<
en este punto, el valor de la memoria es 1585 que, mod 256, resulta ser ASCII1
;@
.Hex para la salida 2:
Pruébalo en línea!
Esto sigue el mismo camino, pero en el camino de regreso golpea uno
)
que incrementa el borde de la memoria a 1586, o2
.Hex para la salida 3-9:
Pruébalo en línea!
2
<
, por lo que se rechaza.]
cambia el puntero de instrucción, pero se viene inmediatamente de nuevo con[
)
incrementos a3
!
Huellas dactilares3
$
queda de los dos primeros números, así que saltamos al final (@
)1
cambia el borde de la memoria, pero eso no importa ahora.<
refleja el puntero hacia atrás.1
no importa porque presionamos@
para finalizar el programa.fuente
Retina , 2 bytes, 10 números, agrietados
Funciona de 1 a 10,
_
es un personaje oculto. Esto no debería ser demasiado difícil, pero espero que proporcione un rompecabezas algo interesante. :)Puedes probar Retina en línea aquí.
fuente
Octava, 55 bytes, 10 números, agrietados
_
Es el personaje desconocido.Solución
fuente
Python 2, 9 bytes, 10 números, agrietados
No hay caracteres ocultos. ¿Puedes romperlo sin forzarlo?
fuente
Perl, 12 bytes, 10 números, ¡Agrietado!
Los guiones bajos representan caracteres desconocidos.
Probablemente bastante fácil, y no me sorprendería si hubiera múltiples soluciones. Aún así, puede ser divertido crackear.
(La solución prevista era la misma que la grieta. Esto es fundamentalmente un problema sobre la asignación de 10 a una variable en cuatro caracteres, lo cual es sorprendentemente difícil en Perl; a diferencia de muchos idiomas de golf, no tiene una variable que comience de manera útil en 10.)
fuente
$_=1;say;#-9
, pero no pude encontrar la forma de obtener 10.Perl, 46 bytes, 10 números, caja fuerte
El problema
Los problemas más cortos tienden a resolverse rápidamente, así que pensé en probar uno más largo. Los más largos también tienden a resquebrajarse si las personas dejan un espacio suficiente para escabullirse de algo travieso
say
oexit
adentro, por lo que todas las brechas aquí son cortas. Los caracteres ocultos se representan usando_
.Mi solución
Para imprimir 2, 3, etc., hasta 9, siga cambiando el número asignado a
$b{0}
en la segunda línea (es decir$b{0}=2
,$b{0}=3
, etc.). El programa para 9 se ve así:Luego, para producir 10, comente la primera línea anteponiéndole un
#
carácter.Explicación
Lo primero que hay que tener en cuenta es que la solución no está realmente separada de la eliminación de espacios en blanco: si lo diseñamos con espacios en blanco más legibles, obtenemos esto:
Normalmente, cuando accede a los argumentos de una subrutina en Perl, lo hace copiando de ellos
@_
. Hay una buena razón para esto:@_
alias los argumentos que se le da a la subrutina (por lo que, por ejemplo,(sub { $_[0] = 3 })->($x)
se asignará$x
), algo que normalmente no es deseable.Aunque
@_
pueda parecer mágico, en realidad solo está usando una característica estándar de las partes internas de Perl (que está disponible fácilmente en XS pero solo aparece en algunos casos extraños en Perl puro, como él@_
mismo): una matriz no almacena sus elementos directamente , sino más bien por referencia. Por lo tanto, cuando llamamosb
a la segunda línea a continuación, Perl genera una matriz (llamándola@_
) cuyo primer elemento es una referencia al mismo almacenamiento que$b{0}
usa. (Los valores de hash también se almacenan por referencia; $ _ [0] y $ b {0} hacen referencia al mismo almacenamiento en este punto). Debido a@_
que no está haciendo nada especial desde un punto de vista interno, podemos tomar una referencia al igual que podríamos con cualquier otra matriz, lo que hace que sobreviva a la subrutina en la que se define.Las variables de Perl también se refieren al almacenamiento de datos por referencia. Hace mucho tiempo, la gente solía usar código como
*x = *y;
establecer$x
como un alias para$y
(haciendo referencia a lo mismo), del mismo modo@x
como un alias para@y
,%x
como un alias para%y
, y así sucesivamente. Eso más bien rompe la invariante de que las variables con nombres similares no tienen que actuar de manera similar, por lo que Perl moderno ofrece una alternativa; asignar una referencia a un typeglob anula solo la variable que coincide con el tipo de referencia (por*x = \%y
lo que sería un alias%x
para apuntar al mismo almacenamiento%y
pero dejar, por ejemplo,$x
solo). En particular, a esta sintaxis no le importa si el almacenamiento alias al que tiene un nombre, por lo que cuando asignamos el valor de retorno deb
(que es una referencia de matriz que mantiene@_
viva la matriz anteriormente llamada )*b
, lo que sucede es que@b
se cambia a alias de la lista de argumentos de la llamada ab
(sin dejar%b
cambios). Esto significa, en particular, que$b[0]
y$b{0}
ahora apuntan al mismo almacenamiento, y la asignación a uno, por lo tanto, cambiará al otro. Todo a partir de entonces es completamente sencillo.La documentación de Perl en realidad no habla de este tipo de detalles, así que no me sorprende que alguien haya entendido; la naturaleza de
@_
no ser como otras matrices no es algo que realmente se enfatice, y la mayoría de los estilos de codificación apuntan a minimizar los efectos que esto tiene en lugar de amplificarlos.fuente
q
ys
, yy
, ym
(sobre todo tratando de llegar a terminar después de la$b[0]
asignación), pero nada de trabajo para mí (aún).sub b{\@_}
cementado en mi mente y, aunque experimenté con*b
él, ¡no pude entenderlo! Gracias por la explicación. Podría haberlo pasado por alto en su explicación, pero ¿por quésub b{\@_}*b=b$b[0]
no hace lo mismo?\@_
) a*b
, pero debe mencionar el elemento hash explícitamente. Con*b=b$b[0]
, que está básicamente solo un alias a la nueva$b[0]
(donde después de cambiar@b
puntos) a la$b[0]
que existía al comienzo del programa, que no sirve para nada.JavaScript, 30 bytes, 10 números, agrietados
No debería ser demasiado difícil, pero espero que sea lo suficientemente difícil como para proporcionar un desafío. :) Los caracteres no revelados están marcados con
_
.fuente
Perl, 14 bytes, 10 números, Agrietado
Funciona de 1 a 10.
_
son personajes ocultos.Creo que esto no debería ser demasiado difícil de descifrar. Tengo uno más difícil, para 22 bytes, lo publicaré si este está roto.
Código original:
Y reemplace el
"!"
por una cadena de la longitud del número que desea imprimir, por ejemplo!
,!!
,!!!
, etc.Sin embargo, ais523 encontró otra forma:
fuente
JavaScript, 22 bytes, 10 números, agrietados
Probablemente bastante fácil de descifrar.
_
ser un personaje ocultofuente
xc_de
fuera algo más que un arenque rojoOctava, 17 bytes, 10 números, Agrietada
Solución original
_
Es el personaje oculto.fuente
Gelatina , 7 bytes , 10 números, agrietados
No hay comodines.
La grieta lograda (usar una evaluación con un argumento) fue, como muchos parecen estar en este hilo, no la deseada.
El crack previsto fue:
fuente
10
, porque tuve suerte con esto mientras intentaba cosas que podrían funcionar.10
que funciona para usted es, creo, evaluando el código de gelatina en la cadena9
con un argumento de0
(el valor predeterminado de la entrada), que luego elimina (sin efecto) y luego incrementa.10
está funcionando para usted es evaluando el código de gelatina en la cadena9
con un argumento de[]
- el valor predeterminado de la entrada0
, dequeued - que luego incrementa., Me gusta“1‘‘‘‘‘‘‘‘‘Ọv0Ḋ¤‘
Befunge-93, 11 bytes, 10+ números, Agrietado
Esta presentación funciona durante al menos 1 - 10. Los caracteres no revelados se indican con
□
.Pruébalo en línea
Debo decir que me impresionó que dos personas pudieran encontrar soluciones independientes para esto, ninguna de las cuales era lo que esperaba. Mientras Martin llegó primero, le doy la "victoria" a Sp3000 ya que su solución es más portátil.
Sin embargo, esta fue mi solución prevista:
fuente
"15:**-6-.@
da 1, pero no estoy seguro de si el hecho de que"
empuje 32 en la parte superior (debido a espacios implícitos) es un artefacto del intérprete de TIO o parte de las especificaciones de Befunge, porque al intentar con algunos intérpretes parece que no todos los intérpretes hacen eso. ¿Su solución prevista depende de este comportamiento?R, 21 bytes, 10 números agrietados
Funciona para 10 números.
_
Es un personaje oculto.Solución original:
fuente
Ruby, 16 bytes, 10 números, descifrado por xsot
#
Es cualquier personaje.fuente
Octava, 32 bytes, 10 números. Agrietado
_
Es un personaje oculto.Puedes probar Octave en línea aquí .
Solución original:
1:
nnz(isprime(floor(sqrt(i):pi')))
2:
nnz(isprime(floor('sqrt(i):pi')))
3:
nnz(isprime(floor('sqrt(i):pia')))
4:
nnz(isprime(floor('sqrt(i):piaa')))
...
fuente
Octava, 17 bytes, 10 números, Agrietada
Los caracteres no revelados están marcados con
_
.Solución prevista:
fuente
Octava, 19 bytes, 10 números, agrietados
_
Es el personaje oculto.Solución prevista:
fuente
sca
. Viniendo de ti, debería haber pensado en las funciones matriciales :-)05AB1E , 5 bytes, 10 números, ¡agrietados!
No muy difícil, pero divertido :)
_
Es un personaje aleatorio. Utiliza el codificación CP-1252 . Pruébalo en línea!fuente
05AB1E , 6 bytes, 10 números, agrietados
Intento 2, esta vez sin la cadena de tres caracteres: p.
_
Es un personaje aleatorio. Utiliza la codificación CP-1252 . Pruébalo en línea!fuente
JavaScript, 22 bytes, 10 números, agrietados
_
Es el personaje oculto.Sugerencia sobre la solución prevista
El carácter que debe cambiarse para generar todos los números es siempre el mismo.
fuente
JavaScript 21 Bytes, 10 Números Agrietados
Los caracteres no revelados están marcados con
_
Agrietado
Mi version:
fuente
Python 3, 19 bytes, 10 números, agrietados
Los caracteres no revelados están marcados con
?
. Probado en Python 3.5.2.fuente
Python 3, 16 bytes, 10 números, agrietados
Los caracteres no revelados están marcados con
?
. Esto probablemente sea un poco fácil ya que solo hay cinco signos de interrogación, pero espero que sea divertido.fuente
C #, 90 bytes, 10 números, agrietados
Sinceramente, no tengo idea de lo difícil que es descifrarlo.
Editar: Vaya, error de transcripción. Uno
_
muy pocos despuésusing
.Ahora descifrado por Hedi , quien encontró la solución deseada (salvo el nombre de la clase).
fuente
JavaScript 33 bytes, 10 números agrietados x2
Vaya, publiqué mi línea para generar 10, que Hedi rompió como si fuera 1
Versión destinada a publicar para generar 1
Los caracteres no revelados están marcados con
_
fuente
console.log(atob|"0Xc0"-0xB6|("Zp=="))
creoPython, 10+ números, 61 bytes, ¡Agrietado!
Aquí estaba el código que publiqué:
El código original fue:
Básicamente, arroja un error (
'x' is not defined
) y luego imprime la línea en la que se encontró el error. Por lo tanto, solo sigue agregando nuevas líneas al principio para aumentar el número.Sabía que no sería difícil de descifrar, solo quería una forma divertida de imprimir números, pero no esperaba que Sp3000 lo obtuviera tan rápido, ¡son algunas habilidades profesionales!
fuente
STDOUT
e imprimir un número, pero supongo que lo reduje demasiado. Ah bueno.sys
definitivamente lo hizo mucho más simple, ya que dio un buen punto de partida para la búsqueda: P05AB1E, 11 bytes, ¡Agrietado!
Obras de 1-10.
_
Es un personaje oculto.Solución prevista:
fuente
Octava, 24 bytes, 9 números, agrietados
_
Es un personaje oculto.(Inspirado por el desafío de @ LuisMendo ).
fuente
JavaScript, 9 bytes, 10 números, Agrietado
_
Es el personaje oculto.fuente
Octava, 25 bytes, 9 números. Agrietado
_
Es un personaje oculto.fuente