Este é o fio dos ladrões. A discussão dos policiais está aqui .
Seu desafio é quebrar a submissão de um policial, encontrando uma entrada que a interrompa. Você não precisa descobrir o porquê, ou todas as entradas que fazem com que pare se houver mais de uma, ou a entrada que o policial pretendeu, apenas uma entrada fará.
Depois de quebrar uma submissão, publique um link para ela em um comentário ou edite para a publicação da polícia. Você também pode sinalizar seu envio para um mod para editá-lo na postagem do policial. Além disso, poste a entrada usada e um link para a postagem do policial em uma resposta neste tópico. O assaltante que conseguir mais envios vence.
Várias pessoas podem postar rachaduras no mesmo envio de policial, desde que sejam diferentes.
(Se o SE converteu sua resposta duplicada em um comentário, você pode votar nesta solicitação de recurso )
Procurando envios sem rachaduras?
fetch("https://api.stackexchange.com/2.2/questions/135363/answers?order=desc&sort=activity&site=codegolf&filter=!.Fjs-H6J36vlFcdkRGfButLhYEngU&key=kAc8QIHB*IqJDUFcjEF1KA((&pagesize=100").then(x=>x.json()).then(data=>{var res = data.items.filter(i=>!i.body_markdown.toLowerCase().includes("cracked")).map(x=>{const matched = /^ ?##? ?(?:(?:(?:\[|<a href ?= ?".*?">)([^\]]+)(?:\]|<\/a>)(?:[\(\[][a-z0-9/:\.]+[\]\)])?)|([^, ]+)).*[^\d](\d+) ?\[?(?:(?:byte|block|codel)s?)(?:\](?:\(.+\))?)? ?(?:\(?(?!no[nt][ -]competing)\)?)?/gim.exec(x.body_markdown);if(!matched){return;}return {link: x.link, lang: matched[1] || matched[2], owner: x.owner}}).filter(Boolean).forEach(ans=>{var tr = document.createElement("tr");var add = (lang, link)=>{var td = document.createElement("td");var a = document.createElement("a");a.innerText = lang;a.href = link;td.appendChild(a);tr.appendChild(td);};add(ans.lang, ans.link);add(ans.owner.display_name, ans.owner.link);document.querySelector("tbody").appendChild(tr);});});
<html><body><h1>Uncracked Submissions</h1><table><thead><tr><th>Language</th><th>Author</th></tr></thead><tbody></tbody></table></body></html>
fonte
Respostas:
Malbolge, Maçaneta
Experimente online (Obrigado Dennis !)
Entrada para Windows:
F_⌠1234567890
Entrada no sistema baseado em Linux usando ISO-8559-1:
F_ô1234567890
O coração de como o programa Malbolge funcionou é que ele dependia de um comportamento do intérprete Malbolge que causa um loop infinito se encontrar alguma instrução que não esteja entre 33 e 126. O programa foi construído de forma que sua entrada permita modificar uma única instrução.
Modifiquei o intérprete para despejar o estado da memória do programa no início da execução e também produzir código fonte 'normalizado', que assume a forma de uma lista de códigos op que serão executados durante a execução do programa. Com essas informações, você pode (lentamente) determinar que, embora o programa tenha recebido 13 entradas, apenas a 1ª e a 3ª entradas realmente são importantes.
Examinando o código normalizado e o despejo de memória (e um toque na ajuda do depurador), criei o seguinte:
Onde
op
está o chamado tritwise "op" descrito na especificação. Usando essas informações, você pode escrever um programa simples que repete as entradas possíveis (0 a 255) e encontra todas as soluções que atendem aos critérios acima. Eu encontrei 2219 soluções possíveis, algumas das quais provavelmente não serão soluções funcionais (você não pode inserir os caracteres necessários). Especificamente, as entradas acima são baseadas na solução:(Input 1 = 70, Input 3 = 244)
fonte
F_ô
, a propósito.JavaScript (no navegador)
Isso é falso, surpreendentemente
Edit: por que é
document.all
falso ?fonte
JS (ES6), Juan Tonina
Demorou um pouco
Object.is
para procurar. Basicamente,+0 === -0
uma vez que os===
verifica como números e0
é finito, masObject.is
vê+0
e-0
como objetos diferentes. Policial muito esperto :)Experimente online!
fonte
Python, Siphor
Apenas redefinimos a igualdade para se comportar exatamente como necessário para que o programa seja encerrado.
fonte
__eq__
araise
...0
: pclass A:__eq__=lambda s,o:0
ef(A())
faz o trabalho.Braingolf
Qualquer número menor que
0
funciona.Experimente Online!
fonte
PHP, Sísifo
(-0[0)> deal with it=1
A função parse_str altera os espaços e outros caracteres para sublinhados. Se você colocar um [usado para delimitador de matriz sem fechar, ele será alterado para um sublinhado, mas terá o efeito de não converter os seguintes espaços (não sei por que).
Experimente online!
fonte
JavaScript (Node.js), Adnan
[]
e[]
parece funcionar. Eu tentei um monte delesnull
, incluindoundefined
,NaN
...[] >= [] && [] <= [] && [] != []
avalia como verdadeiro.Moral da história: o JavaScript é estranho .
Experimente online!
fonte
JavaScript (ES7), Arnauld
Padrão
"8e7"
é soluçãoHack
Não há necessidade de calcular esse número, podemos redefinir a
length
propriedadeIsso define
~x/x.length**3!=-2962963
comofalse
Prioridade dos operadores
~
bit a bit não é o primeiro** exponentiation
segundo/ division
terceirofonte
Bash, Veedrac
Experimente online!
Na página de
ld.so(8)
manual:fonte
/bin/yes
, Mas isso é possível, nesse caso, esse env var seria ignorado.Jung , Mathematica, Jung
Não há pista se essa é a solução pretendida, mas ela passa em uma expressão que não é avaliada até ser referenciada como
#
dentro da função, o que fará com que ele retorne da função imediatamente sem fazer nenhuma avaliação adicional. Você pode ver que a função é realmente chamada (em vez de apenas lançar a exceção antes mesmo de invocar a função) alterando a função para:O que realmente imprimirá o
stop
antes de gerar o erro.fonte
Unevaluated[Abort[]]
, mas mesma coisa.)Retina , PunPun1000
Experimente online!
Qualquer entrada com n
1
s onde a soma dos divisores de n + 1 é igual a n + 1 deve funcionar.fonte
Rubi
sem nova linha.
3.send('exit')
certamente não é igual a5
, mas executaKernel#exit
:É possível chamar
exit
em3
causa :abort
também funciona:fonte
JavaScript (Node.js) , programador5000
Já estou rachado, mas o meu é um pouco diferente :) Não tenha representante suficiente para comentar na polícia. Também fique à vontade para editar para corrigir a formatação, meu primeiro post aqui.
Principalmente eu defino
__proto__
igual a uma função que lança. Retirado de olhar para a página Mozilla para proto. (Desculpe, representante baixo, não é possível postar um link.)Experimente online!
EDIT: Tenho algum representante, então aqui está o link: Mozilla
__proto__
fonte
Bash, Sísifo
Felizmente,
kill
é um shell embutido.Experimente online!
fonte
Jarko Dubbeldam R
Contribuindo pela primeira vez com algo, lembre-se de quaisquer erros que cometi no formato.
Certamente isso é válido. Apenas uma reorganização de is.list (), certo?
fonte
Javascript, programador5000
Comprimento máximo da string
Usa uma string com um comprimento menor que o suportado pelo mecanismo. Ao adicionar
"h"
a essa cadeia, um erro é gerado. Experimente online!Bloco de origem cruzada
Fortemente inspirado na resposta de @ jadkik94 , mas funciona em qualquer lugar. Cria um iframe de origem cruzada e passa o
.contentWindow
iframe do mesmo. Isso falha quando a função tenta usar o valor devido à segurança de origem cruzada.Valor primitivo
Variante das
.toString()
respostas - isso apenas usatoPrimitive
. Ele retorna um objeto como o valor primitivo, que o Javascript não sabe como manipular (para gerar um erro). Experimente online!fonte
Node.js, Adnan
{}
e{}
ou quaisquer 2 objetos são as duas entradas. Eu nem entendo como isso funciona.Aqui está a incrível lógica de comparação de objetos de JS:
fonte
JavaScript (Nó Babel) , Conor O'Brien
(Repita, coloque policiais acidentalmente.) Não tenho certeza do que se pretendia, mas decimais positivos que não são enormes parecem funcionar.
Também acho que ainda não posso comentar na polícia.
Experimente online!
fonte
Javascript (NOT node.js) , programmer5000
Isso não pode ser adicionado porque cria um objeto que não possui toString porque um novo
Set
não possui protótipos inerentes deObject
.entrada:
Experimente online!
fonte
Bash 4.2, Dennis
Claramente, não é a solução pretendida, porque também funciona no bash mais recente.
Experimente online.
fonte
Octave , Stewie Griffin
Entrada:
exit
Raciocínio:
input
avalia o que é inserido.exit
sai do programa.Experimente online!
fonte
Python 2, Foon
O que diz na lata, basicamente.
Experimente online.
fonte
Python 3 (CPython), Veedrac
Experimente online!
fonte
Python 3, Syphor
Isso foi divertido. Precisamos fazer a
type(x) != str
verificação passar, por isso precisamos controlar o valor de retorno detype()
. Temos que substituir o__class__
atributo e substituí-lo por um objeto personalizado, que se estendetype
, que__ne__
substitui o método por um que sempre retorna falso. Isso faz com que seja aprovada na verificação de tipo, mas a pesquisa falhará porqueo
não é um str.fonte
C #, TheLethalCoder
Ou qualquer outra classe anulável.
fonte
Retina
Uma nova linha seguida de uma
1
obra. Eu encontrei imediatamente.Experimente online
fonte
JS (ES6)
Qualquer caractere com um código menor que 10 deve funcionar; Eu usei um
tab
personagem acima, que SE converte em espaços.fonte
f(<tab>)
é válido sintaxe (entrada vazia) e nós teríamos que diferenciarf(1)
ef("1")
de qualquer maneiraJavaScript (ES6), programmer5000
Experimente online!
A condição era
!x||x>="\n"
. Qualquer caractere único em uma tabela ASCII com um código menor que\n
irá funcionar.fonte
cQuents, Passo Galinha
Qualquer coisa seguida por um espaço e um número inteiro positivo. O espaço separa as entradas e a entrada extra se torna o número do termo a ser produzido.
Experimente online!
fonte
a 1
! Você me ninja'd: /MATL , Luis Mendo (não a solução pretendida)
A entrada vazia interrompe o programa e gera o seguinte erro:
Experimente online!
fonte