Nó sẽ dừng lại? (Cảnh sát)


94

Đây là chủ đề của cảnh sát. Chủ đề của bọn cướp ở đây .

Thách thức của bạn là tạo ra một chương trình chạy mãi mãi mà không tạm dừng 1 , trừ khi nó nhận được một đầu vào cụ thể hoặc đầu vào 2 . Nếu nó nhận được đầu vào đó, nó phải chấm dứt trong một khoảng thời gian hữu hạn 3 . Đây là , vì vậy câu trả lời ngắn nhất chưa bị kẻ cướp bẻ khóa trong vòng một tuần sau khi đăng chiến thắng. Sau khi tuần trôi qua, vui lòng đánh dấu câu trả lời của bạn là an toàn và hiển thị đầu vào tạm dừng (trong a > ! spoiler quote). Nếu một tên cướp phá vỡ trình của bạn, vui lòng đánh dấu nó là bị bẻ khóa và hiển thị đầu vào tạm dừng (trong a > ! spoiler quote).

Đệ trình được ưu tiên có thể chạy và bẻ khóa trên TIO . Đệ trình không thể chạy hoặc bẻ khóa trên TIO được cho phép, nhưng vui lòng bao gồm các hướng dẫn để tải xuống / chạy chúng.

Vui lòng xác định đầu vào của bạn và thống nhất trong tất cả các lần chạy. Xem bài đăng meta này để biết chi tiết.

Xin vui lòng, không "thực hiện RSA" hoặc bất cứ điều gì có ý nghĩa với những tên cướp. Sử dụng các ngôn ngữ và tính năng tối nghĩa, không mã hóa và băm nhàm chán. Tôi không thể thực thi điều này bằng các quy tắc, nhưng bạn có thể mong đợi các đợt giảm giá khủng khiếp nếu tất cả những gì bạn làm là sha(input) === "abcd1234".


1 Giả sử rằng máy tính không tắt, bị vỡ, bị mặt trời nhấn chìm, quá nóng trong cái chết nóng của vũ trụ hoặc chạm vào thời gian chờ TIO của thập niên 60.

2 Chương trình phải tạm dừng ít nhất một đầu vào. Miễn là nó lặp vòng lặp mãi trên một đầu vào và dừng trên một đầu vào khác, nó hoạt động.

3 Điều này phải <60 giây, để mã có thể được kiểm tra trên TIO.


Tìm kiếm đệ trình không bị theo dõi?

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 giả sử bộ nhớ vô hạn vẫn ổn
lập trình

1
@ lập trình5000 Cảm ơn đã làm rõ. Bạn nên kết hợp tất cả điều này vào văn bản thách thức. Người trả lời dự kiến ​​sẽ không đọc tất cả các bình luận
Luis Mendo

6
Chúng ta có thể hạn chế đầu vào, nói, một số nguyên không? Một tên cướp có thể vượt qua trong một số đầu vào không đúng hoặc sai để chấm dứt chương trình ngay lập tức. Tôi sẽ phải thực hiện nhiều xác nhận nhập liệu cẩn thận hoặc sử dụng ngôn ngữ có thể bắt lỗi tùy ý.
xnor

3
@xnor Tôi nghĩ bạn phải kiểm tra đầu vào.
Stephen

1
@StepHen Điều đó hoạt động nếu đầu vào không đúng định dạng vẫn có thể được phân tích cú pháp bởi trình thông dịch. Nếu tôi nhập một chuỗi bất hợp pháp, Rlỗi ngay lập tức, thậm chí không nhập hàm để bẻ khóa. Tôi sẽ lập luận rằng điều đó không được tính là thực sự chấm dứt chức năng.
JAD

Câu trả lời:


55

Malbolge, 128 byte, bị bẻ khóa bởi KBRON111

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

Chúc vui vẻ!

(Vâng, tôi đã học Malbolge chỉ vì điều này. Vâng, phải mất một thời gian dài vô lý để cuối cùng làm việc. Và vâng, nó hoàn toàn xứng đáng.)

Được bao bọc, vì vậy bạn có thể thấy nó đầy đủ, "vinh quang":

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

Tôi đã sử dụng trình thông dịch này để kiểm tra nó; Tôi không chắc nó có vấn đề gì không, nhưng tôi đoán tôi chỉ định trong trường hợp này.


2
Đó là trình thông dịch TIO sử dụng btw.
Dennis

