¿Se detendrá? (Policías)

94

Este es el hilo conductor de la policía. El hilo de los ladrones está aquí .

Su desafío es hacer un programa que se ejecute para siempre sin detener 1 , a menos que obtenga una entrada o entradas particulares 2 . Si recibe esa entrada, debe terminar en un tiempo finito 3 . Este es el , por lo que la respuesta más corta que no ha sido descifrada por un ladrón dentro de una semana de publicar victorias. Después de que haya pasado la semana, marque su respuesta como segura y muestre la entrada de detención (en a > ! spoiler quote). Si un ladrón rompe su envío, márquelo como agrietado y muestre la entrada de detención (en a > ! spoiler quote).

Se prefiere que las presentaciones sean ejecutables y crackeables en TIO . Se permiten envíos no ejecutables o crackeables en TIO, pero incluya instrucciones para descargarlos / ejecutarlos.

Haga que su entrada sea determinista y uniforme en todas las ejecuciones. Vea esta meta publicación para más detalles.

Por favor, no "implemente RSA" ni nada que signifique para los ladrones. Utilice características y lenguajes oscuros, no cifrado y hashing aburridos. No puedo aplicar esto con reglas, pero puedes esperar votos negativos torrenciales si todo lo que haces es sha(input) === "abcd1234".


1 Suponiendo que la computadora no se apaga, se rompe, se ve envuelta por el sol, se sobrecalienta en la muerte por calor del universo o alcanza el tiempo de espera TIO de los años 60.

2 El programa debe detenerse en al menos una entrada. Siempre que se repita para siempre en una entrada y se detenga en otra, funciona.

3 Esto debe ser <60 segundos, para que el código se pueda probar en TIO.


¿Está buscando presentaciones sin descifrar?

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>

programador 5000
fuente
1
@LuisMendo suponiendo que la memoria infinita está bien
programmer5000
1
@ programmer5000 Gracias por aclarar. Deberías incorporar todo esto en el texto del desafío. No se espera que los respondedores lean todos los comentarios
Luis Mendo
66
¿Podemos restringir la entrada a, por ejemplo, un número entero? Un ladrón podría pasar alguna entrada mal formada o mal escrita para terminar el programa inmediatamente. Tendría que hacer una validación de entrada cuidadosa o usar un lenguaje que pueda detectar errores arbitrarios.
xnor
3
@xnor Creo que se supone que debes hacer la verificación de entrada.
Stephen
1
@StepHen Eso funciona si el intérprete aún puede analizar la entrada con formato incorrecto. Si ingreso una cadena ilegal, Rerrores de inmediato, sin siquiera ingresar la función para crackear. Yo diría que eso no cuenta como terminar realmente la función.
JAD

Respuestas:

55

Malbolge, 128 bytes, descifrado por KBRON111

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

¡Que te diviertas!

(Sí, aprendí Malbolge solo por esto. Sí, me tomó un tiempo absurdamente largo finalmente trabajar. Y sí, valió la pena).

Envuelto, para que pueda verlo en su totalidad, er, "gloria":

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

Usé este intérprete para probarlo; No estoy seguro de si importa, pero pensé que especificaría por si acaso.

Pomo de la puerta
fuente
2
Ese es el intérprete que TIO usa por cierto.
Dennis
2
oh, "Diviértete" es una buena adición
Евгений Новиков
26
Eres un idiota. Malbolge es malo.
Draco18s
1
Estoy sellado ... Lo más lejos que obtuve: de 13 entradas antes de detener, solo el primero y el tercero tienen algún impacto. Después de minuciosa ingeniería inversa, descubrí que primero de entrada tiene que ser 6y la tercera es una de las cuatro: !, #, /y -. Pero la combinación no parece arreglar el alto. Lo puse aquí, tal vez alguien más inteligente encuentre una solución. Si alguien quiere, publicaré mañana cómo llegué a estas entradas. EDITAR: Ahora que lo pienso, mi programa que escribí con el propósito de realizar ingeniería inversa puede tener un error, y la primera entrada puede ser algo más 6. El tercer personaje sigue en pie.
Grzegorz Puławski
77
Agrietado por KBRON111 .
Veedrac
23

JavaScript (ES6), 17 bytes, Agrietado

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

En TIO, dado que no sé cómo hacer la línea de lectura de Node.js en TIO, solo pegue la entrada en la llamada de función. Esto es obvio para cualquiera que lo sepa, y no para cualquiera que no lo sepa.

Pruébalo en línea!

Responder:

