คำตอบของชีวิตจักรวาลและทุกสิ่ง [ปิด]


43

บทนำ : คิดลึกคำนวณคำตอบให้กับชีวิตจักรวาลและทุกอย่างในช่วงของการ 7.5 42ล้านปีที่ผ่านมาการแก้ปัญหาคือ

เขียนโปรแกรมในการเขียนโปรแกรมภาษาใด ๆ ที่ใช้เวลาประมาณวินาทีในการคำนวณเริ่มต้นจากสิ่งที่คุณต้องการและผลผลิตจำนวน7542

NB ตัวเลข42จะต้องคำนวณอย่างใด (ตัวเลขสุ่มสิ่งที่คุณต้องการ) ไม่เพียง แต่เขียนโค้ดอย่างหนักในสคริปต์ของคุณ

ตามที่แนะนำคุณไม่สามารถใช้sleepหรือฟังก์ชั่นที่เทียบเท่า มีความคิดสร้างสรรค์


6
นี่อาจเป็นการแข่งขันที่ได้รับความนิยมเพื่อดูว่าผู้คนสามารถหาคำตอบได้อย่างสร้างสรรค์มากกว่าที่จะเป็นอย่างไรsleep(75);print("%d\n",41+1);
Josh

30
ในการคำนวณใช้เวลาประมาณ 75 วินาที? แต่ชิปคอมพิวเตอร์นั้นมีความหลากหลาย ... สิ่งนี้เป็นไปได้ - มันอาจใช้เวลา 75 วินาทีบนเครื่องของฉัน แต่คอมพิวเตอร์เครื่องต่อไปอาจจะมอนสเตอร์ใน 7.5 วินาที ...
Fozzedout

7
ไม่มีsleepคำตอบจะขึ้นอยู่กับฮาร์ดแวร์มากฉันคิดว่า ... สิ่งที่ใช้เวลา 75s บนเครื่องของคุณอาจจะใช้เวลา 750s บนเครื่องของฉัน: P
Josh

3
timeapi.org/utc/now ดูเหมือนจะเป็นทางเลือกที่ดีที่สุดในการใช้ไลบรารี่แบบสลีปในภาษาของคุณ การดำเนินการทั้งหมดนี้เป็นการร้องขอ http เล็กน้อย
Cruncher

3
ฉันตั้งใจทำให้ฉันใช้เวลา 10 นาที! : O
Doorknob

คำตอบ:


53

ใช้เวลาประมาณ 75 วินาทีในการโอเวอร์คล็อกราสเบอร์รี่ไปที่ 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

มันทำงานได้เพราะ:

42 เป็นค่าที่ทราบเพียงค่าเดียวนั่นคือจำนวนชุดของจำนวนเต็มบวกจำนวนเต็มสี่ตัวคือ a, b, c, d, แต่ละค่าที่น้อยกว่าค่าตัวมันเองเช่น ab-cd, ac-bd และ ad-bc เป็นจำนวนทวีคูณของ มูลค่า. ไม่ว่าจะมีค่าอื่น ๆ ยังคงเป็นคำถามเปิด

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


12
ดังนั้นคุณจะพบหมายเลขใหม่ที่ตรงกับสมการนี้หรือคุณจะพิมพ์ 42 :)
Assaf G.

1
@FezVrasta เพราะบรรทัดสุดท้ายหายไป DOH!
gnibbler

2
ว้าว! วิชาคณิตศาสตร์ที่สมบูรณ์แบบและสิ่งที่โอเวอร์คล็อก ... ฮ่าฮ่าฮ่า +1!
โทมัส

1
เป็นเรื่องตลกที่คำตอบนี้มีคะแนนสูงสุด 42 คะแนน (ไม่ใช่การอัปโหลด)
pwned

1
ฉันต้องการลงคะแนนให้มากเพราะราสเบอร์รี่ปี่ แต่ฉันไม่สามารถให้คะแนนปัจจุบันได้ ฉันมีความรู้สึกที่ไม่ดีที่เรากำลังจะมีการผูก
agweber

43

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

