Para o desafio dos policiais principais, clique aqui
AVISO - Este desafio está encerrado. Quaisquer rachaduras postadas agora não serão contadas na tabela de classificação e a resposta aceita não será alterada.
Desafio
Dado o programa original, sua saída e a saída do programa alterado, você precisa descobrir quais caracteres precisam ser alterados, removidos ou adicionados para obter a saída esperada.
Quando você decifrar o código de alguém, deixe um comentário com um link para o seu crack na resposta dele.
Formatação
# [<language>, <username of program owner>](<link to answer>)
## Description
<description of change and how you found it>
## Code
<changed code>
Ganhando
A pessoa que quebrou mais soluções ganha.
Entre os melhores
13 rachaduras:
- Dennis
8 rachaduras:
- Alex Van Liew
5 rachaduras:
- Sp3000
- isaacg
3 rachaduras:
- Luis Mendo
- jimmy23013
- Dom Hastings
2 rachaduras:
- mbomb007
- Sluck49
1 rachadura:
- O número um
- Jakube
- ProudHaskeller
- David Zhang
- samgak
- paul.oderso
- rayryeng
- mgibsonbr
- n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳
- Stewie Griffin
- abligh
cops-and-robbers
Beta Decay
fonte
fonte
Respostas:
CJam, por Mauris
Descrição
O código original de Mauris faz o seguinte:
Nenhum outro operador matemático do CJam produziria um número tão grande para pequenas entradas, portanto
:#
não pode ser modificado. Como#
, quando usado para exponenciação, leva apenas números inteiros como entrada,:i
não pode ser removido também. Isso deixa apenas um lugar para modificar a entrada: a string"f~"
.Não importa quantos caracteres a string tenha, o resultado será uma torre de poder associativa à esquerda. O CJam suporta caracteres no intervalo de 0 a 65535 (com exceção dos substitutos), portanto, temos que expressar a saída como b n × k × j , onde b , n , k e j são números inteiros nesse intervalo.
O logaritmo decimal do número inteiro resultante do código modificado é um pouco menor que o log 10 (2,44 × 10 242545 ) = log 10 (2,44) + 242545 , para que possamos dividir esse valor pelos logaritmos de todas as bases possíveis para encontrar os valores adequados para n × k × j .
De fato:
Comparar os 8 primeiros dígitos revelou-se suficiente.
Isso significa que podemos expressar a saída como 5 347.004 = 15625 57.834 = 125 9 × 102 × 126 , portanto basta substituir
"f~"
por"㴉"
ou"} f~"
.Código
ou
Observe que os espaços no código ASCII devem realmente ser um tabulador.
Tentar executar esse código no intérprete online provavelmente é uma má idéia, mas veja como você pode verificar os resultados na linha de comando:
fonte
~f
em algum lugar do programa.Ruby, histocrata
Descrição
Alterou x para ser uma matriz em vez de escalar adicionando
*
Alterou o último
9
para ser uma sequência em vez de um número, adicionando?
O resultado é constituído por uma matriz com um único elemento (
[9]
) multiplicado 9 vezes e depois implodido"9"
como separador.Código
fonte
Python 2, peixes barrentos
Descrição
Através de provações e tribulações envolvendo fatorar grandes números e procurar fatores conseqüentes, percebi que mudar o 87654 para o 58116 seria suficiente. Então, eu fatorei 58116 como 87 * 668. Então eu percebi que 01234 = 668, então eu só precisava alterar 87654 para 87 e remover o 01234 completamente. Isso é realizado com um comentário.
Código
fonte
print sum(range(054321)*9876)*87#654)/01234
)Shakespeare, Acima do Fogo
Na cena III, é preciso mudar Claudius para Claudio no seguinte trecho:
Código modificado:
Usando o compilador vinculado por @AboveFire, isso é impresso
11
.fonte
Prolog, Fatalize
Descrição
Adicione dois
\
s.\
é uma negação bit a bit e\/
é bit a bit ou.Código
fonte
MATLAB / OCTAVE, Stewie Griffin
Um pouco simples de aritmética complexa.
fonte
C, LambdaBeta
Descrição
Transformar
main(a,_)
emmain(_)
. O primeiro argumento de main é oargc
que é inicializado como1
.Código
fonte
Python 2, rp.belrann
Altere a compreensão da lista mais externa em uma compreensão definida. Crédito parcial para @ mbomb007, que eliminou todas as soluções "chatas" (trocar
x
e trocary
, ajustar operadores, alterar o alcance).Explicação:
No original,
[(x,y)[x%2]for x in[y for y in range(8)]]
gera a seguinte lista:Isso ocorre porque, no Python 2.7, a
y
compreensão da lista interna vaza para o escopo anexo no último valor conhecido (que, no final de um intervalo, é 7). Portanto, na tupla,y
sempre é 7.x
, no entanto, percorre a lista normalmente, variando de 0 a 7. Quandox
é par, escolhe o valor dex
, quando é ímpar, escolhey
(que é sempre 7). Percebi que, se eu incluísse exatamente um 7 e todo o restante dos valoresx
, obtinha 19; então percebi que podia transformar a compreensão externa em uma compreensão definida, o que eliminaria todos os valores duplicados e me deixaria exatamente 19.Isso foi muito inteligente, acho que nunca usei uma compreensão definida antes. Parabéns.
fonte
print len('~'*sum([(x,y)[x%2]for x in[y for y in range(6)]]))
retorna21
. Apenas atribua o código a uma variável e imprima se for igual à string desejada. Se você vêTrue
, você o quebrou._
me traiu, eu acho.Jonas, Matlab / Oitava
Descrição
Eu notei que a resposta era
i^pi
, então eu apenas tive que me transformarsin
em um nop.Código
s
->0
,n
->+
fonte
Dennis Bash
Código original:
Saída original:
Código modificado:
Saída modificada:
Explicação:
No Bash, você pode gerar uma lista de itens separados por vírgula dentro de um par de chaves, assim:
impressões
Portanto, o código modificado está imprimindo uma lista de nada, os números 1..9, nada.
fonte
Luis Mendo MATLAB
Código original:
Nova resposta:
Descrição:
Alterado
-sin
parapsi
, a função poligamma no MATLAB. O-
sinal é substituído porp
e on
é removido.fonte
C, LambdaBeta
Descrição
Mude
-1
para*0
para que o resultado da multiplicação seja0
(um valor Falsas).Código
fonte
Brainfuck, Kurousagi
Descrição
Remova o primeiro
>
e altere o primeiro<
para.
Testado em brainfuck.tk . Note-se que a saída não coincide com o post de kurousagi exatamente , devido ao SE comendo caracteres não imprimíveis.
Código
fonte
Fantom, Caim
A segurança através da obscuridade é uma forma muito pobre de segurança (especialmente quando os dois métodos estão próximos uns dos outros nos documentos do Fantom e qualquer pessoa que saiba como é a aparência de um flutuador saberá imediatamente o que fazer).
fonte
CJam, de Basset Hound
Calcula e 25 . Experimente online.
O intérprete online fornece um resultado ligeiramente diferente no meu navegador, o que parece ser um problema de arredondamento.
O interpretador Java imprime
7.200489933738588E10
, que é a saída desejada, mas em um formato diferente.fonte
Python 2, Sp3000
Descrição
Alterado
01234
para0x1234
emin
para9in
.O fato de que
4669 = (01234-1)*sum(m<<m in R for m in R)
é enganoso.Código
fonte
m<<m in(m,n)
, mas o principal era mudar omin
parain
.MATLAB / Oitava, Stewie Griffin
Descrição
Isso exigiu negar a entrada na função anônima
g
, além de alterar o fator de escala dag
função para 2 em vez de 7:Código
fonte
Perl, abligh
Descrição
Adicione um operador de repetição de string,
x
e insira um dígito adicional!Código
fonte
Java, TheNumberOne
Descrição
O programa é uma implementação única
Random.next()
com uma semente inicial deInteger.MAX_INT
e todos os números hexadecimais convertidos em decimal. Alterar a semente para o complemento deMAX_INT
gera a saída:(como deve haver exatamente duas alterações, escolha qualquer alteração não operacional: adicione um espaço em algum lugar, um ponto e vírgula extra, etc.)
fonte
Integer.MAX_VALUE
emInteger.MAX_VALUE+1
ouInteger.MIN_VALUE
+1
mas desde que eu estava fazendo isso em Python, ele rolou para um longo, ahaha. Esse foi o meu primeiro pensamento, na verdade.Brainfuck, AboveFire
Este programa é uma modificação deste código, uma resposta de cookie. essa resposta funciona primeiro pré-calculando uma tabela de códigos ASCII úteis de caracteres úteis e, em seguida, possui três instruções condicionais compostas por três loops inseridos por ter um
1
na posição correta.o começo de como eu quebrei o código é que o padrão de repetição na saída alterada é principalmente o que é impresso se você inserir o terceiro loop com a tabela deslocada para a esquerda.
(os caracteres adicionais estão marcados entre parênteses)
fonte
Python 2, peixes barrentos
Descrição
Altere
<<
para<>
(versão obsoleta de!=
) e0x156
para0156
, o ponto de código para"n"
(que aparece 3 vezes na cadeia de comprimento 23'<built-in function sum>'
).Código
fonte
JavaScript, por Razvan
Descrição
A saída modificada é claramente o número natural de Euler, que pode ser acessado como
Math['E']
.Ao mudar
''
para'3'
e32
para36
,String.fromCharCode
gera oE
.Código
fonte
Fantom, Caim
Descrição
A indexação do array já está configurada, então eu só preciso fazer um 55. Honestamente, a parte mais difícil foi baixar o idioma.
Código
(Inserção de vírgula,
0
->3
)fonte
Shakespeare, Acima do Fogo
NÃO CORRETO - desculpe :(
Irá investigar mais quando chegar em casa do trabalho No valor original de Claudio é 1132462081 e o valor de Claudius é 1
Na cena final, o valor de Claudio é impresso duas vezes,
abra seu coração x2 = valor de impressão da outra pessoa no palco (Claudio). Portanto, se você mudar Claudius para Claudio (2 caracteres) - o valor de Claudius será impresso - que é 1 - duas vezes
fonte
VBA por JimmyJazzx
Mudado
IRR
paraMIRR
e mudou5
a um,
forma que há 3 parâmetros.Descobri isso enquanto procurava como a
IRR
função do Excel funciona. Havia um artigo: Como a função MIRR do Excel pode corrigir a função IRR . Isso me deu uma dica. Tentativa inteligente, no entanto. Eu nunca tinha usado o VBA antes, então isso também era interessante.fonte
Matlab / Octave, Jonas
Descrição
Na última linha, adicione
'
para transformararg'
na sequência'arg'
, que será interpretada como números ASCII. E depois adicione outro'
no final para manter o formato da coluna.O quase desnecessário
'
no código original foi a pista principal. Além disso, em retrospecto, o fato de quearg
foi definido separadamente (em vez de diretamente dentro dosin
linha) deveria parecer suspeito.Código
fonte
bc, abligh
Apenas inseriu os operadores matemáticos. Demorei cerca de 1 minuto para resolver uma vez que procurei o que era bc e que operações matemáticas ele possuía. A primeira coisa que pensei foi em divisão, mas não havia fatores comuns que pareciam bons. Então eu imediatamente fui para exponenciação e módulo. Foram necessários pelo menos 15 dígitos para o módulo b / c da saída esperada. Depois disso, adivinhei duas vezes e encontrei.
fonte
Lua, TreFox
Descrição
"_G" é a tabela global, fazendo com que "_G.load" se refira à função global "load". A conversão de uma função em uma string resulta no retorno do endereço da função, que é transformado no comprimento da string pelo operador de comprimento "#".
Código
Além disso, como este é meu primeiro post aqui, não posso comentar a resposta original.
fonte
0x321a40c6d0
, para uma saída final de22
.load
e sabia que se_G
referia à tabela de símbolos globais ... Eu simplesmente não juntei os dois.Python, rp.beltran
Descrição
Notei que as letras necessárias estavam sempre 2 na frente de um dígito. alterar o terceiro
\w
para\d
obter todas as letras certas, exceto os espaços.\D
foi o único\
grupo que pude encontrar que permitiu letras e espaços.Código
w
->D
,w
->d
no regex.fonte
Pyth, isaacg
Descrição
O código original faz o seguinte:
Desde 156490583352162063278528710879425690470022892627113539022649722 - 58227066 dá 156490583352162063278528710879425690470022892627113538964422656 , o que equivale a 2 26 × 3 × 7 × 7477 × 381524422711 × 17007550201751761 × 2288745700077000184147 , a saída desejada pode ser obtida substituindo
^3y21
com algo que é avaliada como um divisor de este produto e é maior do que 58227066 .O
^
código original sugere que podemos usá-lo para calcular uma potência de 2 , os 3 que podemos calcular um divisor apropriado da forma 3 × 2 n .Ambos são enganosos. Soluções com uma distância Levenshtein de 3 (
%CG^2 26
,%CG^y2 13
,%CG^4y13
) ou 4 (%CG.<3y13
) são facilmente encontrados, mas a solução a distância 2 requer uma abordagem diferente.O alfabeto em minúsculas (
G
) possui 26 letras; portanto, seu conjunto de poder (o conjunto de todas as seqüências estritamente crescentes de letras em minúsculas) possui 2 26 elementos. Ao substituiry2
poryG
, calculamos esse conjunto de potência.Podemos recuperar o comprimento do conjunto substituindo
3
porl
, o que nos deixa com^lyG1
, por exemplo, 2 26 elevados à primeira potência.Código
Observe que isso funcionará apenas em um computador com memória disponível suficiente (aproximadamente 6,43 GiB, de acordo com
time
), portanto, não funcionará com o intérprete online.Veja como você pode verificar os resultados na linha de comando:
fonte