Wird es aufhören? (Polizisten)


94

Das ist der Faden der Bullen. Der Räuberfaden ist da .

Ihre Herausforderung besteht darin, ein Programm zu erstellen, das für immer ausgeführt wird, ohne 1 anzuhalten , es sei denn, es erhält eine bestimmte Eingabe oder Eingaben 2 . Wenn es diese Eingabe erhält, muss es in einer endlichen Zeitspanne enden . 3 . Dies ist , daher gewinnt die kürzeste Antwort, die nicht innerhalb einer Woche nach der Veröffentlichung von einem Räuber geknackt wurde. Markieren Sie nach Ablauf der Woche Ihre Antwort als sicher und zeigen Sie die Stopp-Eingabe (in a > ! spoiler quote) an. Wenn ein Räuber Ihre Vorlage knackt, markieren Sie sie bitte als geknackt und zeigen Sie die Stopp-Eingabe (in a > ! spoiler quote).

Einreichungen sollten auf TIO ausführbar und knackbar sein . Einsendungen, die nicht auf TIO ausgeführt oder geknackt werden können, sind zulässig, enthalten jedoch bitte Anweisungen zum Herunterladen / Ausführen.

Bitte machen Sie Ihre Eingabe deterministisch und über alle Läufe hinweg einheitlich. Weitere Informationen finden Sie in diesem Meta-Beitrag .

Bitte "implementieren Sie keine RSA" oder andere Dinge, die den Räubern etwas bedeuten. Verwenden Sie obskure Sprachen und Funktionen, ohne langweilige Verschlüsselung und Hashing. Ich kann dies nicht mit Regeln erzwingen, aber Sie können mit heftigen Abstimmungen rechnen, wenn Sie nur etwas tun sha(input) === "abcd1234".


1 Unter der Annahme, dass der Computer nicht heruntergefahren wird, nicht kaputt geht, nicht von der Sonne verschlungen wird, sich im Hitzetod des Universums überhitzt oder das TIO-Timeout von 60 Sekunden erreicht.

2 Das Programm muss an mindestens einer Eingabe anhalten . Solange es bei einem Eingang für immer eine Schleife durchläuft und bei einem anderen anhält, funktioniert es.

3 Dies muss <60 Sekunden sein, damit der Code auf TIO getestet werden kann.


Auf der Suche nach ungerissenen Einsendungen?

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 unter der Annahme, unendlich viel Speicher ist in Ordnung
programmer5000

1
@ programmer5000 Danke für die Klarstellung. Sie sollten dies alles in den Aufforderungstext aufnehmen. Von den Antwortenden wird nicht erwartet, dass sie alle Kommentare lesen
Luis Mendo

6
Können wir die Eingabe beispielsweise auf eine Ganzzahl beschränken? Ein Räuber könnte fehlerhafte oder falsch geschriebene Eingaben übermitteln, um das Programm sofort zu beenden. Ich müsste entweder viele sorgfältige Eingaben validieren oder eine Sprache verwenden, die willkürliche Fehler auffangen kann.
Xnor

3
@xnor Ich denke, Sie müssen die Eingabeprüfung durchführen.
Stephen

1
@StepHen Das funktioniert, wenn die fehlerhafte Eingabe vom Interpreter noch analysiert werden kann. Wenn ich einen unzulässigen String Reingebe, treten sofort Fehler auf, ohne die Funktion überhaupt zu knacken. Ich würde argumentieren, dass dies nicht als tatsächliche Beendigung der Funktion gilt.
JAD

Antworten:


55

Malbolge, 128 Bytes, geknackt von KBRON111

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

Habe Spaß!

(Ja, ich habe Malbolge nur dafür gelernt. Ja, es hat absurd lange gedauert, bis es endlich funktioniert hat. Und ja, es hat sich absolut gelohnt.)

Eingehüllt, so dass Sie es in seiner vollen "Herrlichkeit" sehen können:

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

Ich habe diesen Interpreter benutzt , um ihn zu testen. Ich bin nicht sicher, ob es wichtig ist, aber ich dachte, ich würde nur für den Fall angeben.


2
Das ist der Interpreter, den TIO übrigens benutzt.
Dennis

