วิธีที่สร้างสรรค์ที่สุดในการแสดง 42


386

ดักลาสอดัมส์เกิดเมื่อวันที่ 11 มีนาคม 2495 และเสียชีวิตเมื่อเขาอายุเพียง 49 ปีเพื่อเป็นเกียรติแก่นักเขียนที่ยอดเยี่ยมนี้ฉันขอท้าให้คุณแสดง42ในวิธีที่สร้างสรรค์ที่สุดเท่าที่จะเป็นไปได้

คุณสามารถพิมพ์ลงในบันทึกผ่านวิธีการที่ซับซ้อนหรือแสดงเป็น ASCII art หรืออะไรก็ได้! เพิ่งเกิดขึ้นด้วยวิธีการสร้างสรรค์ของการแสดง 42

เพราะนี่เป็นการประกวดความนิยมไม่ว่าคำตอบใดจะมีผู้โหวตมากที่สุดภายในวันที่ 11 มีนาคมจะถูกประกาศให้เป็นผู้ชนะ

หมายเหตุ:นี่ไม่ซ้ำกัน คำถามที่มันถูกทำเครื่องหมายเป็นซ้ำเป็นคำถามรหัสหลอกที่มีเป้าหมายคือการเขียนรหัสเพื่อส่งออก 42, ไม่พบวิธีที่สร้างสรรค์มากที่สุดในการแสดงมัน

ผู้ชนะ: grovesNL! ด้วยคะแนนโหวต 813 ที่น่าประหลาดใจ! ยินดีด้วย!

รางวัลชมเชย:

Mr Lister C 228 สำหรับการใช้ #define ที่ชาญฉลาด

David Carraher Mathematica 45 สำหรับฟังก์ชันคณิตศาสตร์ที่ซับซ้อนและซับซ้อนเพื่อให้ได้ 42

Aschratt Windows Calculator 20 เพราะก็เป็นเครื่องคิดเลข windowsและ 1337 แน่นอน

f.rodrigues Python 17 เนื่องจากการใช้งานอย่างชาญฉลาดของการใช้โปรแกรมภายนอก และMSPaint

Jason C LMGTFY 14 สำหรับการใช้ LMGTFY (ให้ฉันเป็นอย่างนั้นสำหรับคุณ)

Trimsty Python 12 สำหรับการใช้ข้อความแสดงข้อผิดพลาดอย่างชาญฉลาดในการแสดงผล 42

Mukul Kumar C ++ 7 สำหรับเอาต์พุต ASCII ที่ดี

หากคุณคิดว่ามีคำตอบอื่นที่ควรใส่ในรายการโปรดแสดงความคิดเห็น!


6
คำถามปิดเก่าคือการใช้รหัสหลอกๆนั่นก็คืออะไรก็ตามที่ไม่ได้แสดงให้เห็นว่า 42 ข้างที่ดูเหมือนจะทำเช่นนั้นหรือทำด้วยวิธีที่น่ากลัวจริงๆ อันนี้ไม่ใช่การหมุนรอบโค้ดเช่นเอาท์พุทควรเป็น 42 ในวิธีที่ดี ดังนั้นจึงไม่ซ้ำกัน
Victor Stafusa

2
@DanDascalescu เว็บไซต์ SE นี้มีคำถามมากมายโดยไม่มีข้อกำหนดที่เข้มงวดซึ่งช่วยให้ผู้ใช้สามารถใช้เสรีภาพในการสร้างสรรค์ในคำตอบของพวกเขา บางครั้งข้อ จำกัด ที่มากเกินไปอาจเป็นอุปสรรคต่อการแสดงออกของความคิดสร้างสรรค์
grovesNL

9
คำถามควรจะอยู่ที่ 42 คะแนน
Zero Fiber

28
มาร์วินหุ่นยนต์"ฉันจะโพสต์คำตอบที่ยอดเยี่ยมของฉัน แต่คุณอาจลงคะแนนมันถูกต้องตลอดเวลาเป็นเรื่องน่าหดหู่"
ปฏิกิริยา

3
เราจะได้ 42 รายการโปรด?
Milo

คำตอบ:


843

Brainfuck คู่

           +++++[>++[>+>+        ++>++++>++++>++++>++++++
          >++++++>+++++++        ++>+++++++++<<<<<<<<<-]>>
         >+>+>+> >>>+[<]<        -]>>       >++>-->>+>>++>+
        >--<<<<  <<<.....         .>            ....<......
       ...>...   <<.>....                       >.>>>>>.<.
       <<<<..     ..<....                      >..>>>>>.<
      .<<<<.      >>>.<<.                     >>>>>.<.<
      <<<<<       <.>...>                    >>>.>>>.
     <<<.<        <<<..>>                  .>>>>>.<
    <.<<<         <<...>>                 >>>.<<<
   <..<.          ...>...               <<.>..>.
   >>.<.<<...>>...<<...>>...<         <....>>..
  .<<<.>.>>..>.<<.......<....        .....>...
                 <<.>...            .....>...
                 <......           .>>>.<<..
                 <<.>...          .....>...<......>.>>.<.<<<
                 .>......        ..>>...<<....>>.....>.<..>.

ซึ่งผล ...

      ++++         +++
    +[>++++    ++[>+<-][
   <]<  -]>   >++    +++
  +.-   ---   ---    ---
 --.+++++++         +++
        +++       .++
        +++      +.-
        ---    -----.--.

ซึ่งผล ...

6*7=42

92
ฉันคิดเสมอว่ามีบางสิ่งผิดปกติกับจักรวาล
mfitzp

147
6*9=42มันควรจะเป็น
พร็อกซี่

17
@Proxy: จริง แต่บางครั้งการอ้างอิงเหล่านั้นหายไปกับผู้ชมแม้จะมีบริบท ... ;-)
grovesNL

19
@IsmaelMiguel: นั่นเป็นฐานเพื่อให้ 10 ของคุณ ...
เดนนิส

26
ฉันตอบคำถามทั้งหมดเพื่อให้ผู้คนเห็นคำตอบนี้
Michael Stern

329

C

นี่คือ oldie แต่ goodie ...

#include <stdio.h>

#define six  1+5
#define nine 8+1

int main()
{
    printf("what do you get when you multiply six by nine?\n");
    printf("%i x %i = %i\n", six, nine, six*nine);
}

โปรแกรมนี้มี 42 ตัวอักษร ASCII ที่แตกต่างกัน


15
มันยอดเยี่ยมมาก
ASKASK

41
ฉันชอบใช้ #define เพื่อให้ได้คณิตศาสตร์ "ถูกต้อง" ^^ คุณเป็นคนร่างเตี้ย
Olivier Dulac

35
@mikhailcazi: ตัวประมวลผลล่วงหน้าจะแทนที่ค่าคงที่เหล่านั้นตามตัวอักษรดังนั้นsix*nineจะกลาย1+5*8+1เป็น 42 ซึ่งทำได้ดี Mr Lister
bodo

7
@ canaaerus อึศักดิ์สิทธิ์นั่นคืออัจฉริยะ ไชโยนาย Lister!
mikhailcazi

4
@mikhailcazi #defineทำงานใน C ++ แบบเดียวกับใน C
Mr Lister

137

brainfuck

