멈출까요? (캅스)


94

이것이 경찰의 실입니다. 강도의 실이 여기 있습니다 .

당신의 도전은 중단없이 영원히 실행되는 프로그램 수 있도록하는 것입니다 1 은 특정 입력 또는 입력 취득하지 않는 한, 2 . 해당 입력을 수신하면 유한 한 시간 내에 종료해야합니다 3 . 이것은 이므로 게시물을 게시 한 지 1 주일 이내에 강도가 크지 않은 가장 짧은 답변입니다. 일주일이 지난 후에는 답을 안전한 것으로 표시하고 정지 입력을 표시하십시오 (a > ! spoiler quote). 강도가 제출물에 균열을 가하면 균열로 표시하고 정지 입력 ()을 표시하십시오 > ! spoiler quote.

제출은 TIO 에서 실행 및 크랙 가능한 것이 바람직합니다 . TIO에서 실행할 수 없거나 크랙 할 수없는 제출은 허용되지만 다운로드 / 실행 지침을 포함하십시오.

모든 실행에서 입력을 결정적이고 균일하게 만드십시오. 자세한 내용은 이 메타 포스트 를 참조하십시오.

"RSA를 구현"하거나 강도에게 의미가있는 것은 아닙니다. 지루한 암호화 및 해싱이 아닌 모호한 언어 및 기능을 사용하십시오. 나는 규칙으로 이것을 시행 할 수 없지만, 당신이하는 모든 것이이면 폭우가 발생할 것으로 예상 할 수 있습니다 sha(input) === "abcd1234".


1 컴퓨터가 종료되거나 깨지거나 태양에 휩싸이거나 우주의 열사로 과열되거나 60 초의 TIO 시간 초과가 발생하지 않는다고 가정합니다.

2 프로그램은 적어도 하나의 입력 에서 정지해야합니다 . 한 입력에서 영원히 반복되고 다른 입력에서 멈추는 한 작동합니다.

3 코드가 TIO에서 테스트 될 수 있도록 <60 초 여야합니다.


크랙되지 않은 제출물을 찾고 계십니까?

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
programmer5000

1
@ programmer5000 설명해 주셔서 감사합니다. 이 모든 것을 챌린지 텍스트에 통합해야합니다. 답변자는 모든 의견을 읽지 않아도됩니다
Luis Mendo

6
입력을 정수로 제한 할 수 있습니까? 강도는 프로그램을 즉시 종료하기 위해 잘못된 형식의 입력을 전달할 수 있습니다. 신중한 입력 유효성 검사를 많이 수행하거나 임의의 오류를 잡을 수있는 언어를 사용해야합니다.
xnor

3
@xnor 입력 확인을해야한다고 생각합니다.
Stephen

1
@StepHen 잘못된 입력이 인터프리터에 의해 여전히 구문 분석 될 수있는 경우 작동합니다. 잘못된 문자열을 R입력하면 기능을 입력하지 않아도 즉시 오류가 발생합니다. 나는 그것이 실제로 기능을 종료하는 것으로 계산되지 않는다고 주장합니다.
JAD

답변:


55

KBRON111에 의해 크래킹 된 Malbolge, 128 바이트

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

즐기세요!

(예, 나는 이것을 위해 Malbolge를 배웠습니다. 그렇습니다. 마침내 일을 시작하는 데 시간이 오래 걸렸습니다. 그리고 그만한 가치가있었습니다.)

감싸서, 당신은 그것의 전체, 즉 "영광"에서 볼 수 있습니다 :

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

이 인터프리터 를 사용 하여 테스트했습니다. 그것이 중요한지는 확실하지 않지만, 만일을 대비하여 지정하겠다고 생각했습니다.


2
그것은 TIO가 btw를 사용하는 인터프리터입니다.
Dennis

2
오, "즐거운 시간 보내세요"도 좋습니다
Евгений Новиков

26
당신은 바보입니다. Malbolge는 평균입니다.
Draco18s