2
oh, "Viel Spaß" ist eine gute Ergänzung
Евгений Новиков

26
Du bist ein Trottel. Malbolge ist gemein.
Draco18s

1
Ich bin abgestempelt ... Am weitesten bin ich gekommen: Von 13 Eingaben vor Halt haben nur die ersten und dritten einen Einfluss. Nach gründlicher Reverse-Engineering, fand ich , dass der erste Eingang sein muss , 6und die dritte ist eine der vier: !, #, /und -. Aber die Kombination scheint den Halt nicht zu regeln. Ich habe es hier rausgebracht, vielleicht findet jemand schlauer eine Lösung. Wenn jemand möchte, werde ich morgen posten, wie ich zu diesen Eingängen gekommen bin. EDIT: Nun, da ich darüber nachdenke, könnte mein Programm, das ich zum Zweck des Reverse Engineering geschrieben habe, einen Fehler aufweisen, und die erste Eingabe könnte etwas anderes sein als 6. Das dritte Zeichen steht noch.
Grzegorz Puławski


23

JavaScript (ES6), 17 Bytes, Gebrochen

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

Auf TIO, da ich nicht weiß, wie man Node.js readline auf TIO macht, kleben Sie einfach die Eingabe in den Funktionsaufruf. Dies ist für jeden offensichtlich, der es weiß, und nicht für jeden, der es nicht weiß.

Probieren Sie es online!

Antworten:

Die Antwort ist NaN, da in JavaScript NaN != NaN.


2
Rissig . Netter Gebrauch einer Sprachwahnsinnigkeit!
Programmer5000

3
Wetten Sie :) Ich mag, wie Sie so zuversichtlich waren, dass ich das ausgewählt habe, dass Sie es für mich bearbeitet haben: P
Stephen

12
NaN == NaNist in vielen anderen Sprachen als JavaScript falsch. Ich würde es nicht als "Sprachverrücktheit" bezeichnen.
Nayuki

9
Ich glaube, NaN != NaNist ein Merkmal von Gleitkommazahlen
U-

1
@undergroundmonorail: Das stimmt. Die Beziehung zwischen zwei IEEE-Gleitkommazahlen kann über, gleich, unter oder ungeordnet sein . Das Vergleichsergebnis ist ungeordnet, wenn einer oder beide Operanden irgendeine Art von NaN sind. (IEEE 754-Binärgleitkomma hat viele NaN-Bitmuster : Alles mit dem Exponenten all-ones und einer Mantisse ungleich Null ist ein NaN, unabhängig vom Vorzeichenbit. Es gibt einige Regeln, für die die "Nutzlast" von a gilt NaN, und für die Verbreitung durch Operationen wie +oder max(), aber die meisten Menschen interessieren sich nicht: P)
Peter Cordes

14

JS (ES6), 67 Bytes ( geknackt )

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

Ich glaube, ich habe es nicht vermasselt, es könnte eine einfache Lösung geben, die ich nicht gesehen habe.

Ich freue mich über jedes Feedback, dies ist einer meiner ersten Beiträge

(+0, -0) Ja, js hat eine negative 0



Ich weiß jetzt , dass ich nicht brauchen , um zu überprüfen , ob xund yendlich sind, aber ich werde nicht bearbeiten , da es bereits geknackt. Könnte 38 Bytes gewesen sein
Juan Tonina

10

Python 3.4 (40 Byte) Gebrochen

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

4
Willkommen bei PPCG!
Martin Ender


12
Ich habe das Gefühl, dass Sie x==xin einer Variablen namens gespeichert haben sollten to_be, damit Sie einen Hamlet-Verweis erstellen können.
Peter Cordes

@ PeterCordes Aber das hätte die Antwort unknackbar gemacht
pppery

@ppperry: Ja, ich habe das bemerkt, nachdem ich mir den Riss angesehen habe. : P
Peter Cordes

9

Javascript (NICHT node.js)

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

Die gewünschte Vorlage verwendet keinen Wurf.

Hinweis für den gewünschten Riss:

Der gewünschte Beitrag wird nicht überschrieben .toString()oder verwendet Set().

Gewünschter Riss:

Object.create(null)