La respuesta es NaN, ya que en JavaScript, NaN != NaN.

Stephen
fuente
2
Agrietada . Buen uso de un idioma extraño!
programmer5000
3
Puedes apostar :) Me gusta cómo estabas tan seguro de que eso fue lo que elegí que lo editaste para mí: P
Stephen
12
NaN == NaNes falso en muchos idiomas además de JavaScript. No lo llamaría una "rareza de lenguaje".
Nayuki
99
Creo que NaN != NaNes una característica de los números de coma flotante
undergroundmonorail
1
@undergroundmonorail: Eso es correcto. La relación entre dos números de coma flotante IEEE puede ser superior, igual, inferior o desordenada . El resultado de la comparación no está ordenado si uno o ambos operandos son algún tipo de NaN. (El punto flotante binario IEEE 754 tiene muchos patrones de bits NaN : cualquier cosa con el exponente all-ones y una mantisa distinta de cero es un NaN, independientemente del bit de signo. Hay algunas reglas para las cuales entra en la "carga útil" de un NaN, y por propagar eso a través de operaciones como +o max(), pero a la mayoría de la gente no le importa: P)
Peter Cordes
14

JS (ES6), 67 bytes ( agrietado )

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

Creo que no me equivoqué, podría tener una solución fácil que no vi.

Agradezco cualquier comentario, esta es una de mis primeras publicaciones

(+0, -0) Sí, js tiene un 0 negativo

Juan tonina
fuente
3
Agrietado
Stephen
Ahora me doy cuenta de que no necesito para comprobar si xy yson finitos, pero no voy a editar, puesto que ya estaba roto. Podrían haber sido 38 bytes
Juan Tonina
10

Python 3.4, (40 bytes) Agrietado

def f(x):
  while(x==x or not x==x):pass
Siphor
fuente
44
Bienvenido a PPCG!
Martin Ender
Agrietado
g.rocket
12
Siento que debería haber almacenado x==xen una variable llamada to_be, por lo que podría hacer una referencia de Hamlet.
Peter Cordes
@PeterCordes Pero eso habría hecho que la respuesta fuera
indescifrable
@ppperry: sí, me di cuenta de eso después de mirar la grieta. : P
Peter Cordes
9

Javascript (NO node.js)

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

La presentación deseada no usa throw.

Sugerencia para la grieta deseada:

El envío deseado no se sobrescribe .toString()ni se usa Set().

Crack deseado:

Object.create(null)

programador 5000
fuente
Enlace correcto de crack (no es mío, solo un enlace a la respuesta de Dom Hasting)
Stephen
Agrietado # 2 Agrietado sin usar throw(todavía da un error)
Grant Davis
Agrietado de nuevo sin usar throw, creo de verdad esta vez ya que Grant Davis no funcionó para mí. Todavía TypeErrors.
Haumed Rahmani
2
Puede hacerlo x=>{try{for(;x+"h";)}catch(e){for(;;)}}para que cualquier error produzca un bucle sin fin, de modo que los errores de función prototipo faltantes (o cualquier error) den como resultado un bucle sin fin.
Grant Davis
1
Este solo funciona en el navegador, aunque no estoy seguro de por qué: D
jadkik94
8

C (gcc) , 75 bytes Agrietado

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

Pruébalo en línea!

Nunca he publicado en una policía-n-ladrones antes. Esperemos que esto no sea demasiado obvio.

Solución:

Una entrada de "% s" hace que este segfault. Hay varios otros que se pueden usar; todos ellos son printfespecificadores como "% n"
Esta es la printfvulnerabilidad clásica . En pocas palabras, la cadena de formato proviene directamente de la entrada del usuario, por lo que cualquier printfespecificador se pasa de manera insegura.

Justin
fuente
1
Agrietada .
Conor O'Brien
8

JavaScript (en el navegador), 79 bytes agrietado

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

Debe ejecutarlo en un navegador reciente (como el último Firefox ESR, el último Firefox, el último Chromium). Ejecutar en navegadores antiguos (como Netscape 2, IE 4) no cuenta.

Nota: Detenido por el navegador debido al tiempo de espera, no cuente un alto aquí.

Siempre tenga cuidado de no bloquear su navegador cuando pruebe estos códigos, y robe feliz ^ _ ^

document.all

tsh
fuente
¿Puedo usar setTimeout?
Евгений Новиков
@ ЕвгенийНовиков Puede llamar a esta función con cualquier parámetro. Pero parece que el uso setTimeoutcomo parámetro no funciona.
tsh
idea es hacer var key=(()=>{setTimeout(args);return null})()y luegocrackme(key)
Евгений Новиков
parece una trampa
Евгений Новиков
1
Agrietado
Juan Tonina
6