1
나는 각인되었습니다 ... 가장 먼 : 정지하기 전에 13 개의 입력 중 첫 번째와 세 번째에만 영향을 미칩니다. 철저한 리버스 엔지니어링 후, 먼저 입력되어야 함을 발견 6하고,이 네 번째의 하나이다 : !, #, /-. 그러나 그 조합은 중단을 해결하지 않는 것 같습니다. 나는 그것을 여기에 넣었다. 아마도 더 똑똑한 사람이 해결책을 찾는다. 누군가가 원한다면 내일 이러한 입력을 얻는 방법을 게시 할 것입니다. 편집 : 이제 생각해보십시오. 리버스 엔지니어링을 목적으로 작성한 내 프로그램에는 버그가있을 수 있으며 첫 번째 입력은 이외의 것일 수 있습니다 6. 세 번째 캐릭터는 여전히 서 있습니다.
Grzegorz Puławski

7
KBRON111에 의해 .
Veedrac

23

자바 스크립트 (ES6), 17 바이트, 크랙

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

TIO에서는 TIO에서 Node.js readline을 수행하는 방법을 모르므로 함수 호출에 입력을 붙이십시오. 이것은 그것을 아는 사람에게는 분명하지만 모르는 사람에게는 분명하지 않습니다.

온라인으로 사용해보십시오!

대답:

대답은 NaNJavaScript에서이므로 NaN != NaN입니다.


2
금이 . 언어의 이상한 사용법!
programmer5000

3
당신은 내기 :) 나는 당신이 내가 선택한 것을 당신이 나를 위해 그것을 편집 한 확신 너무 좋아 : P
Stephen

12
NaN == NaNJavaScript 이외의 많은 언어에서는 false입니다. 나는 그것을 "언어의 이상"이라고 부르지 않을 것이다.
Nayuki

9
NaN != NaN부동 소수점 숫자의 기능 이라고 생각 합니다
undergroundmonorail

1
@ undergroundmonorail : 맞습니다. 두 IEEE 부동 소수점 수 사이의 관계는 위, 같거나 아래 또는 순서 가 없을 수 있습니다 . 피연산자 중 하나 또는 둘 모두가 NaN 인 경우 비교 결과는 정렬되지 않습니다. (IEEE 754 이진 부동 소수점에는 많은 NaN 비트 패턴이 있습니다 . 지수 비트에 상관없이 지수 올인원 및 0이 아닌 가수가있는 NaN은 NaN입니다. NaN, +또는 과 같은 작업을 통해 전파 max()하지만 대부분의 사람들은 신경 쓰지 않습니다 : P)
Peter Cordes

14

JS (ES6), 67 바이트 ( Cracked )

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

나는 엉망이되지 않았다고 생각합니다. 보지 못한 쉬운 해결책이있을 수 있습니다.

의견을 보내 주셔서 감사합니다. 첫 번째 게시물 중 하나입니다.

(+0, -0) 네, js는 0입니다



나는 유한 x하고 y유한 인지 확인할 필요가 없다는 것을 알고 있지만 이미 금이 났기 때문에 편집하지 않습니다. 38 바이트 일 수 있습니다
Juan Tonina

10

Python 3.4, (40 바이트) 크랙

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

4
PPCG에 오신 것을 환영합니다!
마틴 엔더


12
나는 x==x이라는 변수에 저장 되어 있어야한다고 생각 to_be하므로 Hamlet 참조를 만들 수 있습니다.
Peter Cordes

@PeterCordes 그러나 그 대답은 깨지지 않을 것입니다
pppery

@ ppperry : 예, 균열을 본 후에 눈치 notice습니다. : P
Peter Cordes

9

자바 스크립트 (NOT node.js)

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

원하는 제출물은 throw를 사용하지 않습니다.

원하는 균열에 대한 힌트 :

원하는 제출 덮어 쓰지 않습니다 .toString(), 또는 사용 Set()중.