ใช้เวลาสักครู่เพื่อไปที่นั่น แต่ฉันชอบผลลัพธ์:

         +++++          +++[>+>++>
        +++>++        ++>+++++>+++++
       +>+++++       ++>+        ++++
      +++ >+++       ++++        ++>+
     +++  ++++                   ++>+
    +++   ++++                  +++>
   +++    ++++                 ++++
  +>+     ++++               ++++
 +++      +>++             ++++
++++++++>+++++++++       ++++
++>+++++++++++++++     +<<<
          <<<<        <<<<
          <<<<       <-]>
          >>>>       >>----.++++<<<<<
          <<>>       >>>>++.--<<<<<<.

เมื่อรันแล้วมันจะพิมพ์ 42 แน่นอน


6
ไม่แม้แต่จะพยายาม (เพื่อเอาชนะหรือเข้าใจ) ... นั่นทำให้ฉันนึกถึงรายการมากมายที่ฉันเคยเห็นสำหรับการแข่งขัน C International Obfuscated C Code
Isiah Meadows

64
ฉันต้องยอมรับการใส่สไตล์แบบอักษรของรหัสเพื่อแสดง "42" นั้นยอดเยี่ยม ...
WallyWest

15
ฉันหวังว่าพวกเขาจะเขียนเคอร์เนล Linux ใน brainfuck
devnull

10
น่าเศร้าที่คุณได้รับการยอมแพ้โดยgrovesNL
แบล็กไลท์ส่องแสง

6
ฉันเห็นด้วย. แบบอักษรของพวกเขาดูไม่ดีเท่าของฉัน แต่ผลลัพธ์ที่ซ้อนเป็นความคิดที่ยอดเยี่ยมจริงๆ ด้วยรหัสของพวกเขาเหมาะสมกว่าของฉัน ฉันได้ออกแบบตัวอักษรเป็นศิลปะ ASCII ก่อนจากนั้นจึงเล่นด้วยรหัสเพื่อให้พอดีกับจำนวนอักขระ 220 ตัวของศิลปะ ASCII ดังนั้นรหัสของฉันจึงมีเนื้อหาที่ไม่มีจุดหมายมาก
Donarsson

133

JavaScript:

var ________ = 0.023809523809523808, ____ = 1, ___ = 0, __ = 0, _ = 1;

       __ -           ___
     /_  |0        //     \\
    /_/   0     //          \\
   /_/_  |0                //
  /_/_   |0              //
 /_/____ |_           //
/________|0        //
         |0     //______________

ผลลัพธ์คือ:

42

ไม่เลวใช่มั้ย :)

สำหรับคนที่ไม่เข้าใจจริง ๆ แล้วประเมินสิ่งต่อไปนี้:

__ - ___ / _ | 0 / _ / 0 / _ / _ | 0 / _ / _ | 0 / _ / ____ | _ / ________ | 0 | 0


17
รับการเข้ารหัส JavaScript มานานหลายปีแล้ว แต่ไม่รู้เลยว่าFacePalm
Songo

5
@CarlWitthoft วิธีการทำงานคือว่า_เป็นชื่อตัวแปรที่ถูกต้องใน JavaScript - และเพื่อให้เป็น__, ___, ,____ ________
แปรงสีฟัน

3
ขอบคุณมาก. ฉันจะส่งข้อมูล (อันตราย :-)) ให้เพื่อใช้ในอนาคต
Carl Witthoft

2
ใครบอกว่าโปรแกรมเมอร์ไม่ได้มีความคิดสร้างสรรค์!
Jonathan

1
ในฐานะคนที่เขียน JavaScript จำนวนมากทุกวัน ... ทำได้ดีมากคุณนิ่งงันอยู่พักหนึ่ง ฉันจะเบลอดูผ่านมันอย่างมีความสุข
George Reith

76

C สไตล์คริสต์มาสสิบสองวัน

เวอร์ชั่นใหม่:

main(Z,_){Z?(_=Z[" $X,X3Y<X@Z@[<XHZHX,"
"` \\(Z(X0Z0Z8[@X@^8ZHZHX(Z(`#Y(Z(X3[8"
"\\@_8ZHXHXHX(Z(` \\(Z(X0Z0Z8\\@_8ZIXI"
"X(Z(` \\,X0Z0Z8\\@_8ZHZHX,"])?main(0,_
-32),main(Z+1,_):0:(putchar((_>>3)["kt"
"wy~|tE/42"]-37),(_&7)?main(0,_-1):0);}

เอาท์พุท:

FFFFF OOOOO RRRR  TTTTT Y   Y    TTTTT W   W OOOOO
F     O   O R   R   T    Y Y       T   W   W O   O
FFFF  O   O RRRR    T     Y        T   W W W O   O
F     O   O R   R   T     Y        T   WW WW O   O
F     OOOOO R   R   T     Y        T   W   W OOOOO

ยังไงลองดูคำตอบที่เป็นคำพูดของฉันด้วย


รุ่นเดิม:

main(c,z,_){c==1?main(c+1,0,c^c):c==2?
z=_["##$#%&#%#x'%%()&(%%x$%$((&(*%x'%"
"%((&(+%x'#%((&(%#x"],z?z=='x'?main(4,
_,c*5):main(c+1,z,0),main(c,z,_+1):0:c
==3?(_-2)==3?main(_-1,_,32):(main(c+1,
c,((2+c)*(z-35)+_)["six*nine= {   }  "
"   ;      _   ( ) [ 3 ]do {;=0xDA"]==
32?32:043),main(c,z,_+1)):putchar(_);}

ผลลัพธ์คือ:

##### ##### ####  ##### #   #       ##### #   # #####
#     #   # #   #   #    # #          #   #   # #   #
####  #   # ####    #     #           #   # # # #   #
#     #   # #   #   #     #           #   ## ## #   #
#     ##### #   #   #     #           #   #   # #####

ระยะห่างสำรองหากคุณไม่มีรสนิยมที่ดี:

        main(c     ,z,_){c==01?
       main(c+     1,0,c^c):c==2
      ?z=_["#"     "#$#%&#%#x'%%"
     "()&(%%x"             "$%$("
    "(&(""*%x"             "'%%("
   "(&(" "+%x"             "'#%("
  "(&("  "%#x"             ],z ?z
 =='x'?main(4,_     ,c*5):main(c
 +1,z,0),main(c    ,z,_+1):00:c
 ==3?(_+-2)==3?    main(_-1,_,
         32):(     main(
         c+1,c     ,((2+
         c)*(z     -35)+
         _)[""     "six"
         "*ni"     "ne= {   }   "
         "  ;"     "      _   ( "
         ") ["     " 3 ]do {;"]==
         32?32     :043),main(c,z
         ,_+1)     ):putchar(_);}

โปรแกรมเป็นคำสั่งแบบเรียกซ้ำ ฉันทำมันในรูปแบบของโปรแกรม C ที่ฉันชื่นชอบตลอดกาลสิบสองวันคริสต์มาส (รวบรวมเตรียมใจให้ถูกเป่าวิ่ง)


ทำอย่างไร

นอกจากนี้เนื่องจากนี่ดูเหมือนจะเป็นสถานที่ที่ดีเหมือนกันนี่คือคำแนะนำที่อธิบายถึงวิธีการสร้างโปรแกรมประเภทนี้ คู่มือนี้ใช้ตัวอย่างต้นฉบับด้านบนเป็นตัวอย่าง นอกเหนือจากบิตแรกด้วยตัวอักษรบล็อกพวกเขาเป็นขั้นตอนทั่วไป:

