지정된 숫자의 우선 순위를 테스트하고 출력을 부울 값으로 제공하는 프로그램을 작성하십시오 (True is prime). 귀하의 프라임 테스트는 숫자 1에 유효 할 수 있습니다 (그러나 반드시 그런 것은 아닙니다).
다음은 캐치입니다. 프로그램 자체는 소수입니다. 모든 문자 (공백 포함)를 해당 유니 코드 / ASCII 값 ( table )으로 변환하십시오. 그런 다음 모든 숫자를 더하여 프로그램의 합계를 얻으십시오.
예를 들어, 파이썬 3.3에서 작성한이 좋지 않은 프로그램을 보자.
q=None
y=int(input())
for x in range(2,int(y**0.5)+1):
if y%x==0:
q=False
if not q:
q=True
print(q)
모든 문자를 해당 유니 코드 / ASCII 값으로 변환하면 다음을 얻을 수 있습니다.
113 61 78 111 110 101 10 121 61 105 110 116 40 105 110 112 117 116 40 41 41 10 102 111 114 32 120 32 105 110 32 114 97 110 103 101 40 50 44 105 110 116 40 121 42 42 48 46 53 41 43 49 41 58 10 32 32 32 32 105 102 32 121 37 120 61 61 48 58 10 32 32 32 32 32 32 32 32 113 61 70 97 108 115 101 10 105 102 32 110 111 116 32 113 58 10 32 32 32 32 113 61 84 114 117 101 10 112 114 105 110 116 40 113 41
그런 다음 수동으로 또는 자신의 프로그램으로 해당 숫자의 합계를 찾을 수 있습니다. 이 특정 프로그램의 합계는 8293으로 소수입니다.
물론 이것은 코드 골프이므로 프로그램을 작게 만들수록 더 좋습니다. 다른 사용자가 지적 했듯이이 프로그램은 그다지 골프 색이 아닙니다.
몇 가지 규칙 :
유효한 입력에는 STDIN 및 프롬프트가 포함됩니다 (기능 없음, 무료 추가 코드를 추가하는 방법 일 뿐임). 공백은 허용되지만 프로그램 기능에 중요한 경우에만 허용됩니다. 출력은 변수에 저장되거나 반환되는 것이 아니라 출력이어야합니다 (print, STDOUT 등 사용).
플래그를 사용할 수 있으며 확장되지 않고 문자 그대로 계산해야합니다. 의견은 허용되지 않습니다. ASCII가 아닌 문자는 해당 인코딩의 값에 지정해야합니다.
프로그램의 크기와 프로그램의 합계를 나열하십시오. 프로그램이 유효한지 테스트합니다.
행운을 빕니다!
다음은 프로그램 합계를 계산하여 소수인지 확인하는 스 니펫입니다.