원하는 균열 :

Object.create(null)


올바른 균열 링크 (내 것이 아니라 Dom Hasting의 답변 링크)
Stephen

금이 간 # 2 사용하지 않고 금이 간 throw(여전히 오류가 발생합니다)
Grant Davis

throwGrant Davis '가 나를 위해 일하지 않았기 때문에을 사용하지 않고 다시 금이 간 것입니다. 아직도 TypeErrors.
Haumed Rahmani 1

2
당신은 할 수있는 x=>{try{for(;x+"h";)}catch(e){for(;;)}}오류가 무한 루프 그래서 프로토 타입 기능 오류 (또는 오류) 누락 될 수 있도록 무한 루프가 발생합니다.
Grant Davis

1
이것은 브라우저에서만 작동하지만 왜 그런지 잘 모르겠습니다. : D
jadkik94

8

C (gcc) , 75 바이트 크랙

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

온라인으로 사용해보십시오!

나는 전에 경찰 경찰관에 게시 한 적이 없습니다. 희망이없는 너무 명백한.

해결책:

"% s"의 입력은이 segfault를 만듭니다. 사용할 수있는 다른 몇 가지가 있습니다. 모두 printf"% n"과 같은 지정자 입니다.
이것이 전형적인 printf취약점입니다. 간단히 말해, 형식 문자열은 사용자 입력에서 직접 제공되므로 모든 printf지정자가 안전하지 않게 전달됩니다.



8

자바 스크립트 (브라우저에서), 79 바이트 깨짐

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

최신 브라우저 (예 : 최신 Firefox ESR, 최신 Firefox, 최신 Chromium)에서 실행해야합니다. Netscape 2, IE 4와 같은 오래된 브라우저에서는 실행되지 않습니다.

참고 : 시간 초과로 인해 브라우저에 의해 중지 된 경우 여기에서 중지를 계산하지 않습니다.

이 코드를 테스트 할 때 항상 브라우저가 충돌하지 않도록주의하고 행복한 강탈 ^ _ ^

document.all


setTimeout을 사용할 수 있습니까?
Евгений Новиков

@ ЕвгенийНовиков이 함수는 임의의 파라미터로 호출 할 수 있습니다. 그러나 setTimeout매개 변수가 작동하지 않는 것으로 보입니다 .
tsh

아이디어는 var key=(()=>{setTimeout(args);return null})()다음과 같습니다crackme(key)
Евгений Новиков

속이는 것 같습니다
Евгений Новиков



6

껍질 , 5 바이트 금이 간

↑ε∞←ø

온라인으로 사용해보십시오!

이 언어는 여전히 새롭기 때문에 약간의 설명이 있습니다.

←ø빈 목록의 첫 번째 요소를 가져옵니다. 이는 콘크리트 유형 또는 함수 등 모든 유형을 가정 할 수있는 값을 리턴 한 후 입력에 적용됩니다. 이전 결과의 사본으로 구성된 무한 목록을 작성합니다 (대부분의 경우 무한 0의 목록을 의미 함). ↑ε"소형"인 한이 목록에서 요소를 가져옵니다. 즉 절대 값이 ≤1입니다. 무한한 0의 목록에서 이것은 멈추지 않을 것입니다.


실제로 의도 한 솔루션 인 @Veedrac
Leo



5

Ruby , 31 바이트 ( Eric Duminil에 의해 크랙 됨 )

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

온라인으로 사용해보십시오!

이것은 결과에 후행 줄 바꿈이없는 환경에서 실행해야합니다. gets그렇지 않으면 줄 바꿈으로 끝나는 것이 오류가 발생하여 구조를 칠 수 있기 때문에 중단 할 수 없습니다 (제 생각에).



그런데 좋은 하나! 루프 를 3.methods반환 5하거나 종료하는 메소드가 없습니다 .
Eric Duminil

꿰매다! 나는 해결책을 독립적으로 발견했지만, 5정답에 그 기능이 포함된다고 생각하는 것과 동등하게 만드는 데 너무 집중 했다.
Value Ink


