Jawaban atas kehidupan, alam semesta, dan segalanya [tertutup]


43

Pendahuluan : Pemikiran Jauh dihitung . Jawaban untuk menghidupkan alam semesta dan segala sesuatu dalam periode 7,5 juta tahun, solusinya adalah 42.

Tulis sebuah program dalam bahasa pemrograman apa pun yang membutuhkan sekitar 75detik untuk menghitung, mulai dari apa pun yang Anda inginkan, dan keluarkan nomornya 42.

NB Angka 42harus dihitung entah bagaimana (angka acak, apa pun yang Anda inginkan), bukan hanya kode keras dalam skrip Anda.

Seperti yang disarankan, Anda tidak dapat menggunakan sleepatau fungsi yang setara. Jadilah inventif.


6
Ini mungkin lebih baik berfungsi sebagai kontes popularitas untuk melihat cara apa yang orang bisa kreatifkan dengan jawaban daripada variasisleep(75);print("%d\n",41+1);
Josh

30
Untuk menghitung membutuhkan sekitar 75 detik? Tetapi chip komputer sangat bervariasi ... Bagaimana ini bisa terjadi - mungkin butuh 75 detik pada mesin saya, tetapi komputer berikutnya mungkin rakasa dalam 7,5 detik ...
Fozzedout

7
Tanpa sleeptersedia jawabannya akan sangat tergantung pada perangkat keras. Saya bayangkan ... apa yang terjadi pada komputer Anda mungkin membutuhkan waktu komputer pada komputer saya: P
Josh

3
timeapi.org/utc/now . Ini sepertinya alternatif terbaik untuk menggunakan perpustakaan seperti bahasa Anda. Yang diperlukan hanyalah beberapa permintaan http.
Cruncher

3
Saya tidak sengaja membuat milik saya membutuhkan waktu 10 menit! : O
Gagang Pintu

Jawaban:


53

Ini memakan waktu sekitar 75-an pada pi raspberry yang di-overclock ke 1GHz

#!/usr/bin/env python
from itertools import product, count

for n in count(1):
    i = 0
    for a, b, c, d in product(range(n), repeat=4):
        if a > b > c > d > 0 == (a*b-c*d)%n == (a*c-b*d)%n == (a*d-b*c)%n:
            i += 1
    if i == n:
        break
print i

Ini bekerja karena:

42 adalah satu-satunya nilai yang diketahui yaitu jumlah himpunan empat bilangan bulat positif yang berbeda a, b, c, d, masing-masing kurang dari nilai itu sendiri, sehingga ab-cd, ac-bd, dan ad-bc masing-masing adalah kelipatan dari nilai. Apakah ada nilai-nilai lain tetap menjadi pertanyaan terbuka

http://www.mathpages.com/home/kmath255.htm


12
Jadi Anda akan menemukan nomor baru yang memenuhi persamaan ini atau Anda akan mencetak 42 :)
Assaf G.

1
@FezVrasta, karena baris terakhir hilang. lakukan!
gnibbler

2
Wow! Rebus matematika sempurna dan hal overclocking ... ha ha ha +1!
Tomas

1
itu lucu bahwa jawaban ini memiliki skor topi keras 42 (tidak upvoting)
pwned

1
Saya benar-benar ingin memperbaiki ini karena raspberry pi yang overlocked, tapi saya tidak bisa memberikan skor saat ini. Saya punya firasat buruk kita akan memiliki dasi
agweber

43

Python 2.7

Untuk menjawab pertanyaan, orang harus tahu pertanyaan - dan pertanyaannya adalah:

Apa yang Anda dapatkan ketika Anda mengalikan enam dengan sembilan? Terima kasih kepada TRiG untuk koreksi ini

Jadi Deep Thought mengandalkan penggunaan praktis dari basis 13 :

6 13 x 9 13 = 42 13

Kami mengimpor konstanta kami:

from random import randrange as scrabbleBag, randint
from datetime import datetime,timedelta
life,universe,everything,nothing=6,9,1,-3
endOfTheUniverse = 80

