Est-ce que ça va s'arrêter? (Flics)


94

C'est le fil des flics. Le fil des voleurs est ici .

Votre défi consiste à créer un programme qui fonctionne à l'infini sans arrêter 1 , à moins d'obtenir un ou des intrants particuliers 2 . S'il reçoit cette entrée, il doit se terminer dans un temps fini 3 . Il s’agit d’un . Ainsi, la réponse la plus courte qui n’a pas été découverte par un voleur dans la semaine qui suit la publication est gagnante. Une fois la semaine passée, veuillez marquer votre réponse comme étant sans danger et montrer l'entrée interrompue (en a > ! spoiler quote). Si un voleur casse votre soumission, marquez-la comme étant fissurée et montrez l'entrée interrompue (en a > ! spoiler quote).

Les soumissions sont préférables être exécutables et craquables sur TIO . Les soumissions non exécutables ou craquables sur TIO sont autorisées, mais veuillez inclure les instructions pour les télécharger / les exécuter.

Assurez-vous que votre saisie est déterministe et uniforme pour toutes les séries. Voir ce méta post pour plus de détails.

S'il vous plaît, ne "mettez pas en œuvre RSA" ou quoi que ce soit qui soit méchant pour les voleurs. Utilisez des langages et des fonctionnalités obscurs, sans chiffrement ni hachage ennuyeux. Je ne peux pas imposer cela avec des règles, mais vous pouvez vous attendre à des votes critiques torrentiels si tout ce que vous faites est sha(input) === "abcd1234".


1 En supposant que l'ordinateur ne soit pas éteint, ne tombe pas en panne, ne soit pas englouti par le soleil, surchauffe sous l'effet de la chaleur causée par la mort de l'univers ou atteigne le délai d'expiration TIO des années 60.

2 Le programme doit s’arrêter sur au moins une entrée. Tant qu'il reste en boucle sur une entrée et s'arrête sur une autre, cela fonctionne.

3 Ce délai doit être <60 secondes pour que le code puisse être testé sur TIO.


Vous recherchez des soumissions non fissurées?

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>


1
@LuisMendo en supposant que la mémoire infinie est correcte
programmer5000 le

1
@ programmer5000 Merci pour clarifier. Vous devriez incorporer tout cela dans le texte du défi. Les répondants ne sont pas censés lire tous les commentaires
Luis Mendo le

6
Peut-on limiter l'entrée à, par exemple, un entier? Un voleur peut transmettre une entrée mal formée ou mal typée pour terminer le programme immédiatement. Je devais soit faire beaucoup de validation des entrées, soit utiliser un langage capable de détecter les erreurs arbitraires.
xnor

3
@xnor Je pense que vous êtes censé faire la vérification des entrées.
Stephen

1
@StepHen Cela fonctionne si l'entrée malformée peut toujours être analysée par l'interpréteur. Si j'entre une chaîne illégale, des Rerreurs immédiatement, sans même entrer dans la fonction à craquer. Je dirais que cela ne compte pas comme mettant réellement fin à la fonction.
JAD

Réponses:


55

Malbolge, 128 octets, fissuré par KBRON111

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

S'amuser!

(Oui, j'ai appris Malbolge rien que pour ça. Oui, il a fallu un temps ridiculement long pour enfin arriver à travailler. Et oui, cela en valait la peine.)

Enveloppé, afin que vous puissiez le voir dans son intégralité, euh, "gloire":

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

J'ai utilisé cet interprète pour le tester; Je ne sais pas si cela compte, mais j'ai pensé préciser au cas où.


2
C'est l'interprète utilisé par TIO.
Dennis

2
oh, "Amusez-vous" est un bon ajout
вгений Новиков

26
Tu es un enfoiré. Malbolge est méchant.
Draco18s

1
Je suis estampillé ... Le plus éloigné que j'ai eu: sur 13 entrées avant la fin, seuls les premier et troisième ont un impact. Après l' ingénierie inverse approfondie, je trouve que l' entrée doit d' abord être 6et le troisième est l' un des quatre: !, #, /et -. Mais la combinaison ne semble pas résoudre le problème. Je l'ai mis ici, peut-être que quelqu'un de plus intelligent trouve une solution. Si quelqu'un veut, je posterai demain comment je suis arrivé à ces entrées. EDIT: Maintenant que j'y réfléchis, mon programme que j'ai écrit dans le but de faire de l'ingénierie inverse peut avoir un bogue, et la première entrée peut être autre chose que 6. Le troisième personnage est toujours là.
Grzegorz Puławski


23

JavaScript (ES6), 17 octets, fissuré

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

Sur TIO, comme je ne sais pas comment faire Node.js readline sur TIO, il suffit de coller l’entrée dans l’appel de la fonction. Ceci est évident pour quiconque le sait et pas pour ceux qui ne le savent pas.

Essayez-le en ligne!

Répondre:

La réponse est NaN, depuis JavaScript, NaN != NaN.


2
Fissuré . Bel usage d'une bizarrerie de langue!
programmer5000

3
Tu parles :) J'aime la façon dont tu étais si confiant que c'est ce que j'ai choisi et qui me l'a modifié: P
Stephen