นอกจากนี้เรายังกำหนดสิ่งต่าง ๆ ในโลกของเราเป็นถุงกระเบื้องข่วน , อาร์เธอร์ (คาดการณ์แม้ว่ามันจะแปลกเล็กน้อยคอมพิวเตอร์แปลก ๆ ), Trillian (นางเอกเหตุผลของเรา)

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

และMarvin the Paranoid 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 ไม่มีที่สิ้นสุดเป็นไปไม่ได้ไดรฟ์


1
คำตอบนั้นยอดเยี่ยม แต่ถ้าฉันเรียกใช้บน 2.7.2 มันมีข้อผิดพลาด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 ขออภัยฉันบังเอิญใส่รหัสผิด แก้ไขได้ในขณะนี้ควรใช้งานได้

4
ยอดเยี่ยมใช้งานได้แล้ว :) ตอนนี้เราต้องการคอมพิวเตอร์ที่ใหญ่กว่าเพื่อคำนวณคำถาม!
Fez Vrasta

8
"ฉันอาจจะเสียใจ แต่ฉันไม่เขียนมุขในฐาน -13" - DNA
MikeTheLiar

3
ตอนนี้อยู่ที่ 42 โหวต ฉันต้องการคะแนนเพิ่มเติมหรือฉันต้องการคะแนนที่เจ๋งที่สุดสำหรับคำถามนี้หรือไม่?

13

DOS Batch - คำตอบของชีวิตจักรวาลและทุกสิ่ง

ขอบคุณ mynameiscoffey สำหรับการทำให้เข้าใจง่ายของเขา!

บันทึกเป็นanswer.bat:

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

จากนั้นรันและรอ 75 วินาที:

> answer
42

ดูเหมือนว่าDeep Thoughtของคุณมีความคิดที่ต่างออกไป40 : P
Fez Vrasta

ฉันใช้ Notepad ++ ฉันเป็น Windows 8 x64
Fez Vrasta

ไม่มีโชคแม้แต่ NotePad เวอร์ชันที่มีเครื่องหมายอัศเจรีย์แทนใช้ได้
Fez Vrasta

เยี่ยมมากคุณสามารถเดาได้ไหมว่ามันทำงานอย่างไร

