AVISO - Este desafio está encerrado. Quaisquer novas respostas serão ignoradas e a resposta aceita não será alterada
Desafio
Escreva um programa válido que, quando apenas dois caracteres no programa forem alterados, removidos ou adicionados, altere completamente a saída.
A saída alterada deve ter uma distância de Levenshtein igual ou superior a 15 da sua saída original.
A saída deve ser não vazia e finita. Portanto, seu programa deve terminar dentro de 1 minuto.
Sua saída deve ser determinística, produzindo a mesma coisa sempre que você executa o programa. Também não deve depender da plataforma.
Quaisquer funções de hash não são permitidas , como são construídas nos PRNGs. Da mesma forma, semear um RNG não é permitido.
Após um período de três dias, um envio sem rachaduras ficará seguro. Para reivindicar essa segurança, edite sua resposta para mostrar a resposta correta. (Esclarecimento: Até que você revele a resposta, você não está seguro e ainda pode ser quebrado.)
Formatação
Sua resposta deve estar no seguinte formato:
# <Language name>, <Program length>
## Code
<code goes here>
## Original Output
<output goes here>
## Changed output
<changed output goes here>
Ladrões
O desafio dos ladrões é descobrir quais os dois personagens que você mudou. Se um ladrão tiver quebrado sua solução, ele deixará um comentário na sua resposta.
Você pode encontrar o tópico dos ladrões aqui .
Ganhando
A pessoa com a menor solução sem rachaduras vence.
Entre os melhores
<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>
fonte
Respostas:
CJam, 13 bytes (seguro)
Experimente online.
Saída original
Saída modificada
Solução
Experimente online.
Como funciona
Isso tira proveito de como o CJam imprime implicitamente a pilha inteira após a execução do programa.
Simplesmente despejar as representações da base 2 de alguns números inteiros na pilha faz com que elas sejam impressas sem nenhum separador; portanto, deve ser difícil descobrir onde uma delas começa e a outra termina.
O código original faz o seguinte:
Como @AndreaBiondo observa nos comentários, as representações binárias de 0! para 8! pode ser encontrado no início da saída (espaços adicionados para maior clareza):
A alteração pretendida foi substituída
mQ
porci
, que leva o módulo inteiro 65536, usando aritmética de caracteres de 16 bits (conversão para um caractere de 16 bits não assinado e, em seguida, volta para o inteiro).Eu esperava que a idéia de usar
c
para substituir um operador matemático fosse suficientemente obscura.fonte
_)mQ
precisava ser mudado para umf(x!)
tal quef(x!) > x!
parax <= 8
ef(x!) < x!
parax >= 9
, porquex!
obviamente estava sendo modulado por um número que deixava os fatoriais de 0 a 8 intactos na saída. Eu não percebi que9!
era o primeiro fator maior que2^16
. Muito bom desafio de qualquer maneira.Rachado
Shakespeare, 1721 bytes
Eu tentei uma resposta de Shakespeare. Não é curto, e tive dificuldades para alterar a saída com apenas 2 caracteres, mas acho que consegui muito bem. Boa sorte a todos. Como observação, usei o "compilador" disponível neste endereço e ele pode não funcionar com outro. (ele não funciona com o intérprete online) A saída não contém caracteres não imprimíveis.
Código
Saída Original
Saída alterada
fonte
J, 76 bytes (seguro)
Código
Saída Original
Saída alterada
EDIT: Solução
{:
adicionada (mostrada entre###
)Faz uso do
{::
mapa da mônada . A maior parte do restante do código é lixo inútil.fonte
Rachado
Ruby, 14
Código
Saída Original
Saída alterada
fonte
'99'*2
.wc
, você me traiu!Rachado
Bash, 15 bytes
Saída original
Saída modificada
fonte
Rachado
Prolog, 10 bytes
Código
Saída Original
Saída alterada
fonte
X is 1//4-2.
, que é muito mais fácil de ver que a minha solução original que @ SP3000 rachado ...Rachado
Python 2, 43 bytes
Código
Saída Original
Saída alterada
A Distância Levenshtein é 15 exatamente. Tanto o original quanto o alterado são executados em menos de 1 minuto no meu computador.
fonte
print
e à multiplicação derange
por um número inteiro. No entanto, parece que estou ficandoMemoryError
s da lista grande ...xrange
vez derange
e acredito queitertools
tenha um gerador de gerador que repita umx
número de seqüência de vezes.Rachado
BrainFuck, 504 bytes
Ninguém deveria precisar analisar um código de cérebro. Esta é uma versão modificada de um código anterior, mas qualquer alteração em um código Brainfuck faz uma grande diferença na saída. Eu uso o intérprete em http://esoteric.sange.fi/brainfuck/impl/interp/i.html para testar meu código. Boa sorte !
Código
Saída Original
Saída alterada
Nota: A saída alterada contém vários caracteres STX (ASCII 2) e EOT (ASCII 4)
Aqui está a versão com códigos ASCII entre parênteses, em vez de caracteres não imprimíveis:
fonte
rachado
Wolfram Language (Mathematica ou WolframAlpha), 3 bytes
Código
Saída Original
Saída alterada
Para aqueles que tentam no WolframAlpha, o resultado aparece como
Eu apaguei minha resposta anterior porque funcionava apenas no Mathematica e não no WolframAlpha . Isso colocou os ladrões atrás de um paredão (em vez das barras merecidas), o que não era justo.
fonte
Rachado
MATLAB / OCTAVE, 7 bytes
Código:
Saída original:
Saída alterada:
Isso fornece uma distância de Levenshtein de exatamente 15.
fonte
Rachado
CJam, 8 caracteres
Código
Saída original
Saída alterada
A saída após a modificação está aqui . Ambos levam menos de um minuto no meu laptop de 2GHz.
Explicação
As pessoas parecem maravilhadas com o modo como isso funciona. O código funciona assim:
Isso calcula 126 ^ 102. A solução foi:
Isso calcula ((125 ^ 9) ^ 126) ^ 102, que tem centenas de milhares de dígitos.
fonte
Rachado
Pitão, 8 bytes
Código:
Saída inicial:
Saída alterada:
fonte
CG mod (2^21 * 28)
. Eu não sei Pyth, então eu não posso ver como a alteração(3 ^ (2 * 21))
em que ...CG
é igualsum(256**n * (122-n) for n in range(26))
.CG mod (2^21 * 28 * 2*n)
, onde1 <= n <= 4
, assim como paran=6
en=12
. Além disso,CG
é apenas o alfabeto em minúsculas interpretado como um número 256 básico. Gostaria de saber se existe outro módulo com base 3?%CG^2 26
ou%CG^4y13
, mas ambos têm uma distância de 3 ...Rachado
Python 2, 58 bytes
Código
Saída Original
Saída alterada
Essa regra das 15 distâncias certamente tornava as coisas difíceis. Espero que isso corra bem.
fonte
[m<<min(m,n)for m in R for n in R]
no intérprete, obtém alguns padrões assustadores de ruído branco.Rachado
Python 2, 50 bytes
Código original:
Saída original:
Saída modificada:
Não muito curto, e talvez não muito difícil, eu realmente não sei. Vou tentar encontrar algo melhor em breve.
fonte
x
comy
,y
comx
, ou alterar o dígito norange
resultado em 19 tis. Também experimentei inserir um-
antes de umx
ouy
, e mudar%
para um de+ - / *
, sem sucesso. Estou bastante certo agora que são necessárias 1 ou 2 inserções.y
no escopo anexo foi um toque agradável.Rachado
PHP, 164 bytes
Código
Saída Original
Saída alterada
fonte
GolfScript, 15 bytes (seguro)
Código
10,{1+3?}%{*}*]
Código alterado
107,{1+3?}%{^}*]
Saída Original
47784725839872000000
Saída alterada
557154
Explicações:
Código alterado
fonte
Rachado
APL , 7 bytes
Código
Saída original
Saída alterada
fonte
J
na evidência de saída de que é um número complexo?aJb
refere-se ao número complexoa + bi
.Rachado
C, 53 bytes
Código
Saída Original
Saída alterada
Provavelmente fácil demais, mas quem sabe. (Nota: é tecnicamente dependente do sistema, mas o tipo de sistema no qual ele falha também falharia com todos os outros envios aqui, então achei que era um ponto discutível).
Rachado
Editar
Eu cometi um erro. Novo código que é mais seguro para o ataque óbvio:
mesmas saídas. Novo tamanho de 65 bytes. Esperançosamente mais difícil ... embora ainda seja provavelmente fácil demais.
fonte
Rachado por issacg
MATLAB, 20 bytes
Código
Saída Original
Saída alterada
fonte
sinh
,asin
,tan
,pi^i
, etc ...Rachado
Oitava, 20 bytes
Resultado:
Saída alterada:
fonte
CJam, 28 bytes (seguro)
Experimente online .
Saída original
Saída modificada
Solução
Experimente online.
Como funciona
Eu fui um pouco exagerado com este ...
O código original faz o seguinte:
A alteração pretendida está sendo substituída
(i
porWci
.Isso deixa a sequência repetida intocada e empurra 65535 (convertendo para um caractere de 16 bits não assinado e, em seguida, volta para número inteiro), para que os primeiros elementos da sequência de Fibonacci atrasada se tornem
e o loop é repetido 126 vezes.
fonte
Javascript, 47 (seguro)
Código
Saída Original
Saída alterada
A distância é exatamente 15.
Testado no Chrome e IE.
Solução
Isso usa o operador de atribuição de deslocamento de bits
i>>=1
para tornar o intervalo do loop não linear. Além disso, isso tem a propriedade divertida de que alguém que tenta forçar uma solução brutal terá várias variações que são executadas infinitamente.fonte
Rachado
Fantom , 26
Código
Saída Original
Saída alterada
Segurança através da obscuridade, se ninguém conhece o idioma, ninguém pode decifrá-lo. Levenshtein Distância de 15. Execute em fansh.
fonte
Rachado
CJam, 6 caracteres
Saída original
Saída alterada
Isso pode ser muito fácil. : P
fonte
Rachado
Java, 149 caracteres
Saída Original
Saída Modificada
Dica:
fonte
Brainfuck, 100 bytes
Código
Saída original
Saída alterada
Nota: Possivelmente fácil de quebrar. Mas então, nada é fácil em Brainfuck.
fonte
rachado
Perl moderno 5, 70
Código
Saída Original
Uma única nova linha.
Saída alterada
A saída começa com um espaço e termina com uma nova linha.
fonte
each
se aplica a uma matriz apenas desde alguma versão.Rachado
Matlab, 12 bytes
Código
Saída original
Saída alterada
fonte
perl, 12 bytes
rachado
Código
Saída original
Saída desejada
fonte
print sin xx
,print sin xx97
ouprint sin 97xx
ondexx
é todos os dois números.9.?7
,9.7?
etc, mas percebeu que tinha que ser um operador. Tentei tudo o que pude pensar em trechos como,perl -e 'print map{sin((+"9${_}")x7).$/}1..9'
eventualmente, consegui a combinação certa!Rachado
SWI-Prolog, 54 bytes
Código
Saída Original
Saída alterada
fonte
E
eF
nasprint
instruções, conseguirá o que deseja?