Lấy cảm hứng từ bình luận này ...
Cảm ơn người dùng Step Hen , Wheat-Wizard và Dennis đã giúp tôi củng cố đặc điểm kỹ thuật của thử thách này trước khi đăng nó!
Đây là chủ đề của Robber! Đối với chủ đề của Cảnh sát, hãy vào đây
Trong thử thách này , bạn có nhiệm vụ chạy một số mã khiến cho ngôn ngữ của bạn không còn thỏa mãn tiêu chí của chúng tôi là ngôn ngữ lập trình. Trong thử thách đó, điều đó có nghĩa là làm cho nó để ngôn ngữ không còn ...
Lấy đầu vào số và đầu ra
Cộng hai số lại với nhau
Kiểm tra nếu một số nhất định là một số nguyên tố hay không.
Đây là một thử thách cảnh sát và cướp , trong đó có hai thử thách khác nhau với hai mục tiêu khác nhau: Cảnh sát sẽ cố gắng viết một số mã khiến ngôn ngữ hầu như không sử dụng được và bọn cướp sẽ cố gắng tìm ra cách giải quyết ẩn cho phép cảnh sát để phục hồi ngôn ngữ của họ.
Cảnh sát sẽ viết hai đoạn mã:
Một ngôn ngữ làm cho ngôn ngữ của họ hầu như không sử dụng được, ví dụ bằng cách loại bỏ các hàm tích hợp để thực hiện các thao tác nhập / xuất và số. Mã này không được phép để sập hoặc thoát. Có thể thêm mã vào cuối đoạn mã này và mã đó sẽ được đánh giá . Và
Một đoạn mã lấy hai số làm đầu vào, cộng chúng lại với nhau và xuất tổng của chúng. Đoạn mã này vẫn phải hoạt động chính xác ngay cả sau khi chạy đoạn mã đầu tiên. Khi hai đoạn mã được kết hợp với nhau, chúng phải tạo thành một chương trình đầy đủ có thêm hai số hoặc xác định hàm thêm hai số. Đoạn trích này có thể sẽ dựa vào hành vi tối nghĩa và khó tìm.
Cảnh sát cũng sẽ chọn bất kỳ phương pháp tiêu chuẩn đầu vào và đầu ra . Tuy nhiên, họ phải tiết lộ chính xác định dạng (đầu vào và đầu ra) mà họ đang sử dụng. Để bạn bẻ khóa câu trả lời của họ, bạn phải tuân theo cùng một định dạng đầu vào / đầu ra, hoặc vết nứt của bạn không được tính.
Một câu trả lời của cảnh sát sẽ luôn luôn tiết lộ
Đoạn đầu tiên (rõ ràng không phải là đoạn thứ hai).
Ngôn ngữ (bao gồm cả phiên bản nhỏ, vì hầu hết các bài nộp có thể sẽ dựa vào các trường hợp cạnh lạ)
Định dạng IO, bao gồm cả chức năng hay chương trình đầy đủ. Kẻ cướp phải sử dụng định dạng tương tự để trở thành một vết nứt hợp lệ.
Bất kỳ trường hợp cạnh lạ cần thiết cho câu trả lời của họ để làm việc. Ví dụ: chỉ chạy trên linux hoặc yêu cầu kết nối Internet .
Là một tên cướp, bạn phải nhìn vào một trong những đệ trình của cảnh sát và cố gắng bẻ khóa nó. Bạn có thể bẻ khóa nó bằng cách viết bất kỳ đoạn mã hợp lệ nào có thể hoạt động như đoạn 2 (cộng hai số lại với nhau sau khi ngôn ngữ được tạo ra hầu hết không sử dụng được). Đây không phải là đoạn trích giống như cảnh sát ban đầu đã viết. Khi bạn có câu trả lời bị bẻ khóa, hãy đăng mã của bạn dưới dạng câu trả lời trên chuỗi này và gửi liên kết đến câu trả lời của bạn dưới dạng nhận xét về câu trả lời của cảnh sát. Sau đó, bài đăng đó sẽ được chỉnh sửa để chỉ ra đã bị bẻ khóa.
Đây là một ví dụ. Đối với đoạn mã đầu tiên, bạn có thể xem chương trình python 3 sau đây dưới dạng câu trả lời của cảnh sát:
Con trăn 3
print=None
Đưa đầu vào từ STDIN và đầu ra sang STDOUT
Một đoạn mã thứ hai hợp lệ có thể là
import sys
a,b=int(input()),int(input())
sys.stdout.write(a+b)
Điều này hợp lệ vì sẽ lấy hai số làm đầu vào và xuất tổng của chúng ngay cả khi bạn nối hai đoạn mã với nhau, ví dụ:
print=None
import sys
a,b=int(input()),int(input())
sys.stdout.write(a+b)
Đây là một vết nứt hợp lệ cho câu trả lời của họ.
Nếu câu trả lời của cảnh sát vẫn không bị theo dõi trong cả tuần, họ có thể chỉnh sửa trong đoạn trích thứ hai và cho biết câu trả lời của họ hiện đã an toàn . Một khi nó được chỉnh sửa để an toàn, bạn có thể không còn cố gắng bẻ khóa nó nữa. Nếu họ không chỉnh sửa nó là an toàn, bạn có thể tiếp tục cố gắng bẻ khóa cho đến khi họ làm điều đó.
Người chiến thắng trong chủ đề của tên cướp là người dùng đã bẻ khóa nhiều câu trả lời nhất, với kẻ phá vỡ là thời điểm chúng đạt đến N vết nứt. (vì vậy, nếu hai người dùng khác nhau, mỗi người có 5 vết nứt, thì người dùng đã đăng lần bẻ khóa thứ 5 của họ trước là người chiến thắng) Sau khi đủ thời gian trôi qua, tôi sẽ chấp nhận câu trả lời của người chiến thắng với nhiều phiếu nhất.
Chúc vui vẻ!
Làm rõ quy tắc
Đoạn mã đầu tiên phải chạy chính xác mà không cần bất kỳ đầu vào nào . Nó có thể xuất bất cứ thứ gì bạn thích, và đầu ra này sẽ bị bỏ qua. Miễn là sau khi đoạn mã được thực hiện, đoạn mã thứ hai chạy chính xác.
Đoạn mã thứ hai thực sự phải được thực thi để câu trả lời của bạn có giá trị. Điều này có nghĩa là một câu trả lời như
import sys sys.exit()
không hợp lệ vì nó không phá vỡ ngôn ngữ. Nó chỉ đơn giản là thoát.
Sau khi an toàn, điểm của bạn là số byte của cả hai đoạn .
Điều này quay trở lại Vui lòng tiết lộ bất kỳ trường hợp cạnh lạ nào cần thiết để câu trả lời của bạn hoạt động ... Nội dung gửi của bạn phải chứa đủ thông tin trước khi được tiết lộ để có thể sao chép lại sau khi được tiết lộ. Điều này có nghĩa là nếu câu trả lời của bạn trở nên an toàn, và sau đó bạn chỉnh sửa: Đây là câu trả lời của tôi. Oh ya, BTW này chỉ hoạt động nếu bạn chạy nó trên Solaris, đùa bạn! câu trả lời của bạn không hợp lệ và sẽ bị xóa và không được coi là đủ điều kiện để chiến thắng.
Đoạn mã thứ hai được phép gặp sự cố sau khi xuất tổng. Miễn là đầu ra vẫn đúng (ví dụ: nếu bạn chọn xuất ra STDERR, và sau đó bạn nhận được một loạt thông tin sự cố, điều này không hợp lệ)
Bảng xếp hạng
Dưới đây là danh sách của mỗi người dùng có ít nhất một vết nứt, được sắp xếp theo điểm số và sau đó đặt tên (theo bảng chữ cái). Nếu bạn gửi một vết nứt, xin vui lòng cập nhật điểm số của bạn cho phù hợp.
#User #Score
Ilmari Karonen 8
Dennis 5
Olivier Grégoire 4
Sisyphus 3
Veedrac 3
Arnold Palmer 2
Bruce Forte 2
DJMcMayhem 2
Dom Hastings 2
ppperry 2
1bluston 1
2012rcampion 1
Ben 1
BlackCap 1
Christian Sievers 1
Cody Gray 1
HyperNeutrino 1
Joshua 1
Kaz 1
Mark 1
Mayube 1
Xnor 1
zbw 1
SecurityManager
cái trong phạm vi ... Tuy nhiên, bạn cũng có thể đọc từSystem.in
lúc này, vì nó chưa bị đóng.