2
oh, "Hãy vui vẻ" là tốt Ngoài
Евгений Новиков

26
Bạn là một thằng ngốc. Malbolge có nghĩa là.
Draco18

1
Tôi đã đóng dấu ... Xa nhất tôi nhận được: trong số 13 đầu vào trước khi tạm dừng, chỉ thứ nhất và thứ ba có bất kỳ tác động nào. Sau khi triệt để đảo ngược kỹ thuật, tôi thấy rằng đầu vào đầu tiên có được 6và thứ ba là một trong bốn: !, #, /-. Nhưng sự kết hợp dường như không khắc phục được. Tôi đưa nó ra đây, có lẽ ai đó thông minh hơn sẽ tìm ra giải pháp. Nếu bất cứ ai muốn, tôi sẽ đăng vào ngày mai làm thế nào tôi có được những đầu vào này. EDIT: Bây giờ tôi nghĩ về nó, chương trình của tôi, tôi đã viết cho mục đích kỹ thuật đảo ngược, điều này có thể có lỗi và đầu vào đầu tiên có thể là một cái gì đó khác 6. Nhân vật thứ ba vẫn đứng vững.
Grzegorz Puławski


23

JavaScript (ES6), 17 byte, Cracked

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

Trên TIO, vì tôi không biết cách đọc đường dẫn Node.js trên TIO, chỉ cần dán đầu vào trong lệnh gọi hàm. Điều này là hiển nhiên đối với bất cứ ai biết điều đó và không phải với bất kỳ ai không biết.

Hãy thử trực tuyến!

Câu trả lời:

Câu trả lời là NaN, vì trong JavaScript , NaN != NaN.


2
Nứt . Cách sử dụng tốt đẹp của một ngôn ngữ kỳ lạ!
lập trình

3
Bạn đặt cược :) Tôi thích cách bạn tự tin đến mức đó là những gì tôi đã chọn mà bạn đã chỉnh sửa nó cho tôi: P
Stephen

12
NaN == NaNlà sai trong nhiều ngôn ngữ khác với JavaScript. Tôi sẽ không gọi nó là "sự kỳ quặc ngôn ngữ".
Nayuki

9
tôi tin NaN != NaNlà một tính năng của số dấu phẩy động
ngầm trong

1
@undergroundmonorail: Đúng vậy. Mối quan hệ giữa hai số dấu phẩy động của IEEE có thể ở trên, bằng, dưới hoặc không có thứ tự . Kết quả so sánh là không có thứ tự nếu một hoặc cả hai toán hạng là bất kỳ loại NaN nào. (Điểm nổi nhị phân của IEEE 754 có nhiều mẫu bit NaN : bất kỳ thứ gì có tất cả số mũ và mantissa không bằng 0 đều là NaN, bất kể bit dấu nào. NaN và để tuyên truyền rằng thông qua các hoạt động như +hoặc max(), nhưng hầu hết mọi người không quan tâm: P)
Peter Cordes

14

JS (ES6), 67 byte ( Cracked )

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

Tôi nghĩ rằng tôi đã không gây rối, nó có thể có một giải pháp dễ dàng mà tôi không thấy.

Tôi đánh giá cao bất kỳ thông tin phản hồi, đây là một trong những bài viết đầu tiên của tôi

(+0, -0) Đúng, js có 0 âm



Tôi nhận ra bây giờ mà tôi không cần phải kiểm tra xem xylà hữu hạn, nhưng tôi sẽ không chỉnh sửa vì nó đã được bẻ khóa. Có thể là 38 byte
Juan Tonina

10

Python 3,4, (40 byte) Đã bẻ khóa

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

4
Chào mừng đến với PPCG!
Martin Ender


12
Tôi cảm thấy như bạn nên lưu trữ x==xtrong một biến được gọi to_be, vì vậy bạn có thể tạo tham chiếu Hamlet.
Peter Cordes

@PeterCordes Nhưng điều đó sẽ khiến câu trả lời không thể bị bẻ khóa
pppery

@ppperry: yeah, tôi nhận thấy rằng sau khi tôi nhìn vào vết nứt. : P
Peter Cordes

9

Javascript (KHÔNG phải node.js)

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

Trình mong muốn không sử dụng ném.

Gợi ý cho vết nứt mong muốn:

Đệ trình mong muốn không ghi đè .toString(), hoặc sử dụng Set()một trong hai.

Mong muốn crack:

Object.create(null)


Liên kết vết nứt chính xác (không phải của tôi, chỉ là liên kết đến câu trả lời của Dom Hasting)
Stephen

Cracked # 2 Cracked mà không sử dụng throw(mặc dù vẫn có lỗi)
Grant Davis

Bị bẻ khóa một lần nữa mà không sử dụng throw, tôi tin rằng lần này thực sự là Grant Davis không hoạt động với tôi. Vẫn TypeErrors.
Haumed Rahmani

2
Bạn có thể làm x=>{try{for(;x+"h";)}catch(e){for(;;)}}như vậy để bất kỳ lỗi nào sẽ dẫn đến một vòng lặp vô tận để thiếu các lỗi chức năng nguyên mẫu (hoặc bất kỳ lỗi nào) sẽ dẫn đến một vòng lặp vô tận.
Cấp Davis

1
Cái này chỉ hoạt động trong trình duyệt, không biết tại sao nó lại hoạt động: D
jadkik94 26/07/17

8

C (gcc) , 75 byte Cracked

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

Hãy thử trực tuyến!

Tôi chưa bao giờ đăng trong một cảnh sát-n-cướp trước đây. Hy vọng điều này không quá rõ ràng.

Giải pháp:

Một đầu vào của "% s" tạo ra segfault này. Có một số cái khác có thể được sử dụng; tất cả trong số họ là các nhà đầu cơ printfnhư "% n"
Đây là printflỗ hổng cổ điển . Nói một cách đơn giản, chuỗi định dạng xuất phát trực tiếp từ đầu vào của người dùng, do đó, bất kỳ trình printfxác định nào cũng được chuyển qua, không an toàn.



8

JavaScript (trong Trình duyệt), 79 byte Cracked

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

Bạn nên chạy nó trong một trình duyệt gần đây (như Firefox ESR mới nhất, Firefox mới nhất, Chromium mới nhất). Chạy trên các trình duyệt cũ (như Netscape 2, IE 4) không được tính.

Lưu ý: Bị dừng bởi trình duyệt do hết thời gian không được dừng ở đây.

Luôn cẩn thận không làm sập trình duyệt của bạn khi kiểm tra mã này và vui vẻ cướp ^ _ ^

tài liệu


Tôi có thể sử dụng setTimeout không?
Евгений Новиков

@ ВгенийiTовиков Bạn có thể gọi hàm này với bất kỳ tham số nào. Nhưng có vẻ như sử dụng setTimeoutnhư tham số không hoạt động.
tsh

Ý tưởng là để làm var key=(()=>{setTimeout(args);return null})()và sau đócrackme(key)
Евгений Новиков

có vẻ như gian lận
Евгений Новиков



6

Husk , 5 byte Cracked

↑ε∞←ø

Hãy thử trực tuyến!

Một chút giải thích, vì ngôn ngữ này vẫn còn khá mới:

←ølấy phần tử đầu tiên của danh sách trống: giá trị này trả về một giá trị có thể giả sử bất kỳ loại nào, có thể là loại cụ thể hoặc hàm, sau đó sẽ được áp dụng cho đầu vào. tạo một danh sách vô hạn được tạo bởi các bản sao của kết quả trước đó (trong hầu hết các trường hợp sẽ có nghĩa là một danh sách các số 0 vô hạn). ↑εlấy các phần tử từ danh sách này miễn là chúng "nhỏ" tức là giá trị tuyệt đối của chúng là ≤1; trên một danh sách vô tận các số 0, điều này sẽ không bao giờ dừng lại.


@Veedrac đó thực sự là giải pháp dự định của tôi
Leo

Vâng, sau đó, nứt!
Veedrac


5

Ruby , 31 byte ( bị bẻ khóa bởi Eric Duminil )

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

Hãy thử trực tuyến!

Lưu ý rằng điều này cần phải được chạy trong một môi trường không có dòng mới trong kết quả gets, hoặc nếu không thì không thể làm cho nó dừng lại (tôi nghĩ) vì bất cứ điều gì kết thúc trong một dòng mới sẽ bị lỗi và giải cứu.



Nhân tiện, một trong những tốt đẹp! Không có phương thức trong 3.methodstrả về 5hoặc thoát khỏi vòng lặp.
Eric Duminil