Richtiger Crack-Link (nicht meiner, nur ein Link zu Dom Hastings Antwort)
Stephen

Gebrochene # 2 Gebrochen, ohne zu verwenden throw(trotzdem gibt es einen Fehler)
Grant Davis

Wieder ohne Verwendung geknacktthrow , glaube ich diesmal wirklich, da Grant Davis 'für mich nicht funktioniert hat. Noch TypeErrors.
Haumed Rahmani

2
Sie könnten dies tun, x=>{try{for(;x+"h";)}catch(e){for(;;)}}damit alle Fehler zu einer Endlosschleife führen, sodass fehlende Prototypfunktionsfehler (oder alle Fehler) zu einer Endlosschleife führen.
Grant Davis

1
Dieser funktioniert nur im Browser, nicht sicher, warum: D
jadkik94

8

C (gcc) , 75 Bytes geknackt

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

Probieren Sie es online!

Ich habe noch nie in einem Cops-n-Räuber geschrieben. Hoffentlich ist das nicht zu offensichtlich.

Lösung:

Eine Eingabe von "% s" führt zu diesem Segfault. Es gibt mehrere andere, die verwendet werden können; Alle von ihnen sind printfBezeichner wie "% n".
Dies ist die klassische printfSicherheitsanfälligkeit. Einfach ausgedrückt kommt die printfFormatzeichenfolge direkt von der Benutzereingabe, sodass alle Spezifizierer unsicher durchgelassen werden.



8

JavaScript (im Browser), 79 Bytes geknackt

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

Sie sollten es in einem aktuellen Browser ausführen (wie dem neuesten Firefox ESR, dem neuesten Firefox, dem neuesten Chromium). Das Ausführen in alten Browsern (wie Netscape 2, IE 4) zählt nicht.

Hinweis: Beim Anhalten durch den Browser aufgrund einer Zeitüberschreitung wird hier kein Anhalten gezählt.

Seien Sie immer vorsichtig, stürzen Sie Ihren Browser nicht ab, wenn Sie diese Codes testen, und rauben Sie glücklich ^ _ ^

document.all


Kann ich setTimeout verwenden?
Евгений Новиков

@ ЕвгенийНовиков Sie können diese Funktion mit einem beliebigen Parameter aufrufen. Aber es scheint, setTimeoutals ob die Verwendung als Parameter nicht funktioniert.
TSH

Idee ist zu tun var key=(()=>{setTimeout(args);return null})()und danncrackme(key)
Евгений Новиков

scheint zu schummeln
Евгений Новиков



6

Schale , 5 Bytes geknackt

↑ε∞←ø

Probieren Sie es online!

Eine kleine Erklärung, da diese Sprache noch ziemlich neu ist:

←øRuft das erste Element einer leeren Liste ab: Dies gibt einen Wert zurück, der einen beliebigen Typ annehmen kann, sei es ein konkreter Typ oder eine Funktion, die dann auf die Eingabe angewendet wird. Erstellt eine unendliche Liste, die aus Kopien des vorherigen Ergebnisses besteht (was in den meisten Fällen eine Liste mit unendlichen Nullen bedeutet). ↑εNimmt Elemente aus dieser Liste, solange sie "klein" sind, dh ihr absoluter Wert ist ≤ 1; Auf einer unendlichen Liste von Nullen hört dies nie auf.


@Veedrac das war eigentlich meine beabsichtigte Lösung
Leo

Na dann, geknackt!
Veedrac


5

Ruby , 31 Bytes ( geknackt von Eric Duminil )

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

Probieren Sie es online!

Beachten Sie, dass dies in einer Umgebung ausgeführt werden muss, in der es im Ergebnis keinen nachgestellten Zeilenumbruch gibt gets, oder dass es unmöglich ist, ihn anzuhalten (glaube ich), da alles, was in einem Zeilenumbruch endet, einen Fehler macht und die Rettung trifft.



Nizza übrigens! Keine Methode 3.methodsgibt 5die Schleife zurück oder verlässt sie.
Eric Duminil

Verdammt! Ich habe die Lösung auch unabhängig entdeckt, aber ich war zu sehr darauf konzentriert, sie gleichzusetzen, um 5zu glauben, dass die richtige Antwort die Funktion beinhalten würde, die sie erfüllt ...
Value Ink