5

배쉬 4.2, 14 바이트 ( 크랙 )

다시 해보자.

let ${1,,}
yes

Bash 4.3을 사용하는 TIO에서는 작동하지 않습니다. 입력은 명령 행 인수를 통해 이루어집니다.

Linux 및 gcc가 설치된 경우 Bash 4.2.53을 다음과 같이 다운로드하여 빌드 할 수 있습니다.

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

깨진. 기본적으로 소스를 읽었습니다.
Veedrac

4

Retina , 78 바이트 ( 크랙 ) ( 의도 한 솔루션으로 크랙 )

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

¶(?!1+$)

^(1+)¶\1$

+`1
11

쓰기가 꽤 즐거웠습니다.

온라인으로 사용해보십시오!

의도하지 않은 솔루션과 의도 한 솔루션으로 서로 1 분 안에 금이 간 것입니다. 하나는 먼저 게시하고 다른 하나는 먼저 댓글을 달았습니다.

의도 된 솔루션 :

11111 또는 n-1의 단항 표현 (여기서 n은 임의의 숫자 임)




그렇다면 누구의 균열이 중요합니까? (나는 균열을 먼저 게시했지만 mbomb007이 먼저 주석을 달았습니다)
Cows

@Cowsquack 둘 다
programmer5000


4

Java 8, 99 바이트, 크랙

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

이것은 유형의 람다입니다 Consumer<String>.

언 골프 드 :

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

온라인으로 사용해보십시오! (테스트 프로그램은 빈 입력에서 충돌하지만 람다 자체는 그렇지 않습니다!) (또한 테스트 프로그램은 STDIN이 아닌 인수를 사용하므로 TIO에서 '입력'이 아닌 '인수'를 사용하십시오)

의도 된 답변 :

-32767; 자바는 계속이 개 정수 타입을 가지고 있기 때문 작동 int하고 Integer. Integer감싸는 객체입니다 int. 또한, 자바의 캐시 유지 Integer상자의 -127통한을 127. !=그래서 일부 해제 및 권투 통해 ID의 조작자 수표 자동 복싱 숫자 로되어 동일한 끝나게 것이다 따라서 캐시로부터 객체 및 거짓 일 것이다.xx + 32767[-127, 127]Integeri != c



4

배쉬 4.2, 10 바이트 ( Cracked )

let $1
yes

Bash 4.3을 사용하는 TIO에서는 작동하지 않습니다. 입력은 명령 행 인수를 통해 이루어집니다.

Linux 및 gcc가 설치된 경우 Bash 4.2.53을 다음과 같이 다운로드하여 빌드 할 수 있습니다.

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
깨진. 셸 쇼크와 관련이 있다고 생각하고 나를 패치 된 버전으로 연결하는 서클에서 나를 안내했습니다. 의도하지 않은 균열을 사소한 복수로 계산하십시오.).
Veedrac

허, 내가 뭘하려는 건 아니에요 시험 해보고 싶다면 강화 된 버전을 게시했습니다.
Dennis

3

자바 : 1760 ( Cracked )

나는 이것이 골프를 치는 것이 너무 의미가 있다고 생각하기 때문에 변수 이름을 난독 화하고 '지저분하게'만들었습니다. 사실 시간이 지남에 따라 힌트를 게시 할 것이므로 금이 간 것을 볼 수 있습니다.

힌트 1 : 이론 상으로는 유효하지 않은 유효한 입력이 있지만 가장 '올바른'입력이 있습니다


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

	}
}

온라인으로 사용해보십시오!


두 개의 빈 논쟁이 작동하는 것 같습니다
Okx

또한 티오 링크를 추가 하시겠습니까? 당신이해야 할 것은 main을 Main으로
바꾸는 것뿐입니다

1
버그를 제외하고 금이 갔다 .
user3033745

금이 간 -버전 별 버그가 없습니다.
Okx

3

Braingolf , 18 바이트 크랙

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

온라인으로 사용해보십시오!

마지막 것보다 조금 딱딱한 Liiiitle, 이것 이후에 진짜를 쓰기 시작할 것입니다

답은 163입니다


이건 아마도 유일하게 살아남는 제출 atm 일 것입니다. 참고 : i작동하지 않습니다.
Outgolfer Erik

경고 : 실제로는 19 바이트 ( £)입니다. 왜 작동하지 -1않습니까? 까다 롭습니다.
Outgolfer Erik

@EriktheOutgolfer 그것은 17 문자와 18 바이트입니다.
완전히 인간적인

@totallyhuman 나는 "19 UTF-8 바이트, 18 문자"를 읽었다 고 맹세한다 (사용자 스크립트가 가능하다).
Erik the Outgolfer


3

자바 스크립트 (ES7), 41 바이트 ( Hacked & Cracked )

편집 : 입력이 전혀 없을 때 충돌이 발생하지 않도록 수정되었습니다 (@totallyhuman에게 감사합니다)


여러 솔루션이있을 수 있지만 예상되는 솔루션은 비교적 간단합니다.

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

의도 된 솔루션 :

"8e7"(과학 표기법의 숫자가 문자열로 전달됨) 다음과 같은
이유로 ~ "8e7"/ "8e7".length ** 3 = -80000001 / 3 ** 3 = -80000001/27 = -2962963


2
이 입력도 작동하지 않지만 그렇게 크래킹하고 싶지는 않습니다 ... 그렇지 않으면 의도 된 솔루션입니다. : P
완전히 인간적인

@totallyhuman 글쎄, 그것은 의도 된 해결책 이 아니다 . :-)
Arnauld


2
업데이트 : 3 바이트 길이의 솔루션을 얻었습니다
Евгений Новиков

3

Bash + Utils (Dennis에 의해 크랙 됨), 74 바이트

나는 당신이 사용할 수있는 유일한 유틸리티이기 때문에 타르를 즐기시기 바랍니다.

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

온라인으로 사용해보십시오!

의도 된 균열

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



트윗 담아 가기 의도 한 균열을 게시했는데 조금 더 복잡했습니다.
Sisyphus

3

Mathematica, 36 26 바이트 ( 크랙 )

#0[#;$IterationLimit=∞]&

매우 짧은 고리 #0[#;∞]그냥 커널 충돌 할 때까지 반복해서 자신을 계속 실행합니다 (은 $IterationLimit단지 당신이 대부분의 입력에 영원히 갇혀받을 수 있도록하는 것입니다).

Wolfram Sandbox에서 사용해보십시오! -무한 루프에 빠진 경우 시간이 초과 될 때까지 기다리거나 노트북 제목 왼쪽의 "평가 중단"아이콘을 누를 수 있습니다 (unnamed).

참고 :이 기능은 $IterationLimit설정을 변경합니다 .




3

C #, 118 바이트 ( Cracked )

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

나는 이것이 너무 오래 지속될 것으로 기대하지 않지만 그것이 보이는 것보다 더 어색합니다.

기본적으로 Nullable 클래스의 전체 이름은 작동하지만 다음과 같이 알아내는 것이 어색합니다.
System.Nullable`1[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]
이 문자열을 찾는 가장 쉬운 방법은 수행하는 것 typeof(int?).FullName입니다.