Kita juga mendefinisikan benda-benda bumi kita, menjadi sekeranjang ubin yang dapat dihancurkan , Arthur (yang dapat diprediksi walaupun agak aneh, komputer macam-macam), Trillian (pahlawan rasional kita),

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)))

Kami memperkenalkan Zaphod - jenis acak, yang akhirnya kehabisan tenaga saat kami dekat endOfTheUniverse.

zaphod = lambda : not(randint(0,(endOfTheUniverse-(datetime.now() - start).seconds)**3))

Dan Marvin the Paranoid Android , yang sikap positifnya dapat menghentikan pihak mana pun:

marvin = lambda : endOfTheUniverse<(datetime.now() - start).seconds

Dan kami terus berjalan 4 karakter tersebut melalui campuran sampai mereka menghitung itu :

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)

Lengkap 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)

Ini harus selesai di suatu tempat di sekitar tanda 75 detik, pasti selesai dengan 80 detik. Terkadang lebih awal ke Zaphods Infinite Improbability Drive .


1
jawabannya bagus tetapi jika saya menjalankannya pada 2.7.2 ia melempar kesalahan File "main.py", line 13, in zaphod = not(randint(i,(80-(datetime.now() - start).seconds)**3)) NameError: name 'i' is not defined:(
Fez Vrasta

1
@FezVrasta Maaf, saya tidak sengaja menambahkan beberapa kode yang salah. Memperbaikinya sekarang, harus bekerja.

4
luar biasa, ini bekerja :) sekarang kita membutuhkan komputer yang lebih besar untuk menghitung pertanyaan!
Fez Vrasta

8
"Aku mungkin orang yang menyesal, tapi aku tidak menulis lelucon di base-13." - DNA
MikeTheLiar

3
Ini sekarang duduk di 42 suara. Apakah saya ingin lebih banyak suara, atau saya ingin skor sekeren mungkin untuk pertanyaan ini?

13

DOS Batch - jawaban untuk kehidupan, Semesta dan segalanya

Terima kasih kepada mynameiscoffey untuk penyederhanaannya!

Simpan sebagai answer.bat:

@ ping 127.0.0.1 -n 76 >nul && @ echo %~z0

Kemudian jalankan, dan tunggu 75 detik:

> answer
42

Sepertinya Pikiran Jauh Anda memiliki ide yang berbeda, mengembalikan saya 40 : P
Fez Vrasta

Saya sudah menggunakan Notepad ++, Saya punya Windows 8 x64
Fez Vrasta

Tidak beruntung bahkan dengan NotePad, versi dengan tanda seru malah berfungsi
Fez Vrasta

Keren, bisakah Anda menebak cara kerjanya?

2
mengapa tidak hanya menjadikannya satu baris untuk menghindari masalah CRLF yang berantakan @ ping 127.0.0.1 -n 76 >nul && @ echo %~z0, menggunakan `&&` alih-alih mengandalkan sepasang CRLF
mynameiscoffey

10

Bash (OS X)

Ini mungkin bisa porting ke sistem lain tanpa terlalu banyak kesulitan. Ganti saydengan apa pun yang Anda gunakan sebagai utilitas baris perintah text-to-speech. The -fpilihan mengambil input dari sebuah file bernama.

Dengan sedikit keberuntungan, bahkan mungkin menampilkan nomor yang benar :-)

Ini membutuhkan waktu hampir 1 menit 15 detik untuk berjalan di sistem saya (OS X 10.5).

#!/bin/bash
grep -E '^life|universe|and.everything|[ultimate]question$' /usr/share/dict/words | sed 's/$/,/' | nl > "$TMPDIR/deepthought"
say -v Alex -f "$TMPDIR/deepthought"
nw=`cat $TMPDIR/deepthought | wc -l`
say -v Alex "The answer, to the ultimate question, is: $nw"
echo $nw
rm "$TMPDIR/deepthought"

10

MATLAB

