이 도전은 내가 자주 쓰는 프로그래밍 블로그에서 영감을 얻었습니다. 원래 게시물을 참조하십시오 : 프로그래밍 퍼즐
도전
함수 정의 f:Q->Q
같은 것을 f(f(n)) = -n
'0'이 아닌 정수에 대해 n
, 그리고 Q
유리수의 집합입니다.
세부
당신이 선호하는 어떤 언어로 정의하십시오 하나 개의 기능이나 프로그램을 f
매개 변수로 받아 하나의 수를 n
반환 또는 출력 한 수를 f(n)
.
함수 인수, STDIN에서 읽기, 명령 행 인수, 스택 위치, 음성 입력, 갱 사인 등 언어에 가장 자연스러운 메커니즘을 통해 입력이 제공 될 수 있습니다.
출력은 기능 / 프로그램에서 리턴 값이거나 STDOUT으로 인쇄되어야합니다.
프로그램 상태 나 함수 외부에서 볼 수있는 전역 메모리 / 데이터를 활용하지 않는 함수에 대한 답변을 제한하고 싶습니다 f
. 예를 들어, 카운터를 f
그 외부에 유지하는 것은 몇 번의 f
호출을 했는지 계산 하고이 카운트를 기반으로 부정을하는 것은 누구에게나 어렵거나 흥미롭지 않습니다. 결정 f
은 f
어휘 범위 내의 데이터에만 의존해야합니다 .
그러나 이러한 제한은 일부 스택 지향 언어 또는 이러한 유형의 데이터 또는 범위를 구분하지 않는 다른 유형의 언어에는 적합하지 않을 수 있습니다. 이 도전의 정신을 지키기 위해 최선의 판단을하십시오.
채점
공통 코드 골프 규칙이 적용됩니다. 점수는 소스 코드 의 바이트 수입니다 .
최소 답변을 위해서는 도메인과 공동 도메인 f
이 합리적 부분 집합이어야합니다 Q
. 도메인과 코 도메인을 f
integers로 제한하면 Z
점수는 소스 코드 바이트 수의 90 %의 상한입니다 .
타이 브레이크
동점 일 경우 다음이 순서대로 사용됩니다.
- 소스 코드에서 인쇄 가능한 비 공백 기호의 수가 가장 적음
- 가장 빠른 답변 제출 날짜 및 시간
편집하다
임의 크기의 숫자를 지원할 필요는 없습니다. 선택한 언어 (일반적으로 정수 및 부동 소수점)로 세트 Z
및 Q
데이터 유형을 해석하십시오 .
솔루션이 데이터 유형의 기본 구조 또는 비트 패턴에 전적으로 의존하는 경우 해당 제한 사항과 사용 방법을 설명하십시오.
f:Q->Q
뜻 인지 설명해 주 시겠습니까?
f
는 Q
(합리 수) 멤버를의 다른 멤버 (아마도 같은)에 매핑하는 함수 입니다 Q
. 참조 en.wikipedia.org/wiki/Function_(mathematics)#Notation