5

Bash 4.2, 14 Bytes ( geknackt )

Versuchen wir es noch einmal.

let ${1,,}
yes

Dies funktioniert nicht mit TIO, das Bash 4.3 verwendet. Die Eingabe erfolgt über Befehlszeilenargumente.

Unter Linux und mit installiertem gcc kann Bash 4.2.53 wie folgt heruntergeladen und erstellt werden.

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

Geknackt Grundsätzlich endete das Lesen der Quelle.
Veedrac

4

Retina , 78 Bytes ( geknackt ) ( geknackt mit der beabsichtigten Lösung )

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

¶(?!1+$)

^(1+)¶\1$

+`1
11

War ziemlich lustig zu schreiben, hoffe es macht Spaß zu knacken

Probieren Sie es online!

Gebrochen mit einer unbeabsichtigten Lösung und der vorgesehenen Lösung innerhalb einer Minute voneinander. Einer zuerst gepostet, einer zuerst kommentiert.

Beabsichtigte Lösung:

11111 oder die unäre Darstellung von n-1, wobei n eine perfekte Zahl ist




Also, wessen Riss zählt? (Ich habe den Riss zuerst gepostet, aber mbomb007 hat ihn zuerst kommentiert)
Kritixi Lithos

@Cowsquack beide
programmer5000


4

Java 8, 99 Bytes, Gebrochen

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

Dies ist ein Lambda des Typs 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) ;
    }
}

Probieren Sie es online!(Beachten Sie, dass das Testprogramm bei leerer Eingabe abstürzt, das Lambda selbst jedoch nicht!) (Verwenden Sie auch "Argumente", nicht "Eingabe" bei TIO, da das Testprogramm Argumente verwendet, nicht STDIN)

Beabsichtigte Antwort:

-32767; Dies funktioniert, weil Java zwei Integer-Typen hat, intund Integer. Integerist ein Objekt, das einhüllt int. Auch Java hält einen Cache von Integers , die Box -127durch127 . Der !=Operator prüft, ob eine Identität vorliegt. Durch ein gewisses Deaktivieren und automatisches Deaktivieren wird eine Zahl, xin der sie sich x + 32767befindet [-127, 127], dasselbe IntegerObjekt aus dem Cache und ist daher i != cfalsch.



4

Bash 4.2, 10 Bytes ( geknackt )

let $1
yes

Dies funktioniert nicht mit TIO, das Bash 4.3 verwendet. Die Eingabe erfolgt über Befehlszeilenargumente.

Unter Linux und mit installiertem gcc kann Bash 4.2.53 wie folgt heruntergeladen und erstellt werden.

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
Geknackt Sie haben mich im Kreis herumgeführt, weil Sie dachten, dass dies mit einem Schock zusammenhängt, und mich mit einer gepatchten Version verbunden: P. Zähle den unbeabsichtigten Riss als kleine Rache;).
Veedrac

He, nicht ganz das, wonach ich gesucht habe. Ich habe eine gehärtete Version gepostet, wenn Sie es ausprobieren möchten.
Dennis

3

Java: 1760 ( Gebrochen )

Ich denke, es ist zu gemein, um Golf zu spielen, also habe ich nur die Variablennamen verschleiert und es "chaotisch" gemacht. Tatsächlich ist es so gemein, dass ich mit der Zeit Hinweise posten werde, nur damit ich sehe, dass es Risse gibt.

Tipp 1: Dies hat theoretisch unendlich viele gültige Eingaben, aber es gibt eine, die am 'korrektesten' ist.


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

	}
}

Probieren Sie es online!


Zwei leere Argumente scheinen zu funktionieren
Okx

Auch etwas dagegen, einen tio Link hinzuzufügen? Ich denke, alles, was Sie tun müssen, ist die Hauptleitung auf Hauptleitung zu ändern
Okx

1
Bis auf einen Käfer geknackt.
user3033745

Gebrochen - kein versionsspezifischer Fehler.
Okx

3

Braingolf , 18 Bytes Gebrochen

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

Probieren Sie es online!

Liiiitle ein bisschen härter als der letzte, ich werde beginnen, eine echte danach zu schreiben

Die Antwort lautet 163


Mann, das ist wahrscheinlich die einzige überlebende Unterwerfung atm. Hinweis: ifunktioniert nicht.
Erik der Outgolfer

Warnung: Das sind tatsächlich 19 Bytes ( £). Und warum geht das nicht -1? Das ist knifflig.
Erik der Outgolfer

@EriktheOutgolfer Es sind 17 Zeichen und 18 Bytes.
Totalhuman

@totallyhuman Ich schwöre, ich hatte gelesen "19 UTF-8 Bytes, 18 Zeichen" (UserScript ist aktiviert) ...
Erik the Outgolfer


3

JavaScript (ES7), 41 Bytes ( zerhackte & Gebrochen )

Bearbeiten: Korrigiert, damit es nicht abstürzt, wenn überhaupt keine Eingabe erfolgt (danke @totallyhuman für das Bemerken)


Es gibt wahrscheinlich mehrere Lösungen, aber die erwartete ist relativ einfach.

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

Beabsichtigte Lösung:

"8e7" (eine Zahl in wissenschaftlicher Notation, die als Zeichenfolge übergeben wird)
Weil: ~ "8e7" / "8e7". Länge ** 3 = -80000001 / 3 ** 3 = -80000001/27 = -2962963


2
Auch hier funktioniert keine Eingabe, aber ich möchte mich nicht darum kümmern, sie so zu knacken ... Es sei denn, das ist die beabsichtigte Lösung. : P
totalhuman

@totallyhuman Nun, es ist nicht die beabsichtigte Lösung. :-)
Arnauld


2
Update: 3 Bytes lange Lösung haben vorgesehen
Евгений Новиков

3

Bash + Utils (Gebrochen von Dennis), 74 Bytes

Ich hoffe, Sie genießen Teer, weil es das einzige Dienstprogramm ist, das Sie verwenden können.

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

Probieren Sie es online!

Beabsichtigter Riss

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



@ Tennis Schön! Ich habe meinen beabsichtigten Riss gepostet, der etwas komplexer war.
Sisyphus

3

Mathematica, 36 26 Bytes ( geknackt )

#0[#;$IterationLimit=∞]&

Eine sehr kurze Schleife #0[#;∞], die sich immer wieder von selbst abspielt, bis Ihr Kernel abstürzt$IterationLimit dient nur dazu, sicherzustellen, dass Sie bei den meisten Eingaben für immer stecken bleiben).

Probieren Sie es auf Wolfram Sandbox! - Wenn Sie sich in einer Endlosschleife befinden, können Sie warten, bis die Zeit abgelaufen ist, oder Sie können das Quadrat "Bewertung abbrechen" links neben dem Titel des Notizbuchs drücken(unnamed) .

HINWEIS : Diese Funktion ändert Ihre $IterationLimitEinstellungen.




3

C #, 118 Bytes ( geknackt )

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

Ich erwarte nicht, dass dies zu lange dauert, aber es ist umständlicher, als es scheint.

Grundsätzlich funktionieren alle Nullable-Klassen mit vollem Namen, aber es ist umständlich, dies herauszufinden, da es wie folgt aussieht:
System.Nullable`1[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]
Eine einfachere Möglichkeit, diese Zeichenfolge herauszufinden, besteht darin, dies zu tun typeof(int?).FullName.