3

자바 스크립트 (ES7), 73 바이트 ( Cracked !)

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

원치 않는 해결책 : 무차별 대입. 원하는 균열은 수학과 관련이 있습니다.

모듈로 때문에 많은 솔루션 (4194304)이 있습니다.



3

brainfuck , 170 바이트 금이 갔다!

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

온라인으로 사용해보십시오!


사이트에 오신 것을 환영합니다! 코드에서 줄 바꿈을 제거하여 11 바이트를 절약 할 수 있습니다.
Sriotchilism O'Zaic

코드 골프라는 것을 잊었습니다. 감사합니다!
Jerry


유효한 해결책! 나는 그들 중 상당수가 있다고 추정합니다. 풀거나 강제로 해결하는 사람이라면 누구나 의도 한 것은 [az]입니다.
Jerry

각 4 개의 문자에 대해 마지막 문자의 정확히 1 개의 값이 프로그램을 정지시킵니다. 따라서 nulbrainfuck에 들어갈 수 있다고 가정하면 256 ^ 4 = 4294967296 솔루션이 있습니다 . BTW 당신은 ​​두 개의 첫 >저장 2 바이트를 제거 할 수 있습니다 .
user202729

3

JavaScript ES6 (Node.js> = 6.0) , 326 바이트 (안전)

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