12
NaN == NaNest faux dans de nombreuses langues autres que JavaScript. Je n'appellerais pas cela une "bizarrerie linguistique".
Nayuki

9
Je crois NaN != NaNest une caractéristique des nombres en virgule flottante
undergroundmonorail

1
@groundgroundorail: C'est bien ça. La relation entre deux nombres à virgule flottante IEEE peut être supérieure, égale, inférieure ou non ordonnée . Le résultat de la comparaison est non ordonné si l'un des opérandes ou les deux sont de n'importe quel type de NaN. (La virgule flottante binaire IEEE 754 comporte de nombreux modèles de bits NaN : tout élément comportant un exposant un-un et une mantisse non nulle est un NaN, quel que soit le bit de signe. Il existe certaines règles pour lesquelles ce qui entre dans la "charge" d'un NaN, et pour avoir propagé cela par le biais d'opérations du genre +ou max(), mais la plupart des gens s'en moquent: P)
Peter Cordes

14

JS (ES6), 67 octets ( fissuré )

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

Je pense que je ne me suis pas trompé, il pourrait avoir une solution facile que je n'ai pas vue.

J'apprécie vos commentaires, ceci est l'un de mes premiers messages

(+0, -0) Oui, js a un négatif 0



Je me rends compte maintenant que je n'ai pas besoin de vérifier si xet ysont finis, mais je ne vais pas éditer car il était déjà fissuré. Aurait pu être 38 octets
Juan Tonina

10

Python 3.4, (40 octets) fissuré

def f(x):
  while(x==x or not x==x):pass

4
Bienvenue chez PPCG!
Martin Ender


12
Je pense que vous auriez dû stocker x==xdans une variable appelée to_be, afin que vous puissiez faire une référence à Hamlet.
Peter Cordes

@PeterCordes Mais cela aurait rendu la réponse insupportable
pppery

@ppperry: oui, j'ai remarqué cela après avoir regardé la fissure. : P
Peter Cordes

9

Javascript (PAS node.js)

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

La soumission souhaitée n'utilise pas de lancer.

Indice pour la fissure désirée:

La soumission souhaitée ne remplace .toString()ni ne l’utilise Set().

Fissure désirée:

Object.create(null)


Lien correct entre crack (pas le mien, juste un lien vers la réponse de Dom Hasting)
Stephen

Cracked # 2 Cracked sans utiliser throw(donne toujours une erreur cependant)
Grant Davis

Cracké à nouveau sans utiliser throw, je crois pour de vrai cette fois car Grant Davis n'a pas fonctionné pour moi. Toujours TypeErrors.
Haumed Rahmani

2
Vous pouvez faire en x=>{try{for(;x+"h";)}catch(e){for(;;)}}sorte que toute erreur aboutisse à une boucle infinie. Les erreurs de fonction prototype manquantes (ou toute erreur) entraîneront une boucle infinie.
Grant Davis

1
Celui-ci ne fonctionne que dans le navigateur, vous ne savez pas trop pourquoi: D
jadkik94

8

C (gcc) , 75 octets fissuré

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

Essayez-le en ligne!

Je n'ai jamais posté dans un flics-n-robbers auparavant. Espérons que ce n'est pas trop évident.

Solution:

Une entrée de "% s" crée cette erreur de segmentation. Plusieurs autres peuvent être utilisés. Tous sont des printfspécificateurs tels que "% n".
Ceci est la printfvulnérabilité classique . En termes simples, la chaîne de formatage provient directement de la saisie de l'utilisateur. Ainsi, tous les printfspécificateurs sont transmis de manière non sécurisée.



8

JavaScript (dans le navigateur), 79 octets fissuré

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