3

C, 140 Bytes ( geknackt )

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

Hoffentlich gibt es nicht zu viele Eingaben, die nicht einmal in der Nähe der beabsichtigten Eingaben liegen, aber lassen Sie uns sehen.

Probieren Sie es online!



3

JavaScript (ES7), 73 Bytes ( geknackt !)

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

Nicht gewollte Lösungen: rohe Gewalt. Gewünschter Riss beinhaltet Mathe.

Beachten Sie, dass es aufgrund von Modulo viele Lösungen gibt (4194304).



3

Brainfuck , 170 Bytes geknackt!

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

Probieren Sie es online!


Willkommen auf der Seite! Sie könnten 11 Bytes einsparen, indem Sie die Zeilenumbrüche aus Ihrem Code entfernen.
Weizen-Assistent

Ich habe vergessen, dass es Codegolf war, danke!
Jerry


Gültige Lösung! Ich schätze, es gibt ziemlich viele davon. Für jeden, der das Problem löst / brachial erzwingt, ist [az] vorgesehen.
Jerry

Für jeweils 4 Zeichen gibt es genau 1 Wert des letzten Zeichens, was das Programm anhält. Daher gibt es 256 ^ 4 = 4294967296 Lösungen, vorausgesetzt, Sie können nulBrainfuck durchführen. Übrigens können Sie zwei zuerst >gespeicherte 2 Bytes entfernen .
user202729