다른 도전 보다 훨씬 단순화 된 더 이상 솔루션에 대한 접근 방식을 난독 화하려고 시도하지 않아 많은 바이트를 절약했습니다. 이번에 process.kill()는 작동하지 않습니다.

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

온라인으로 사용해보십시오!


우와! 좋은 작업!
programmer5000

훨씬 짧은 코드 hehe를 기대하고 있었지만 당신은 승자 인 것 같습니다
Piyin

3

스위프트 3, 14 바이트 ( 크랙 )

while !false{}

이 문제를 해결하려면이 명령문 앞뒤에 코드를 넣으십시오.

  • 솔루션은 다음과 같아야합니다.
    • 코드를 수정하지 않고이 문장을 그대로 유지하십시오
    • 실제로이 문장을 실행 시키십시오
      • fatalError()계산하기 전에 간단히 주석을 달고을 호출하는 등
    • 이 문장의 동작을 수정하여 영원히 반복되지 않도록하십시오.
  • 이 솔루션에는 프로그램 충돌이 포함되지 않습니다.

Swift를 모르지만 몇 초 후에 종료하기 위해이 코드 앞에 타이머를 추가하면 기준을 충족한다고 생각합니다.

@Yimin heh, 영리하지만,이 문장의 의미를 수정하지는 않는다. 이것은 내가 "이 문장의 동작을 수정한다"고 말할 때 실제로 찾고 있었던 것
Alexander

솔루션이 작동합니까? 통역사가 ambiguous semantics나에게 소리 쳤다 .
Daniel

@Dopapp 그것이 이전 시도에서 일어날 것이라고 생각한 것입니다. 어떤 이유로, 이미 존재하는 것과 동일한 유형 서명을 사용하여 새 접두사 연산자를 재정의하는 것이 합법적이지만 단항 연산자로 동일하게 시도하면 컴파일 시간 모호성 오류가 발생합니다. 이것은 의도적 인 것이며, 해결책이있을 것입니다.
Alexander


2

cQuents , 2 바이트 ( Cracked 1 ) ( Cracked 2 )

:A

이로 인해 TIO에서 128 KiB 출력 제한에 빠르게 도달하여 중지되지만, 로컬로 실행하면 중단되는 입력을 제외하고 영원히 반복됩니다. 입력을 찾는 것은 매우 쉬워야합니다. 당신이 할 때까지, 당신 :A의 삼각형 혀를 계속 내밀 것입니다.

이 것 또한주의 해야 단지가 될 A하지만 난 지난 밤에 암시 적 모드를 끊었다. 이전 인터프리터 버전에서는 A정상적으로 작동합니다.

균열 :

입력시 빈 입력 / 개행은 유효한 균열입니다. 그러나 여러 개의 (공백으로 분리 된) 입력을 프로그램에 전달하면 입력을 종료하거나 (2를 주면) 오류가 발생합니다 (3 이상을 주면).

온라인으로 사용해보십시오!


깨진? (빈 입력으로 오류 발생)
Luis Mendo


@crackers 네, 유효한 균열입니다. 그래도 비어 있지 않은 균열을 발견 한 사람에게 투표를하겠습니다.
Stephen

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.