Será que vai parar? (Policiais)

94

Este é o tópico dos policiais. A discussão dos ladrões está aqui .

Seu desafio é criar um programa que funcione para sempre sem interromper 1 , a menos que obtenha uma entrada ou entradas específicas 2 . Se receber essa entrada, deverá terminar em um período finito de tempo 3 . Isso é , então a resposta mais curta que não foi quebrada por um ladrão dentro de uma semana após a publicação vence. Após a semana, marque sua resposta como segura e mostre a entrada de parada (em a > ! spoiler quote). Se um ladrão quebrar sua submissão, marque-a como rachada e mostre a entrada interrompida (em a > ! spoiler quote).

É preferível que os envios sejam executáveis ​​e quebráveis ​​no TIO . Os envios não executáveis ​​ou quebráveis ​​no TIO são permitidos, mas inclua instruções para fazer o download / executá-los.

Faça sua entrada determinística e uniforme em todas as execuções. Veja esta meta post para detalhes.

Por favor, não "implemente o RSA" ou algo que signifique para os ladrões. Use idiomas e recursos obscuros, sem criptografia e hash chatos. Não posso impor isso com regras, mas você pode esperar votos em queda torrenciais se tudo o que você faz é sha(input) === "abcd1234".


1 Supondo que o computador não seja desligado, quebre, seja envolvido pelo sol, superaqueça com a morte por calor do universo ou atinja o tempo limite do TIO nos anos 60.

2 O programa deve parar em pelo menos uma entrada. Contanto que ele faça loops para sempre em uma entrada e pare em outra, funcionará.

3 Deve ser <60 segundos, para que o código possa ser testado no TIO.


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.innerHTML = 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>

programmer5000
fonte
1
@LuisMendo assumindo memória infinita é bom
programmer5000
1
@ programmer5000 Obrigado por esclarecer. Você deve incorporar tudo isso ao texto do desafio. Não é esperado que os respondentes leiam todos os comentários
Luis Mendo
6
Podemos restringir a entrada para, digamos, um número inteiro? Um ladrão pode passar alguma entrada malformada ou digitada incorretamente para finalizar o programa imediatamente. Eu precisaria fazer muita validação cuidadosa de entrada ou usar uma linguagem que possa detectar erros arbitrários.
Xnor
3
@ xnor Acho que você deve fazer a verificação de entrada.
24517 Stephen
1
@StepHen Isso funciona se a entrada malformada ainda puder ser analisada pelo intérprete. Se eu digitar uma string ilegal, Rerros imediatamente, sem sequer entrar na função de crack. Eu argumentaria que isso não conta como realmente encerrando a função.
26417 JAD

Respostas:

55

Malbolge, 128 bytes, quebrado por KBRON111