PHP (descifrado por Vicente Gallur Valero), 65 bytes

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

Pruébalo en línea!

Más difícil de lo que parece. Editado para que sea posible en TIO, a costa de un montón de bytes. Toma entrada vía $argv[1].

Sísifo
fuente
1
Agrietado
Vicente Gallur Valero
6

Casco , 5 bytes agrietado

↑ε∞←ø

Pruébalo en línea!

Un poco de explicación, ya que este lenguaje aún es bastante nuevo:

←øobtiene el primer elemento de una lista vacía: devuelve un valor que puede asumir cualquier tipo, ya sea un tipo concreto o una función, que luego se aplicará a la entrada. crea una lista infinita compuesta por copias del resultado anterior (que en la mayoría de los casos significará una lista de ceros infinitos). ↑εtoma elementos de esta lista siempre que sean "pequeños", es decir, su valor absoluto es ≤1; en una lista infinita de ceros esto nunca se detendrá.

León
fuente
@Veedrac que en realidad era mi solución prevista
Leo
Bueno, entonces, agrietado!
Veedrac
5

Ruby , 31 bytes ( descifrado por Eric Duminil )

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

Pruébalo en línea!

Tenga en cuenta que esto debe ejecutarse en un entorno en el que no haya una nueva línea final como resultado gets, de lo contrario, es imposible hacer que se detenga (creo) ya que cualquier cosa que termine en una nueva línea producirá un error y golpeará el rescate.

histocrat
fuente
¡Agrietado!
Eric Duminil
Bonito por cierto! Ningún método 3.methodsdevuelve 5o sale del bucle.
Eric Duminil
¡Maldito! Descubrí la solución también de forma independiente, pero estaba demasiado concentrado en igualarla como 5para pensar que la respuesta correcta implicaría la función que tenía ...
Value Ink
5

Bash 4.2, 14 bytes ( agrietado )

Intentemos esto de nuevo.

let ${1,,}
yes

Esto no funciona en TIO, que usa Bash 4.3. La entrada es a través de argumentos de línea de comandos.

En Linux y con gcc instalado, Bash 4.2.53 se puede descargar y construir de la siguiente manera.

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
fuente
Agrietado. Básicamente terminé leyendo la fuente.
Veedrac
4

Retina , 78 bytes ( agrietado ) ( agrietado con la solución prevista )

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

¶(?!1+$)

^(1+)¶\1$