Ini yang sulit. Karena kita tidak benar-benar tahu pertanyaannya, satu-satunya metode untuk mendapatkan jawaban adalah dengan menggunakan metode optimisasi global. Dalam hal ini saya memilih metode anil yang disimulasikan , karena yang ini telah memberi saya jawaban yang bagus untuk pertanyaan sulit sebelumnya.

Semua kode ini lakukan adalah mencari nilai optimal dari suatu fungsi yang inputnya adalah kehidupan itu sendiri. Dan yang menakjubkan adalah ia bekerja. Jadi, apakah saya baru saja memvalidasi Pemikiran Dalam?

tic;

the_answer=round(simulannealbnd(@(life)abs(3.7376696-log(life)),140489, ...
           -inf,inf,saoptimset('MaxFunEvals',10^16)))
toc;

Keluaran:

the_answer =

    42

Elapsed time is 74.892428 seconds.

5

C - 1089 byte

#include <time.h>
#include <stdio.h>

int answer(int the)
{
   int to = 0;

   while (the != 0) {
      to *= 10;
      to += the%10;
      the /= 10;
   }
   return to;
}

int optimism(int the)
{
    return abs(the);
}

int getRandomNumber()
{
    return 4; // chosen by fair dice roll.
              // guaranteed to be random.
}

int main()
{
    // initialize
    int life = getRandomNumber(), universe, everything;

    // get inverse answer
    int question = clock();
    while (clock()-question < CLOCKS_PER_SEC*75) {
        life += getRandomNumber();
    }
    life = optimism(life); // optimism is the best way to see life
    life %= 1000;

    // avoids unwanted race conditions with the answer by "Lego Stormtroopr"
    if (life<100 || life>997) {life -= getRandomNumber()*100;}
    if (optimism(life/100%10 - life%10) < 2) {life += getRandomNumber();}
    universe = answer(life);
    everything = optimism(life<universe?life-universe:universe-life);

    printf("%d\n", (answer(everything)+everything+3)/26);

    return 0;
}

Terkompresi:

#include <time.h>

int f(int d) {
   int e = 0;
   while (d != 0) e = e*10+d%10, d /= 10;
   return e;
}

int main() {
    int a = 4, b, c, d = clock();
    while (clock()-d < CLOCKS_PER_SEC*75) a += 4;
    a = abs(a)%1000;
    a -= a<100||a>997?400:0;
    a += abs(a/100%10-a%10)<2?4:0;
    b = f(a);
    c = abs(a<b?a-b:b-a);
    return (f(c)+c+3)/26;
}

4

Rubi

t = Time.new.to_i
n = 0
loop{
  break if Random.new(n).rand(2000000) == Random.new(374076).rand(1000000)
  n += 1
}
puts Random.new(n).rand(2000000)
puts "Took #{Time.new.to_i - t} seconds; seed was #{n}"

Output pada mesin saya:

42
Took 123 seconds; seed was 3771996

Ini menyalahgunakan RNG. ;)


1
Bagaimana Anda memastikannya berlangsung 75 detik?
Pierre Arlaud

1
@Arlaud Ini berjalan melalui 3,7 juta iterasi loop yang menghasilkan 2 angka acak per iterasi! Secara teknis jika Anda memiliki beberapa superkomputer bisa lebih cepat, tetapi untuk perangkat keras yang masuk akal dibutuhkan setidaknya 75 detik, dan saya tidak ingin membosankan dan menggunakan metode tidur atau waktu.
Gagang Pintu

Pembaruan: ... nah sekarang sudah tercetak Took 25 seconds; seed was 3771996di laptop rata-rata saya. Jadi, uhh ... aku berbohong. : P
Gagang Pintu

4

C

#include <stdio.h>
#include <time.h>

int i, j;

int main() {
    i = clock();
    while(clock() - i < 75 * CLOCKS_PER_SEC);
    for(i = j = 0 ; i < 48 ; i++)
        j += "The answer to Life, the Universe, and everything"[i];
    printf("%i", j % 157);
}

2
sementara-looping sampai clock()melebihi beberapa nilai tampaknya melanggar no sleep()aturan, karena itu pada dasarnya tidur intensif CPU
mniip

