Python 2.7
Чтобы ответить на вопрос, нужно знать вопрос - и вопрос:
Что вы получаете, когда умножаете шесть на девять? Спасибо TRiG за исправление
Итак, Deep Thought опирается на удобное использование базы 13 :
6 13 x 9 13 = 42 13
Мы импортируем наши константы:
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)))
Мы представляем Zaphod - случайную сортировку, которая в конце концов выдыхается, когда мы приближаемся к endOfTheUniverse
.
zaphod = lambda : not(randint(0,(endOfTheUniverse-(datetime.now() - start).seconds)**3))
И Марвин Параноидальный Android , чей позитивный настрой может остановить любую вечеринку:
marvin = lambda : endOfTheUniverse<(datetime.now() - start).seconds
И мы продолжаем запускать эти 4 символа в миксе, пока они не вычислят его :
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)
Полный 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)
Это должно закончиться где-то около 75 секунд, определенно заканчивая на 80 секунд. Иногда раньше Zaphods Infinite Невероятность Drive .
sleep(75);print("%d\n",41+1);