+`1
11

Fue muy divertido escribir, espero que sea divertido descifrar

Pruébalo en línea!

Agrietado con una solución no deseada y la solución prevista dentro de un minuto el uno del otro. Uno publicó primero, uno comentó primero.

Solución prevista:

11111 o la representación unaria de n-1 donde n es cualquier número perfecto

PunPun1000
fuente
Agrietado
mbomb007
Agrietado
Kritixi Lithos
Entonces, ¿de quién es el crack? (Publiqué el crack primero, pero mbomb007 comentó primero)
Kritixi Lithos
@Cowsquack both
programmer5000
4

Node.js, 23 bytes ( Agrietado )

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

Solución Grant Davis

{__proto__:null}

Mi solución

{"toString":process.exit}

Евгений Новиков
fuente
2
¡agrietado!
Grant Davis
@GrantDavis buen trabajo) Su solución funciona en mi navegador también. Pensé en rodearlo con try-catch, pero rechacé esta idea, para hacer un código bonito.
Евгений Новиков
4

Java 8, 99 bytes, Agrietado

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

Esta es una lambda del tipo Consumer<String>.

Sin golf:

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

Pruébalo en línea! (tenga en cuenta que el programa de prueba se bloqueará en la entrada vacía, ¡pero el lambda en sí no lo haría!) (también, use 'argumentos' no 'entrada' en TIO, ya que el programa de prueba usa argumentos, no STDIN)

Respuesta prevista:

-32767; Esto funciona porque Java mantiene tiene dos tipos enteros, inty Integer. Integeres un objeto que se envuelve int. Además, Java mantiene un caché de Integers a -127través de ese cuadro 127. Los !=controles del operador de identidad, por lo que a través de algunos no-boxeo y el auto-boxing cualquier número x, donde x + 32767se encuentra en [-127, 127]acabará siendo el mismo Integerobjeto de la caché, y por lo tanto i != cserá falsa.

Fénix Socrático
fuente
2
Agrietado.
Veedrac
4

Bash 4.2, 10 bytes ( agrietado )

let $1
yes

Esto no funciona en TIO, que usa Bash 4.3. La entrada es a través de argumentos de línea de comandos.

En Linux y con gcc instalado, Bash 4.2.53 se puede descargar y construir de la siguiente manera.

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
fuente
1
Agrietado. Me guiaste en círculos pensando que esto estaba relacionado con el shellshock y vinculándome a una versión parcheada: P. Cuente la grieta involuntaria como una pequeña venganza;).
Veedrac
Je, no es exactamente lo que estaba buscando. Publiqué una versión reforzada si quieres probarlo.
Dennis
3

Java: 1760 ( agrietado )

Siento que es demasiado malo jugar golf, así que solo ofusqué los nombres de las variables y lo hice 'desordenado'. De hecho, es tan malo, que voy a publicar sugerencias con el tiempo, para que pueda verlo agrietado.

Sugerencia 1: esto tiene entradas válidas teóricamente infinitas, pero hay una que es la más 'correcta'


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) {
			}
		}

	}
}

Pruébalo en línea!

tuskiomi
fuente
Dos argumentos vacíos parecen funcionar
Okx
Además, ¿te importaría agregar un enlace tio? Creo que todo lo que necesita hacer es cambiar main a Main
Okx
1
Agrietado , aparte de un error.
user3033745
Agrietado : sin error específico de versión.
Okx
3

Braingolf , 18 bytes agrietado

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

Pruébalo en línea!

Liiiitle un poco más duro que el anterior, comenzaré a escribir uno real después de esto

La respuesta es 163

Skidsdev
fuente
Hombre, este es probablemente el único cajero de sumisión sobreviviente. Nota: ino funciona
Erik the Outgolfer
Advertencia: esto es en realidad 19 bytes ( £). ¿Y por qué no -1funciona? Esto es complicado
Erik the Outgolfer
@EriktheOutgolfer Tiene 17 caracteres y 18 bytes.
totalmente humano
@totallyhuman Juro que había leído "19 UTF-8 bytes, 18 caracteres" (usercript está habilitado) ...
Erik the Outgolfer
Agrietado
Adnan
3

JavaScript (ES7), 41 bytes ( pirateado y descifrado )

Editar: corregido para evitar que se bloquee cuando no se le da ninguna entrada (gracias @totallyhuman por notarlo)


Probablemente existan varias soluciones, pero la esperada es relativamente simple.

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

Solución prevista:

"8e7" (un número en notación científica pasado como una cadena)
Porque: ~ "8e7" / "8e7" .length ** 3 = -80000001 / 3 ** 3 = -80000001/27 = -2962963

Arnauld
fuente
2
Ninguna entrada funciona en este también, pero no quiero molestarme en descifrarlo así ... A menos que, esa sea la solución prevista. : P
totalmente humano
@totallyhuman Bueno, es que no la solución deseada. :-)
Arnauld
Hackeado codegolf.stackexchange.com/a/135432/71612
Евгений Новиков
2
Actualización: obtuve una solución de 3 bytes de largo
Евгений Новиков
3

Bash + Utils (descifrado por Dennis), 74 bytes

Espero que disfrutes del alquitrán, porque es la única utilidad que puedes usar.

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

Pruébalo en línea!

Crack previsto

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

Sísifo
fuente
1
agrietado
Dennis
@Dennis Nice! Publiqué mi crack previsto, que era un poco más complejo.
Sísifo
3

Mathematica, 36 26 bytes ( agrietado )

#0[#;$IterationLimit=∞]&

Un bucle muy corto #0[#;∞]que seguirá ejecutándose una y otra vez hasta que se bloquee el núcleo ... (Esto $IterationLimites solo para asegurarse de que se atasque para siempre para la mayoría de las entradas).

¡Pruébalo en Wolfram Sandbox! - si está atrapado en un bucle infinito, puede esperar hasta que se agote el tiempo de espera o puede presionar el icono cuadrado "abortar evaluación" a la izquierda del título del cuaderno (unnamed).

NOTA : esta función cambia su $IterationLimitconfiguración.

JungHwan Min
fuente
¿Agrietado?
Martin Ender
3

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

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

Pruébalo en línea! Responder:

new Buffer(268435440)arroja un error cuando .toStringed.

programador 5000
fuente
1
Agrietado
Stephen
Además, Symbol()funcionaría.
Patrick Roberts
3

C #, 118 bytes ( agrietado )

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

No espero que esto dure demasiado, pero es más incómodo de lo que parece.

Básicamente, el nombre completo de cualquier clase Nullable funciona, pero es difícil de averiguar, ya que se ve a continuación:
System.Nullable`1[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]
Una forma más fácil de encontrar esta cadena es hacerlo typeof(int?).FullName.

