最具创意的展示方式42


386

道格拉斯·亚当斯Douglas Adams)出生于1952年3月11日,享年49岁。他为纪念这位出色的作家,以最有创意的方式向您展示42

您可以通过一些复杂的方法将其打印在日志中,或将其显示为ASCII文字或其他任何东西!只是想出一种新颖的显示方式42。

因为这是一场大众竞赛,无论在3月11日之前获得最多投票的答案,都将被宣布为获胜者。

注意:这不是重复项。它被标记为重复的问题是一个代码查询问题,其目标是将代码编写到输出42,而不是找到显示它的最具创造性的方式。

获胜者: grovesNL!拥有惊人的813票!恭喜!

荣誉奖:

Lister C 228 先生对于#define的巧妙使用

David Carraher Mathematica 45对于复杂而复杂的数学函数,可以实现42

Aschratt Windows计算器 20因为它是Windows计算器肯定是1337。

f.rodrigues Python 17因为巧妙地使用了外部程序。和MSPaint

Jason C LMGTFY 14供LMGTFY使用(Let Me Google That For You)

Trimsty Python 12巧妙地使用错误消息来输出42。

Mukul Kumar C ++ 7用于漂亮的ASCII输出。

如果您认为还有另一个值得一提的答案,请发表评论!


6
一个古老的封闭式问题是代码拖曳,即除了看起来确实如此或以一种非常可怕的方式做到这一点之外,没有显示42的任何东西。这不是代码拖曳,即以一种不错的方式,输出实际上应该是42。因此,它不是重复的。
Victor Stafusa 2014年

2
@DanDascalescu这个SE网站有很多问题,没有严格的要求,这使用户可以在答案中发挥创造力。有时太多的限制会阻碍创造力的表达
grovesNL 2014年

9
问题应保持42票不变。
零光纤

28
Marvin The Robot “我会发表我的出色回答,但您可能对此表示反对。一直以来正确的做法令人沮丧。”
Reactgular 2014年

3
我们可以获得42个收藏夹吗?
米洛2014年

Answers:


843

双脑干

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

输出...

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

输出...

6*7=42

92
我一直以为宇宙根本有问题。
mfitzp 2014年

147
应该是6*9=42
代理

17
@Proxy:是的,但是即使有上下文,这些引用有时也会在查看器上丢失... ;-)
grovesNL 2014年

19
@IsmaelMiguel:你们的基数是10 ...
Dennis

26
我赞成整个问题,以便人们看到这个答案。
迈克尔·斯特恩

329

C

这是老歌,但好东西...

#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 2014年

35
@mikhailcazi:预处理程序将按字面意义替换这些常量,因此six*nine变为42。Lister 1+5*8+1先生做得很好。
bodo 2014年

7
@canaaerus天哪,那是天才。太棒了,李斯特先生!
mikhailcazi

4
@mikhailcazi #define在C ++中完全相同的方式工作,如C.
李斯特先生

137

脑干

花了一段时间才能到达那里,但我喜欢这个结果:

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

当然,运行时它将打印42。


6
甚至都不会尝试(击败或理解)...这确实使我想起了我在国际混淆C代码竞赛中看到的很多条目。
伊赛亚·梅多斯

64
我不得不承认,显示“ 42”的代码的字体样式非常漂亮……
WallyWest

15
我希望他们能动脑子写Linux内核。
devnull 2014年

10
不幸的是,您被grovesNL赶超了
Blacklight Shining

6
我同意。它们的字体看起来不像我的字体好,但是嵌套输出是一个很酷的主意。而且,他们的代码比我的代码更有意义。我首先将字体设计为ascii art,然后使用代码使其适应ascii art的220个字符,因此我的代码包含很多毫无意义的内容。
Donarsson 2014年

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
非常感谢。我将把(危险的:-))信息归档以备将来使用。
卡尔·威索夫特

2
谁说程序员没有创造力!
乔纳森(Jonathan)

1
作为每天写很多JavaScript的人……做得很好,您确实让我感到困惑了一段时间。我会很乐意浏览过去并承担一些esolang。
乔治·赖斯2014年

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程序(圣诞节的十二天)的风格实现了这一目标(编译,准备好要被吹走,运行)。


如何

另外,由于这看起来像任何地方一样好,因此这里有一份指南介绍了如何制作此类程序。本指南以上面的原始版本为例。除了带有印刷体字母的第一位,它们是常规步骤:

初始:首先,我开始使用印刷体字母:

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

然后,我在每个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'终止。为了进一步模糊处理,我们将“开”像素定义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)

我们还可以利用奇怪的C功能,该功能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当程序不带任何参数运行时,第一个参数to 将为1,因此应该是我们的初始状态。

另外,由于参数cto 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()mainc==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==2c<-z)。有创造力;可能性是无止境。

完成:然后,最后一步是以某种创造性的方式排列文本,瞧!您可以稍微调整一下代码以帮助格式化(例如,我patterns在发布的程序的字符串末尾添加了一些额外的数据,以帮助正确设置行长)。女士们肯定会全力以赴。


我应该删除指南吗?我有点喜欢没有它的奥秘。
杰森C

我已经用更短的新版本更新了答案,并在输出中打印了字母。该指南基于原始版本(仍然存在)。新版本将输出存储为RLE数据;第一个长字符串是数据。
杰森C

2
考虑到您花了时间解释您的解决方案背后的“方式”,因此我想对此答案+1,但目前为42代表,我不想破坏这一点。;)
Adam Parkin 2014年

4
@AdamParkin哈哈!好吧,如果达到43,则是您的不合格决定。
詹森C


63

爪哇

(或C ++,代码几乎类似)
使用String函数,因此请不要忘记包含您的库!