Vous devriez l'exécuter dans un navigateur récent (comme le dernier Firefox ESR, le dernier Firefox, le dernier Chromium). Les vieux navigateurs (comme Netscape 2, IE 4) ne comptent pas.

Remarque: arrêté par le navigateur en raison de l'expiration du délai, ne comptez pas l'arrêt ici.

Veillez toujours à ne pas bloquer votre navigateur lorsque vous testez ces codes, et à voler heureux ^ _ ^

document.all


Puis-je utiliser setTimeout?
вгений Новиков

@ ЕвгенийНовиков Vous pouvez appeler cette fonction avec n'importe quel paramètre. Mais il semble que l'utilisation en setTimeouttant que paramètre ne fonctionne pas.
Tsh

idée est de faire var key=(()=>{setTimeout(args);return null})()et alorscrackme(key)
Евгений Новиков

semble être tricher
Евгений Новиков



6

Husk , 5 octets fissuré

↑ε∞←ø

Essayez-le en ligne!

Un peu d'explication, car ce langage est encore assez récent:

←ørécupère le premier élément d'une liste vide: il retourne une valeur pouvant prendre n'importe quel type, qu'il s'agisse d'un type concret ou d'une fonction, qui sera ensuite appliquée à l'entrée. crée une liste infinie composée de copies du résultat précédent (ce qui signifie dans la plupart des cas une liste de zéros infinis). ↑εprend des éléments de cette liste tant qu'ils sont "petits", c'est-à-dire que leur valeur absolue est ≤1; sur une liste infinie de zéros, cela ne s'arrêtera jamais.


@ Veedrac, c'était en fait la solution que je devais prendre
Leo

Eh bien, alors, craqué!
Veedrac


5

Ruby , 31 octets ( fissuré par Eric Duminil )

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

Essayez-le en ligne!

Notez que ceci doit être exécuté dans un environnement où il n'y a pas de fin de ligne dans le résultat gets, sinon il est impossible de l'arrêter (je pense) car tout ce qui se termine dans une nouvelle ligne entraînera une erreur et se portera au secours.



Un gentil au fait! Aucune méthode dans 3.methodsrenvoie 5ou quitte la boucle.
Eric Duminil

Zut! J'ai aussi découvert la solution de manière indépendante, mais j'étais trop concentré sur le fait 5de penser que la bonne réponse impliquerait la fonction qu'il remplissait ...
Value Ink


5

Bash 4.2, 14 octets ( fissuré )

Essayons cela à nouveau.

let ${1,,}
yes

Cela ne fonctionne pas sur TIO, qui utilise Bash 4.3. La saisie s'effectue via des arguments de ligne de commande.

Sous Linux et avec gcc installé, Bash 4.2.53 peut être téléchargé et construit comme suit.

curl -sSL https://ftp.gnu.org/gnu/bash/bash-4.2.53.tar.gz | tar xz
cd bash-4.2.53
./configure
make -j

Fissuré. Fondamentalement fini par lire la source.
Veedrac

4

Rétine , 78 octets ( fissuré ) ( fissuré avec la solution prévue )

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

¶(?!1+$)

^(1+)¶\1$

