Você recebe as funções: h1 (f, * args) e h2 (f, * args)
Ambos são métodos já definidos para você (aqui o asterisco indica um número variável de argumentos)
f é uma função, * args é uma lista de parâmetros a serem passados para essa função
h1 retorna um valor booleano: True se a função f for interrompida quando chamada * args e False, se não existir (supondo que a máquina esteja com tempo e memória infinitos e que o intérprete / compilador do idioma em que está escrevendo) sabe como lidar com tempo e memória infinitos).
Se f (* args) telefonar para h1 ou h2, h1 lançará uma exceção
h2 se comporta exatamente como h1, exceto que se f fizer chamadas para h1, então h2 não emitirá uma exceção
Com o menor número de caracteres possível, escreva um programa que não aceita entrada e deve gerar:
The Collatz Conjecture is {True/False}
Goldbach's Conjecture is {True/False}
The Twin Primes Conjecture is {True/False}
com base na validade de cada uma dessas conjecturas.
Aqui estão os links da Wikipedia explicando cada uma das conjecturas:
http://en.wikipedia.org/wiki/Collatz_conjecture
http://en.wikipedia.org/wiki/Goldbach%27s_conjecture
http://en.wikipedia.org/wiki/Twin_prime
Você pode assumir que qualquer grande biblioteca de números inteiros, independentemente do idioma que escolher, representará com êxito números inteiros grandes arbitrários. Em outras palavras, assumiremos que qualquer linguagem / biblioteca capaz de expressar 3**(3**10)
também é capaz de expressar 3**(3**(3**10))
em uma máquina suficientemente robusta.
Obviamente, como é impossível executar seu programa, forneça uma explicação de como ele funciona junto com o código