Introducción : Pensamiento profundo calculado La respuesta a la vida del universo y todo en un período de 7,5 millones de años, la solución fue 42
.
Escriba un programa en cualquier lenguaje de programación que tome aproximadamente 75
segundos para calcular, comenzando desde lo que desee, y genere el número 42
.
NB El número 42
debe calcularse de alguna manera (números aleatorios, lo que prefiera), no solo codificado en su secuencia de comandos.
Como se sugiere, no puede usar sleep
funciones equivalentes. Se inventivo.
popularity-contest
Fez Vrasta
fuente
fuente
sleep(75);print("%d\n",41+1);
sleep
disponibilidad, las respuestas dependerán mucho del hardware, imagino ... lo que demore 75 segundos en su máquina probablemente tomará 750 segundos en mi máquina: PRespuestas:
Esto toma alrededor de 75 segundos en una frambuesa pi overclockeada a 1 GHz
Funciona porque:
http://www.mathpages.com/home/kmath255.htm
fuente
Python 2.7
Para responder la pregunta, uno debe saber la pregunta, y la pregunta es:
Entonces Deep Thought se basa en el uso práctico de la base 13 :
Importamos nuestras constantes:
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),
Presentamos a Zaphod , un tipo aleatorio, que finalmente se queda sin fuerza cuando nos acercamos al
endOfTheUniverse
.Y Marvin, el Android paranoico , cuya actitud positiva podría detener cualquier fiesta:
Y seguimos ejecutar estos 4 personajes a través de la mezcla hasta que se calculan que :
El completo
deepthought.py
: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 .
fuente
File "main.py", line 13, in zaphod = not(randint(i,(80-(datetime.now() - start).seconds)**3)) NameError: name 'i' is not defined
:(DOS Batch: la respuesta a la vida, el universo y todo
¡Gracias a mynameiscoffey por su simplificación!
Guardar como
answer.bat
:Luego ejecútelo y espere 75 segundos:
fuente
@ ping 127.0.0.1 -n 76 >nul && @ echo %~z0
, usando `` && en lugar de depender de un par de CRLFBash (OS X)
Esto probablemente podría ser portado a otros sistemas sin demasiados problemas. Reemplácelo
say
con lo que esté utilizando como una utilidad de línea de comandos de texto a voz. La-f
opción toma la entrada de un archivo con nombre.Con un poco de suerte, incluso podría generar el número correcto :-)
Esto tarda casi exactamente 1 minuto y 15 segundos en ejecutarse en mi sistema (OS X 10.5).
fuente
MATLAB
Esta es una pregunta difícil. Como realmente no conocemos la pregunta, el único método viable para obtener la respuesta es mediante un método de optimización global. En este caso, opté por el método de recocido simulado , ya que este me ha dado buenas respuestas a preguntas difíciles antes.
Todo lo que hace este código es buscar el valor óptimo de una función cuya entrada es la vida misma. Y lo sorprendente es que funciona. Entonces, ¿acabo de validar el pensamiento profundo?
Salida:
fuente
C - 1089 bytes
Comprimido:
fuente
Rubí
Salida en mi máquina:
Esto abusa del RNG. ;)
fuente
Took 25 seconds; seed was 3771996
en mi computadora portátil de rendimiento promedio. Entonces, uhh ... mentí. : Pdo
fuente
clock()
excede algún valor parece violar lano sleep()
regla, ya que es básicamente un intensivo de la CPU del sueñoJavaScript: encontrar "la respuesta a la vida y todo" resolviendo una ecuación
Echemos un vistazo a esta ecuación:
Hay muchas soluciones, pero si quieres
r
ser tan grande como sea posible yp
,q
yr
ser naturales sólo hay dos soluciones:1/3 + 1/7 + 1/42 = 1/2
y1/7 + 1/3 + 1/42 = 1/2
con
p <= q <= r
, solo hay una solución yr
siempre igual a42
¿Cuál es la forma más (in) eficiente de resolver una ecuación?
Al probar todos los valores posibles!
Aquí está el código:
Cuanto tiempo llevara ? Para ser honesto, no lo sé porque no he podido ejecutarlo hasta el final.
Sin embargo, puede intentar con
n
valores pequeños (tiene que ser mayor o igual a42
) y obtendrá el resultado correcto. Para valores pequeños comon = 2000
, toma casi un minuto en mi computadora portátil. ¡Así que supongo que con los grandes valores dados en el ejemplo, tomará días, semanas o incluso años!Encontrar la solución en aproximadamente 75 segundos:
Un requisito de la pregunta inicial es que debería tomar aproximadamente 75 segundos para ejecutarse. Una forma de lograr esto es ajustar automáticamente la complejidad del algoritmo a lo largo del tiempo:
Cómo funciona (para los curiosos): comprueba cuántas iteraciones se han realizado en un segundo, luego multiplica esto por 74 y se ajusta
n
para que coincida con ese valor. por ejemplo: si toma un segundo hacer 500 iteraciones, tomará 10 segundos hacer 5000 iteraciones. Tenga en cuenta que se multiplica por 74, no 75 porque ya pasamos un segundo para "benchmarking".fuente y créditos para matemáticas
fuente
C # - 151 caracteres
fuente
C ++
Calcula las particiones de 10 a través de un método bastante ineficiente. Tomó 130 segundos para ejecutarse en una versión de lanzamiento en mi sistema, pero alguien con una PC suficientemente rápida debería poder ejecutarlo en ~ 75 segundos ...
fuente
Javascript
Esto llevará un tiempo alertar algo ... pero vale la pena, ya que te mostrará la respuesta a la vida del universo y todo.
Manifestación
fuente
Pitón
A veces, una respuesta solo es clara al final de un cálculo, pero algunos aspectos son visibles antes de la terminación.
Y poco conocido es la secuencia de entradas con Deep Thought sembrada con:
271, 329, 322, 488, 79, 15, 60, 1, 9
Por lo tanto:
Et voila: la respuesta se proporciona después de 75 segundos.
fuente
Ensamblaje (vinculado por gcc)
En una computadora suficientemente lenta (velocidad de CPU ~ 2Hz), esto debería tomar alrededor de 75 segundos para ejecutarse:
fuente
Bash y utilidades de Linux:
Deep Thought está escuchando atentamente todo el proceso.
fuente
Java (227 caracteres)
¿Quién dice que las manipulaciones bit a bit no son divertidas? ¿O que Java no puede ser confuso?
Realizamos un bucle durante 75 segundos y luego aumentamos la respuesta.
Sin golf
fuente
PureBasic
De acuerdo con el hecho de que hardware diferente producirá resultados diferentes, no hay una respuesta fija para esto. Estoy usando una función de tiempo transcurrido, así que sé cuándo dejar de calcular.
Básicamente, calculará los dos números primos más grandes cuando se reste es 42
Más rápido su máquina, más grandes serán los primos :-)
fuente
MeatSpace
Recorre una distancia que toma aproximadamente 70/4 segundos para que tu
servant^H^H^H^Hcomputer
(podría ser humano, perro o cualquier cosa que pueda recoger fichas numéricas) para caminar. Coloque un número grande4
y un número grande2
allí. Coloque sucomputer
al punto de salida. Inicie el temporizador, haga que camine hasta el depósito de números y recupere un número a la vez.Le asigné 5 segundos para recogerlos y soltarlos.
fuente
Otro ejemplo de C #
fuente
Rubí
Usando la diferencia de tiempo de rubí, he verificado el tiempo de ejecución, que es aproximadamente
75.014267762
fuente
PHP
Esto es lo más cerca que estoy esta noche. Ejecutándolo en tecbrat.com , un viejo IBM NetVista P4 con Ubuntu 10.04, mostró 69 segundos y 78 segundos en mis últimas 2 ejecuciones.
fuente
JavaScript (ofuscación a nivel de bit) (¡no está mal para 136 bytes!)
Puede verse como un poco engañoso, pero las funciones se pensaron meticulosamente, teniendo en cuenta que el valor de 75000 ms se calcularía antes de las funciones utilizadas para calcular 42. Es bastante poético cuando lo miras, realmente: )
setTimeout("alert($=((_=_=>(_<<-~-~[])|-~[])(_(-~[])))<<-~[])",($=$=>$<<-~-~-~[]|-~[])((_=_=>_<<-~[]|-~[])(_(_(_($($($(-~[]))))))))^-~[])
fuente
Unexpected token >
No soy demasiado bueno con este tipo de cosas. Soy desarrollador de aplicaciones, pero nunca he recibido capacitación en C y sobre todo creo aplicaciones que toman cosas de los servidores y hacen que la información se vea bonita ...
No tengo idea de si esto funcionará y hay un poco de código adicional allí porque está en una aplicación de iPhone y muestro un hud de progreso y una vista de alerta cuando se ha alcanzado el 42:
fuente