+`1
11

C'était assez amusant à écrire, j'espère que c'est amusant à craquer

Essayez-le en ligne!

Craquelé avec une solution non souhaitée et la solution recherchée à une minute d'intervalle. Un posté en premier, un en premier commenté.

Solution envisagée:

11111 ou la représentation unaire de n-1 où n est un nombre parfait




Alors, qui compte? (J'ai posté la fissure d'abord, mais mbomb007 a commenté en premier)
Kritixi Lithos

@Cowsquack les deux
programmer5000


4

Java 8, 99 octets, fissuré

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

C'est un lambda du type 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) ;
    }
}

Essayez-le en ligne! (notez que le programme de test plantera sur une entrée vide, mais pas le lambda lui-même!) (utilisez également 'arguments' et non 'input' sur TIO, car le programme de test utilise des arguments, pas STDIN)

Réponse prévue:

-32767; Cela fonctionne car Java conserve deux types entiers, intet Integer. Integerest un objet qui enveloppe int. En outre, Java conserve un cache de Integercette boîte de -127dialogue 127. L' !=opérateur vérifie l'identité. Ainsi, par le biais de la décomptage et de la décodage automatique, tout nombre dans xlequel il se x + 32767trouve [-127, 127]finira par être le même Integerobjet du cache et i != csera donc faux.



4

Bash 4.2, 10 octets ( fissuré )

let $1
yes

Cela ne fonctionne pas sur TIO, qui utilise Bash 4.3. La saisie s'effectue via des arguments de ligne de commande.

Sous Linux et avec gcc installé, Bash 4.2.53 peut être téléchargé et construit comme suit.

curl -sSL https://ftp.gnu.org/gnu/bash/bash-4.2.53.tar.gz | tar xz
cd bash-4.2.53
./configure
make -j

1
Fissuré. Vous m'avez fait tourner en rond en pensant que c'était une histoire de shellshock et en me liant à une version corrigée: P. Comptez la fissure involontaire comme une vengeance mesquine;).
Veedrac

Heh, pas tout à fait ce que je voulais. J'ai posté une version durcie si vous voulez l'essayer.
Dennis

3

Java: 1760 ( fissuré )

Je pense que c'est trop méchant de jouer au golf, alors j'ai simplement dissimulé les noms des variables et les ai rendues «désordonnées». En fait, c'est tellement méchant que je vais poster des allusions au fil du temps, juste pour que je puisse voir que tout est fissuré.

Astuce 1: cela a théoriquement un nombre infini d'entrées valides, mais il y en a une qui est la plus «correcte»


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

	}
}

Essayez-le en ligne!


Deux arguments vides semblent marcher
Okx le

Aussi, l'esprit d'ajouter un lien tio? Je pense que tout ce que vous avez à faire est de changer de main à Main
Okx le

1
Craquelé , à part un bug.
user3033745

Cracked - aucun bug spécifique à la version.
Okx

3

Braingolf , 18 octets fissuré

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

Essayez-le en ligne!

Liiiitle un peu plus difficile que le dernier, je vais commencer à écrire un vrai après cela

La réponse est 163


Man, c'est probablement la seule atmosphère de soumission survivante. Note: ine fonctionne pas.
Erik the Outgolfer

Attention: il s’agit en fait de 19 octets ( £). Et pourquoi ne -1travaille pas ? C'est délicat.
Erik the Outgolfer

@EriktheOutgolfer C'est 17 caractères et 18 octets.
totalement humain

@totallyhuman Je jure avoir lu "19 octets UTF-8, 18 caractères" (le script utilisateur est activé) ...
Erik the Outgolfer


3

JavaScript (ES7), 41 octets ( piraté et fissuré )

Edit: corrigé pour l'empêcher de planter lorsqu'il ne reçoit aucune entrée (merci à @totallyhuman de l'avoir remarqué)


Plusieurs solutions existent probablement, mais celle attendue est relativement simple.

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

Solution envisagée:

"8e7" (un nombre en notation scientifique passée sous forme de chaîne)
Parce que: ~ "8e7" / "8e7" .longueur ** 3 = -80000001 / 3 ** 3 = -80000001/27 = -2962963


2
Aucune entrée ne fonctionne également sur celui-ci, mais je ne veux pas prendre la peine de le casser comme ça ... Sauf si c'est la solution voulue. : P
totalement humain

@totallyhuman Eh bien, ce n'est pas la solution voulue. :-)
Arnauld le


2
Mise à jour: solution envisagée de 3 octets de long
вгений Новиков

3

Bash + Utils (fissuré par Dennis), 74 octets

J'espère que vous apprécierez tar, car c'est le seul utilitaire que vous puissiez utiliser.

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

Essayez-le en ligne!

Fissure prévue

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



@Dennis Nice! J'ai posté ma fissure prévue, qui était un peu plus complexe.
Sisyphe

3

Mathematica, 36 26 octets ( fissuré )

#0[#;$IterationLimit=∞]&

Une boucle très courte #0[#;∞]qui va juste garder lui - même en cours d' exécution à plusieurs reprises jusqu'à ce qu'il tombe en panne noyau ... (Le $IterationLimitest juste pour vous assurer que vous êtes coincé à jamais pour la plupart des entrées).

Essayez-le sur Wolfram Sandbox! - Si vous êtes bloqué dans une boucle infinie, vous pouvez attendre que le délai imparti soit écoulé ou appuyer sur l'icône en forme de carré "abandonner l'évaluation" à gauche du titre du cahier (unnamed).

REMARQUE : cette fonction modifie vos $IterationLimitparamètres.




3

C #, 118 octets ( fissuré )

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

Je ne m'attends pas à ce que cela dure trop longtemps, mais c'est plus gênant qu'il n'y paraît.

Fondamentalement, tout nom complet de classe Nullable fonctionne, mais il est difficile à trouver car il ressemble à ce qui suit:
System.Nullable`1[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]
Un moyen plus facile de trouver cette chaîne est de le faire typeof(int?).FullName.



