Вам надаються функції: h1 (f, * args) і h2 (f, * args)
Обидва - це вже визначені для вас методи (тут зірочка вказує змінну кількість аргументів)
f - функція, * args - це список параметрів, які потрібно передавати цій функції
h1 повертає булеве значення: True, якщо функція f коли-небудь зупиняється, коли викликається * args, і False, якщо вона не працює (якщо припустимо, що машина, на якій вона працює, має нескінченний час і пам'ять, і що інтерпретатор / компілятор для мови, на якій ви пишете вміє поводитися з нескінченним часом і пам’яттю).
Якщо f (* args) коли-небудь робив дзвінок на h1 або h2, h1 кидає виняток
h2 поводиться точно так само, як h1, за винятком того, що якщо f здійснює дзвінки h1, тоді h2 не кине винятку
Якнайменше символів напишіть програму, яка не вводить даних і повинна виводити:
The Collatz Conjecture is {True/False}
Goldbach's Conjecture is {True/False}
The Twin Primes Conjecture is {True/False}
виходячи з обґрунтованості кожної з цих домислів.
Ось посилання на вікіпедію, що пояснює кожну з гіпотез:
http://en.wikipedia.org/wiki/Collatz_conjecture
http://en.wikipedia.org/wiki/Goldbach%27s_conjecture
http://en.wikipedia.org/wiki/Twin_prime
Ви можете припустити, що будь-яка велика ціла бібліотека будь-якою мовою ви не хочете використовувати, буде успішно представляти довільні великі цілі числа. Іншими словами, ми припустимо, що будь-яка мова / бібліотека, яка здатна виражати 3**(3**10)
, також здатна виражати 3**(3**(3**10))
на достатньо м'якій машині.
Очевидно, оскільки неможливо запустити програму, надайте пояснення, як вона працює разом із кодом