당신의 임무는 숫자를 다른 숫자로 나눌 수 있는지 여부를 결정하는 프로그램이나 함수를 작성하는 것입니다. 문제는 숫자의 모든 숫자가 주어지지 않았더라도 가능한 한 빨리 답변을 제공해야 한다는 것 입니다.
프로그램은 정수 D ≥ 2를 입력 한 다음 일련의 숫자를 입력으로 사용해야 합니다. 이들은 최소 유효 자릿수부터 시작하여 다른 정수 N ≥ 1 의 자릿수를 나타냅니다 . 최초의 시점에서 N 중 하나가 있어야합니다 또는 안 의한 divisble 수 D , 프로그램 출력해야 적절한 대답 하고 종료합니다. 입력의 끝에 도달하면 전체 N 을 D 로 나눌 수 있는지 여부를 출력해야합니다 .
다음은 N 에 허용되는 입력 형식 목록입니다 (포함되지 않은 것을 허용해야한다고 생각하는 경우 주석 남기기).
표준 입력 : 숫자는 별도의 줄에 제공됩니다. 입력 끝 은 EOF 또는 특수 값입니다. 종료 는 함수가 리턴되거나 프로그램이 종료 됨을 의미합니다.
아날로그 입력 : 키 스트로크 또는 각 숫자를 나타내는 10 개의 버튼; 입력 끝은 특수한 값입니다. 종료 는 함수가 리턴되거나 프로그램이 종료 됨을 의미합니다.
전역 상태의 함수 : 연속 숫자로 반복해서 호출됩니다. 입력 끝은 특수한 값입니다. 종료 는 함수가 널이 아닌 값을 리턴 함을 의미합니다. 전역 상태를 사용하는 경우 , 함수가 여러 번 작동 하도록 값이 리턴 된 후 재설정되거나 그렇지 않으면 재설정 되어야합니다 .
Curried function : 다음 숫자 또는 값으로 호출 할 다른 함수를 반환합니다. 입력 끝은 특별한 값이거나 인수없이 함수를 호출하는 것입니다. 종료 는 함수가 다른 함수가 아니라 응답을 반환 함을 의미합니다.
GUI 프롬프트 또는 유사 : 반복적으로 표시됩니다. 입력 끝 이 "취소"또는 이와 동등한 값이거나 특수 값입니다. 종료 는 프롬프트가 중지되는 것을 의미합니다.
반복자 함수 : 입력은 호출 될 때 다음 숫자를 리턴하는 상태 저장 오브젝트 또는 함수 입니다. 입력 끝은 예외 또는 특수 값입니다. 종료 는 반복자가 호출을 중지 함을 의미합니다.
D 및 출력에 대한 입력은 허용 가능한 표준 방법을 통해 가능합니다 .
테스트 사례 :
2; 6 => true
5; 6 => false
20; 0 3 => false
20; 0 4 => true
100; 1 => false
100; 0 0 => true
100; 0 2 => false
4; 2 4 => false
4; 2 5 => true
4; 2 [eof] => false
4; 4 [eof] => true
625; 5 5 => false
625; 5 7 2 => false
625; 5 7 3 6 => false
625; 5 7 3 4 => true
7; 9 3 4 [eof] => false
7; 9 3 4 5 [eof] => true
140; 0 3 => false
140; 0 4 5 [eof] => false
140; 0 4 5 1 [eof] => true
14; 4 5 1 4 [eof] => false
14; 4 5 1 4 1 [eof] => true
digits
EOF에 대한 특별한 값을 가진 입력으로 목록을 가져 오는 것만으로도 문제가 있습니까?
[]
및 [2]
이외의 반환 아무것도 false
또는 true
(등 함수 자체 ... 포함) 동안 [2,3]
, [2,3,1]
및 [2,3,1,EOF]
반환 true
. 전역 상태 옵션에 가깝습니다.