kontes popularitas.
Pierre Arlaud

@ArlaudPierre Itu kode-golf ketika saya mengirimkan jawabannya. Bagaimanapun, sudah diperbaiki sekarang.
Oberon

4

JavaScript - Menemukan "jawaban untuk hidup dan segalanya" dengan menyelesaikan persamaan

Mari kita lihat persamaan ini:

1 / p  +  1 / q  +  1 / r  =  1 / 2

Ada banyak solusi, tetapi jika Anda ingin rmenjadi sebesar dan p, qdan runtuk menjadi alami hanya ada dua solusi:

1/3 + 1/7 + 1/42 = 1/2 dan 1/7 + 1/3 + 1/42 = 1/2

dengan p <= q <= r, hanya ada satu solusi dan rselalu sama dengan42

Apa cara paling efisien untuk menyelesaikan persamaan?

Dengan mencoba semua nilai yang memungkinkan!

Ini kodenya:

var n = Math.pow(2, 32); 
for (var i = 1; i <= n; i++)  
{ 
    for (var j = 1; j <= n;  j++)
    {
        for (var k = 1; k <= n; k++)
        {
            if ((1 / i + 1 / j + 1 / k) == 1 / 2)                
               throw k;                
        }
    }
}

Berapa lama waktu yang dibutuhkan? Sejujurnya, saya tidak tahu karena saya belum bisa menjalankannya sampai akhir.

Namun, Anda dapat mencoba dengan nnilai yang kecil (harus lebih besar atau sama dengan 42) dan Anda akan mendapatkan hasil yang benar. Untuk nilai kecil seperti n = 2000itu, dibutuhkan hampir satu menit di laptop saya. Jadi saya kira dengan nilai-nilai besar yang diberikan dalam contoh itu akan memakan waktu berhari-hari, berminggu-minggu, atau bahkan bertahun-tahun !!!

Menemukan solusinya dalam waktu sekitar 75 detik:

Salah satu persyaratan dari pertanyaan awal adalah harus sekitar 75 detik untuk dieksekusi. Salah satu cara untuk mencapai ini adalah dengan menyesuaikan kompleksitas algoritma secara otomatis dari waktu ke waktu:

var now = new Date().getTime();
var iterations = 0; 
var n = Math.pow(2, 32); 
for (var i = 1; i <= n; i++)
{
    for (var j = 1; j <= n; j++)
    {
        for (var k = 1; k <= n; k++)
        {
            if ((1 / i + 1 / j + 1 / k) == 1 / 2)               
                throw k;

            if (new Date().getTime() - now > 1000) //one second has elapsed
            {
                now *= 2; //never wanna see you again
                n = 42;   //this is the minimum               
                while(3 * n * n + 7 * n + 42 < iterations * 74) n++;
                i = j = k = 0; //reset
            }
            iterations++;
        }
    }
}

Cara kerjanya (untuk yang penasaran): memeriksa berapa banyak iterasi yang telah dilakukan dalam satu detik, kemudian kalikan ini dengan 74 dan sesuaikan nuntuk mencocokkan nilai itu. misal: jika butuh satu detik untuk melakukan 500 iterasi, itu akan butuh 10 detik untuk melakukan iterasi 5000. Perhatikan bahwa kalikan dengan 74 bukan 75 karena kami sudah menghabiskan satu detik untuk "pembandingan".

sumber dan kredit untuk matematika


2

C # - 151 Karakter

class P
{
   static void Main()
   {
      var w = new System.Diagnostics.Stopwatch();
      w.Start();
      while (w.ElapsedMilliseconds < 75000);
      System.Console.Write((int)'*');
   }
}

Bagaimana ini tidak setara dengan tidur thread?
valdetero

Tentu saja tidak setara dengan thread sleep. Thread sleep membuat thread utama tidak aktif untuk waktu yang ditentukan. Program ini tidak membuat utas utama tidak aktif. Ini melibatkan utas utama untuk membandingkan waktu yang telah berlalu. Dan ketika jumlah waktu yang ditentukan (75-an) telah berlalu, ia akan mencetak hasilnya.
Merin Nakarmi

