Tiene las funciones: h1 (f, * args) y h2 (f, * args)
Ambos son métodos que ya están definidos para usted (aquí el asterisco indica un número variable de argumentos)
f es una función, * args es una lista de parámetros que se pasarán a esa función
h1 devuelve un valor booleano: Verdadero si la función f se detiene cuando se invoca * args y Falso si no lo hace (suponiendo que la máquina en ejecución tenga tiempo y memoria infinitos y que el intérprete / compilador para el idioma en el que está escribiendo sabe cómo manejar el tiempo y la memoria infinitos).
Si f (* args) realizara una llamada a h1 o h2, h1 arroja una excepción
h2 se comporta exactamente como h1, excepto que si f hace llamadas a h1, entonces h2 no arrojará una excepción
En la menor cantidad de caracteres posible, escriba un programa que no tenga entrada y que debería mostrar:
The Collatz Conjecture is {True/False}
Goldbach's Conjecture is {True/False}
The Twin Primes Conjecture is {True/False}
basado en la validez de cada una de esas conjeturas.
Aquí hay enlaces de Wikipedia que explican cada una de las conjeturas:
http://en.wikipedia.org/wiki/Collatz_conjecture
http://en.wikipedia.org/wiki/Goldbach%27s_conjecture
http://en.wikipedia.org/wiki/Twin_prime
Puede suponer que cualquier biblioteca de enteros grandes en cualquier idioma que elija utilizar representará con éxito enteros grandes arbitrarios. En otras palabras, asumiremos que cualquier lenguaje / biblioteca que sea capaz de expresarse 3**(3**10)
también es capaz de expresarse 3**(3**(3**10))
en una máquina lo suficientemente robusta.
Obviamente, dado que es imposible ejecutar su programa, proporcione una explicación de cómo funciona junto con el código