INITIAL:ก่อนอื่นฉันเริ่มโดยสร้างตัวอักษรบล็อก:

##### ##### ####  ##### #   #       ##### #   # #####
#     #   # #   #   #    # #          #   #   # #   #
####  #   # ####    #     #           #   # # # #   #
#     #   # #   #   #     #           #   ## ## #   #
#     ##### #   #   #     #           #   #   # #####

จากนั้นฉันจะสร้างรายการหมายเลขของรูปแบบที่ไม่ซ้ำกันในแต่ละแถวอักขระ 5 คอลัมน์:

0: *****  
1: **** 
2: *   * 
3:       
4: *     
5:   *   
6:  * *  
7: * * * 
8: ** ** 

ดังนั้นแต่ละแถวของพิกเซล 5 พิกเซลจะกลายเป็นชุดตัวเลข 9 ตัว:

00000 00000 11111 00000 22222 33333 00000 22222 00000
44444 22222 22222 55555 66666 33333 55555 22222 22222
11111 22222 11111 55555 55555 33333 55555 77777 22222
44444 22222 22222 55555 55555 33333 55555 88888 22222
44444 00000 22222 55555 55555 33333 55555 22222 00000

สำหรับความสับสน (และความง่ายในการโปรแกรม) เราเพิ่มอักขระ '#' ลงในตัวเลข ในโปรแกรมด้านล่างนี้patternsคืออาร์เรย์ของรูปแบบพิกเซลและlinesเป็นอาร์เรย์ของรหัสรูปแบบที่ยุ่งเหยิงสำหรับแต่ละบรรทัดซึ่งสิ้นสุดด้วย 'x' สำหรับการทำให้งงเพิ่มเติมเรากำหนด "on" pixels ในpatternsเพื่อเป็นตัวละครที่ไม่เว้นวรรค; สิ่งนี้ทำให้เราใส่ข้อความที่ทำให้เข้าใจผิดมากขึ้นในpattern:

#include <stdio.h>

char pattern[] = 
  "six*n"
  "ine= "
  "{   }"
  "     "
  ";    "
  "  _  "
  " ( ) "
  "[ 3 ]"
  "do {;";

char lines[] =
  "##$#%&#%#x"
  "'%%()&(%%x"
  "$%$((&(*%x"
  "'%%((&(+%x"
  "'#%((&(%#x";

void printpattern (char c) {
  int n;
  for (n = 0; n < 5; ++ n)
    putchar(pattern[5*(c-'#') + n]==32?32:'#');
  putchar(' ');
}

int main () {
  char *ptr = lines;
  while (*ptr) {
    while (*ptr != 'x')
      printpattern(*(ptr++));
    putchar('\n');
    ++ ptr;
  }
}

ขั้นตอนที่ 1:ขั้นตอนต่อไปเกี่ยวข้องกับงานบางอย่าง:

  • ลบลูปทั้งหมดและใช้การเรียกซ้ำ
  • เปลี่ยนฟังก์ชั่นทั้งหมด (ยกเว้น main) เป็นแบบฟอร์มint function (int, int)และใช้ชื่อพารามิเตอร์เดียวกันสำหรับแต่ละรายการ เหตุผลจะชัดเจนในภายหลัง
  • เปลี่ยนmainเป็นรูปแบบint main (int, int, int)และตั้งชื่อพารามิเตอร์สองพารามิเตอร์สุดท้ายเหมือนกับชื่อพารามิเตอร์ฟังก์ชันของคุณ
  • แทนที่การอ้างอิงทั้งหมดเป็นค่าคงที่สตริงด้วยสตริงด้วยตนเอง และใช้แต่ละสตริงเพียงครั้งเดียวถ้าเป็นไปได้
  • สามารถลบออกได้ int putchar (int)มันไม่จำเป็นสำหรับ

นอกจากนี้เรายังสามารถใช้ประโยชน์จากคุณสมบัติแปลก ๆ ที่a[b]เทียบเท่ากับb[a]การทำให้งงงวยต่อไป

int printpattern (int z, int _) {
  if (_==5)
    putchar(' ');
  else{
    putchar((5*(z-'#') + _)["six*nine= {   }     ;      _   ( ) [ 3 ]do {;"]==32?32:'#');
    printpattern(z, _+1);
  }
  return 0;
}

// z ignored, _ is index
int printtext (int z, int _) {
  z = _["##$#%&#%#x'%%()&(%%x$%$((&(*%x'%%((&(+%x'#%((&(%#x"];
  if (z) {
    if (z == 'x')
      putchar('\n');
    else
      printpattern(z, 0);
    printtext(z, _ + 1); // first parameter arbitrary
  }
  return 0;
}

int main (int c, int z, int _) {
  printtext(0, 0);
}

ขั้นตอนที่ 2:ถัดไปใช้ประโยชน์จาก?:และ,ผู้ประกอบการในการแปลงแต่ละฟังก์ชั่นเป็นreturnคำสั่งเดียว ฉันกำลังอธิบายสิ่งนี้แยกจากข้างบนเพราะนี่คือสิ่งที่เริ่มสับสนในการมอง จำไว้ว่าputchar()คืนค่าintและ?:จะมีความสำคัญมากกว่า,:

int printpattern (int z, int _) {
  return _==5 ?
    putchar(' ')
  :
    (putchar((5*(z-'#') + _)["six*nine= {   }     ;      _   ( ) [ 3 ]do {;"]==32?32:'#'),
     printpattern(z, _+1));
}

// z ignored, _ is index
int printtext (int z, int _) {
  return
    z = _["##$#%&#%#x'%%()&(%%x$%$((&(*%x'%%((&(+%x'#%((&(%#x"],
    z ?
      z == 'x' ?
        putchar('\n')
      :
        printpattern(z, 0)
      ,
      printtext(z, _ + 1)
    :
    0;
}

int main (int c, int z, int _) {
  printtext(0, 0);
}

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

นอกจากนี้ตั้งแต่พารามิเตอร์ของเราcที่จะmainเป็นตัวแปรรัฐของเราเรารู้ค่าของมันอยู่ตลอดเวลาและเราสามารถทำให้งงงวยอีกเล็ก ๆ น้อย ๆ โดยการเปลี่ยนค่าคงที่จำนวนเต็มมีค่าของพวกเขาในแง่ของc(ตัวอย่างเช่นเมื่อเรารู้cคือ 2 เราสามารถแทนที่ 5 ด้วยc+3) ความสับสนเล็กน้อยอื่น ๆ สามารถทำได้เช่นกัน (เช่นฉันแทนที่'#'ด้วย35และ043):

int main (int c, int z, int _) {
  switch (c) {
  case 1: // main
    return main(c+1, 0, c^c); // (2, 0, 0)
  case 2: // printtext
    return
    z = _["##$#%&#%#x'%%()&(%%x$%$((&(*%x'%%((&(+%x'#%((&(%#x"],
    z ?
      z == 'x' ?
        putchar('\n')
      :
        main(c+1, z, 0) // c+1==3
      ,
      main(c, z, _ + 1)
    :
    0;
  case 3: // printpattern
    return (_-2)==3 ? // _==5
    putchar(' ')
    :
     (putchar(((2+c)*(z-35) + _)["six*nine= {   }     ;      _   ( ) [ 3 ]do {;"]==32?32:043),
     main(c, z, _+1));
  }
}