Saya tahu <i> secara fungsional </i> tidak sama, tetapi mengikuti premis yang sama. OP ingin itu menjadi kreatif dan tidak memiliki bahasa menunggu 75 detik - itulah yang sedang dilakukan.
valdetero

1
Bagi saya solusi ini sama bagus / buruknya dengan solusi untuk DOS. Solusi DOS membuat program sibuk dengan melakukan ping, dan yang ini sibuk dengan membandingkan waktu yang telah berlalu. Saya tidak melihat perbedaan. Jika itu bisa mendapatkan banyak upvotes maka yang ini juga harus mendapatkan. Omong-omong, perintah ping melakukan 'sleep' secara internal.
microbian

2

C ++

Menghitung partisi dari 10 melalui metode yang agak tidak efisien. Butuh 130-an untuk berjalan dalam rilis Rilis pada sistem saya, tetapi seseorang dengan PC yang cukup cepat harus dapat menjalankannya di ~ 75-an ...

#include <algorithm>
#include <iostream>
#include <numeric>
#include <set>
#include <vector>

using namespace std;

bool NextPermutationWithRepetition(vector<int>& perm, int n) {
    int carry = 1;
    auto it = begin(perm);
    while (it != end(perm) && carry) {
        ++*it;
        carry = (*it - 1) / n;
        *it = ((*it - 1) % n) + 1;
        ++it;
    }
    if (carry) {
        if (perm.size() == n) return false;
        perm.push_back(carry);
    }
    return true;
}

int main() {
    vector<int> perm;
    set<vector<int>> uniquePartitions;
    const int n = 10;
    while (NextPermutationWithRepetition(perm, n)) {
        if (accumulate(begin(perm), end(perm), 0) == n)  {
            auto sortedPerm = perm;
            sort(begin(sortedPerm), end(sortedPerm));
            uniquePartitions.insert(sortedPerm);
        }
    }
    cout << uniquePartitions.size() << endl;
}

2

Javascript

Ini akan membutuhkan waktu untuk mengingatkan sesuatu ... tapi itu berharga karena akan menunjukkan kepada Anda Jawaban untuk menghidupkan alam semesta dan segalanya!

var x = 0, b = document.body.children[0];
var theAnswer = function(){
  b.textContent = ++x;
  if(x == 125774) alert(Math.pow(x, 1/Math.PI)).toFixed(0);  
  else setTimeout(theAnswer);
};
theAnswer();

Demo


1
Jauh lebih dari 75 detik ...
Fabinout

tapi itu bernilai tottaly!
rafaelcastrocouto

2

Python

Kadang-kadang jawaban hanya jelas di bagian akhir perhitungan, tetapi aspek-aspeknya terlihat sebelum penghentian.

Dan sedikit yang diketahui adalah urutan input Deep Thought diunggulkan dengan:

271, 329, 322, 488, 79, 15, 60, 1, 9

Karenanya:

from datetime import datetime
n = datetime.now
o = n().second

def bs(x,n,t,f):
    return ([t]+bs(x-2**(n-1),n-1,t,f) if x>=2**(n-1) else [f]+bs(x,n-1,t,f)) if n>0 else []

u = [271,329,322,488,79,15,60,1,9,'#',' ','',]
for i, g in enumerate(u[:5]):
    while n().second!=(o+(i+u[7])*u[5])%u[6]:
        pass # the dice
    print u[11].join(bs(g,*u[8:11]))

Et voila - jawabannya diberikan setelah 75 detik.


2

Majelis (ditautkan oleh gcc)

Pada komputer yang cukup lambat (kecepatan CPU ~ 2Hz) ini akan membutuhkan waktu sekitar 75 detik untuk berjalan:

  .globl        main
main:
  movl  $52, %edx
  movl  $0, %edi
l4:
  addl $1, %edi
  cmp %edx, %edi
  jl l4
  call  putchar
  movl  $50, %edx
  movl  $0, %edi