(=&r:#o=~l4jz7g5vttbrpp^nllZjhhVfddRb`O;:('JYX#VV~jS{Ql>jMKK9IGcFaD_X]\[ZYXWVsN6L4J\[kYEhVBeScba%_M]]~IYG3Eyx5432+rpp-n+l)j'h%B0

Diverta-se!

(Sim, eu aprendi Malbolge apenas por isso. Sim, demorou um tempo absurdamente longo para finalmente começar a trabalhar. E sim, valeu totalmente a pena.)

Embrulhado, para que você possa vê-lo na íntegra, er, "glória":

(=&r:#o=~l4jz7g5vttbrpp^nllZjhhV
fddRb`O;:('JYX#VV~jS{Ql>jMKK9IGc
FaD_X]\[ZYXWVsN6L4J\[kYEhVBeScba
%_M]]~IYG3Eyx5432+rpp-n+l)j'h%B0

Eu usei esse intérprete para testá-lo; Não tenho certeza se isso importa, mas achei que especificaria apenas por precaução.

Maçaneta da porta
fonte
2
Esse é o intérprete que o TIO usa.
Dennis
2
oh, "Divirta-se" é um bom complemento #
30517
26
Você é um idiota. Malbolge é mau.
Draco18s
1
Estou carimbado ... O mais longe que cheguei: das 13 entradas antes da parada, apenas a primeira e a terceira têm algum impacto. Depois de engenharia reversa minuciosa, descobri que primeira entrada tem de ser 6e o terceiro é um dos quatro: !, #, /e -. Mas a combinação não parece consertar a parada. Coloquei aqui, talvez alguém mais inteligente encontre uma solução. Se alguém quiser, vou postar amanhã como cheguei a essas entradas. EDIT: Agora que penso nisso, meu programa que escrevi com o objetivo de engenharia reversa pode ter um bug, e a primeira entrada pode ser outra coisa que não 6. O terceiro personagem ainda está de pé.
Grzegorz Puławski
7
Rachado por KBRON111 .
Veedrac
23

JavaScript (ES6), 17 bytes, Cracked

x=>{for(;x==x;);}

No TIO, como não sei como executar o readline do Node.js no TIO, basta inserir a entrada na chamada de função. Isso é óbvio para quem sabe, e não para quem não conhece.

Experimente online!

Responda:

A resposta é NaN, já que em JavaScript NaN != NaN,.

Stephen
fonte
2
Rachado . Bom uso de uma singularidade de idioma!
programmer5000
3
Você aposta :) Eu gosto de como você estava tão confiante que foi o que eu escolhi que você editou para mim: P
Stephen
12
NaN == NaNé falso em muitos idiomas além do JavaScript. Eu não chamaria isso de "estranheza linguística".
Nayuki
9
eu acredito NaN != NaNé uma característica de números de ponto flutuante
undergroundmonorail
1
@undergroundmonorail: Está correto. A relação entre dois números de ponto flutuante IEEE pode ser acima, igual, abaixo ou não ordenada . O resultado da comparação não é ordenado se um ou ambos os operandos forem de qualquer tipo de NaN. (O ponto flutuante binário IEEE 754 possui muitos padrões de bits NaN : qualquer coisa com o expoente all-ones e uma mantissa diferente de zero é um NaN, independentemente do bit de sinal. Existem algumas regras para as quais o que entra na "carga útil" de um NaN, e para propagar que através de operações como +ou max(), mas a maioria das pessoas não se importam: P)
Peter Cordes
14

JS (ES6), 67 bytes ( rachado )

(x,y)=>{while(x!==y||Object.is(x, y)||!isFinite(x)||!isFinite(y));}

Eu acho que não errei, pode ter uma solução fácil que eu não vi.

Agradeço qualquer feedback, este é um dos meus primeiros posts

(+0, -0) Sim, js tem um 0 negativo

Juan Tonina
fonte
3
Cracked
Stephen
Percebo agora que eu não preciso verificar se xe ysão finitos, mas não vou editar uma vez que já estava rachado. Poderia ter sido 38 bytes
Juan Tonina
10

Python 3.4, (40 bytes) Rachado

def f(x):
  while(x==x or not x==x):pass
Siphor
fonte
4
Bem-vindo ao PPCG!
Martin Ender
Rachado
g.rocket
12
Eu sinto que você deveria ter armazenado x==xem uma variável chamada to_be, para que você possa fazer uma referência Hamlet.
Peter Cordes
@PeterCordes Mas isso teria tornado a resposta
impossível de resolver
@ppperry: sim, notei isso depois de olhar para o crack. : P
Peter Cordes
9

Javascript (NÃO node.js)

x=>{while(x+"h");}

A submissão desejada não usa throw.

Dica para a rachadura desejada:

O envio desejado não substitui .toString()ou usa Set()qualquer um.

Rachadura desejada:

Object.create(null)

programmer5000
fonte
Ligação de crack correta (não a minha, apenas um link para a resposta de Dom Hasting)
Stephen
Rachado # 2 Rachado sem usar throw(embora ainda dê um erro) #
Grant Davis
Rachei novamente sem usar throw, creio que desta vez real, pois Grant Davis 'não funcionou para mim. Ainda TypeErrors.
Haumed Rahmani
2
Você pode fazer x=>{try{for(;x+"h";)}catch(e){for(;;)}}isso para que qualquer erro resulte em um loop infinito, para que erros de função de protótipo ausentes (ou quaisquer erros) resultem em um loop infinito.
Grant Davis
1
Este funciona apenas no navegador, mas não sei por que: D
jadkik94
8

C (gcc) , 75 bytes Cracked

#include<stdio.h>
int main(){char c[9];while(1){scanf("%8s",c);printf(c);}}

Experimente online!

Eu nunca publiquei um policial e ladrão antes. Espero que isso não seja muito óbvio.

Solução:

Uma entrada de "% s" torna esse segfault. Existem vários outros que podem ser usados; todos eles são printfespecificadores como "% n"
Esta é a printfvulnerabilidade clássica . Simplificando, a string de formato vem diretamente da entrada do usuário, para que qualquer printfespecificador seja repassado, sem segurança.

Justin
fonte
1
Rachado .
Conor O'Brien
8

JavaScript (no navegador), 79 bytes Cracked

x=>{try{for(;x||x!=null||x!=void 0||x===null||x===void 0;);}catch(e){for(;;);}}

Você deve executá-lo em um navegador recente (como o Firefox ESR mais recente, o Firefox mais recente, o Chromium mais recente). A execução em navegadores antigos (como o Netscape 2, IE 4) não conta.

Nota: Interrompido pelo navegador devido ao tempo limite, não conte uma parada aqui.

Sempre tenha cuidado para não travar o navegador ao testar esses códigos e roubar feliz ^ _ ^

document.all

tsh
fonte
Posso usar o setTimeout?
2241717 ЕЕге
@ ЕвгенийНовиков Você pode chamar esta função com qualquer parâmetro. Mas parece que o uso setTimeoutcomo parâmetro não funciona.
tsh
a idéia é fazer var key=(()=>{setTimeout(args);return null})()e então #crackme(key)
30517
parece estar trapaceando #
30517
1
Cracked
Juan Tonina
6

PHP (quebrado por Vicente Gallur Valero), 65 bytes

<?php
parse_str($argv[1],$_);
while(!$_['(-0_0)> deal with it']);

Experimente online!

Mais difícil do que parece. Editado para ser possível no TIO, ao custo de vários bytes. Toma entrada via $argv[1].

Sísifo
fonte
1
Cracked
Vicente Gallur Valero
6

Casca , 5 bytes Rachada

↑ε∞←ø

Experimente online!

Um pouco de explicação, já que esse idioma ainda é bem novo:

←øobtém o primeiro elemento de uma lista vazia: retorna um valor que pode assumir qualquer tipo, seja um tipo concreto ou uma função, que será aplicada à entrada. cria uma lista infinita composta por cópias do resultado anterior (que na maioria dos casos significa uma lista de zeros infinitos). ↑εretira elementos desta lista desde que sejam "pequenos", ou seja, seu valor absoluto é ≤1; em uma lista infinita de zeros, isso nunca para.

Leo
fonte
@Veedrac que era realmente a minha solução pretendida
Leo
Bem, então, rachado!
Veedrac
5

Braingolf , 4 bytes ( rachado )

[1+]

Experimente online!

Suuuper fácil, mas vamos ver quanto tempo leva

Responda:

-1ou qualquer número menor que 0.

Skidsdev
fonte
Rachado .
programmer5000
5

Ruby , 31 bytes ( quebrado por Eric Duminil )

0until(3.send(gets)==5rescue p)

Experimente online!

Observe que isso precisa ser executado em um ambiente onde não há nova linha final no resultado de gets, ou então é impossível fazê-la parar (eu acho), pois qualquer coisa que termine em uma nova linha irá errar e atingir o resgate.

histocrata
fonte
Rachado!
Eric Duminil
Nice por sinal! Nenhum método 3.methodsretorna 5ou sai do loop.
Eric Duminil
Droga! Descobri a solução bem de forma independente, mas eu estava muito focado em tornar mais igual 5a pensar que a resposta correta envolveria a função que ele fez ...
Valor de tinta
5

Bash 4.2, 14 bytes ( quebrado )

Vamos tentar de novo.

let ${1,,}
yes

Isso não funciona no TIO, que usa o Bash 4.3. A entrada é via argumentos da linha de comando.

No Linux e com o gcc instalado, o Bash 4.2.53 pode ser baixado e compilado da seguinte maneira.

curl -sSL https://ftp.gnu.org/gnu/bash/bash-4.2.53.tar.gz | tar xz
cd bash-4.2.53
./configure
make -j
Dennis
fonte
Rachado. Basicamente, acabei lendo a fonte.
Veedrac
4

Retina , 78 bytes ( Rachado ) ( Rachado com solução pretendida )

^
1
+`^1(1+)
$1¶$&
s`(?<=^|¶)(1+)(?=¶)(?!.*¶\1+$)

¶(?!1+$)

^(1+)¶\1$

+`1
11

Foi muito divertido de escrever, espero que seja divertido de quebrar

Experimente online!

Rachado com uma solução não intencional e a solução pretendida dentro de um minuto uma da outra. Um postado primeiro, um comentado primeiro.

Solução pretendida:

11111 ou a representação unária de n-1 onde n é qualquer número perfeito

PunPun1000
fonte
Rachado
mbomb007
Cracked
Kritixi Lithos
Então, de quem é o crack? (Eu postei o crack em primeiro lugar, mas mbomb007 comentou primeiro)
Kritixi Lithos
@Cowsquack tanto
programmer5000
4

Node.js, 23 bytes ( rachado )

var crackme =
i=>{while({[i]:NaN}){}}

Solução Grant Davis

{__proto__:null}

Minha solução

{"toString":process.exit}

Евгений Новиков
fonte
2
rachado!
Grant Davis
@GrantDavis good job) Sua solução também funciona no navegador. Eu pensei em cercá-lo com try-catch, mas recusei essa idéia, para criar um código bonito.
22617 # 32вгений Новиков
4

Java 8, 99 bytes, Rachado

s->{try{Integer i=Integer.parseInt(s),c=i+32767;i+=32767;for(;i!=c;);}catch(Throwable t){for(;;);}}

Este é um lambda do tipo Consumer<String>.

Ungolfed:

s -> {
    try {
        Integer i = Integer.parseInt(s), c = i + Short.MAX_VALUE;
        i += Short.MAX_VALUE;
        while (i != c) ;
    } catch (Throwable t) {
        while (true) ;
    }
}

Experimente online! (observe que o programa de teste falhará na entrada vazia, mas o lambda em si não o faria!) (também use 'argumentos' e não 'entrada' no TIO, pois o programa de teste usa argumentos, não STDIN)

Resposta pretendida:

-32767; Isso funciona porque o Java keep possui dois tipos inteiros, inte Integer. Integeré um objeto que envolve int. Além disso, Java mantém um cache de Integers que caixa -127através 127. O !=operador verifica a identidade; portanto, através de alguns casos de desempacotamento e encaixotamento automático, qualquer número em xque se x + 32767encontra [-127, 127]acabará sendo o mesmo Integerobjeto do cache e, portanto i != c, será falso.

Phoenix socrático
fonte
2
Rachado.
Veedrac
4

Bash 4.2, 10 bytes ( rachado )

let $1
yes

Isso não funciona no TIO, que usa o Bash 4.3. A entrada é via argumentos da linha de comando.

No Linux e com o gcc instalado, o Bash 4.2.53 pode ser baixado e compilado da seguinte maneira.

curl -sSL https://ftp.gnu.org/gnu/bash/bash-4.2.53.tar.gz | tar xz
cd bash-4.2.53
./configure
make -j
Dennis
fonte
1
Rachado. Você me levou em círculos pensando que isso estava relacionado ao shellshock e me ligou a uma versão corrigida: P. Contar o crack não intencional como vingança mesquinha;).
Veedrac
Heh, não exatamente o que eu estava procurando. Publiquei uma versão reforçada, se você quiser experimentá-lo.
Dennis19
3