ขั้นตอนที่ 4:ในที่สุดลบswitchบล็อกโดยใช้ชุดของ?:ผู้ประกอบการ นอกจากนี้เรายังสามารถลบการintประกาศเนื่องจาก C จะใช้พวกมันเป็นค่าเริ่มต้นเช่นเดียวกับreturnตัวของมันเอง (ซึ่งจะสร้างคำเตือนที่เลวร้ายที่สุด) หลังจากนี้โปรแกรมของเราเป็นฟังก์ชันแบบเรียกซ้ำโดยมีคำสั่งเดียว ค่อนข้างเท่ห์ใช่มั้ย

แก้ไข: ฉันแทนที่putchar()ด้วยmainและc==4ด้านล่าง; เพราะฉันเพิ่งคิดถึงมันในนาทีสุดท้าย:

main (c, z, _) {
  c == 1 ?
     main(c+1, 0, c^c)
  : c == 2 ?
    z = _["##$#%&#%#x'%%()&(%%x$%$((&(*%x'%%((&(+%x'#%((&(%#x"],
    z ?
      z == 'x' ?
        main(4,_,c*5)
      :
        main(c+1, z, 0) 
      ,
      main(c, z, _ + 1)
    :
    0
  : c==3 ?
    (_-2)==3 ? 
    main(_-1,_,32)
    :
    (main(c+1,c,((2+c)*(z-35) + _)["six*nine= {   }     ;      _   ( ) [ 3 ]do {;"]==32?32:043),
      main(c, z, _+1))
  : // c==4
    putchar(_);
}

หากคุณต้องการเพิ่มไหวพริบเล็กน้อยคุณสามารถใช้หมายเลขที่น่าสนใจมากขึ้นcและแม้กระทั่งเช็คฐานของหมายเลขอื่น ๆ (เช่นสำหรับc==2กรณีนี้zจะถูกละเว้นและพร้อมใช้งานดังนั้นแทนที่จะโทรmain(2,z,_)คุณสามารถโทรmain(-97,_,_)และแทนที่c==2ด้วยc<-z) มีความคิดสร้างสรรค์; ความเป็นไปได้ไม่มีที่สิ้นสุด

เสร็จสิ้น:ขั้นตอนสุดท้ายคือการจัดเรียงข้อความในรูปแบบที่สร้างสรรค์และ voila! คุณสามารถปรับรหัสเล็กน้อยเพื่อช่วยในการจัดรูปแบบ (เช่นฉันเพิ่มข้อมูลพิเศษที่ส่วนท้ายของpatternsสตริงในโปรแกรมที่โพสต์เพื่อช่วยให้ความยาวของบรรทัดถูกต้อง) ผู้หญิงแน่ใจว่าจะเป็นไปได้ทั้งหมด


ฉันควรลบคำแนะนำหรือไม่ ฉันชอบความลึกลับที่ปราศจากมัน
Jason C

ฉันได้อัปเดตคำตอบด้วยเวอร์ชันใหม่ที่สั้นกว่าและพิมพ์ตัวอักษรในผลลัพธ์ คำแนะนำนั้นอ้างอิงจากเวอร์ชันดั้งเดิม (ปัจจุบัน) เวอร์ชั่นใหม่จัดเก็บเอาต์พุตเป็นข้อมูล RLE สตริงที่ยาวแรกคือข้อมูล
Jason C

2
ฉันต้องการ +1 คำตอบนี้เนื่องจากคุณใช้เวลาอธิบาย "วิธี" ที่อยู่เบื้องหลังโซลูชันของคุณ แต่ขณะนี้อยู่ที่ 42 ตัวแทนและฉันไม่ต้องการทำให้เสีย ;)
Adam Parkin

4
@ AdamParkin ฮ่า ๆ ! ตรงนี้ถ้าเป็น 43 มันเป็นหน้าที่ของคุณที่จะลงคะแนน
Jason C

66

ฉันรู้สึกขี้เกียจ

หลาม

t
h
e
a
n
s
w
e
r
t
o

l
i
f
e

t
h
e
u
n
i
v
e
r
s
e

a
n
d
e
v
e
r
y
t
h
i
n
g:

เอาท์พุท:

  File "golf.py", line 42
    g:
     ^
SyntaxError: invalid syntax

15
ครั้งแรกที่ฉันเห็นข้อผิดพลาดเป็นผลลัพธ์ที่ต้องการ +1 สำหรับความคิดริเริ่ม
Milo


63

ชวา

(หรือ C ++ เป็นโค้ดที่เกือบจะเหมือนกัน)
การใช้ฟังก์ชั่น String ดังนั้นอย่าลืมใส่ไลบรารี่ของคุณด้วย!

ป.ล. ฉันรู้ว่ามันมีความยาว แต่มันควรจะสร้างสรรค์ใช่มั้ย และต่อไปก็ไม่ใช่ "ต่ำสุดไบต์ชนะ"

String s = "Hitchhiker's Guide to the Galaxy";
String s2 = "Don'tPanic";
String s3 = "The Restaurant at the End of the Universe.";

int arthur_dent = s.length();
int ford_prefect = s2.length();
int zooey_deschanel = s3.length();
int vogon_poetry = arthur_dent + ford_prefect;

System.out.println("         " + vogon_poetry + "       " + zooey_deschanel + " " + zooey_deschanel); //in case you're confused, I'm using Zooey to print the big '2', and Vogons to print the big '4'.
System.out.println("       " + vogon_poetry + vogon_poetry + "     " + zooey_deschanel + "     " + zooey_deschanel);
System.out.println("     " + vogon_poetry + "  " + vogon_poetry + "    " + zooey_deschanel + "       " + zooey_deschanel);
System.out.println("   " + vogon_poetry + "    " + vogon_poetry + "            " + zooey_deschanel);
System.out.println(" " + vogon_poetry + "      " + vogon_poetry + "          " + zooey_deschanel);
System.out.println(vogon_poetry + " " + vogon_poetry + " " + vogon_poetry + " DA " + vogon_poetry + "     " + zooey_deschanel);
System.out.println("         " + vogon_poetry + "     " + zooey_deschanel);
System.out.println("         " + vogon_poetry + "    " + zooey_deschanel + " " + zooey_deschanel + " " + zooey_deschanel + " " + zooey_deschanel);

นี่คือผลลัพธ์:

         42       42 42
       4242     42     42
     42  42    42       42
   42    42            42
 42      42          42
42 42 42 DA 42     42
         42     42
         42    42 42 42 42 

ลองนึกภาพความทุกข์ยากของฉันเมื่อฉันนับและพบว่า "ร้านอาหารที่จุดจบของจักรวาล" มี41ตัวอักษร! : / ถอนหายใจ


2
เหตุใดจึงมี 'DA' ในผลลัพธ์ มันตั้งใจหรือไม่
Mhmd

14
@ user689 D ouglas Aเขื่อน :)
mikhailcazi

9
จริงๆแล้ว 41 ก็เป็น DA ด้วยเช่นกัน (D เป็นตัวอักษรออกมา A เป็นตัวแรก) เชียร์ขึ้น!
vadchen

11
4-1 = 3 ซึ่งหมายถึง• _ •) (• _ •)> ⌐■ - ■ (⌐■ _ ■) Half Life 3 ได้รับการยืนยัน
Mohd Abdul Mujib

