4, 8, 15, 16, 23, 42
Napisz program, który wypisze nieskończoną sekwencję liczb. Numery nie mogą jednak nigdzie pojawiać się w kodzie źródłowym.
Następujący program nie jest prawidłowym programem Java do wyświetlania liczb, ponieważ liczby pojawiają się w kodzie źródłowym:
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)
);
}
}
Definicja „Numery nie mogą pojawiać się w kodzie źródłowym” jest następująca:
- Nie wolno używać cyfry 4.
- Nie wolno używać cyfry 8.
- Nie wolno używać cyfry 1, a następnie cyfry 5.
- Nie wolno używać cyfry 1, a następnie cyfry 6.
- Nie wolno używać cyfry 2, a następnie cyfry 3.
Jeśli Twój język ignoruje pewne znaki, które można umieścić między cyframi, nie jest to poprawne podstawienie. Na przykład, jeśli twój język interpretuje literał 1_5
jako 15
, będzie to liczone jako cyfra 1, a następnie cyfra 5.
Alternatywne zasady są objęte ograniczeniem, więc na przykład:
- Binarne 100 nie może być używane jako zamiennik 4.
- Octal 10 nie może być stosowany jako zamiennik 8.
- Szesnastkowy F nie może być stosowany jako zamiennik 15.
Dlatego poniżej przedstawiono poprawny (ale niezbyt zainspirowany) program Java do wyświetlania liczb, ponieważ liczby nie pojawiają się w kodzie źródłowym:
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);
}
}
}
Zauważ, że w tym programie '*'
i '&'
są zastąpione liczbami całkowitymi 42 i 38, ponieważ w przeciwnym razie cyfry 4 i 8 pojawiłyby się w kodzie źródłowym.
Definicja „wyjścia sekwencji w nieskończoność” jest otwarta do interpretacji. Na przykład poprawny byłby program, który wypuszcza glify, które stają się mniejsze, aż stają się „nieskończenie” małe.
Kudos, jeśli jesteś w stanie wygenerować sekwencję w jakiś sposób, który nie jest zasadniczo zakodowany na stałe dla każdej liczby.
- Wyprowadzenie go do wzoru. Mam wrażenie, że nie ma jednego, ale może jest lub można go sfałszować.
- Naprawianie pseudolosowego generatora w celu zwrócenia sekwencji.
To konkurs popularności, więc bądź kreatywny. Odpowiedź z największą liczbą głosów 26 marca jest zwycięzcą.
This isn't an interesting question, IMHO, since the solution is pretty trivial. Please post in the sandbox next time.
byłoby to o wiele lepsze niż This is a stupid question.
, ale to tylko moja osobista opinia.