TheLethalCoder
fuente
Agrietado
Luc
3

C, 140 bytes ( agrietado )

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;}

Esperemos que no haya demasiadas entradas que ni siquiera estén cerca de lo previsto que lo detengan, pero veamos.

Pruébalo en línea!

Steadybox
fuente
Agrietado.
Veedrac
3

JavaScript (ES7), 73 bytes ( ¡ Agrietado !)

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

Soluciones no deseadas: fuerza bruta. El crack deseado involucra las matemáticas.

Tenga en cuenta que hay muchas soluciones (4194304) debido al módulo.

iovoide
fuente
1
Agrietado.
Veedrac
3

brainfuck , 170 bytes resquebrajados!

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

Pruébalo en línea!

alemán
fuente
Bienvenido al sitio! Puede guardar 11 bytes eliminando las nuevas líneas de su código.
Wheat Wizard
Olvidé que era código golf, ¡gracias!
Jerry
Cracked
user202729
Solución válida! Calculo que hay bastantes. Para cualquiera que resuelva / fuerza bruta, el objetivo es [az].
Jerry
Por cada 4 caracteres, hay exactamente 1 valor del último carácter que detiene el programa. Por lo tanto, hay 256 ^ 4 = 4294967296 soluciones, suponiendo que pueda entrar nulen brainfuck. Por cierto, puede eliminar dos primero >guardar 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))

Mucho más simplificado que mi otro desafío , ya no estoy tratando de ofuscar el enfoque de la solución, lo que me ahorró muchos bytes. Esta vez, process.kill()no funcionará.

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

Pruébalo en línea!

Patrick Roberts
fuente
Woah! ¡Buen trabajo!
programador
Parece que eres el ganador, aunque esperaba un código mucho más corto jeje
Piyin
3

Swift 3, 14 bytes ( agrietado )

while !false{}

Para resolver esto, ponga su código antes o después de esta declaración.

  • Su solución debe:
    • mantenga esta declaración intacta, sin modificar su código
    • en realidad dejar que esta declaración se ejecute
      • Simplemente comentarlo, llamar fatalError(), etc. antes de que no cuente.
    • modificar el comportamiento de esta declaración para evitar que se repita para siempre
  • La solución no implica bloquear el programa.
Alejandro
fuente
No conozco Swift, pero creo que agregar un temporizador antes de este código para salir después de unos segundos cumpliría los criterios.
@Yimin heh, inteligente, pero no modifica la semántica de esta declaración, que es lo que realmente estaba buscando cuando dije "modifica el comportamiento de esta declaración"
Alexander
¿Estás seguro de que la solución funciona? El intérprete me está gritando ambiguous semantics.
Daniel
@Dopapp, eso es lo que pensé que sucedería en mi intento anterior. Por alguna razón, es legal redefinir nuevos operadores infix con las mismas firmas de tipo que los que ya existen, pero intentar hacer lo mismo con un operador unario arroja un error de ambigüedad de tiempo de compilación. Esto es intencional, y estoy seguro de que tengo una solución que funciona
Alexander
Agrietado.
Veedrac
2

cQuents , 2 bytes ( Cracked 1 ) ( Cracked 2 )

:A

Tenga en cuenta que esto alcanzará rápidamente el límite de salida de 128 KiB en TIO, haciendo que se detenga, pero cuando se ejecuta localmente se repetirá para siempre, excepto en la entrada que lo rompe. Encontrar esa entrada debería ser bastante fácil. Hasta que lo hagas, :Ate seguirá sacando la lengua triangular.

Tenga en cuenta también que esto debería ser justo Apero rompí los modos implícitos anoche. En versiones anteriores de intérpretes Afuncionaría bien.

Grietas:

La entrada vacía / nueva línea en la entrada es una grieta válida. Sin embargo, salvo eso, al pasar múltiples entradas (separadas por espacios) al programa, lo terminará (si da 2) o eliminará el error (si da 3 o más).

Pruébalo en línea!

Stephen
fuente
¿Agrietado? (Errores con entrada vacía)
Luis Mendo
¿Agrietado?
Kritixi Lithos
@crackers sí, eso es un crack válido. Sin embargo, daré mi voto a alguien que encuentre el crack de entrada no vacía.
Stephen