1984 년 Michael Crichton은 BASIC에서 Creative Computing 잡지에 출판 된 보안 프로그램을 작성했습니다. 프로그램은 사용자에게 원하는 문구를 입력하고 키 스트로크 사이의 간격을 기록한 다음 문구를 다시 입력하도록 요청합니다. 타이밍이 너무 다른 경우 프로그램은 사용자를 사기꾼으로 식별합니다.
과제 : 선택한 언어로 Crichton의 프로그램 버전을 작성하십시오.
규칙 :
사용자와의 의사 소통을위한 문구 ( "키 구문을 입력하십시오", "키 구문을 다시 입력하십시오"등)는 실제 길이에 관계없이 각각 1 바이트로 계산됩니다. 이것은 사용자 통신 전용이며 문자열에서 프로그램 코드를 숨기려고 시도하지 마십시오.
합격 / 불합격 테스트는 원래 구간과의 편차 백분율의 평균 절대 값을 기반으로해야합니다. 문자열이 일치하지 않으면 재량에 따라 리턴에 실패하거나 사용자가 다시 시도하도록 허용하십시오.
핵심 문구는 null 문자열을 허용하지 않아야합니다. 키 구문이 문자열 데이터 유형에 비해 너무 길면, 임의로 재량으로 자르거나 허용하지 않고 다시 시작할 수 있습니다.
테스트 감도 (통과 / 실패 테스트의 임계 값)는 소스 코드에서 조정 가능해야합니다.
소스 코드를 공룡과 비슷하게 형식화 할 수 있다면 원래 총 바이트 수의 20 %를 보너스로 제공했습니다. 이것은 매우 주관적이고 인기 콘테스트에 더 적합하다고 지적 되었으므로이 보너스를 제거했습니다. 그러나 나는 여전히 공룡 서식을 진심으로 권장하며, 코드를 공룡처럼 보이도록 형식을 지정하면 순수하게 주석, 줄 바꿈 또는 공백 문자를 바이트 총계에서 빼낼 수 있습니다.
문자열 길이 및 공룡 형식 조정에 따라 가장 짧은 바이트 수를 얻습니다.
위의 사양은 Crichton의 코드 작동과 정확히 일치하지 않으며 사본은 온라인에서 찾을 수 있습니다. 사양을 따르고 원본을 복제하지 마십시오.
"Please type the key phrase"
1 바이트로 계산 됩니까? 아니면 문구 만 계산하고 인용 된 문구는 3 바이트 ( "
, phrase, "
)로 계산합니까? 더 긴 간격과 훨씬 짧은 간격이 "취소"되어 다시 한 번 더되는 것이 의도적인가? 프로그램은 두 가지 핵심 문구가 일치하는지 확인해야합니까?