Introdução : Pensamento profundo calculado A solução para a vida do universo e tudo em um período de 7,5 milhões de anos, a solução foi 42
.
Escreva um programa em qualquer linguagem de programação que demore aproximadamente 75
alguns segundos para calcular, iniciando com o que você deseja e imprima o número 42
.
NB O número 42
deve ser calculado de alguma forma (números aleatórios, o que você preferir), não apenas codificado em seu script.
Como sugerido, você não pode usar sleep
funções equivalentes. Seja inventivo.
popularity-contest
Fez Vrasta
fonte
fonte
sleep(75);print("%d\n",41+1);
sleep
disponíveis, as respostas serão muito dependentes de hardware, imagino ... o que leva 75 anos na sua máquina provavelmente levará 750 anos na minha máquina: PRespostas:
Isso leva cerca de 75s em um raspberry pi com overclock para 1GHz
Funciona porque:
http://www.mathpages.com/home/kmath255.htm
fonte
Python 2.7
Para responder à pergunta, é preciso conhecê- la - e a pergunta é:
O Deep Thought se baseia no uso prático da base 13 :
Importamos nossas constantes:
Também definimos nossas coisas terrenas, sendo um saco de azulejos , Arthur (um tipo de computador previsível, embora um pouco estranho), Trillian (nossa heroína racional),
Apresentamos Zaphod - um tipo aleatório, que acaba perdendo força quando nos aproximamos do
endOfTheUniverse
.E Marvin, o Android paranóico , cuja atitude positiva poderia impedir qualquer partido:
E continuamos a executar esses 4 caracteres através da mistura até que calcular -lo :
O completo
deepthought.py
:Isso deve terminar em torno da marca de 75 segundos, definitivamente terminando em 80 segundos. Às vezes, antes de Zaphods Infinite Improbability Drive .
fonte
File "main.py", line 13, in zaphod = not(randint(i,(80-(datetime.now() - start).seconds)**3)) NameError: name 'i' is not defined
:(DOS Batch - a resposta para a vida, o universo e tudo
Obrigado a mynameiscoffey por sua simplificação!
Salvar como
answer.bat
:Em seguida, execute-o e aguarde 75 segundos:
fonte
@ ping 127.0.0.1 -n 76 >nul && @ echo %~z0
usando `` && em vez de confiar em um par de CRLFBash (OS X)
Provavelmente, isso pode ser portado para outros sistemas sem muitos problemas. Substitua
say
pelo que você estiver usando como um utilitário de linha de comando de conversão de texto em fala. A-f
opção recebe entrada de um arquivo nomeado.Com um pouco de sorte, pode até gerar o número correto :-)
Isso leva quase exatamente 1 minuto e 15 segundos para ser executado no meu sistema (OS X 10.5).
fonte
MATLAB
Essa é difícil. Como realmente não sabemos a pergunta, o único método viável de obter a resposta é por meio de um método de otimização global. Nesse caso, optei pelo método de recozimento simulado , já que este me deu respostas legais para perguntas difíceis antes.
Tudo o que esse código está fazendo é procurar o valor ideal de uma função cuja entrada é a própria vida. E o incrível é que funciona. Acabei de validar o pensamento profundo?
Resultado:
fonte
C - 1089 bytes
Comprimido:
fonte
Rubi
Saída na minha máquina:
Isso abusa do RNG. ;)
fonte
Took 25 seconds; seed was 3771996
no meu laptop de desempenho médio. Então ... eu menti. : PC
fonte
clock()
excede algum valor parece violar ano sleep()
regra, uma vez que é basicamente um sono da CPUJavaScript - Encontrando "a resposta para a vida e tudo", resolvendo uma equação
Vamos dar uma olhada nesta equação:
Há muitas soluções, mas se você quiser
r
ser tão grande quanto possível ep
,q
er
para ser naturais, há apenas duas soluções:1/3 + 1/7 + 1/42 = 1/2
e1/7 + 1/3 + 1/42 = 1/2
com
p <= q <= r
, existe apenas uma solução er
sempre igual a42
Qual é a maneira mais (in) eficiente de resolver uma equação?
Tentando todos os valores possíveis!
Aqui está o código:
Quanto tempo vai demorar ? Para ser sincero, não sei porque não fui capaz de executá-lo até o fim.
No entanto, você pode tentar com
n
valores pequenos (tem que ser maior ou igual a42
) e obterá o resultado correto. Para valores pequenos, comon = 2000
, leva quase um minuto no meu laptop. Então eu acho que com grandes valores dados no exemplo, levará dias, semanas ou até anos !!!Localizando a solução em aproximadamente 75 segundos:
Um requisito da pergunta inicial é que deve demorar aproximadamente 75 segundos para ser executado. Uma maneira de conseguir isso é ajustar automaticamente a complexidade do algoritmo ao longo do tempo:
Como funciona (para os curiosos): verifica quantas iterações foram feitas em um segundo, multiplique por 74 e ajuste
n
para corresponder a esse valor. por exemplo: se levar um segundo para fazer 500 iterações, levará 10 segundos para fazer 5000 iterações. Observe que ele se multiplica por 74 e não 75, porque já gastamos um segundo para "benchmarking".fonte e créditos para matemática
fonte
C # - 151 caracteres
fonte
C ++
Calcula as partições de 10 através de um método bastante ineficiente. Demorou 130 anos para rodar em uma versão Build no meu sistema, mas alguém com um PC suficientemente rápido deve ser capaz de executá-lo em ~ 75s ...
fonte
Javascript
Vai demorar um pouco para alertar alguma coisa ... mas vale a pena, pois mostrará a resposta para a vida do universo e tudo!
Demo
fonte
Pitão
Às vezes, uma resposta é clara apenas no final de um cálculo, mas seus aspectos são visíveis antes do término.
E pouco conhecida é a sequência de entradas que o Deep Thought foi semeado:
271, 329, 322, 488, 79, 15, 60, 1, 9
Conseqüentemente:
Et voila - a resposta é fornecida após 75 segundos.
fonte
Assembly (vinculado pelo gcc)
Em um computador suficientemente lento (velocidade da CPU ~ 2Hz), isso deve levar cerca de 75 segundos para ser executado:
fonte
Utilitários Bash e Linux:
O Pensamento Profundo está ouvindo atentamente durante todo o cálculo.
fonte
Java (227 caracteres)
Quem disse que manipulações bit a bit não são divertidas? Ou que java não pode ser confuso?
Fizemos um loop por 75 segundos e depois aumentamos a resposta.
Ungolfed
fonte
PureBasic
De acordo com o fato de que hardware diferente produzirá resultados diferentes, não há resposta fixa para isso. Estou usando uma função de tempo decorrido para saber quando parar de calcular.
Basicamente, ele calculará os dois maiores números primos quando subtraídos for 42
Quanto mais rápida a sua máquina, maiores serão os números primos :-)
fonte
MeatSpace
Afaste-se de uma distância que leva aproximadamente 70/4 segundos para que você
servant^H^H^H^Hcomputer
possa caminhar (pode ser humano, cachorro ou qualquer coisa que possa pegar ladrilhos numéricos). Coloque um número grande4
e um número grande2
lá. Coloque o seucomputer
no ponto de saída. Inicie o cronômetro, faça com que ele caminhe até o depósito de numeração e traga de volta um número de cada vez.Aloquei 5 segundos para buscá-los e colocá-los no chão.
fonte
Outro exemplo de C #
fonte
Rubi
Usando a diferença de tempo de rubi, verifiquei o tempo de execução que é de aproximadamente
75.014267762
fonte
PHP
É o mais perto que estou chegando hoje à noite. A execução no tecbrat.com , um antigo IBM NetVista P4 executando o Ubuntu 10.04, mostrou 69 segundos e 78 segundos nas minhas últimas 2 execuções.
fonte
JavaScript (ofuscação bit a bit) (não é ruim para 136 bytes!)
Pode parecer um pouco caro, mas as funções foram meticulosamente pensadas, tendo em mente que o valor de 75000ms seria calculado antes das funções usadas para calcular 42. É bastante poético quando você olha para ele realmente: )
setTimeout("alert($=((_=_=>(_<<-~-~[])|-~[])(_(-~[])))<<-~[])",($=$=>$<<-~-~-~[]|-~[])((_=_=>_<<-~[]|-~[])(_(_(_($($($(-~[]))))))))^-~[])
fonte
Unexpected token >
Eu não sou muito bom com esse tipo de coisa. Sou desenvolvedor de aplicativos, mas nunca recebi nenhum treinamento em C e geralmente faço aplicativos que pegam coisas dos servidores e tornam as informações muito bonitas ...
Não tenho idéia se isso vai funcionar e há um pouco de código extra lá, porque está em um aplicativo para iPhone e exibo um hud de progresso e uma exibição de alerta quando 42 for alcançado:
fonte