17
ร้านอาหารที่จุดจบของจักรวาลมี 41 ตัวอักษร + "\ 0": DDD
enterx

59

มาติกา

รับ 1

ด้วยงานบางอย่างฉันควรจะลงเล่นกอล์ฟนี้สักหน่อย :)

ในInputForm:

answer[ultimateQuestion[Life,theUniverse,Everything]] =
  Times[Plus[-1,Limit[Power[Plus[1,Times[Complex[0,1],
  Power[n,-1],Pi]],n],Rule[n,DirectedInfinity[1]]]],Sqrt[-1]^2,
  Times[Rational[1,2],Plus[-1,Fibonacci[4]],Fibonacci[2]],
  Binomial[3,2],LucasL[4]]

ในTraditionalForm:

สี่สิบสอง

การทดสอบ:

answer[ultimateQuestion[Life,theUniverse,Everything]] 

42


ใช้เวลา 2

หมายเหตุ: ตัวเลขถูกสร้างขึ้นดังนี้

  • "42" ถูกพิมพ์ครั้งแรกบนหน้าจอในแบบอักษรขนาดใหญ่มากแกนปรากฏขึ้นเพื่อให้สามารถระบุพิกัดของจุดสำคัญ
  • "4" อื่นถูกวาดเป็นเส้นตรงแบบกว้างที่เชื่อมต่อกับจุดสำคัญที่เกี่ยวข้อง มันถูกวางทับบน "4" ที่วาดก่อนหน้านี้เพื่อตรวจสอบความถูกต้อง "2" ถูกวาดเป็นเส้นโค้ง BSpline ประเด็นสำคัญบางประเด็นซึ่งตอนนี้เป็นจุดควบคุมต้องถูกกำหนดโดยการลองผิดลองถูกเพื่อให้ได้เส้นโค้งที่ต้องการ
  • พิกัดที่สาม (เป็นศูนย์เสมอ) ถูกเพิ่มลงในบรรทัดและ BSplineCurve เพื่อเปิดใช้งานการแสดงผล 3 มิติ

answer[ultimateQuestion[Life,theUniverse,Everything]]  = 
 Table[With[{v = RotationTransform[θ, {0, 0, 1}][{3, 0, -.2}]},
   Graphics3D[{Thickness[.06], CapForm["Round"],
     Tube[Line[{{-67, 0, -44}, {-30, 0, -44}}], 10],
     Tube[
      Line[{{-25, 0, -12}, {-100, 0, -12}, {-52, 0, 70}, {-45, 0, 70}, {-45, 0, -43}}], 10], 
     Tube[BSplineCurve[l = {{27, 0, 52}, {27, 0, 57}, {57, 0, 85}, {113, 0, 40}, 
     {12, 0, -45}, {35, 0, -45}, {90, 0, -45}, {90, 0, -45}, {92, 0, -35}}], 10]},
     Boxed -> False, PlotRange -> 100, ImageSize -> 250, SphericalRegion -> True, 
     ViewPoint :> v, 
     PlotRangePadding -> 10]],(*{θ,0,2Pi,Pi/24},*){θ, -Pi/2, -Pi/2 + 2 Pi, Pi/24}]

Export["theMeaningOfLife.gif", answer[ultimateQuestion[Life,theUniverse,Everything]] ]

ใช้เวลา 2


1
โชคดีที่มันไม่ใช่คำถามสำหรับเล่นกอล์ฟ :) ดูเหมือนว่าจะช่วยในเรื่องความคิดสร้างสรรค์ทางคณิตศาสตร์ได้เป็นอย่างดี ...
cormullion

1
ขอบคุณ Mathematica เสนอทางเลือกมากมายให้คุณสำรวจอย่างแน่นอน
DavidC

3
นีซ; หวังว่าฉันจะย้อนเวลากลับไปและวางกราฟิกนั้นบน geocities.com/42 ฮ่าฮ่า
Jason C

57

ดูเหมือนว่าเหมาะสม:

grep -i "DON'T" /bin/lesspipe | wc -l ; grep -i "PANIC" /usr/share/pyshared/mx/Log.py | head -n 1 | cut -d '=' -f 2 | tr -d ' '

เอาท์พุท:

4
2

Ubuntu 12.04, เดสก์ท็อป 64 บิต


23
+1 สำหรับอย่าตกใจ
Milo

มันจะเป็น bash-ism แต่echo $(grep -i ... tr -d ' ') | sed 's/ //g'จะใส่ทั้งหมดในบรรทัดเดียว คุณสามารถใช้ backquotes แทน$()แบบฟอร์มได้ แต่ก็ยากที่จะใส่ความคิดเห็นที่นี่
Mike Renfro


@MikeRenfro นั่นเป็นวิธี bashishm? $()ระบุโดยมาตรฐาน POSIX
nyuszika7h

ถูกต้องฉันล้าสมัยอย่างเห็นได้ชัด ครั้งล่าสุดที่ฉันตรวจสอบ (หลายปีที่ผ่านมา) ฉันคิดว่ามันเป็น อาจผิดไปแล้วเช่นกัน
Mike Renfro

45

เครื่องคิดเลข Windows

การคูณPiด้วย13.37และละเว้นทศนิยม:P

สี่สิบสอง


17
+1 เพราะเศษส่วนไม่ใช่ 1337 แน่นอน
Jason C

1
เครื่องคิดเลขของโปรแกรมเมอร์น่าจะดีกว่า แต่เครื่องคิดเลขนั้นไม่มี (พาย)
Mukul Kumar

1
1337 * math.pi / 100
chroman

11
รอบ (1337 * math.pi / 100) <- การเปลี่ยนแปลงเล็ก ๆ น้อย ๆ หนึ่งตั้งแต่พายเป็นรอบ
Kevin

41

หลาม

ฉันเดาว่าใช้งานได้กับ Windows 7 เท่านั้น

import win32api, win32con, win32gui
from time import time, sleep
import os

w = { 1:[(358, 263), (358, 262), (358, 261), (359, 261), (359, 262), (359, 264), (359, 266), (359, 270), (359, 282),
     (358, 289), (357, 308), (356, 319), (355, 341), (355, 351), (355, 360), (355, 378), (355, 388), (354, 397),
     (354, 406), (354, 422), (354, 428), (354, 436), (354, 438), (354, 439), (354, 440), (355, 440), (356, 439),
     (357, 439), (358, 438), (360, 438), (362, 437), (369, 437), (372, 437), (381, 437), (386, 437), (391, 437),
     (397, 436), (411, 436), (419, 435), (434, 435), (442, 435), (449, 434), (456, 434), (468, 434), (473, 435),
     (480, 436), (483, 436), (485, 436), (487, 437), (488, 437), (488, 438), (488, 439), (487, 440), (486, 440),
     (485, 440), (484, 440), (483, 439), (483, 437), (481, 431), (481, 427), (481, 420), (481, 413), (483, 396),
     (485, 387), (488, 367), (491, 356), (493, 345), (500, 321), (503, 310), (507, 299), (514, 280), (517, 272),
     (520, 266), (523, 260), (524, 258), (524, 259), (524, 261), (524, 265), (524, 269), (523, 275), (522, 289),
     (521, 297), (518, 315), (516, 324), (515, 334), (513, 345), (509, 368), (507, 382), (502, 411), (500, 426),
     (498, 440), (495, 453), (491, 478), (489, 491), (485, 517), (483, 530), (481, 542), (479, 552), (476, 570),
     (475, 577), (474, 588), (473, 592), (473, 595), (473, 597), (473, 600), (473, 601), (473, 602), (473, 601),
     (474, 599), (475, 597), (476, 594), (478, 587)],
  2:[(632, 305), (634, 306), (636, 309), (639, 314), (641, 319), (645, 330), (647, 337), (649, 353), (649, 362),
     (649, 372), (649, 384), (645, 409), (639, 436), (636, 448), (632, 459), (627, 470), (623, 479), (613, 497),
     (608, 503), (599, 512), (595, 514), (591, 514), (587, 513), (581, 504), (578, 498), (576, 483), (575, 476),
     (575, 469), (579, 454), (582, 447), (591, 436), (595, 432), (600, 430), (605, 429), (617, 432), (624, 437),
     (639, 448), (646, 455), (654, 461), (662, 469), (679, 484), (686, 491), (702, 504), (710, 509), (718, 512),
     (727, 514), (744, 515), (752, 515), (767, 512), (774, 510), (779, 508), (783, 505), (788, 499), (789, 495),
     (789, 486)] }