l2:
  addl $1, %edi
  cmp %edx, %edi
  jl l2
  call  putchar
  movl  $10, %edx
  movl  $0, %edi
ln:
  addl $1, %edi
  cmp %edx, %edi
  jl ln
  call  putchar
  ret

1

Utilitas Bash dan Linux:

#!/bin/bash

if [ $(uname) == "Linux" ]; then
    : $(arecord -q | head -c 600000)
    man -s4 random | head -n1 | tr -d ' ' | wc -c
else
    echo "Deep Thought didn't run $(uname)"
fi

Pemikiran mendalam adalah mendengarkan dengan cermat sepanjang perhitungan.


1

Jawa (227 karakter)

Siapa bilang manipulasi bitwise tidak menyenangkan? Atau java itu tidak bisa membingungkan?
Kami mengulang selama 75 detik dan kemudian membentangkan jawabannya.

public class T{public static void main(String[]b){long d=(1<<16^1<<13^1<<10^31<<3);long t=System.currentTimeMillis();long e=t+d;for(;e>System.currentTimeMillis();){}d=d%((((d&~(1<<16))>>7)^(1<<4))^1<<2);System.out.println(d);}}

Tidak disatukan

public class T
{
    public static void main(String[] b)
    {
        long d = (1 << 16 ^ 1 << 13 ^ 1 << 10 ^ 31 << 3);
        long t = System.currentTimeMillis();
        long e = t + d;
        for (; e > System.currentTimeMillis();){}
        d = d % ((((d & ~(1 << 16)) >> 7) ^ (1 << 4)) ^ 1 << 2);
        System.out.println(d);
    }
}

0

PureBasic

Sesuai dengan fakta bahwa perangkat keras yang berbeda akan menghasilkan hasil yang berbeda, tidak ada jawaban pasti untuk ini. Saya menggunakan fungsi waktu yang telah berlalu jadi saya tahu kapan harus berhenti menghitung.

Pada dasarnya, itu akan menghitung dua bilangan prima terbesar ketika dikurangi adalah 42

Lebih cepat mesin Anda, semakin besar bilangan prima akan :-)

OpenConsole()

sw = ElapsedMilliseconds()
FoundFigure1 = 0
FoundFigure2 = 0

PreviousPrime = 1

For i = 3 To 10000000000 Step 2
  PrimeFound = #True
  For j = 2 To i-1
    If i % j = 0
      PrimeFound = #False
      Break
    EndIf
  Next
  If PrimeFound = #True
    If i - PreviousPrime = 41+1
      FoundFigure1 = PreviousPrime
      FoundFigure2 = i
    EndIf

    PreviousPrime = i
  EndIf

  If ElapsedMilliseconds() - sw > 75000
    Break
  EndIf
Next

Print("Answer: ")
Print(Str(FoundFigure2 - FoundFigure1))
Input()

0

MeatSpace

Laju jarak yang membutuhkan waktu sekitar 70/4 detik untuk Anda servant^H^H^H^Hcomputer(bisa jadi manusia, anjing, atau apa pun yang bisa mengambil ubin angka) untuk berjalan. Tempatkan angka besar 4dan angka besar di 2sana. Tempatkan Anda computerke titik output. Mulai timer, minta berjalan ke depot angka dan bawa kembali satu nomor sekaligus.

Saya mengalokasikan 5 detik untuk mengambilnya dan meletakkannya.


0

Contoh C # lainnya

using System;
using System.Threading;

namespace FourtyTwo
{
    class Program
    {
        static void Main(string[] args)
        {
            DateTime then = DateTime.Now;
            Thread.Sleep(42000);
            DateTime now = DateTime.Now;
            TimeSpan t = now - then;
            Console.WriteLine(t.Seconds);
        }
    }
}

1
Anda menggunakan "tidur"
Fez Vrasta

oops, bacalah karena bisa menggunakan sleep -10 untukku!
pendarat

0

Rubi

Program untuk menambah (0,56) daya n untuk 75 kali. Nilai darin is 1

Di mana n=1harus diperoleh dari segala bentukTime diffrence