Chết tiệt! Tôi đã phát hiện ra giải pháp một cách độc lập, nhưng tôi quá tập trung vào việc làm cho nó bằng nhau 5khi nghĩ rằng câu trả lời đúng sẽ liên quan đến chức năng mà nó đã làm ...
Value Ink


5

Bash 4.2, 14 byte ( đã bẻ khóa )

Hãy thử lại lần nữa.

let ${1,,}
yes

Điều này không hoạt động trên TIO, sử dụng Bash 4.3. Đầu vào là thông qua các đối số dòng lệnh.

Trên Linux và với gcc được cài đặt, Bash 4.2.53 có thể được tải xuống và xây dựng như sau.

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

Nứt. Về cơ bản cuối cùng đã đọc nguồn.
Veedrac

4

Retina , 78 byte ( Cracked ) ( Cracked with Intends Solution )

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

¶(?!1+$)

^(1+)¶\1$

+`1
11

Viết khá thú vị, hy vọng nó sẽ vui

Hãy thử trực tuyến!

Cracked với một giải pháp ngoài ý muốn và giải pháp dự định trong vòng một phút của nhau. Một đăng đầu tiên, một bình luận đầu tiên.

Giải pháp dự định:

1111 hoặc đại diện đơn phương của n-1 trong đó n là số hoàn hảo




Vậy ai có vết nứt? (Tôi đã đăng crack đầu tiên, nhưng mbomb007 đã bình luận đầu tiên)
Kritixi Lithos

@Cowsquack cả hai
lập trình

4

Node.js, 23 byte (Đã bẻ khóa )

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

Giải pháp Grant Davis

{__proto__:null}

Giải pháp của tôi

{"toString":process.exit}



@GrantDavis công việc tốt) Giải pháp của bạn cũng hoạt động trên trình duyệt. Tôi nghĩ sẽ bao quanh nó với thử bắt, nhưng từ chối ý tưởng này, để tạo ra một mã đẹp.
Евгений Новиков

4

Java 8, 99 byte, đã bẻ khóa

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

Đây là một lambda của loại Consumer<String>.

Ung dung:

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

Hãy thử trực tuyến! .

Dự định trả lời:

-32767; Điều này hoạt động vì Java keep có hai loại số nguyên intInteger. Integerlà một đối tượng kết thúc tốt đẹp int. Ngoài ra, Java giữ một bộ đệm của Integerhộp đó -127thông qua 127. Nhà !=điều hành kiểm tra danh tính, do đó, thông qua một số un-boxing và tự động đấm bốc bất kỳ số nàox nơi x + 32767là tại [-127, 127]sẽ kết thúc là cùng một Integerđối tượng từ bộ nhớ cache, và do đó i != csẽ là sai lầm.



4

Bash 4.2, 10 byte ( bẻ khóa )

let $1
yes

Điều này không hoạt động trên TIO, sử dụng Bash 4.3. Đầu vào là thông qua các đối số dòng lệnh.

Trên Linux và với gcc được cài đặt, Bash 4.2.53 có thể được tải xuống và xây dựng như sau.

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
Nứt. Bạn đã dẫn tôi vòng tròn trong vòng tròn nghĩ rằng đây là shellshock liên quan và liên kết tôi với một phiên bản vá: P. Đếm vết nứt ngoài ý muốn như sự trả thù nhỏ nhặt;).
Veedrac

Heh, không hoàn toàn những gì tôi sẽ làm. Tôi đã đăng một phiên bản cứng nếu bạn muốn dùng thử.
Dennis

3

Java: 1760 (Đã bẻ khóa )

Tôi cảm thấy nó quá có ý nghĩa với môn đánh gôn này, vì vậy tôi chỉ làm xáo trộn các tên biến và làm cho nó trở nên 'lộn xộn'. Thực tế là nó rất có ý nghĩa, rằng tôi sẽ đăng các gợi ý theo thời gian, để tôi có thể thấy nó bị bẻ khóa.

Gợi ý 1: điều này có đầu vào hợp lệ vô hạn về mặt lý thuyết, nhưng có một đầu vào là 'Chính xác' nhất


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

	}
}

Hãy thử trực tuyến!


Hai đối số trống dường như hoạt động
Okx

Ngoài ra, tâm trí thêm một liên kết tio? Tôi nghĩ rằng tất cả những gì bạn cần làm là đổi chính thành Chính
Okx

1
Bị nứt , ngoài một lỗi.
dùng3033745

Cracked - không có lỗi phiên bản cụ thể.
Okx

3

Braingolf , 18 byte Cracked

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

Hãy thử trực tuyến!

Liiiitle hơi khó hơn cái trước, tôi sẽ bắt đầu viết một cái thật sau cái này

Câu trả lời là 163


Man, đây có lẽ là máy đệ trình duy nhất còn sót lại. Lưu ý: ikhông hoạt động.
Erik the Outgolfer 24/07/17

Cảnh báo: đây thực sự là 19 byte ( £). Và tại sao không -1hoạt động? Đây là khó khăn.
Erik the Outgolfer 24/07/17

@EriktheOutgolfer Đó là 17 ký tự và 18 byte.
hoàn toàn là

@totallyhuman Tôi thề tôi đã đọc "19 UTF-8 byte, 18 ký tự" (kích hoạt tài liệu được kích hoạt) ...
Erik the Outgolfer 24/07/17


3

JavaScript (ES7), 41 byte ( Đã hack & Cracked )

Chỉnh sửa: đã sửa để ngăn nó bị sập khi không có đầu vào nào cả (cảm ơn @totallyhuman vì đã chú ý)


Một số giải pháp có thể tồn tại, nhưng giải pháp dự kiến ​​tương đối đơn giản.

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

Giải pháp dự định:

"8e7" (một số trong ký hiệu khoa học được truyền dưới dạng chuỗi)
Bởi vì: ~ "8e7" / "8e7" .length ** 3 = -80000001 / 3 ** 3 = -80000001/27 = -2962963


2
Không có đầu vào nào hoạt động trên cái này cả, nhưng tôi không muốn làm phiền nó như thế ... Trừ khi, đó là giải pháp dự định. : P
hoàn toàn là

@totallyhuman Vâng, đó không phải là giải pháp dự định. :-)
Arnauld


2
Cập nhật: đã dành 3 byte giải pháp dài
Евгений Новиков

3

Bash + Utils (Được bẻ khóa bởi Dennis), 74 byte

Tôi hy vọng bạn thích tar, vì đó là tiện ích duy nhất bạn có thể sử dụng.

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

Hãy thử trực tuyến!

Dự định crack

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



@Dennis Đẹp! Tôi đã đăng bản crack dự định của mình, nó phức tạp hơn một chút.
Sisyphus

3

Mathicala, 36 26 byte ( đã bẻ khóa )

#0[#;$IterationLimit=∞]&

Một vòng lặp rất ngắn #0[#;∞]sẽ cứ chạy đi chạy lại cho đến khi nó sập kernel của bạn ... (Điều $IterationLimitnày chỉ để đảm bảo bạn bị kẹt mãi mãi đối với hầu hết các đầu vào).

Hãy thử nó trên Wolfram Sandbox! - nếu bạn bị mắc kẹt trong một vòng lặp vô hạn, bạn có thể đợi cho đến khi hết thời gian hoặc bạn có thể nhấn biểu tượng "hủy bỏ đánh giá" vuông ở bên trái của tiêu đề sổ ghi chép (unnamed).

LƯU Ý : chức năng này thay đổi $IterationLimitcài đặt của bạn .




3

C #, 118 byte (Đã bẻ khóa )

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

Tôi không hy vọng điều này sẽ kéo dài quá lâu nhưng nó còn khó xử hơn nó dường như.

Về cơ bản, bất kỳ tên đầy đủ nào của lớp Nullable đều hoạt động nhưng thật khó để tìm ra vì nó trông giống như dưới đây:
System.Nullable`1[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]
Một cách dễ dàng hơn để tìm ra chuỗi này là làm typeof(int?).FullName.




