Введение : Глубокая мысль рассчитана Ответом на жизнь Вселенной и всего на протяжении 7,5 миллионов лет было решение проблемы 42
.
Напишите программу на любом языке программирования, 75
для расчета которой потребуется около секунд, начиная с того, что вы хотите, и выведите число 42
.
NB. Число 42
должно быть рассчитано каким-либо образом (случайные числа, что вы предпочитаете), а не просто жестко закодировано в вашем скрипте.
Как предполагается, вы не можете использовать sleep
или эквивалентные функции. Будьте изобретательны.
popularity-contest
Фес Враста
источник
источник
sleep(75);print("%d\n",41+1);
sleep
доступа ответы будут зависеть от аппаратного обеспечения, я думаю ... то, что занимает 75 с на вашей машине, вероятно, займет 750 с на моей машине: PОтветы:
Это займет около 75 с на Raspberry Pi, разогнанной до 1 ГГц
Это работает, потому что:
http://www.mathpages.com/home/kmath255.htm
источник
Python 2.7
Чтобы ответить на вопрос, нужно знать вопрос - и вопрос:
Итак, Deep Thought опирается на удобное использование базы 13 :
Мы импортируем наши константы:
Мы также определяем наши земные вещи как мешок с черепицами , Артур (предсказуемый, хотя и немного странный, своего рода компьютер), Триллиан (наша рациональная героиня),
Мы представляем Zaphod - случайную сортировку, которая в конце концов выдыхается, когда мы приближаемся к
endOfTheUniverse
.И Марвин Параноидальный Android , чей позитивный настрой может остановить любую вечеринку:
И мы продолжаем запускать эти 4 символа в миксе, пока они не вычислят его :
Полный
deepthought.py
:Это должно закончиться где-то около 75 секунд, определенно заканчивая на 80 секунд. Иногда раньше Zaphods Infinite Невероятность Drive .
источник
File "main.py", line 13, in zaphod = not(randint(i,(80-(datetime.now() - start).seconds)**3)) NameError: name 'i' is not defined
:(DOS Batch - ответ на жизнь, вселенную и все
Спасибо mynameiscoffey за его упрощение!
Сохранить как
answer.bat
:Затем запустите его и подождите 75 секунд:
источник
@ ping 127.0.0.1 -n 76 >nul && @ echo %~z0
, используя `&&` вместо того, чтобы полагаться на пару CRLFБаш (OS X)
Это, вероятно, может быть перенесено на другие системы без особых проблем. Замените
say
на то, что вы используете в качестве утилиты преобразования текста в речь.-f
Параметр принимает входные данные из указанного файла.Если повезет, он может даже вывести правильное число :-)
Это занимает почти ровно 1 минуту 15 секунд для запуска в моей системе (OS X 10.5).
источник
MATLAB
Это сложный вопрос. Поскольку мы на самом деле не знаем вопроса, единственный реальный способ получить ответ - это метод глобальной оптимизации. В этом случае я выбрал метод имитации отжига , так как этот дал мне хорошие ответы на сложные вопросы раньше.
Весь этот код ищет оптимальное значение функции, входом которой является сама жизнь. И удивительно то, что это работает. Итак, я только что проверил Deep Thought?
Выход:
источник
C - 1089 байт
Сжатый:
источник
Рубин
Вывод на мою машину:
Это злоупотребляет ГСЧ. ;)
источник
Took 25 seconds; seed was 3771996
на моем ноутбуке средней производительности. Так что ... я солгал. : PС
источник
clock()
превысит какое-то значение, это нарушаетno sleep()
правило, поскольку это в основном сон с интенсивным использованием процессораJavaScript - Нахождение «ответа на жизнь и все» путем решения уравнения
Давайте посмотрим на это уравнение:
Существует много решений, но если вы хотите ,
r
чтобы быть как можно больше, иp
,q
иr
быть натуралов есть только два решения:1/3 + 1/7 + 1/42 = 1/2
а также1/7 + 1/3 + 1/42 = 1/2
с
p <= q <= r
, есть только одно решение иr
всегда равно42
Какой самый (не) эффективный способ решить уравнение?
Перепробовав все возможные значения!
Вот код:
Сколько времени это займет ? Если честно, я не знаю, потому что я не смог запустить его до конца.
Тем не менее, вы можете попробовать с небольшими
n
значениями (оно должно быть больше или равно42
), и вы получите правильный результат. Для небольших значений, таких какn = 2000
, это занимает почти одну минуту на моем ноутбуке. Так что я думаю, с большими значениями, приведенными в примере, это займет дни, недели или даже годы !!!Нахождение решения примерно за 75 секунд:
Одно требование из первоначального вопроса состоит в том, что выполнение должно занять приблизительно 75 секунд. Одним из способов достижения этого является автоматическая настройка сложности алгоритма с течением времени:
Как это работает (для любопытных): он проверяет, сколько итераций было выполнено за одну секунду, затем умножает это на 74 и корректирует,
n
чтобы соответствовать этому значению. Например: если для выполнения 500 итераций потребуется одна секунда, для выполнения 5000 итераций потребуется 10 секунд. Обратите внимание, что он умножается на 74, а не на 75, потому что мы уже потратили одну секунду на «бенчмаркинг».источник и кредиты по математике
источник
C # - 151 символов
источник
C ++
Вычисляются перегородки из 10 с помощью довольно неэффективный метод. Мне потребовалось 130 секунд, чтобы запустить сборку Release на моей системе, но кто-то с достаточно быстрым ПК должен был запустить его за ~ 75 секунд ...
источник
Javascript
Чтобы что-то предупредить, потребуется некоторое время ... но оно того стоит, так как покажет вам Ответ жизни Вселенной и всего остального!
демонстрация
источник
питон
Иногда ответ ясен только в самом конце вычисления, но его аспекты видны до завершения.
И малоизвестна последовательность входов, в которую была добавлена глубокая мысль:
271, 329, 322, 488, 79, 15, 60, 1, 9
Следовательно:
Et voila - ответ предоставляется через 75 секунд.
источник
Сборка (связана с GCC)
На достаточно медленном компьютере (частота процессора ~ 2 Гц) это должно занять около 75 секунд:
источник
Утилиты Bash и Linux:
Deep Thought внимательно слушает весь расчёт.
источник
Java (227 символов)
Кто сказал, что побитовые манипуляции - это не весело? Или это Java не может сбить с толку?
Мы зацикливаемся на 75 секунд, а затем получаем ответ.
Ungolfed
источник
PureBasic
Принимая во внимание тот факт, что разные аппаратные средства будут давать разные результаты, нет однозначного ответа на этот вопрос. Я использую функцию истекшего времени, поэтому я знаю, когда прекратить вычисления.
По сути, он вычислит два самых больших простых числа, когда вычтено 42
Чем быстрее ваша машина, тем больше будет простых чисел :-)
источник
MeatSpace
Пройдите дистанцию, которая занимает приблизительно 70/4 секунды для вашего
servant^H^H^H^Hcomputer
(это может быть человек, собака или что-нибудь, что может поднять цифры), чтобы идти. Поместите большую цифру4
и большую цифру2
там. Поместите вашcomputer
в точку выхода. Запустите таймер, дайте ему пройти к цифровому депо и принесите по одному номеру за раз.Я выделил 5 секунд, чтобы поднять их и опустить.
источник
Еще один пример C #
источник
Рубин
Используя разницу во времени в рубине, я проверил время выполнения
75.014267762
источник
PHP
Это так близко, как я получаю сегодня вечером. Запуск его на tecbrat.com , старом IBM NetVista P4 с Ubuntu 10.04, показывал 69 секунд и 78 секунд в моих последних 2 запусках.
источник
JavaScript (побитовое запутывание) (неплохо для 136 байт!)
Это может показаться немного обманчивым, но функции были тщательно продуманы, учитывая, что значение 75000 мс будет вычислено до функций, используемых для вычисления 42. Это довольно поэтично, когда вы смотрите на это, на самом деле: )
setTimeout("alert($=((_=_=>(_<<-~-~[])|-~[])(_(-~[])))<<-~[])",($=$=>$<<-~-~-~[]|-~[])((_=_=>_<<-~[]|-~[])(_(_(_($($($(-~[]))))))))^-~[])
источник
Unexpected token >
Я не слишком хорош с такими вещами. Я разработчик приложений, но у меня никогда не было никакого обучения на C, и я в основном делаю приложения, которые собирают информацию с серверов и делают информацию привлекательной ...
Я понятия не имею, сработает ли это, и там есть немного дополнительного кода, потому что он находится в приложении для iphone, и я показываю индикацию прогресса и отображение предупреждений, когда достигнуто 42:
источник