def solve
  a=0.56
  i=0
  t1=Time.now
  while(i < 75)
        t1 = Time.now
        while((b=Time.now-t1) < 1.0)
        end
        a += 0.56 ** b.to_i
        i += 1
  end
  a.to_i
end

puts solve

Menggunakan perbedaan waktu ruby ​​Saya telah memverifikasi waktu eksekusi yang kira-kira 75.014267762


0

PHP

<?php
set_time_limit(80);
ini_set('max_execution_time', 80);
//$start=time();
$count=0;
do{
$rand=rand(0,(75000000/40+2));  
$rand=rand(0,$rand);
    if(($rand==42 || $rand==75-42 || $rand== floor(75/42)) && (!rand(0,(4*2)))
      ){
      $count++;
    }
}while($count!=42);
echo $count;
//echo '<br>elapsed time is '.(time()-$start);
?>

Ini sedekat yang saya dapatkan malam ini. Menjalankannya di tecbrat.com , IBM NetVista P4 lama yang menjalankan Ubuntu 10,04, menunjukkan 69 detik dan 78 detik pada 2 berjalan terakhir saya.


0

JavaScript (Kebingungan bitwise) (tidak buruk untuk 136 byte!)

Mungkin terlihat sedikit di sisi cheaty, tetapi fungsi dipikirkan dengan cermat, mengingat bahwa nilai 75000ms akan dihitung sebelum fungsi yang digunakan untuk menghitung 42. Ini cukup puitis ketika Anda melihatnya, sungguh: )

setTimeout("alert($=((_=_=>(_<<-~-~[])|-~[])(_(-~[])))<<-~[])",($=$=>$<<-~-~-~[]|-~[])((_=_=>_<<-~[]|-~[])(_(_(_($($($(-~[]))))))))^-~[])


Saya mendapatkan kesalahan sintaks ...Unexpected token >
rafaelcastrocouto

Saya memiliki ini berfungsi pada Firefox 26.0 yang menerima notasi x = x => f (x) ... Versi apa yang Anda jalankan ini?
WallyWest

Saya menjalankan chrome 31 di windows 7 ...
rafaelcastrocouto

1
@rafaelcastrocouto Ah, sayangnya panah notasi lemak digunakan untuk mendefinisikan dua fungsi di masing-masing pernyataan hanya bekerja untuk Firefox 22 dan di atas ...
WallyWest

Saya hampir menangis ... solusi Anda memang cantik!
rafaelcastrocouto

0

Saya tidak terlalu baik dengan hal semacam ini. Saya seorang pengembang aplikasi tetapi saya tidak pernah memiliki pelatihan dalam C dan saya kebanyakan membuat aplikasi yang mengambil barang dari server dan membuat informasinya terlihat cantik ...

Saya tidak tahu apakah ini akan berhasil dan ada sedikit kode tambahan di sana karena itu ada di aplikasi iphone dan saya menampilkan kemajuan hud dan tampilan peringatan ketika 42 telah tercapai:

#import "ViewController.h"
#import "MBProgressHUD.h"

@interface ViewController ()

@property (nonatomic, retain) MBProgressHUD * hud;

-(IBAction)answer:(id)sender;

@end

int number;
int initialCounter;

@implementation ViewController
@synthesize hud;

-(IBAction)answer:(id)sender
{
    hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
    hud.mode = MBProgressHUDModeIndeterminate;
    hud.labelText = @"Calculating";

    [self calculate];

    number = arc4random();
}

-(void)calculate
{

    int random = arc4random();

    if (number == 42){
        hud.hidden = YES;
        UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"Complete!"
                                                          message:@"The answer is 42."
                                                         delegate:nil
                                                cancelButtonTitle:@"OK"
                                                otherButtonTitles:nil];

        [message show];
    }

    else if(number<42){
        number = number + random;
        dispatch_async(dispatch_get_main_queue(), ^{
             [self calculate];
        });
    }

    else if(number>42){
        number = number - random;
        dispatch_async(dispatch_get_main_queue(), ^{
             [self calculate];
        });
    }
}

@end
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.