3

C, 140 octets ( fissuré )

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

Espérons qu’il n’y aura pas trop d’entrées qui ne s’arrêteront pas, même si elles sont proches de l’intention voulue, mais nous allons voir.

Essayez-le en ligne!



3

JavaScript (ES7), 73 octets ( fissuré !)

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

Solutions non souhaitées: force brute. Le crack souhaité implique des maths.

Notez qu'il existe de nombreuses solutions (4194304) en raison de modulo.



3

brainfuck , 170 octets craqués!

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

Essayez-le en ligne!


Bienvenue sur le site! Vous pouvez économiser 11 octets en supprimant les nouvelles lignes de votre code.
Wheat Wizard le

J'ai oublié que c'était du code golf, merci!
Jerry


Solution valable! J'estime qu'il y en a beaucoup. Pour quiconque tente de résoudre / forcer brutalement, le but recherché est [az].
Jerry

Pour chaque 4 caractères, il y a exactement 1 valeur du dernier caractère qui arrête le programme. Par conséquent, il y a 256 ^ 4 = 4294967296 solutions en supposant que vous pouvez participer nulà un brainfuck. En passant, vous pouvez supprimer deux premiers >octets de sauvegarde.
user202729

3

JavaScript ES6 (Node.js> = 6.0) , 326 octets (Sécuritaire)

((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))

Bien plus simplifié que mon autre défi , je n'essaie plus de brouiller l'approche de la solution, ce qui m'a fait économiser beaucoup d'octets. Cette fois, process.kill()ça ne marchera pas.

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

Essayez-le en ligne!


Woah! Bon travail!
programmer5000

On dirait que vous êtes le gagnant, même si je m'attendais à un code beaucoup plus court hehe
Piyin

3

Swift 3, 14 octets ( fissuré )

while !false{}

Pour résoudre ce problème, mettez votre code avant ou après cette déclaration.

  • Votre solution doit:
    • garder cette déclaration intacte, sans modifier son code
    • effectivement laisser cette déclaration courir
      • Il suffit de commenter, d'appeler fatalError(), etc. avant que cela ne compte.
    • modifier le comportement de cette instruction pour l'empêcher de boucler pour toujours
  • La solution ne consiste pas à planter le programme.

Je ne connais pas Swift, mais je pense que l'ajout d'une minuterie avant que ce code sorte après quelques secondes répondrait aux critères.

@Yimin heh, intelligent, mais cela ne modifie pas la sémantique de cette déclaration, c'est ce que je cherchais vraiment lorsque je disais "modifie le comportement de cette déclaration"
Alexander

Êtes-vous sûr que la solution fonctionne? L'interprète ambiguous semanticsme crie dessus .
Daniel

@Dopapp c'est ce que je pensais qu'il se passerait lors de ma précédente tentative. Pour une raison quelconque, il est légal de redéfinir de nouveaux opérateurs infixes avec les mêmes signatures que celles qui existent déjà, mais tenter de faire la même chose avec un opérateur unaire génère une erreur d'ambiguïté lors de la compilation. C'est intentionnel, et je suis sûr que j'ai une solution qui fonctionne
Alexander


2

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

:A

Notez que cela atteindra rapidement la limite de sortie de 128 Ko sur TIO, ce qui l’arrêtera, mais lorsqu’elle sera exécutée localement, elle restera en boucle indéfiniment, sauf sur l’entrée qui le casse. Trouver cette entrée devrait être assez facile. Jusqu'à ce que vous fassiez, vous :Acontinuerez à tirer sa langue triangulaire à vous.

Notez également que cela devrait être juste, Amais j’ai rompu les modes implicites la nuit dernière. Sur les anciennes versions d'interprète Afonctionnerait bien.

Fissures:

Une entrée vide / nouvelle ligne à l'entrée est une fissure valide. Cependant, sauf que, en transmettant plusieurs entrées (séparées par des espaces) au programme, vous le terminerez (si vous en donnez 2) ou une sortie d'erreur (si vous en donnez 3 ou plus).

Essayez-le en ligne!


Fissuré? (Erreurs avec entrée vide)
Luis Mendo


@ crackers oui, c'est une fissure valide. Je vais donner mon vote positif à quelqu'un qui trouve la fente d'entrée non vide cependant.
Stephen

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.