def d( x1, y1, x2, y2 ):
    win32api.SetCursorPos((x1, y1))
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
    win32api.SetCursorPos((x2, y2))
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
    sleep(0.01)

def p( l1 ):
    l2 = [""]
    l2.extend(l1)
    l1.append("")
    l3 = zip(l2, l1)
    l3.pop(0)
    l3.pop(-1)
    for n in l3:
        d(n[0][0], n[0][1], n[1][0], n[1][1])

os.startfile("C:\Windows\system32\mspaint.exe")
sleep(0.5)
win32gui.ShowWindow(win32gui.GetForegroundWindow(), win32con.SW_MAXIMIZE)
sleep(0.5)

for n in w:
    p(w[n])

ผลที่ได้คือการเปิดPaintและการวาดภาพ 42 เป็นมือฟรี

42


1
ฉันไม่มี win32api :( อยากเห็นว่า ... ยังมี +1 อยู่: D
Timtech

ฉันไม่ได้ใช้ windows ดังนั้นฉันจึงไม่สามารถใช้งานได้ แต่ทางของคุณเป็นที่ยอดเยี่ยม
pushpen.paul

3
ฉันต้องการจะอัปโหลดสิ่งนี้ แต่มันมี 42 upvotes ไม่ต้องการที่จะสับสน
Rohcana

39

Java (สวิง)

นี้จะแสดงกรอบภาพวาดคำตอบ มันใช้42สำหรับค่าเท่านั้น

public        class         FourtyTwo{ public
static         void         main(String[]args)
{  new        javax                    .swing.
JFrame        () {{                    setSize
(42 /(        42/42                    +42/42)
*42/ (        42/42                    +42/42)
,42/(42/ 42+42/42)*         42/(42/42+42/42));
}public void paint(         java.awt .Graphics
  g){g.drawPolygon(         new int[]{42,42,42
              + 42+         42,42+
              42+42         ,42+42
              +42 +         42,42+
              42+42         +42,42
              + 42+         42,42+42+42,42+42,
              42+42         },new int[]{42,42+
              42+42         +42,42+42+42+42,42

+42+42+42+42+42,                  42+42+
42+42+42+42,42,42,               42+42+42
,42 +        42+42              ,42}, (42/
42+42        /42)*              (42/  42 +
42/42        + 42/             42 +    42 /
42+42        /42))            ;g.drawPolygon
( new        int[]           {42+42+42+42+42,
42+42        +42 +           42+42      , 42+
42+42        + 42+          42+42        + 42,
42+42        +42 +          42+42        +42 +
42,42+42+42+42+42,         42+42          + 42+
42+42,42+ 42+42+           42+42          +42 +

42+42,42+42+42+42+42+42+42+42,42+42+42+42+42+42,
42+42+42+42+42+42,42+42+42+42+42+42+42+42,42+42+
42+42+42+42+42+42},new int[]{42,42 +42,42+42,42+
42+42,42+42+42,42+42+42+42+42+42,42+42+42+42+42+
42,42+42+42+42+42,42+42+42+42+42,42+42+42+42,42+
42+42+42,42},(42/42+42/42+42/42)*((42/42+42/42)*
(42/42+42/ 42)));};}.setVisible(42*42*42!=42);}}

14
+1 สำหรับบล็อก "ฉันใช้เวลาเพียงหนึ่งในการจัดรูปแบบเวลานี้และฉันไม่รู้สึกเหมือนทำงานที่เหลืออยู่" ที่ด้านล่าง ฮ่าฮ่า
Jason C

3
@ JasonC นั่นคือสิ่งที่ฉันคิด! พรุ่งนี้ฉันจะทำงานในโปรแกรมที่จัดรูปแบบรหัสเป็นศิลปะ ASCII และฉันจะรวย!
bobbel

ฉันเริ่มทำสิ่งนี้กับฉันและยอมแพ้อย่างรวดเร็ว งานที่ดี.
ChiefTwoPencils

28

มาติกา

WolframAlpha["meaning of life", {{"Result", 1}, "Content"}]

42

แม้ว่าฉันจะคิดว่ามันเป็นการโกงจริง ๆ เพราะมันเป็นรหัสยาก และไม่สร้างสรรค์มากในส่วนของฉัน ... :)


28

ทับทิม

มันเป็นที่รู้จักกันดีในสิ่งที่คุณจะได้รับถ้าคุณคูณหกเก้า นี่เป็นวิธีแก้ไขปัญหาเดียว:

puts (6 * 9).to_s(13)

หลาม

ตัวแปรของสูตรอ้างอิงตนเองของทัปเปอร์ :

# Based loosely on http://www.pypedia.com/index.php/Tupper_self_referential_formula
k = 17 * (
    (2**17)**0 * 0b11100000000000000 +
    (2**17)**1 * 0b00100000000000000 +
    (2**17)**2 * 0b00100000000000000 +
    (2**17)**3 * 0b11111000000000000 +
    (2**17)**4 * 0b00100000000000000 +
    (2**17)**5 * 0b00000000000000000 +
    (2**17)**6 * 0b01001000000000000 +
    (2**17)**7 * 0b10011000000000000 +
    (2**17)**8 * 0b10011000000000000 +
    (2**17)**9 * 0b01101000000000000 +
0)
# or if you prefer, k=int('4j6h0e8x4fl0deshova5fsap4gq0glw0lc',36)

def f(x,y):
    return y // 17 // 2**(x * 17 + y % 17) % 2 > 0.5
for y in range(k + 16, k + 11, -1):
    print("".join(" @"[f(x, y)] for x in range(10)))

เอาท์พุท:

@  @   @@ 
@  @  @  @
@@@@@    @
   @   @@ 
   @  @@@@

2
น่าเสียดายที่วิกิพีเดียลิงก์ของคุณชี้ให้เห็นว่า DNA ปฏิเสธวิธีแรกในการสร้าง 42: "ฉันอาจเป็นกรณีที่เสียใจ แต่ฉันไม่ได้เขียนมุขในฐาน 13"
LSpice

26

จาวาสคริ

alert((!![]+ -~[])*(!![]+ -~[])+""+(!![]+ -~[]))

3
หนึ่งที่ทำให้ผมมีช่วงเวลาที่ WTF true == 1จนกว่าฉันตระหนักอีก
George Reith

