이 도전 과제를 게시하기 전에 사양을 확정하는 데 도움을 주신 Step Hen , Wheat-Wizard 및 Dennis 사용자에게 감사 합니다!
이것이 경찰의 실입니다. 강도의 실은 여기로
이 과제 에서는 언어가 더 이상 프로그래밍 언어라는 기준을 충족시키지 못하도록 코드를 실행해야합니다. 그 도전에서, 그것은 언어가 더 이상 할 수 없도록 만드는 것을 의미합니다 ...
숫자 입력 및 출력
두 숫자를 더해라
특정 숫자가 소수인지 테스트합니다.
이것은 두 가지 다른 목표를 가진 두 가지 도전 이있는 경찰과 강도 도전입니다 : 경찰 은 언어를 거의 사용할 수 없게 만드는 코드를 작성하려고 시도 하며 강도 는 경찰을 허용하는 숨겨진 해결 방법을 찾으려고 노력합니다 그들의 언어를 회복하기 위해.
경찰은 두 가지 코드 스 니펫을 작성해야합니다.
입력 / 출력 및 수치 연산을위한 내장 함수를 제거하여 언어를 거의 사용할 수없는 언어. 더 많은 기능을 제거할수록 좋습니다. 이 코드는 충돌하거나 종료 할 수 없습니다 . 이 스 니펫 끝에 코드를 추가 할 수 있어야하며 해당 코드 가 평가 됩니다. 과...
... 음수가 아닌 두 정수를 입력으로 취하고 함께 더한 다음 합계를 출력하는 코드 스 니펫입니다. 이 스 니펫은 첫 번째 스 니펫을 실행 한 후에도 여전히 올바르게 작동해야합니다. 두 스 니펫이 결합되면 두 개의 숫자를 추가하는 전체 프로그램을 구성하거나 두 개의 숫자를 추가하는 함수를 정의해야합니다. 이상적으로,이 스 니펫은 찾기 어려울 정도로 매우 모호한 동작에 의존해야합니다.
표준 입력 및 출력 방법을 선택할 수 있습니다 . 그러나 사용중인 형식 (입력 및 출력)을 정확하게 나타내야합니다. 강도는 당신과 같은 형식을 사용하지 않으면 답을 해독 할 수 없습니다.
이 스 니펫을 모두 작성한 후에는 두 번째 스 니펫을 공개하지 않고 첫 번째 스 니펫을 답변으로 게시해야합니다. 귀하의 답변에는 다음 정보가 모두 포함되어야합니다.
첫 번째 스 니펫 (두 번째는 아님).
언어 (마이너 버전 포함, 대부분의 제출물은 이상한 대소 문자를 사용하므로)
함수인지 전체 프로그램인지를 포함한 IO 형식. 강도 는 균열이 유효하도록 동일한 형식을 사용해야합니다.
답이 작동하는 데 필요한 이상한 경우. 예를 들어, Linux에서만 실행 되거나 인터넷 연결이 필요합니다 . 분명히 이것은 약간 주관적이지만 경찰이 금이가는 것을 막는 극단적 인 가장자리 케이스가 있고 안전 후에 만 드러난다면 나는이 스포츠맨 쉽을 고려합니다. 잠재적 인 강도는 답변을 해독하기 전에 필요한 모든 정보를 가지고 있어야합니다 .
답이 안전해질 때까지 바이트 수를 밝힐 필요는 없습니다.
다음은 예입니다. 첫 번째 스 니펫의 경우 다음 Python 3 프로그램을 제출할 수 있습니다.
파이썬 3
print=None
STDIN에서 입력을 받아 STDOUT으로 출력
그런 다음 두 번째 스 니펫으로 다음과 같이 작성할 수 있습니다.
import sys
a,b=int(input()),int(input())
sys.stdout.write(a+b)
이것은 두 숫자를 입력으로 취하고 두 스 니펫을 함께 결합하더라도 합계를 출력하기 때문에 유효합니다.
print=None
import sys
a,b=int(input()),int(input())
sys.stdout.write(a+b)
그러나 이것은 강도가 해결책을 찾기가 매우 쉽습니다. 이 방법은 매우 쉽게 해독 할 수 있으므로 다음과 같이이 특정 접근 방식을 패치하려고 시도 할 수 있습니다.
import sys
sys.stdout=None
print=None
그러나 이것조차도 매우 쉬운 해결 방법이 있습니다.
del print
a,b=int(input()),int(input())
print(a+b)
경찰의 목표는 숨겨진 해결 방법을 가능한 한 모호하게하여 강도가 찾지 못하도록하는 것입니다.
강도는 답 중 하나에서보고, 그것을 균열을 시도합니다. 그들은 스 니펫 2로 작동 할 수 있는 유효한 스 니펫을 작성 하여 언어를 해독 할 수 있습니다 (언어를 거의 사용할 수 없게 된 후 두 숫자를 더함). 원래 의도했던 것과 동일한 스니 펫일 필요 는 없습니다 . 강도가 답을 해독하면 답에 댓글을 남긴 다음 답을 해독하여 답을 표시해야합니다. 게시물에 금이 간 경우 원래 의도 한 솔루션 (스 니펫 2)을 표시하도록 답변을 편집해야합니다. 이것은 규칙 그 자체 가 아니며 게임을 재미있게 유지하기위한 친절한 제안입니다. 당신은 필요 없어.
일주일 내내 답이 깨지지 않은 경우 두 번째 스 니펫에서 수정하여 답이 안전하다고 표시 할 수 있습니다 . 일주일이 지난 후에 편집하지 않으면 다른 사용자가 편집 할 때까지 크랙 할 수 있습니다. 두 번째 스 니펫을 공개하지 않으면 답변에 대한 포인트를 청구하거나 안전하게 전화 할 수 없습니다.
경찰 스레드의 승자는 바이트로 계산 된 스 니펫을 포함 하여 가장 짧은 안전 답변 이며, 충분한 시간이 지나면 이 답변 을 수락합니다. 답이 안전 할 때까지 바이트 수는 점수와 관련 이 없으므로 답이 안전 할 때까지 바이트 수를 표시 할 필요 가 없습니다 . 충분한 시간이 지났는데도 답이 깨지지 않은 경우, 가장 오랜 시간 동안 답이없는 답이 승자가됩니다.
즐기세요!
규칙 설명
첫 번째 스 니펫은 입력하지 않고 올바르게 실행해야합니다 . 스 니펫이 완료된 후 두 번째 스 니펫이 올바르게 실행되는 한 원하는대로 출력 할 수 있으며이 출력은 무시됩니다.
귀하의 답변이 유효 하려면 두 번째 스 니펫 이 실제로 실행 되어야합니다. 이것은 다음과 같은 답변을 의미합니다
import sys sys.exit()
언어를 위반하지 않기 때문에 유효하지 않습니다. 단순히 종료됩니다. 마찬가지로 두 번째 스 니펫은 절대 실행되지 않으므로 무한 루프를 입력하는 것은 유효하지 않습니다.
안전을 유지하면 점수는 두 스 니펫 의 바이트 수 입니다 .
이것은로 되돌아 가서 일할 당신의 대답에 필요한 이상한 가장자리의 경우 공개주세요 귀하의 제출이 충분한 정보를 포함해야합니다 ... 전에 재현으로 공개 된 후 공개되고있다. 이것은 귀하의 답변이 안전 해지면 다음에서 편집하는 경우를 의미합니다 : 여기 내 답변입니다. 아, BTW 이것은 솔라리스에서 실행할 때만 작동합니다. 귀하의 답변이 유효하지 않으며 삭제되며 당첨 될 자격이없는 것으로 간주됩니다.
두 번째 스 니펫은 합계를 출력 한 후 출력이 여전히 올바른 한 (예를 들어, STDERR로 출력하도록 선택한 후 많은 충돌 정보를 얻는 경우 유효하지 않음) 크래시가 허용됩니다.
답변을 제출 한 후 코드를 편집 할 수 없습니다.
암호화, 해시 함수, CSPRNG 등과 같은 암호화 기능에 의존해서는 안됩니다.
int main(){ do_evil_stuff(); }
사용자 코드를 어디로 가야합니까? 기능에서? 의 모든 진술 후에main
?