4, 8, 15, 16, 23, 42
이 일련의 숫자를 무한대로 출력하는 프로그램을 작성하십시오. 그러나 Numbers는 소스 코드에 어디에나 나타나서는 안됩니다.
다음은 Numbers가 소스 코드에 나타나기 때문에 Numbers를 출력하는 유효한 Java 프로그램이 아닙니다.
class TheNumbers {
public static void main(String[] args) {
for(int n = 0;;) System.out.println(
n == 4 ? n = 8 :
n == 8 ? n = 15 :
n == 15 ? n = 16 :
n == 16 ? n = 23 :
n == 23 ? n = 42 : (n = 4)
);
}
}
"소스 코드에 숫자가 나타나지 않아야 함" 의 정의는 다음과 같습니다.
- 숫자 4를 사용해서는 안됩니다.
- 숫자 8을 사용해서는 안됩니다.
- 숫자 1 뒤에 숫자 5를 사용해서는 안됩니다.
- 숫자 1 뒤에 숫자 6을 사용해서는 안됩니다.
- 숫자 2 뒤에 숫자 3을 사용해서는 안됩니다.
언어에서 숫자 사이에 놓일 수있는 특정 문자를 무시하면 유효한 대체 문자가 아닙니다. 예를 들어, 언어에서 리터럴 1_5
을 로 해석 15
하면 숫자 1과 숫자 5로 계산됩니다.
대체 기준이 제한에 포함되므로 다음과 같습니다.
- 이진 100은 4를 대체 할 수 없습니다.
- 8 진수 10은 8을 대체 할 수 없습니다.
- 16 진 F는 15를 대체 할 수 없습니다.
따라서 다음은 Numbers가 소스 코드에 표시되지 않기 때문에 Numbers를 출력하는 유효한 (매우 고무적이지는 않은) Java 프로그램입니다.
class TheNumbers {
public static void main(String[] args) {
for(int n = '*';;) {
System.out.println(n -= '&');
System.out.println(n *= 2);
System.out.println(n += 7);
System.out.println(++n);
System.out.println(n += 7);
System.out.println(n += 19);
}
}
}
그 프로그램이 참고 '*'
과 '&'
달리 번호 4, 8, 소스 코드에서 나타나는 것이기 때문에, 정수 (42) 및 (38)로 대체된다.
"시퀀스를 무한대로 출력한다" 라는 정의는 해석하기 쉽다. 예를 들어, "무한대"가 작아 질 때까지 글리프를 더 작게 출력하는 프로그램이 유효합니다.
기본적으로 각 숫자를 하드 코딩하지 않는 방식으로 시퀀스를 생성 할 수 있다면 좋습니다.
이것은 인기 콘테스트이므로 창의력을 발휘하십시오. 3 월 26 일에 가장 많은 표를 얻은 답변이 승자입니다.
This isn't an interesting question, IMHO, since the solution is pretty trivial. Please post in the sandbox next time.
보다 더 나을 것이라고 생각 This is a stupid question.
하지만, 그것은 내 개인적인 의견 일뿐입니다.