12
แจ้งเตือน! CATERPILLARS ASCII แปลก ๆ ! ใช้ข้อควรระวังมาก!
Jason C

ใช้[]แทน""( [] == '')! alert((!![]+-~[])*(!![]+-~[])+[]+(!![]+-~[]))
แปรงสีฟัน

(!-[] === true) && (!~[] === false). นอกจากนี้คุณยังสามารถใช้แทนสำหรับ{} []
แปรงสีฟัน

1
แล้วไง(!!{}+!-[]<<-~{})+[]+(!-[]+-~[])ล่ะ
แปรงสีฟัน


23

Forth:

SCR # 1
 0 ( FORTY-TWO @ ES-FORTH )
 1 HEX 0 24 -31 21 -31 31 -31
 2 31 -14 51 11 -11 51 11 -11 23 31
 3 : T SWAP 0 DO DUP EMIT LOOP DROP ;
 4 : K BEGIN DUP WHILE DUP 0< IF CR
 5  ABS THEN 10 /MOD 20 T A0 T
 6  REPEAT DROP ;
 7 K CR

1 LOAD output:

   █  ███
 █ █     █
 █ █     █
 ████   █
   █   █
   █  █
   █  ████



18

ชวา

public class MainProgram {    
    public static void main(String[] args) {
        int[] the      = { 'T', 'h', 'e' };
        int[] most     = { 'M', 'o', 's', 't' };
        int[] creative = { 'C', 'r', 'e', 'a', 't', 'i', 'v', 'e' };
        int[] way      = { 'W', 'a', 'y' };
        int question   = '?';

        double x = -3.18906605923E-2;

        int The      = 0;
        int Most     = 0;
        int Creative = 0;
        int Way      = 0;

        for(int i : the) {
            The += i;
        }
        for(int i : most) {
            Most += i;
        }
        for(int i : creative) {
            Creative += i;
        }
        for(int i : way) {
            Way += i;
        }
        System.out.println((int)((The*x)-(Most*x)-(Creative*x)-(Way*x)-(question*x)));      
    }//SSCE
}//good1

เอาท์พุท:

42


2
+1 สำหรับการใช้สมการเชิงเส้นที่น่าสนใจทำได้ดีมาก!
recursion.ninja

17

SWI-Prolog ทุกคน?

?- X.

เอาท์พุท:

% ... 1,000,000 ............ 10,000,000 years later
% 
%       >> 42 << (last release gives the question)

นี่ยิ่งขี้เกียจกว่า Mathematica-calling-Wolfram-Alpha หนึ่ง แต่เฮ้!


3
ยินดีต้อนรับสู่ Code-Golf! อย่าลืมเพิ่มคำอธิบายว่าทำไมคำตอบนี้จึงสร้างสรรค์!
Justin

3
@Quincunx เป็นไข่อีสเตอร์ใน SWI-Prolog
svick

15

เปลือก Linux

นี่คือสิ่งที่ฉันเขียนในปี 1999 และใช้เป็นลายเซ็น Usenet ของฉันในตอนนั้น

echo "what is the universe"|tr "a-z " 0-7-0-729|sed 's/9.//g;s/-/+/'|bc

แก้ไข:ฮา! นี่คือคำตอบที่ 42


15

รุ่น PHP:

 echo strlen("Douglas Adams")+strlen("born on")+array_sum(array(1,1,0,3,1,9,5,2));
 /* array(1,1,0,3,1,9,5,2) => March 11, 1952 */

รุ่น JavaScript:

 console.log("Douglas Adams".length + "born on".length + [1,1,0,3,1,9,5,2].reduce(function(previousValue, currentValue, index, array){return previousValue + currentValue;}));

 /* [1,1,0,3,1,9,5,2] => March 11, 1952 */

เอาท์พุท:

 42

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

1
@canaaerus ฉันเพิ่งใช้วันที่ในรูปแบบเฉพาะเพื่อให้โปรแกรมสามารถประมวลผล42ได้ ฉันลองวิธีอื่น ๆ ที่มนุษย์สามารถอ่านได้และนี่คือสิ่งที่ใกล้เคียงที่สุดที่ฉันสามารถเปลี่ยนวันที่มาถึงวิธีแก้ปัญหา
palerdot

24
@canaaerus ฉันไม่เคยเข้าใจเลยว่าคนอเมริกันสามารถเขียนวันที่mm/dd/yyด้วย ถ้าคุณบอกว่า04/03/11ฉันอ่านมันเป็นวันที่ 4 มีนาคม 2011 - ไม่ใช่วันที่ 3 เมษายน
แปรงสีฟัน

7
@palerdot เท่าที่ฉันรู้มีเพียงชาวอเมริกันเชื้อสายอเมริกันเท่านั้น
TRiG

2
@TRiG: คุณคาดหวังอะไร เรานอกเหนือจากพวกเราในสาขาวิทยาศาสตร์และวิศวกรรมแล้วยังหลีกเลี่ยงระบบเมตริกที่ใช้งานง่ายและมีเหตุผลอีกด้วย
ChiefTwoPencils

15

กระแสตรง

$ dc <<< "1 8 sc 1 5 lc *++p"
42

พยายามที่จะคูณ1+8และที่จะได้รับ5+1 ดูเหมือนว่าความไม่รู้ของผู้ประกอบการมีความสำคัญที่นำไปสู่4242


หลาม

>>> p = lambda x: x%2!=0 and True<<x
>>> sum(p(i) for i in range(0,6))

เอาท์พุท: 42


ทุบตี

(คูณ6ด้วย9)

$ echo "obase=13;6*9"|bc|figlet
 _  _  ____
| || ||___ \
| || |_ __) |
|__   _/ __/
   |_||_____|

C

#include <stdio.h>
int main(){printf("%d",fprintf(fopen("/dev/null","w"), "so-popularity-contest\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b"));}

เอาท์พุท: 42

  • คุณสังเกตเห็นการใช้อักขระ backspace หรือไม่?
  • คุณรู้หรือไม่ว่าผลลัพธ์เหล่านั้นมีอะไรบ้าง

ไม่ .. โปรดอธิบาย!
Antonio Ragagnin

อักขระ backspace ใส่สตริงเป็นความยาว 42 ไบต์ ดังนั้น fopen แรกถูกใช้เพื่อเปิดอุปกรณ์ null สำหรับการเข้าถึงการเขียน จากนั้น fprintf เขียน 42 ไบต์เป็นโมฆะส่งคืนจำนวนไบต์ที่เขียน ในที่สุดก็มีการจัดรูปแบบ 42 โดยสตริงรูปแบบ "% d" ของฟังก์ชัน printf เพื่อแสดง 42 ฉันชอบมัน!
CasaDeRobison

12

Brainf ** k

- [   --
- -     -
>+<]  >+
  .   --.

สิ่งนี้ขึ้นอยู่กับการล้นในล่ามหรือไม่?
Cruncher

ใช่ดูเหมือนว่าจะล้นเหลือ 255 255/5 = 51 + 1 = 52 ซึ่งเป็นรหัสตัวอักษรสำหรับ 4 ฉันไม่คิดว่านักแปลทุกคนทำสิ่งนี้ แต่ +1
Cruncher

@ Cruncher มันต้องใช้เซลล์ห่อ 8 บิต นี่เป็นประเภทที่พบได้บ่อยที่สุด
Timtech

