Otrzymujesz funkcje: h1 (f, * args) i h2 (f, * args)
Obie są metodami, które są już dla Ciebie zdefiniowane (tutaj gwiazdka wskazuje zmienną liczbę argumentów)
f jest funkcją, * args to lista parametrów, które należy przekazać tej funkcji
h1 zwraca wartość logiczną: Prawda, jeśli funkcja f kiedykolwiek się zatrzymuje po wywołaniu * args, a False, jeśli nie (zakładając, że uruchomiona maszyna ma nieskończony czas i pamięć oraz że interpreter / kompilator języka, w którym piszesz umie obsługiwać nieskończony czas i pamięć).
Jeśli f (* args) kiedykolwiek wykona wywołanie do h1 lub h2, h1 zgłasza wyjątek
h2 zachowuje się dokładnie tak, jak h1, z wyjątkiem tego, że jeśli f wywoła h1, wówczas h2 nie zgłosi wyjątku
W jak najmniejszej liczbie znaków napisz program, który nie pobiera danych wejściowych i powinien wypisać:
The Collatz Conjecture is {True/False}
Goldbach's Conjecture is {True/False}
The Twin Primes Conjecture is {True/False}
na podstawie ważności każdej z tych przypuszczeń.
Oto linki do Wikipedii wyjaśniające każdą z przypuszczeń:
http://en.wikipedia.org/wiki/Collatz_conjecture
http://en.wikipedia.org/wiki/Goldbach%27s_conjecture
http://en.wikipedia.org/wiki/Twin_prime
Możesz założyć, że dowolna duża biblioteka liczb całkowitych w dowolnym języku, który wybierzesz, z powodzeniem reprezentuje dowolne duże liczby całkowite. Innymi słowy, założymy, że każdy język / biblioteka, która jest zdolna do wyrażania, 3**(3**10)
jest również zdolna do wyrażania 3**(3**(3**10))
na wystarczająco mocnej maszynie.
Oczywiście, ponieważ nie można uruchomić programu, proszę wyjaśnić, jak działa on wraz z kodem