AVISO : este desafío ahora está cerrado. Cualquier nueva respuesta será ignorada y la respuesta aceptada no cambiará.
Desafío
Escriba un programa válido que, cuando solo se cambian, eliminan o agregan dos caracteres en el programa, cambia completamente la salida.
La salida modificada debe tener una distancia de Levenshtein de 15 o más desde su salida original.
La salida debe ser no vacía y finita. Por lo tanto, su programa debe finalizar en 1 minuto.
Su salida debe ser determinista, generando lo mismo cada vez que ejecute el programa. Tampoco debe depender de la plataforma.
No se permiten las funciones hash , como se construyen en los PRNG. Del mismo modo, sembrar un RNG no está permitido.
Después de un período de tres días, una presentación sin descifrar será segura. Para reclamar esta seguridad, debe editar su respuesta para mostrar la respuesta correcta. (Aclaración: hasta que reveles la respuesta, no estás seguro y aún puedes descifrarlo).
Formateo
Su respuesta debe estar en el siguiente formato:
# <Language name>, <Program length>
## Code
<code goes here>
## Original Output
<output goes here>
## Changed output
<changed output goes here>
Ladrones
El desafío de los ladrones es descubrir qué dos personajes has cambiado. Si un ladrón ha descifrado su solución, dejará un comentario sobre su respuesta.
Puedes encontrar el hilo de los ladrones aquí .
Victorioso
La persona con la solución sin descifrar más corta gana.
Tabla de clasificación
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><script>site = 'meta.codegolf';postID = 5686;isAnswer = false;QUESTION_ID = 54464;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 bylength=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 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) { 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])+)\s*(?:[,;(]|\s-).*?([0-9]+)/.exec(h); var e = [[n++, m ? parseInt(m[2]) : 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.length == 100) g(p + 1); else { var s=[[uncracked_list, '#uncracked'], [safe_list, '#safe']]; for(var p=0;p<2;p++) u(s[p],bylength); jQuery('#uncracked_by_length').bind('click',function(){u(s[0],bylength);return false}); jQuery('#uncracked_by_creation').bind('click',function(){u(s[0],bycreation);return false}); } });}g(1);</script><link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"><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;}</style><div class="main"><h3>Uncracked submissions</h3><table> <tr> <th>Language</th> <th class="score">Length</th> <th>User</th> </tr> <tbody id="uncracked"></tbody></table><div>Sort by: <a href="#" id="uncracked_by_length">length</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">Length</th> <th>User</th> </tr> <tbody id="safe"></tbody></table></div>
fuente
Respuestas:
CJam, 13 bytes (seguro)
Pruébalo en línea.
Salida original
Salida modificada
Solución
Pruébalo en línea.
Cómo funciona
Esto aprovecha cómo CJam imprime implícitamente toda la pila después de ejecutar el programa.
Simplemente volcar las representaciones de base 2 de unos pocos enteros en la pila hace que se impriman sin ningún separador, por lo que debería ser difícil averiguar dónde comienza uno de ellos y dónde termina otro.
El código original hace lo siguiente:
Como @AndreaBiondo señala en los comentarios, ¡las representaciones binarias de 0! a las 8! se puede encontrar al comienzo de la salida (espacios añadidos para mayor claridad):
El cambio previsto era reemplazar
mQ
conci
, que toma el módulo entero 65536, usando aritmética de caracteres de 16 bits (conversión a un carácter de 16 bits sin signo, luego de vuelta al número entero).Esperaba que la idea de usar
c
para reemplazar un operador matemático fuera lo suficientemente oscura.fuente
_)mQ
necesario cambiarlo af(x!)
tal quef(x!) > x!
porx <= 8
yf(x!) < x!
parax >= 9
, porquex!
obviamente estaba siendo modulado por un número que dejaba intactos los factoriales de 0 a 8 en la salida. No me di cuenta de que9!
era el primer factorial más grande que2^16
. Muy buen desafío de todos modos.Agrietado
Shakespeare, 1721 bytes
Intenté una respuesta de Shakespeare. No es breve, y tuve dificultades para cambiar la salida con solo 2 caracteres, pero creo que tuve bastante éxito. Buena suerte a todos. Como nota al margen, utilicé el "compilador" disponible en esta dirección y puede que no funcione con otra. (no funciona con el intérprete en línea) La salida no contiene caracteres no imprimibles.
Código
Salida original
Salida modificada
fuente
J, 76 bytes (seguro)
Código
Salida original
Salida modificada
EDITAR: Solución
{:
agregada (mostrada entre###
)Hace uso de la mónada
{::
Mapa . La mayor parte del resto del código es basura inútil.fuente
Agrietado
Rubí, 14
Código
Salida original
Salida modificada
fuente
'99'*2
.wc
, ¡me traicionaste!Agrietado
Bash, 15 bytes
Salida original
Salida modificada
fuente
Agrietado
Prólogo, 10 bytes
Código
Salida original
Salida modificada
fuente
X is 1//4-2.
, que es mucho más fácil de ver que mi solución original que @ SP3000 agrietado ...Agrietado
Python 2, 43 bytes
Código
Salida original
Salida modificada
La distancia de Levenshtein es 15 exactamente. Tanto el original como el modificado se ejecutan en menos de 1 minuto en mi computadora.
fuente
print
y la multiplicación derange
un entero. Sin embargo, parece queMemoryError
xrange
lugar derange
y creo queitertools
tiene un generador de generador que repite una secuenciax
varias veces.Agrietado
BrainFuck, 504 bytes
Nadie debería necesitar analizar un código de brainfuck. Esta es una versión modificada de un código anterior, pero cualquier cambio en un código Brainfuck hace una gran diferencia en la salida. Uso el intérprete en http://esoteric.sange.fi/brainfuck/impl/interp/i.html para probar mi código. Buena suerte !
Código
Salida original
Salida modificada
Nota: La salida modificada contiene varios caracteres STX (ASCII 2) y EOT (ASCII 4)
Aquí está la versión con códigos ASCII entre paréntesis en lugar de caracteres no imprimibles:
fuente
agrietado
Wolfram Language (Mathematica o WolframAlpha), 3 bytes
Código
Salida original
Salida modificada
Para aquellos que lo prueban en WolframAlpha, el resultado aparece como
Eliminé mi respuesta anterior porque funcionaba solo en Mathematica y no en WolframAlpha . Eso puso a los ladrones detrás de un muro de pago (en lugar de las barras merecidas), lo que no era justo.
fuente
Agrietado
MATLAB / OCTAVE, 7 bytes
Código:
Salida original:
Salida modificada:
Esto da una distancia de Levenshtein de exactamente 15.
fuente
Agrietado
CJam, 8 personajes
Código
Salida original
Salida modificada
La salida después de la modificación está aquí . Ambos toman menos de un minuto en mi computadora portátil de 2 GHz.
Explicación
La gente parece asombrada de cómo funciona esto. El código funciona así:
Esto calcula 126 ^ 102. La solución fue:
Esto calcula ((125 ^ 9) ^ 126) ^ 102, que tiene cientos de miles de dígitos de largo.
fuente
Agrietado
Pyth, 8 bytes
Código:
Salida inicial:
Salida modificada:
fuente
CG mod (2^21 * 28)
. No conozco a Pyth, así que no puedo ver cómo cambiarme(3 ^ (2 * 21))
a eso ...CG
es igualsum(256**n * (122-n) for n in range(26))
.CG mod (2^21 * 28 * 2*n)
, donde1 <= n <= 4
, así como paran=6
yn=12
. Además,CG
es solo el alfabeto en minúsculas interpretado como un número base 256. Me pregunto si hay otro módulo con base 3?%CG^2 26
o%CG^4y13
, pero ambos tienen una distancia de 3 ...Agrietado
Python 2, 58 bytes
Código
Salida original
Salida modificada
Esa regla de 15 distancias seguramente hizo las cosas difíciles. Espero que esto vaya bien.
fuente
[m<<min(m,n)for m in R for n in R]
en el intérprete, obtendrá algunos patrones esquemáticos de ruido blanco realmente espeluznantes.Agrietado
Python 2, 50 bytes
Código original
Salida original:
Salida modificada:
No demasiado corto, y tal vez no demasiado difícil, realmente no lo sé. Intentaré encontrar algo mejor pronto.
fuente
x
cony
,y
conx
o cambiar el dígito en elrange
resultado en 19 tildes. También experimenté insertando un-
antes de cualquierax
oy
, y cambiando%
a uno de+ - / *
, en vano. Ahora estoy bastante seguro de que se requieren 1 o 2 inserciones.y
en el ámbito de cobertura fue un buen toque.Agrietado
PHP, 164 bytes
Código
Salida original
Salida modificada
fuente
GolfScript, 15 bytes (seguro)
Código
10,{1+3?}%{*}*]
Código modificado
107,{1+3?}%{^}*]
Salida original
47784725839872000000
Salida modificada
557154
Explicaciones:
Código modificado
fuente
Agrietado
APL , 7 bytes
Código
Salida original
Salida modificada
fuente
J
en la evidencia de salida que es un número complejo?aJb
refiere al número complejoa + bi
.Agrietado
C, 53 bytes
Código
Salida original
Salida modificada
Probablemente demasiado fácil, pero quién sabe. (Nota: técnicamente depende del sistema, pero el tipo de sistema en el que falla también fallaría en todas las otras presentaciones aquí, así que pensé que era un punto discutible).
Agrietado
Editar
Cometí un error. Nuevo código que es más seguro para el ataque obvio:
mismas salidas Nuevo tamaño de 65 bytes. Esperemos que sea más difícil ... aunque probablemente sea demasiado fácil.
fuente
Agrietado por issacg
MATLAB, 20 bytes
Código
Salida original
Salida modificada
fuente
sinh
,asin
,tan
,pi^i
, etc ...Agrietado
Octava, 20 bytes
Salida:
Salida modificada:
fuente
CJam, 28 bytes (seguro)
Pruébalo en línea .
Salida original
Salida modificada
Solución
Pruébalo en línea.
Cómo funciona
Fui un poco por la borda con este ...
El código original hace lo siguiente:
El cambio previsto se reemplaza
(i
conWci
.Esto deja intacta la cadena repetida y empuja 65535 (al convertir a un carácter de 16 bits sin signo, luego de nuevo a entero), de modo que los primeros elementos de la secuencia de Fibonacci rezagada se vuelven
y el ciclo se repite 126 veces.
fuente
Javascript, 47 (seguro)
Código
Salida original
Salida modificada
La distancia es exactamente 15.
Probado en Chrome e IE.
Solución
Esto utiliza el operador de asignación de desplazamiento de bits
i>>=1
para hacer que el intervalo de bucle no sea lineal. Además, esto tiene la propiedad divertida de que alguien que intenta forzar una solución con fuerza bruta se encontrará con varias variaciones que se ejecutan infinitamente.fuente
Agrietado
Fantom , 26
Código
Salida original
Salida modificada
Seguridad a través de la oscuridad, si nadie conoce el idioma, nadie puede descifrarlo. Levenshtein Distancia de 15. Ejecutarlo en fansh.
fuente
Agrietado
CJam, 6 personajes
Salida original
Salida modificada
Esto puede ser demasiado fácil. :PAGS
fuente
Agrietado
Java, 149 caracteres
Salida original
Salida modificada
Insinuación:
fuente
Brainfuck, 100 bytes
Código
Salida original
Salida modificada
Nota: Posiblemente fácil de descifrar. Pero entonces, nada es fácil en Brainfuck.
fuente
agrietado
Perl moderno 5, 70
Código
Salida original
Una sola línea nueva.
Salida modificada
La salida comienza con un espacio y termina con una nueva línea.
fuente
each
aplica a una matriz solo desde alguna versión.Agrietado
Matlab, 12 bytes
Código
Salida original
Salida modificada
fuente
perl, 12 bytes
agrietado
Código
Salida original
Salida deseada
fuente
print sin xx
,print sin xx97
oprint sin 97xx
dondexx
es cualquier par de números.9.?7
,9.7?
etc, pero se dio cuenta que tenía que ser un operador. Intenté todo lo que se me ocurrió en fragmentos como siperl -e 'print map{sin((+"9${_}")x7).$/}1..9'
finalmente obtuviera la combinación correcta.Agrietado
SWI-Prolog, 54 bytes
Código
Salida original
Salida modificada
fuente
E
yF
en lasprint
declaraciones, ¿obtiene lo que desea?