Twoim zadaniem jest stworzenie najdłuższego okresu iteracji , w którym długość każdego programu w sekwencji jest ograniczona przez 500 bajtów.
Oznacza to, że jeśli powtórzysz następujące kroki:
- Zacznij od pierwszego programu
- Uruchom bieżący program
- Wróć do kroku 2
W końcu wrócisz do swojego oryginalnego programu. Liczba programów w cyklu to Twój wynik, który próbujesz zmaksymalizować.
Żaden z programów nie może zgłaszać żadnych błędów. Każdy program musi być również uruchomiony w ten sam sposób (np. Nie ma różnych wersji, implementacji, opcji kompilatora, platform itp.) (EDYCJA: Tak, każdy stan zewnętrzny, taki jak generator pseudolosowych liczb, został uwzględniony w ostatnim instrukcja. Stan zewnętrzny musi być „resetowany” po każdym uruchomieniu. Jeśli używasz prawdziwych liczb losowych, przyjmuje się, że najgorszy przypadek.
Tym, co odróżnia to wyzwanie od najdłuższego okresu iteracji quine (innego niż 100 vs 500) jest to, że każdy program w cyklu musi mieć również 500 bajtów lub mniej. Oznacza to, że najdłuższy możliwy cykl to (256 ^ 501 - 1) / 255 lub mniej. To oczywiście duża liczba, ale nie tak duża pod względem ilości kodu potrzebnej do obliczenia. Wyzwanie polega więc na wykorzystaniu jak największej liczby (256 ^ 501 - 1) / 255 możliwości, a nie na zajęciu bobra.
Programy nie mają dostępu do własnego kodu źródłowego. Jednak pusty program jest dozwolony, jeśli chcesz (pod warunkiem przestrzegania innych zasad).
Ponieważ ręczne sprawdzanie programów byłoby trudne, możesz ustalić wynik przy użyciu metod teoretycznych. Do swojego programu musisz dołączyć wyjaśnienie wyniku i poprawności. Jeśli nie możesz ustalić wyniku, możesz zamiast tego użyć dolnej granicy liczby programów w cyklu jako wyniku defacto. Możesz to aktualizować, gdy znajdziesz lepsze dolne granice lub jeśli znajdziesz dokładny faktyczny wynik.
To jest wyzwanie kodowe , więc najwyższy wynik wygrywa!
EDYCJA: Zaleca się zapisanie wyniku w notacji naukowej, aby odpowiedzi były łatwiejsze do porównania. Zupełnie dobrze jest mieć również inne formy partytury, szczególnie jeśli są one wyraźniej powiązane z twoim programem. Zachęcamy również czytelników do edycji poprzednich odpowiedzi w celu zapewnienia zgodności z tym.