2
ทำไมไม่เพียงแค่ทำให้มันเป็นหนึ่งบรรทัดเพื่อหลีกเลี่ยงปัญหา CRLF ที่ยุ่งเหยิง@ ping 127.0.0.1 -n 76 >nul && @ echo %~z0โดยใช้ `&& 'แทนการพึ่งพาคู่ของ CRLF
mynameiscoffey

10

Bash (OS X)

สิ่งนี้อาจถูกส่งไปยังระบบอื่นโดยไม่มีปัญหามากเกินไป แทนที่sayด้วยสิ่งที่คุณใช้เป็นยูทิลิตีบรรทัดคำสั่งแบบข้อความเป็นคำพูด -fตัวเลือกที่จะเข้าจากไฟล์ชื่อ

ด้วยโชคเล็ก ๆ น้อย ๆ มันอาจส่งออกหมายเลขที่ถูกต้อง :-)

การดำเนินการนี้ใช้เวลาเกือบ 1 นาที 15 วินาทีในระบบของฉัน (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

นี่เป็นสิ่งที่ยากมาก เนื่องจากเราไม่ทราบคำถามจริงๆวิธีการที่ได้ผลเพียงคำตอบเดียวคือวิธีการปรับให้เหมาะสมทั่วโลก ในกรณีนี้ฉันเลือกใช้วิธีการหลอมจำลองเนื่องจากวิธีนี้ทำให้ฉันได้รับคำตอบที่ดีสำหรับคำถามที่ยากลำบากมาก่อน

รหัสทั้งหมดกำลังทำอยู่กำลังมองหาค่าที่ดีที่สุดของฟังก์ชั่นที่อินพุตคือชีวิตตัวเอง และสิ่งที่น่าอัศจรรย์ก็คือมันใช้งานได้ ดังนั้นฉันเพิ่งตรวจสอบความคิดลึก

tic;

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

เอาท์พุท:

the_answer =

    42

Elapsed time is 74.892428 seconds.

5

C - 1,089 ไบต์

#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;
}

การบีบอัด:

#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

ทับทิม

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}"

เอาท์พุทบนเครื่องของฉัน:

42
Took 123 seconds; seed was 3771996

สิ่งนี้เป็นการละเมิด RNG ;)


1
คุณจะมั่นใจได้อย่างไรว่ามันใช้เวลา 75 วินาที
Pierre Arlaud

1
@Arlaud มันทำงานผ่าน 3.7 ล้าน iterations ของวนซ้ำซึ่งสร้าง 2 ตัวเลขสุ่มต่อการทำซ้ำ! ในทางเทคนิคถ้าคุณมีซูเปอร์คอมพิวเตอร์บางตัวมันอาจเร็วกว่า แต่สำหรับฮาร์ดแวร์ที่สมเหตุสมผลมันต้องใช้เวลาอย่างน้อย 75 วินาทีและฉันไม่ต้องการเบื่อและใช้วิธีนอนหลับหรือเวลา
Doorknob

อัปเดต: ... ตอนนี้มันสามารถพิมพ์Took 25 seconds; seed was 3771996บนแล็ปท็อปประสิทธิภาพโดยเฉลี่ยของฉัน ดังนั้นเอ่อ ... ฉันโกหก : P
Doorknob

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
ในขณะที่ลูปจนกว่าจะclock()เกินค่าบางอย่างดูเหมือนว่าจะละเมิดno sleep()กฎเนื่องจากเป็นพื้นหลับซีพียูมาก
mniip

ความนิยมประกวด
Pierre Arlaud

@ArlaudPierre มันเป็นcode-golfเมื่อฉันส่งคำตอบ อย่างไรก็ตามมันได้รับการแก้ไขแล้ว
Oberon

4

JavaScript - ค้นหา "คำตอบของชีวิตและทุกสิ่ง" โดยการแก้สมการ

ลองดูที่สมการนี้:

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

มีโซลูชั่นหลาย แต่ถ้าคุณต้องการ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

วิธีที่มีประสิทธิภาพที่สุดในการแก้สมการคืออะไร

ลองใช้ค่าที่เป็นไปได้ทั้งหมด!

นี่คือรหัส:

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;                
        }
    }
}

ใช้เวลานานเท่าไหร่ พูดตามตรงฉันไม่รู้เพราะฉันไม่สามารถวิ่งไปจนสุด

อย่างไรก็ตามคุณสามารถลองด้วยnค่าเล็ก ๆ (ต้องมากกว่าหรือเท่ากับ42) และคุณจะได้รับผลลัพธ์ที่ถูกต้อง สำหรับค่าเล็กน้อยเช่นn = 2000มันใช้เวลาเกือบหนึ่งนาทีบนแล็ปท็อปของฉัน ดังนั้นฉันเดาด้วยค่าที่ยิ่งใหญ่ในตัวอย่างมันใช้เวลาหลายวันหลายสัปดาห์หรือหลายปี !!!

ค้นหาวิธีแก้ปัญหาในประมาณ 75 วินาที:

ข้อกำหนดหนึ่งข้อจากคำถามเริ่มต้นคือควรใช้เวลาประมาณ 75 วินาทีในการดำเนินการ วิธีหนึ่งในการบรรลุเป้าหมายนี้คือการปรับความซับซ้อนของอัลกอริทึมโดยอัตโนมัติตลอดเวลา:

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++;
        }
    }
}

มันทำงานอย่างไร (สำหรับคนที่อยากรู้อยากเห็น): ตรวจสอบว่ามีการทำซ้ำหลายครั้งในหนึ่งวินาทีจากนั้นคูณด้วย 74 และปรับnให้เข้ากับค่านั้น เช่น: ถ้าใช้เวลาหนึ่งวินาทีในการทำซ้ำ 500 ครั้งมันจะใช้เวลา 10 วินาทีในการทำ 5,000 รอบ โปรดทราบว่ามันคูณด้วย 74 ไม่ใช่ 75 เพราะเราใช้เวลาหนึ่งวินาทีในการ "เปรียบเทียบ" แล้ว

แหล่งที่มาและเครดิตสำหรับคณิตศาสตร์


2

C # - 151 ตัวอักษร

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

สิ่งนี้ไม่เทียบเท่ากับการนอนหลับของเธรด?
valdetero

แน่นอนมันไม่เท่ากับเธรดการนอนหลับ การนอนหลับของเธรดทำให้เธรดหลักไม่ทำงานตามระยะเวลาที่กำหนด โปรแกรมนี้ไม่ได้ทำให้เธรดหลักไม่ทำงาน มันเกี่ยวข้องกับหัวข้อหลักเพื่อเปรียบเทียบเวลาที่ผ่านไป และเมื่อเวลาที่ระบุไว้ (75s) ผ่านไปเครื่องจะพิมพ์เอาต์พุต
Merin Nakarmi

ฉันรู้ว่า <i> ใช้งานได้ </i> ไม่เหมือนกัน แต่เป็นไปตามสถานที่เดียวกัน OP ต้องการให้มีความคิดสร้างสรรค์และไม่มีภาษารอ 75 วินาที - ซึ่งเป็นสิ่งที่ทำ
valdetero

1
สำหรับฉันแล้วโซลูชันนี้ดี / ไม่ดีเท่ากับโซลูชันสำหรับ DOS วิธีการแก้ปัญหา DOS ทำให้โปรแกรมไม่ว่างโดยการกระตุกและหนึ่งนี้ทำให้ตัวเองไม่ว่างโดยการเปรียบเทียบเวลาที่ผ่านไป ฉันไม่เห็นความแตกต่าง ถ้านั่นสามารถรับ upvotes ได้มากมายดังนั้นอันนี้ก็ควรจะได้เช่นกัน โดยวิธีการที่คำสั่ง ping ไม่ 'หลับ' ภายใน
microbian

2

C ++

คำนวณพาร์ทิชันของ10ผ่านวิธีการที่ค่อนข้างไม่มีประสิทธิภาพ เอา 130s มารันใน Release build บนระบบของฉัน แต่มีคนที่มี PC ที่เร็วพอสมควรน่าจะสามารถรันมันใน ~ 75s ...

#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

จาวาสคริ

สิ่งนี้จะใช้เวลาสักครู่เพื่อเตือนบางสิ่งบางอย่าง ... แต่มันก็คุ้มค่าเพราะมันจะแสดงให้คุณเห็นคำตอบของชีวิตจักรวาลและทุกสิ่ง!

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

การสาธิต


1
มากเกินกว่า 75 วินาที ...
Fabinout

แต่มันคุ้มค่าที่ Tottaly!
rafaelcastrocouto

2

หลาม

บางครั้งคำตอบนั้นชัดเจนในตอนท้ายสุดของการคำนวณเท่านั้น

และที่รู้จักกันน้อยคือลำดับของอินพุตความคิดลึกถูกเพาะด้วย:

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

ดังนั้น:

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 - คำตอบมีให้หลังจาก 75 วินาที


2

ประกอบ (เชื่อมโยงโดย gcc)

บนคอมพิวเตอร์ที่ช้าพอ (ความเร็ว CPU ~ 2Hz) สิ่งนี้ควรใช้เวลาประมาณ 75 วินาทีในการทำงาน:

  .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

Java (227 ตัวอักษร)

ใครบอกว่าการโกงในระดับบิตมินนั้นไม่สนุก? หรือจาวานั้นไม่สับสน
เราวนลูป 75 วินาทีแล้วตอบคำถามให้มากขึ้น

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

Ungolfed

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

เพื่อให้สอดคล้องกับความจริงที่ว่าฮาร์ดแวร์ที่แตกต่างกันจะให้ผลลัพธ์ที่แตกต่างกันดังนั้นจึงไม่มีคำตอบที่แน่นอนสำหรับเรื่องนี้ ฉันกำลังใช้ฟังก์ชั่นเวลาที่ผ่านไปดังนั้นฉันจึงรู้ว่าจะหยุดการคำนวณเมื่อไหร่

โดยพื้นฐานแล้วมันจะคำนวณจำนวนเฉพาะสองจำนวนที่มากที่สุดเมื่อลบออกเป็น 42

ยิ่งเครื่องของคุณเร็วเท่าไหร่ช่วงเวลาที่ใหญ่กว่าจะเป็น :-)

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

ก้าวออกไปเป็นระยะทางซึ่งจะใช้เวลาประมาณ 70/4 วินาทีสำหรับคุณservant^H^H^H^Hcomputer(อาจเป็นมนุษย์สุนัขหรืออะไรก็ได้ที่สามารถหยิบกระเบื้องตัวเลข) เพื่อเดิน วางตัวเลขขนาดใหญ่4และตัวเลขขนาดใหญ่ที่2นั่น วางของคุณcomputerไปยังจุดส่งออก เริ่มจับเวลาให้เดินไปที่คลังตัวเลขแล้วนำกลับมาทีละหนึ่งหมายเลข

ฉันจัดสรรเวลา 5 วินาทีเพื่อรับมันและวางมันลง


0

อีกตัวอย่าง C #

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
คุณกำลังใช้ "sleep"
Fez Vrasta

อ๊ะอ่านมันได้แล้วใช้ sleep -10 ให้ฉันได้!
แลนเดอร์ส

0

ทับทิม

โปรแกรมที่จะเพิ่ม (0.56) กำลัง n สำหรับ 75 ครั้ง มูลค่าของn is 1

ไหนn=1ควรจะได้รับจากรูปแบบใด ๆTime 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

การใช้ความต่างของเวลาทับทิมฉันได้ตรวจสอบเวลาดำเนินการซึ่งประมาณไว้แล้ว 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);
?>

นี่ใกล้เท่าที่ฉันได้รับคืนนี้ รันที่tecbrat.comซึ่งเป็น IBM NetVista P4 เก่าที่รัน Ubuntu 10.04 แสดง 69 วินาทีและ 78 วินาทีในการวิ่ง 2 ครั้งล่าสุดของฉัน


0

จาวาสคริปต์ (การทำให้งงงวย Bitwise) (ไม่เลวสำหรับ 136 ไบต์!)

มันอาจถูกมองว่าเป็นบิตที่ด้านนอกของ cheaty แต่ฟังก์ชั่นนั้นถูกคิดอย่างพิถีพิถันโดยคำนึงว่าค่า 75000ms จะถูกคำนวณก่อนหน้าที่ที่ใช้ในการคำนวณ 42 มันเป็นบทกวีจริงๆเมื่อคุณมองมันจริงๆ: )

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


ฉันได้รับข้อผิดพลาดทางไวยากรณ์ ...Unexpected token >
rafaelcastrocouto

ฉันใช้งาน Firefox 26.0 ซึ่งยอมรับเครื่องหมาย x = x => f (x) ... คุณใช้เวอร์ชันใดอยู่
WallyWest

ฉันกำลังใช้งานโครเมี่ยม 31 บน Windows 7 ...
rafaelcastrocouto

1
@rafaelcastrocouto อ่าสัญกรณ์ลูกศรไขมันเศร้าที่ใช้ในการกำหนดทั้งสองฟังก์ชั่นในแต่ละงบเฉพาะใช้งานได้กับ Firefox 22 ขึ้นไป ...
WallyWest

ฉันเกือบจะร้องไห้ ... วิธีการแก้ปัญหาของคุณสวยงามจริงๆ!
rafaelcastrocouto

0

ฉันไม่ค่อยเก่งกับเรื่องแบบนี้ ฉันเป็นนักพัฒนาแอพ แต่ฉันไม่เคยฝึกอบรมใน C และส่วนใหญ่ฉันทำแอพที่คว้าของจากเซิร์ฟเวอร์และทำให้ข้อมูลดูสวย ...

ฉันไม่ทราบว่าจะใช้งานได้หรือไม่และมีรหัสพิเศษอยู่ในนั้นเพราะอยู่ในแอพ iphone และฉันแสดงความคืบหน้าฮัดและมุมมองการแจ้งเตือนเมื่อถึง 42:

#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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.