3

JavaScript ES6 (Node.js> = 6.0) , 326 Byte (sicher)

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

Viel einfacher als meine andere Herausforderung war, versuche ich nicht länger, den Lösungsansatz zu verschleiern, was mir viele Bytes erspart hat. Diesmal um,process.kill() wird nicht funktionieren.

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

Probieren Sie es online!


Woah! Gute Arbeit!
programmer5000

Es sieht so aus, als ob Sie der Gewinner sind, obwohl ich einen viel kürzeren Code erwartet habe, hehe
Piyin

3

Schnelle 3, 14 Bytes ( geknackt )

while !false{}

Fügen Sie Ihren Code vor oder nach dieser Anweisung ein, um das Problem zu beheben.

  • Ihre Lösung muss:
    • Behalten Sie diese Anweisung bei, ohne den Code zu ändern
    • Lassen Sie diese Anweisung tatsächlich ausführen
      • Einfach auskommentieren, anrufen fatalError()usw., bevor es nicht zählt.
    • Ändern Sie das Verhalten dieser Anweisung, um zu verhindern, dass sie für immer wiederholt wird
  • Die Lösung besteht nicht darin, das Programm zum Absturz zu bringen.

Ich kenne Swift nicht, aber ich denke, dass das Hinzufügen eines Timers, bevor dieser Code nach einigen Sekunden beendet wird, die Kriterien erfüllt.

@ Yimin heh, klug, aber es ändert nicht die Semantik dieser Aussage, was ich wirklich gesucht habe, als ich sagte "Ändert das Verhalten dieser Aussage"
Alexander

Sind Sie sicher, dass die Lösung funktioniert? Der Dolmetscher schreit ambiguous semanticsmich an.
Daniel

@ Dopapp das ist, was ich dachte, würde in meinem vorherigen Versuch passieren. Aus irgendeinem Grund ist es legal, neue Infix-Operatoren mit denselben Typ-Signaturen wie den bereits vorhandenen neu zu definieren. Wenn Sie jedoch versuchen, dasselbe mit einem unären Operator zu tun, wird ein Fehler in Bezug auf die Mehrdeutigkeit der Kompilierungszeit ausgegeben. Dies ist beabsichtigt, und ich bin sicher, ich habe eine funktionierende Lösung
Alexander


2

cQuents , 2 Bytes ( geknackt 1 ) ( geknackt 2 )

:A

Beachten Sie, dass dies schnell die 128-KiB-Ausgabegrenze für TIO überschreitet, was zu einem Stopp führt. Wenn es lokal ausgeführt wird, wird eine Endlosschleife ausgeführt, mit Ausnahme der Eingabe, die es unterbricht. Die Eingabe sollte ziemlich einfach zu finden sein. Bis Sie dies tun, :Awerden Sie weiterhin mit der dreieckigen Zunge bedacht sein.

Beachten Sie auch, dass dies nur sein sollte , Aaber ich habe letzte Nacht implizite Modi gebrochen. Auf älteren Interpreter-Versionen Awürde es gut funktionieren.

Risse:

Leere Eingabe / Newline bei Eingabe ist ein gültiger Riss. Wenn Sie jedoch mehrere (durch Leerzeichen getrennte) Eingaben an das Programm übergeben, beenden Sie es (wenn Sie 2 eingeben) oder führen einen Fehler aus (wenn Sie 3 oder mehr eingeben).

Probieren Sie es online!


Geknackt? (Fehler mit leerer Eingabe)
Luis Mendo


@crackers yep, das ist ein gültiger Riss. Ich werde jemandem meine Zustimmung geben, der den Riss findet, der nicht leer ist.
Stephen

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.