Python 2.7
Para responder la pregunta, uno debe saber la pregunta, y la pregunta es:
¿Qué obtienes cuando multiplicas seis por nueve? Gracias a TRiG por la corrección
Entonces Deep Thought se basa en el uso práctico de la base 13 :
6 13 x 9 13 = 42 13
Importamos nuestras constantes:
from random import randrange as scrabbleBag, randint
from datetime import datetime,timedelta
life,universe,everything,nothing=6,9,1,-3
endOfTheUniverse = 80
También definimos nuestras cosas de la tierra, como una bolsa de baldosas de Scrabble , Arthur (algo predecible, aunque un poco extraño, una especie de computadora), Trillian (nuestra heroína racional),
tile = lambda i: scrabbleBag(26)
arthur = lambda i: int(`i`,life+universe+everything+nothing)
trillian = lambda i: ''.join(map(str,divmod(i,life+universe+everything+nothing)))
Presentamos a Zaphod , un tipo aleatorio, que finalmente se queda sin fuerza cuando nos acercamos al endOfTheUniverse
.
zaphod = lambda : not(randint(0,(endOfTheUniverse-(datetime.now() - start).seconds)**3))
Y Marvin, el Android paranoico , cuya actitud positiva podría detener cualquier fiesta:
marvin = lambda : endOfTheUniverse<(datetime.now() - start).seconds
Y seguimos ejecutar estos 4 personajes a través de la mezcla hasta que se calculan que :
while answer is not life * universe * everything:
rack = sum(tile(i) for i in range(7))
answer = (zaphod or marvin) and arthur(rack)
print trillian(answer)
El completo deepthought.py
:
from random import randrange as scrabbleBag, randint
from datetime import datetime,timedelta
life,universe,everything,nothing=6,9,1,-3
endOfTheUniverse = 80
tile = lambda i: scrabbleBag(26)
arthur = lambda i: int(`i`,life+universe+everything+nothing)
trillian = lambda i: ''.join(map(str,divmod(i,life+universe+everything+nothing)))
start = datetime.now()
zaphod = lambda: not(randint(0,(endOfTheUniverse-(datetime.now() - start).seconds)**3))
marvin = lambda: endOfTheUniverse<(datetime.now() - start).seconds
answer = None
while answer is not life * universe * everything:
rack = sum(tile(i) for i in range(7))
answer = (zaphod() or marvin()) and arthur(rack)
print trillian(answer)
Esto debería terminar en algún lugar alrededor de la marca de 75 segundos, definitivamente terminando en 80 segundos. A veces antes de Zaphods Infinite Improbability Drive .
sleep(75);print("%d\n",41+1);