3

JavaScript (ES7), 73 byte ( Cracked !)

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

Không muốn giải pháp: vũ phu. Mong muốn crack liên quan đến toán học.

Lưu ý rằng có nhiều giải pháp (4194304) vì modulo.



3

Brainfuck , 170 byte bị bẻ khóa!

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

Hãy thử trực tuyến!


Chào mừng đến với trang web! Bạn có thể lưu 11 byte bằng cách xóa các dòng mới khỏi mã của bạn.
Phù thủy lúa mì

Tôi quên nó là mã golf, cảm ơn!
Jerry


Giải pháp hợp lệ! Tôi ước tính có khá nhiều trong số họ. Đối với bất kỳ ai giải quyết / vũ phu, mục đích là [az].
Jerry

Đối với mỗi 4 ký tự, có chính xác 1 giá trị của ký tự cuối cùng làm cho chương trình tạm dừng. Do đó, có 256 ^ 4 = 4294967296 giải pháp giả sử bạn có thể nhập nulvào brainfuck. BTW bạn có thể loại bỏ hai >lưu đầu tiên 2 byte.
dùng202729

3

JavaScript ES6 (Node.js> = 6.0) , 326 byte (An toàn)

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

Đơn giản hơn nhiều so với thử thách khác của tôi là, tôi không còn cố gắng làm xáo trộn cách tiếp cận cho giải pháp, điều này giúp tôi tiết kiệm rất nhiều byte. Lần này, process.kill()sẽ không làm việc.

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