PS我知道这很长,但是应该很有创意,对吧?无论如何,这不是“最低字节的胜利”。

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 2014年

14
@ user689 D ouglas A dams :)
mikhailcazi14年

9
实际上,41在某种意义上也是DA(D是第四个字母,A是第一个字母)。开心点!
vadchen 2014年

11
4-1 = 3,表示•_•)(•_•)>⌐■-■(⌐■_■)半衰期3已确认。
Mohd Abdul Mujib

17
宇宙尽头的餐厅有41个字符+“ \ 0”:DDD
enterx 2014年

59

Mathematica

拿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添加了第三个坐标(始终为零)以启用3D显示。

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 2014年

1
谢谢。Mathematica当然提供了很多可供探索的选择。
DavidC 2014年

3
不错 希望我能时光倒流并将该图形放到geocities.com/42上,哈哈。
杰森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 2014年

这将是一种bash-ism,但echo $(grep -i ... tr -d ' ') | sed 's/ //g'将其全部放在一条线上。您也可以使用反引号代替$()表格,但这在这里很难注释。
Mike Renfro 2014年


@MikeRenfro这是一个bashishm吗?$()POSIX标准指定。
nyuszika7h 2014年

是的,我显然已经过时了。我上次检查(很多年前)时,以为是。那时可能也错了。
Mike Renfro 2014年


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

结果是将绘画和绘画42 打开为徒手绘画。

42


1
我没有win32api :(想知道...虽然还是+1:D
Timtech

我不使用Windows,所以我不能运行它。但是你的方式很棒
pushpen.paul,2014年

3
我想对此进行投票,但这恰好有42次投票,不想把它搞砸了。
Rohcana 2015年

39

Java(Swing)

这将显示一个画出答案的框架。它仅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是“我花了很多时间格式化,而且我真的感觉不到像剩饭一样的工作”的底部+1,哈哈。
杰森C

3
@JasonC那正是我的想法!; D明天,我将研究一个将代码格式化为ASCII艺术的程序,我会变得很富有!
bobbel 2014年

我开始和我做这个,并很快放弃了。不错的工作。
ChiefTwoPencils 2014年

28

Mathematica

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

42

尽管我认为这确实是作弊,因为它是硬编码的。就我而言,不是很有创意... :)


28

红宝石

众所周知,如果将6乘以9会得到什么。这提供了一种解决方案:

puts (6 * 9).to_s(13)

蟒蛇

特珀(Tupper)自指代公式的一个变体:

# 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
不幸的是,正如您在Wikipedia链接上所指出的那样,DNA拒绝了产生42的第一种方法:“我可能很遗憾,但我没有以13为基数开玩笑。”
LSpice 2014年

26

Java脚本

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

3
另一个给了我一个WTF时刻,直到我意识到true == 1
乔治·瑞斯

12
警报!奇怪的ASCII卡特彼勒!请格外小心!
詹森C

使用[]代替""[] == '')!alert((!![]+-~[])*(!![]+-~[])+[]+(!![]+-~[]))
牙刷

(!-[] === true) && (!~[] === false)。您也可以替代{}[]
牙刷

1
怎么(!!{}+!-[]<<-~{})+[]+(!-[]+-~[])
牙刷


23

向前:

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输出:

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


21

[R

sum(as.numeric(factor(unlist(strsplit(gsub(" |[.]","","D. ADAMS"),"")),levels=LETTERS)))

结果:

42

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 2014年

17

SWI-Prolog,有人吗?

?- X.

输出:

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

这比称呼Mathematica的Wolfram-Alpha更为懒惰,但是,嘿!


3
欢迎来到Code-Golf!不要忘了添加解释为什么这个答案很有创意!
贾斯汀

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 2014年

1
@canaaerus我刚刚使用了一种特定格式的日期,以便可以由程序处理该日期42。我尝试了其他各种人类可读的方式,这是我可以更改日期以得出解决方案的最接近的方式。
palerdot 2014年

24
@canaaerus我永远也不会理解美国人如何将日期写为mm/dd/yy。如果您说的话04/03/11,我会读为2011年3月4日,而不是4月3日。
牙刷

7
@palerdot。据我所知,只有美籍美国人(偶尔是加拿大人)以奇怪,令人困惑的“中端”方式写日期。
TRiG

2
@TRiG:您期望什么?除了科学和工程领域的人以外,我们也避免使用更直观和逻辑的度量系统。
ChiefTwoPencils 2014年

15

直流电

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

试图繁殖1+85+1获得42。似乎是由于运算符优先级的无知导致的42


蟒蛇

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

输出: 42


重击

(乘以69

$ 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

  • 您是否注意到使用退格字符?
  • 你知道那会导致什么吗?

不..请解释!
Antonio Ragagnin 2014年

退格字符将字符串填充为42个字节的长度。因此,第一个fopen用于打开空设备以进行写访问。然后fprintf将42个字节写入null,返回写入的字节数。最后,用printf函数的“%d”格式字符串格式化42以显示42。我喜欢它!
CasaDeRobison

12

Brainf ** k

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

这是否取决于解释器中的溢出?
Cruncher 2014年

是的,看起来它假定溢出到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 2014年

很酷,一旦我修复了它。
Hosch250 2014年

@ user2509848错误是什么?
Mukul Kumar 2014年

张贴在第一条评论。Visual Studio希望getch成为_getch
Hosch250 2014年

12

的JavaScript

window.location = "https://www.google.nl/search?q=the+answer+to+life+the+universe+and+everything";

输出42


12

Ĵ

不带字母数字字符的对称单线。

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

输出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 Star
primo 2014年

您也可以写"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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.