12

C ++

#include<iostream>
#include<conio.h>
using namespace std;
int main()
{
    cout<<(char)32<<(char)32<<(char)32;
    cout<<(char)66<<(char)73<<(char)82;
    cout<<(char)84<<(char)72<<(char)32;
    cout<<(char)32<<(char)32<<(char)32;
    cout<<(char)32<<(char)68<<(char)69;
    cout<<(char)65<<(char)84<<(char)72;
    cout<<(char)32<<(char)32<<'\n';
    cout<<(char)32<<(char)32<<(char)32;
    cout<<(char)32<<(char)32<<(char)95;
    cout<<(char)95<<(char)95<<(char)32;
    cout<<(char)32<<(char)32<<(char)32;
    cout<<(char)32<<(char)95<<(char)95;
    cout<<(char)95<<(char)95<<(char)95;
    cout<<(char)95<<(char)32<<'\n';
    cout<<(char)32<<(char)32<<(char)32;
    cout<<(char)32<<(char)47<<(char)32;
    cout<<(char)32<<(char)32<<(char)124;
    cout<<(char)32<<(char)32<<(char)32;
    cout<<(char)124<<(char)32<<(char)32;
    cout<<(char)95<<(char)95<<(char)32;
    cout<<(char)32<<(char)124<<'\n';
    cout<<(char)32<<(char)32<<(char)32;
    cout<<(char)47<<(char)32<<(char)47;
    cout<<(char)124<<(char)32<<(char)124;
    cout<<(char)32<<(char)32<<(char)32;
    cout<<(char)124<<(char)95<<(char)124;
    cout<<(char)32<<(char)32<<(char)124;
    cout<<(char)32<<(char)124<<'\n';
    cout<<(char)32<<(char)32<<(char)47;
    cout<<(char)32<<(char)47<<(char)32;
    cout<<(char)124<<(char)49<<(char)124;
    cout<<(char)32<<(char)32<<(char)32;
    cout<<(char)32<<(char)32<<(char)32;
    cout<<(char)32<<(char)32<<(char)47;
    cout<<(char)50<<(char)124<<'\n';
    cout<<(char)32<<(char)47<<(char)32;
    cout<<(char)47<<(char)32<<(char)32;
    cout<<(char)124<<(char)57<<(char)124;
    cout<<(char)32<<(char)32<<(char)32;
    cout<<(char)84<<(char)79<<(char)32;
    cout<<(char)32<<(char)47<<(char)48;
    cout<<(char)47<<(char)32<<'\n';
    cout<<(char)47<<(char)32<<(char)47;
    cout<<(char)95<<(char)95<<(char)95;
    cout<<(char)124<<(char)53<<(char)124;
    cout<<(char)95<<(char)95<<(char)32;
    cout<<(char)32<<(char)32<<(char)32;
    cout<<(char)47<<(char)48<<(char)47;
    cout<<(char)32<<(char)32<<'\n';
    cout<<(char)124<<(char)95<<(char)95;
    cout<<(char)95<<(char)95<<(char)95;
    cout<<(char)124<<(char)50<<(char)124;
    cout<<(char)95<<(char)95<<(char)124;
    cout<<(char)32<<(char)32<<(char)47;
    cout<<(char)49<<(char)47<<(char)32;
    cout<<(char)32<<(char)32<<'\n';
    cout<<(char)32<<(char)32<<(char)32;
    cout<<(char)32<<(char)32<<(char)32;
    cout<<(char)124<<(char)32<<(char)124;
    cout<<(char)32<<(char)32<<(char)32;
    cout<<(char)32<<(char)47<<(char)32;
    cout<<(char)47<<(char)32<<(char)32;
    cout<<(char)32<<(char)32<<'\n';
    cout<<(char)32<<(char)32<<(char)32;
    cout<<(char)32<<(char)32<<(char)32;
    cout<<(char)124<<(char)32<<(char)124;
    cout<<(char)32<<(char)32<<(char)32;
    cout<<(char)47<<(char)32<<(char)47;
    cout<<(char)95<<(char)95<<(char)95;
    cout<<(char)95<<(char)32<<'\n';
    cout<<(char)32<<(char)32<<(char)32;
    cout<<(char)32<<(char)32<<(char)32;
    cout<<(char)124<<(char)95<<(char)124;
    cout<<(char)32<<(char)32<<(char)124;
    cout<<(char)95<<(char)95<<(char)95;
    cout<<(char)95<<(char)95<<(char)95;
    cout<<(char)95<<(char)124<<'\n';
    getch();
    return 0;
}  

เอาท์พุต

ป้อนคำอธิบายรูปภาพที่นี่


ผลลัพธ์: 1> c: \ users \ 1 และ 2 คือ 3 \ Documents \ visual studio 2012 \ projects \ consoleapplication1 \ consoleapplication1 \ consoleapplication1.cpp (87): ข้อผิดพลาด C4996: 'getch': ชื่อ POSIX สำหรับรายการนี้เลิกใช้แล้ว ให้ใช้ชื่อที่สอดคล้องกับ ISO C ++ แทน: _getch ดูวิธีใช้ออนไลน์สำหรับรายละเอียด
Hosch250

เยี่ยมมากเมื่อฉันแก้ไขมันแล้ว
Hosch250

@ user2509848 ข้อผิดพลาดคืออะไร
Mukul Kumar

โพสต์ไว้ในความคิดเห็นแรก Visual Studio ต้องการgetchให้เป็น_getchแทน
Hosch250


12

J

สมมาตรแบบหนึ่งซับโดยไม่มีตัวอักษรและตัวเลข

   _<.>.>_ (=(+^:]) ~=(-*-)=~ ([:^+)=) _<.<.>_

เอาท์พุท 42

การคำนวณหลักคือ:

เพดาน (1 + (1 - e ^ 2) ^ 2) = 42


11

JavaScript

รหัส ASCII สำหรับ*ซึ่งสำหรับโปรแกรมเมอร์ส่วนใหญ่ย่อมาจาก "ทุกอย่าง" คือ 42 +!"The End of the Universe"ประเมินว่าเป็น 0

String.prototype.answer = function() { alert(this.charCodeAt(+!"The End of the Universe")); };
'*'.answer();

2
ฉันชอบที่จะคิดว่ามันเป็นKleene ดาว
โม่

คุณสามารถเขียน"The End of the Universe"|0
แปรงสีฟัน

10

PHP

ถาม WolframAlpha นี่คือโค้ดบางส่วนที่ใช้ WolframAlpha API เพื่อดึงผลลัพธ์ของการค้นหาเฉพาะ:

<?php

$searchTerm = "What's the answer to life, universe and everything?";

$url = 'http://api.wolframalpha.com/v2/query?appid=APLTT9-9WG78GYE65&input='.urlencode($searchTerm);
$xml = file_get_contents($url);

$xmlObj = simplexml_load_string($xml);
$plaintext = $xmlObj->xpath('//plaintext')[1];
$answer = preg_replace('/\D/', '', $plaintext);

echo $answer;

เอาท์พุท:

42

สาธิตการทำงาน


1
ไปที่เครือข่ายเมื่อคุณไม่จำเป็นต้องมีความคิดสร้างสรรค์สำหรับฉันโดยเฉพาะอย่างยิ่งเนื่องจากเป็นรูปแบบการต่อต้านแบบทั่วไป
Blacklight Shining
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.