Hãy thử trực tuyến!


Ái chà! Công việc tốt!
lập trình

Có vẻ như bạn là người chiến thắng, mặc dù tôi đang mong đợi một mã ngắn hơn nhiều hehe
Piyin

3

Swift 3, 14 byte ( Cracked )

while !false{}

Để giải quyết điều này, hãy đặt mã của bạn trước hoặc sau câu lệnh này.

  • Giải pháp của bạn phải:
    • giữ nguyên tuyên bố này mà không sửa đổi mã của nó
    • thực sự để cho tuyên bố này chạy
      • Đơn giản chỉ cần bình luận, gọi điện fatalError(), vv trước khi nó không được tính.
    • sửa đổi hành vi của tuyên bố này để ngăn chặn nó lặp đi lặp lại mãi mãi
  • Giải pháp không liên quan đến việc làm hỏng chương trình.

Tôi không biết Swift, nhưng tôi nghĩ việc thêm một bộ đếm thời gian trước khi mã này thoát ra sau vài giây sẽ đáp ứng các tiêu chí.

@Yimin heh, thông minh, nhưng nó không sửa đổi ngữ nghĩa của tuyên bố này, đó là điều tôi thực sự tìm kiếm khi tôi nói "sửa đổi hành vi của tuyên bố này"
Alexander

Bạn có chắc chắn rằng giải pháp hoạt động? Người phiên dịch đang la hét ambiguous semanticsvới tôi.
Daniel

@Dopapp đó là những gì tôi nghĩ sẽ xảy ra trong nỗ lực trước đây của tôi. Vì một số lý do, việc xác định lại các toán tử infix mới có chữ ký cùng loại với các chữ ký đã tồn tại là hợp pháp, nhưng cố gắng làm điều tương tự với một toán tử đơn nguyên sẽ gây ra lỗi mơ hồ về thời gian biên dịch. Đây là cố ý và tôi chắc chắn rằng tôi có một giải pháp hiệu quả
Alexander


2

cQuents , 2 byte ( Cracked 1 ) ( Cracked 2 )

:A

Lưu ý rằng điều này sẽ nhanh chóng đạt đến giới hạn đầu ra 128 KiB trên TIO, khiến nó dừng lại, nhưng khi chạy cục bộ, nó sẽ lặp lại mãi mãi, ngoại trừ đầu vào phá vỡ nó. Tìm kiếm đầu vào đó là khá dễ dàng. Cho đến khi bạn làm:A sẽ tiếp tục lè lưỡi hình tam giác của nó ra với bạn.

Cũng lưu ý rằng đây nên được chỉA nhưng tôi đã phá vỡ chế độ ngầm đêm qua. Trên các phiên bản phiên dịch cũA sẽ hoạt động tốt.

Vết nứt:

Đầu vào trống / dòng mới trên đầu vào là một vết nứt hợp lệ. Tuy nhiên, việc chặn rằng, bằng cách chuyển nhiều đầu vào (được phân tách bằng dấu cách) cho chương trình, bạn sẽ chấm dứt chương trình đó (nếu bạn đưa ra 2) hoặc lỗi (nếu bạn cho 3 hoặc nhiều hơn).

Hãy thử trực tuyến!


Nứt? (Lỗi với đầu vào trống)
Luis Mendo


@crackers yep, đó là một vết nứt hợp lệ. Tôi sẽ đưa upvote của mình cho ai đó tìm thấy vết nứt đầu vào không trống.
Stephen

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.