Java: 1760 ( Rachado )

Eu sinto que é muito ruim jogar este, então apenas ofusquei os nomes das variáveis ​​e a deixei 'bagunçada'. Por uma questão de fato, é tão malvado que vou postar dicas ao longo do tempo, para que eu possa ver isso rachado.

Dica 1: isso tem entradas válidas teoricamente infinitas, mas há uma que é a mais 'correta'


public class Main {

	public static void main(String[] a) {
		try {
			while (a.length < 2) {
				int i = 0;
			}
			boolean invalid = 1 < 0;
			char l = '_';
			char h = '-';
			char[] DATATWO = a[0].toCharArray();
			char[] DATATOW = a[1].toCharArray();
			int length = DATATOW.length;
			if (DATATWO.length != length) {
				invalid = 1 > 0;
			}
			int transmissionStartIndex = 0;
			for (int i = 0; i < length; i++) {
				if (DATATWO[i] == l && DATATOW[i] == l) {
					transmissionStartIndex = i;
					break;
				}
			}
			int DATAONE = 0, reg = 0;
			boolean read = 1 < 0, full = 0 < 1;
			int bytes_read = 0;
			for (int i = transmissionStartIndex; i < length; i++) {
				if (DATATOW[i] == l && DATATOW[i + 1] == h) {
					bytes_read++;

					if (bytes_read == 8) {
						read = DATATWO[i] == h;
					} else if (bytes_read == 9) {
						invalid = (DATATWO[i] == h || invalid);
						System.out.println(invalid);
					} else if (bytes_read == 18) {
						System.out.println(invalid);
						invalid = (DATATWO[i] == h || invalid);
						if (invalid) {
							System.out.println("i36 " + DATATWO[i] + " " + h);
						}
						full = 1 > 0;
					} else if (bytes_read < 8) {
						DATAONE += (DATATWO[i] == h ? 1 : 0) << (7 - bytes_read);
					} else if (bytes_read < 18) {
						reg += (DATATWO[i] == h ? 1 : 0) << (8 - (bytes_read - 9));
					} else if (bytes_read > 18) {
						invalid = 1 > 0;
					}
					System.out.println(a[0]);
					System.out.println(new String(new char[i]).replace("\0", " ") + "|");
					System.out.println(a[1]);
				}
			}

			while (!(Integer.toHexString(DATAONE).equals("0x2b") && (read)
					&& Integer.toHexString(reg).equals("0xa6"))) {

				System.out.println(System.currentTimeMillis());
				try {
					Thread.sleep(1);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}

		} catch (Exception e) {
			while (true) {
			}
		}

	}
}

Experimente online!

tuskiomi
fonte
Dois argumentos vazios parecem funcionar
Okx
Além disso, importa adicionar um link tio? Eu acho que tudo o que você precisa fazer é mudar principal para Principal
Okx
1
Rachado , além de um bug.
user3033745
Rachado - nenhum erro específico da versão.
Okx
3

Braingolf , 18 bytes Rachado

1+[#£-0!e>:$_1>|]

Experimente online!

Liiiitle um pouco mais difícil do que o último, vou começar a escrever um real depois disso

A resposta é 163

Skidsdev
fonte
Cara, este é provavelmente o único atm de submissão sobrevivente. Nota: inão funciona.
Erik the Outgolfer
Aviso: na verdade, são 19 bytes ( £). E por que não -1funciona? Isso é complicado.
Erik the Outgolfer
@EriktheOutgolfer Tem 17 caracteres e 18 bytes.
totallyhuman
@totallyhuman Eu juro que tinha lido "19 bytes UTF-8, 18 caracteres" (o script de usuário está ativado) ...
Erik the Outgolfer
Cracked
Adnan
3

JavaScript (ES7), 41 bytes ( invadido e quebrado )

Edit: corrigido para impedir que ele falhe quando não recebe nenhuma entrada (obrigado @totallyhuman por perceber)


Provavelmente existem várias soluções, mas a esperada é relativamente simples.

(x=0)=>{for(;~x/x.length**3!=-2962963;);}

Solução pretendida:

"8e7" (um número na notação científica transmitida como uma seqüência de caracteres)
Porque: ~ "8e7" / "8e7" .length ** 3 = -80000001 / 3 ** 3 = -80000001/27 = -2962963

Arnauld
fonte
2
Nenhuma entrada funciona nessa também, mas não quero incomodá-la dessa maneira ... A menos que seja a solução pretendida. : P
totallyhuman
@totallyhuman Bem, é não a solução pretendida. :-)
Arnauld
Hacked codegolf.stackexchange.com/a/135432/71612
Евгений Новиков
2
Atualização: foi planejada uma solução com 3 bytes de comprimento
24517
3

Bash + Utils (rachado por Dennis), 74 bytes

Espero que você goste de alcatrão, porque é o único utilitário que você pode usar.

cp /bin/tar .
env -i PATH=$PWD I=$? /bin/bash -r -c "$1"
while :;do :;done

Experimente online!

Rachadura pretendida

tar -cf --checkpoint=1 --checkpoint-action=exec="/bin/kill $I" .

Sísifo
fonte
1
rachado
Dennis
@Dennis Nice! Publiquei o crack pretendido, que era um pouco mais complexo.
Sísifo
3

Mathematica, 36 26 bytes ( quebrado )

#0[#;$IterationLimit=∞]&

Um loop muito curto #0[#;∞]que continuará sendo executado repetidamente até travar o kernel ... (O $IterationLimité apenas para garantir que você fique preso para sempre na maioria das entradas).

Experimente na Wolfram Sandbox! - se você estiver preso em um loop infinito, poderá esperar até atingir o tempo limite ou pressionar o ícone quadrado "anular avaliação" à esquerda do título do notebook (unnamed).

NOTA : esta função altera suas $IterationLimitconfigurações.

JungHwan Min
fonte
Rachado?
Martin Ender
3

JavaScript (Node.js), 18 bytes ( Rachado )

x=>{while(x+"h");}

Experimente online! Responda:

new Buffer(268435440)gera um erro quando .toStringed.

programmer5000
fonte
1
Cracked
Stephen
Além disso, Symbol()iria funcionar.
Patrick Roberts
3

C #, 118 bytes ( rachado )

using System;_=>{while(1>0){try{if(Nullable.GetUnderlyingType(Type.GetType(Console.ReadLine()))!=null)break;}catch{}}}

Não espero que isso dure muito tempo, mas é mais estranho do que parece.

Basicamente, qualquer aulas anuláveis nome completo funciona, mas é estranho para descobrir como ele se parece com o abaixo:
System.Nullable`1[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]
Uma maneira mais fácil de encontrar essa seqüência de fora é fazer typeof(int?).FullName.

TheLethalCoder
fonte
Cracked
Luc
3

C, 140 bytes ( rachado )

n,i;f(){float x,y,z;for(scanf("%d %d",&n,&z,x=y=0);~((int)x-(int)(1/sqrt(y*2)));x*=(1.5-y*x*x))y=(x=z)/2,i=n-((*(int*)&x)/2),x=*(float*)&i;}

Esperamos que não haja muitas entradas nem mesmo próximas às planejadas, o que interrompe, mas vamos ver.

Experimente online!

Steadybox
fonte
Rachado.
Veedrac
3

JavaScript (ES7), 73 bytes ( Rachado !)

q=>{r=(n,i=0)=>i>1e3?n:r(n*16807%(2**31-1),i+1);while(r(q)!=627804986){}}

Soluções não desejadas: força bruta. O crack desejado envolve matemática.

Observe que existem muitas soluções (4194304) devido ao módulo.

iovoid
fonte
1
Rachado.
Veedrac
3

brainfuck , 170 bytes rachados!

>>,>,>,>,>,[-----------<-<+<--<--->>>>]<++<<+<++[----->+<]>[----------------->+++++++<]>[----->>+<<]>>[-<->]<[--->++++++<]>[--->+<]+>-[-----------------<+>]<[-->-<]>+[+-]

Experimente online!

Jerry
fonte
Bem vindo ao site! Você pode salvar 11 bytes removendo as novas linhas do seu código.
Wheat Wizard
Eu esqueci que era código de golfe, obrigado!
Jerry
Rachado
user202729
Solução válida! Eu estimo que existem muitos deles. Para quem resolve / força bruta, o pretendido é [az].
30517 Jerry
Para cada 4 caracteres, há exatamente 1 valor do último caractere que interrompe o programa. Portanto, existem 256 ^ 4 = 4294967296 soluções assumindo que você pode entrar nulno cérebro. BTW você pode remover dois primeiro >salvar 2 bytes.
user202729
3

JavaScript ES6 (Node.js> = 6.0) , 326 bytes (Seguro)

((v,e=require('events').EventEmitter.prototype,l=_=>{while(1);},P=Proxy,p=process)=>(p.kill=p.exit,e.listeners=new P(e.listeners,{apply:(t,c,a)=>a[0]=='exit'?[]:t.apply(c,a)}),e.removeAllListeners=new P(e.removeAllListeners,{apply:(t,c,a)=>a[0]=='exit'?c:t.apply(c,a)}),p.on('exit',l),i=>{try{v(i)}catch(o){}l()}))(s=>eval(s))

Muito mais simplificado do que meu outro desafio , não estou mais tentando ofuscar a abordagem da solução, o que me salvou muitos bytes. Desta vez, process.kill()não funcionará.

"delete process._events.exit;process.exit()"

Experimente online!

Patrick Roberts
fonte
Woah! Bom trabalho!
programmer5000
Parece que você é o vencedor, embora eu estava esperando um código hehe muito mais curto
Piyin
3

Swift 3, 14 bytes ( rachado )

while !false{}

Para resolver isso, coloque seu código antes ou depois desta declaração.

  • Sua solução deve:
    • mantenha esta declaração intacta, sem modificar seu código
    • na verdade, deixe essa declaração executar
      • Basta comentar, ligar fatalError(), etc., antes que não conte.
    • modifique o comportamento desta declaração para impedir que ela faça um loop para sempre
  • A solução não envolve travar o programa.
Alexander
fonte
Não conheço o Swift, mas acho que adicionar um cronômetro antes desse código para sair após alguns segundos atenderia aos critérios.
@Yimin heh, inteligente, mas não modifica a semântica desta declaração, que é o que eu estava procurando realmente quando eu disse "modifica o comportamento desta declaração"
Alexander
Tem certeza de que a solução funciona? O intérprete está gritando ambiguous semanticscomigo.
Daniel
@ Dopapp é o que eu pensei que aconteceria na minha tentativa anterior. Por alguma razão, é legal redefinir novos operadores de infix com as mesmas assinaturas de tipo daqueles que já existem, mas tentar fazer o mesmo com um operador unário gera um erro de ambiguidade de tempo de compilação. Isso é intencional, e tenho certeza que eu tenho uma solução de trabalho
Alexander
Rachado.
Veedrac 31/07/19
2

cQuents , 2 bytes ( Rachado 1 ) ( Rachado 2 )

:A

Observe que isso atingirá rapidamente o limite de saída de 128 KiB no TIO, fazendo com que ele pare, mas quando executado localmente, ele fará um loop para sempre, exceto na entrada que o interrompe. Encontrar essa entrada deve ser bastante fácil. Até que você faça isso, :Acontinuará apontando a língua triangular para você.

Observe também que isso deve ser justo, Amas quebrei os modos implícitos ontem à noite. Em versões antigas de intérpretes A, funcionaria bem.

Rachaduras:

Entrada vazia / nova linha na entrada é um crack válido. No entanto, exceto que, ao passar várias entradas (separadas por espaço) para o programa, você a encerrará (se você fornecer 2) ou ocorrerá um erro (se você fornecer 3 ou mais).

Experimente online!

Stephen
fonte
Rachado? (Os erros fora com entrada de vazio)
Luis Mendo
Rachado?
Kritixi Lithos
@ crackers sim, isso é um crack válido. Vou dar o meu voto positivo a alguém que encontrar o crack de entrada não vazia, no entanto.
Stephen