Самый креативный способ отображения 42


386

Дуглас Адамс родился 11 марта 1952 года и умер, когда ему было всего 49 лет. В честь этого замечательного писателя, я призываю вас показать 42 самым креативным способом.

Вы можете распечатать его в журнале, используя какой-нибудь замысловатый метод, или отобразить как ASCII-арт, или что-нибудь еще! Просто придумайте креативный метод отображения 42.

Поскольку этот конкурс популярности, какой ответ наберет наибольшее количество голосов к 11 марта, будет объявлен победителем.

Примечание: это не дубликат. Вопрос, который был помечен как дублирующий, был вопросом контроля кода, целью которого было написать код для вывода 42, а не найти наиболее креативный способ его отображения .

Победитель: grovesNL! С поразительными 813 голосами! Congrats!

Похвальные грамоты:

Mr Lister C 228 За умное использование #define

David Carraher Mathematica 45 За сложную и запутанную математическую функцию для достижения 42

Aschratt Windows Calculator 20 Потому что, ну, это Windows Calculator И, безусловно, 1337.

f.rodrigues Python 17 Из-за умного использования внешних программ. И MSPaint

Jason C LMGTFY 14 Для использования LMGTFY (Дайте мне Google That For You)

Trimsty Python 12 Для умного использования сообщения об ошибке для вывода 42.

Mukul Kumar C ++ 7 Для хорошего вывода ASCII.

Если вы считаете, что есть другой ответ, который стоит включить в список, пожалуйста, прокомментируйте его!


6
Старый закрытый вопрос был кодовым троллингом, т. Е. Все, что не показывает 42, кроме того, что кажется, делает это или делает это действительно ужасным образом. Это не код-троллинг, то есть на самом деле должно быть 42 хороших результата. Следовательно, это не дубликат.
Виктор Стафуса

2
@DanDascalescu На этом сайте SE много вопросов без строгих требований, что позволяет пользователям проявлять творческую свободу в своих ответах. Иногда слишком много ограничений могут препятствовать проявлению креативности
grovesNL

9
Вопрос должен остаться при 42 голосах.
Zero Fiber

28
Робин Марвин: «Я бы опубликовал свой блестящий ответ, но вы, вероятно, проголосовали бы за него. Быть правым все время так удручающе».
Reactgular

3
Можем ли мы получить 42 фаворитов?
Майло

Ответы:


843

Двойной мозг

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

какие выводы ...

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

какие выводы ...

6*7=42

92
Я всегда думал, что со вселенной что-то не так.
mfitzp

147
Так и должно быть 6*9=42.
Прокси

17
@Proxy: Да, но иногда эти ссылки теряются для зрителей, даже несмотря на контекст ... ;-)
grovesNL

19
@IsmaelMiguel: Это 10 базовых из вас ...
Деннис

26
Я поставил вопрос целиком, чтобы люди увидели этот ответ.
Майкл Стерн

329

С

Вот старенькая, но вкусная ...

#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, чтобы получить математику "правильно" ^^. Ты хулиган
Оливье Дюлак

35
@mikhailcazi: препроцессор заменит эти константы буквально, так что six*nineстановится 1+5*8+142. Молодец, мистер Листер.
Бодо

7
@canaaerus Святое дерьмо, это гений. Браво, мистер Листер!
mikhailcazi

4
@mikhailcazi #defineработает в C ++ точно так же, как и в C.
Мистер Листер

137

Brainfuck

Потребовалось время, чтобы добраться туда, но мне нравится результат:

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

При запуске он напечатает 42, конечно.


6
Даже не собираюсь пытаться (бить или понимать) ... Это напоминает мне о многих записях, которые я видел в Международном конкурсе кода с запутанным кодом.
Исия Медоуз

64
Я должен признать, что стиль шрифта кода, показывающего "42", великолепен ...
WallyWest

15
Я бы хотел, чтобы они написали ядро ​​Linux на brainfuck.
devnull

10
К сожалению, вы были превзойдены GrovesNL .
Blacklight Shining

6
Я согласен. Их шрифт выглядит не так хорошо, как мой, но вложенный вывод - это действительно крутая идея. Также их код имеет больше смысла, чем мой. Сначала я разработал шрифт как ascii art, а затем поиграл с кодом, чтобы он соответствовал количеству символов в 220 ascii art, поэтому мой код содержит много бессмысленных вещей.
Донарссон

133

JavaScript:

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

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

Выход:

42

Неплохо, а? :)

Для людей, которые не понимают, это фактически оценивает следующее:

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


17
Уже много лет кодирую JavaScript, но понятия не имею, что это такое
лицевая

5
@CarlWitthoft Как это работает, что _является допустимым именем переменной в JavaScript - и так есть __, ___, ____, ________.
Зубная щетка

3
Большое спасибо. Я сохраню эту (опасную :-)) информацию для дальнейшего использования.
Карл Виттофт

2
Кто говорит, что программисты не креативны!
Джонатан

1
Как кто-то, кто пишет много JavaScript ежедневно ... молодец, ты действительно на некоторое время поставил меня в тупик. Я бы с радостью пролистал мимо нее и принял некоторый esolang.
Джордж Райт

76

С, Двенадцать дней рождественского стиля

Новая версия:

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

Программа представляет собой одно рекурсивное утверждение. Я сделал это в стиле моей любимой запутанной программы на Си, « Двенадцать дней Рождества» (собери, подготовь, чтобы взорвать, беги).


КАК

Кроме того, поскольку это место кажется таким же хорошим, как и любое другое, вот руководство, описывающее, как создавать программы такого типа. Это руководство использует оригинальную версию выше в качестве примера. Помимо первого бита с печатными буквами, это общие шаги:

ПЕРВОНАЧАЛЬНО: Во-первых, я начал с печатных букв:

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

Затем я составил нумерованный список уникальных шаблонов в каждой строке символов из 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: Следующий шаг включает в себя несколько задач:

  • Удалите все петли и используйте рекурсию.
  • Измените все функции (кроме основной) на форму 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будет 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()на 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). Будь креативным; возможности безграничны.

ОКОНЧАТЕЛЬНАЯ ИНФОРМАЦИЯ: Последний шаг - это оформить текст в какой-нибудь креативный шаблон, и вуаля! Вы можете немного откорректировать код, чтобы помочь с форматированием (например, я добавил некоторые дополнительные данные в конец patternsстроки в опубликованной программе, чтобы помочь получить правильную длину строки). Дамы наверняка будут все в порядке.


Должен ли я удалить руководство? Мне нравится таинственность без нее.
Джейсон C

Я обновил ответ новой версией, которая короче и печатает буквы в выходных данных. Руководство основано на оригинальной версии (все еще присутствует). Новая версия сохраняет вывод как данные RLE; первая длинная строка - это данные.
Джейсон C

2
Я так хочу +1 к этому ответу, учитывая, что вы нашли время, чтобы объяснить «как» за ваше решение, но в настоящее время оно составляет 42 представителя, и я не хочу это портить. ;)
Адам Паркин

4
@AdamParkin Ха-ха! Что ж, если доходит до 43, то ваша работа - понижать его.
Джейсон С


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

14
@ user689 D ouglas A плотины :)
mikhailcazi

9
Фактически, 41 также является DA в некотором смысле (D - четвертая буква, A - первая). Взбодритесь!
Вадчен

11
4-1 = 3, что означает: • _ •) (• _ •)> ⌐ ■ - ■ (⌐ ■ _ ■) Half Life 3 подтверждено.
Мохд Абдул Муджиб

17
Ресторан в конце Вселенной содержит 41 символ + "\ 0": DDD
enterx

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

1
Благодарю. Mathematica, безусловно, предлагает множество вариантов для изучения.
DavidC

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 за не паникуйте
Майло

Это было бы исламизмом, но echo $(grep -i ... tr -d ' ') | sed 's/ //g'поместил бы все в одну строку. Вы также можете использовать обратные кавычки вместо $()формы, но здесь сложнее добавить комментарий.
Майк Ренфро


@MikeRenfro Как это bashishm? $()определяется стандартом POSIX .
nyuszika7h

Правильно, я явно устарел. В прошлый раз, когда я проверял (много лет назад), я думал, что это было. Возможно, и тогда был неправ.
Майк Ренфро

45

Windows калькулятор

Умножение числа Пи на 13,37 и игнорирование десятичной дроби:P

Сорок два


17
+1, потому что дроби определенно не 1337.
Джейсон С

1
Калькулятор программиста был бы лучше, но у этого калькулятора нет (пирог)
Mukul Kumar

1
1337 * math.pi / 100
цветность

11
round (1337 * math.pi / 100) <- Одно небольшое изменение, так как круговые пироги.
Кевин

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 голоса, не хочу все испортить.
Рохкана

39

Ява (Свинг)

Это отобразит рамку с ответом . Используется только 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 за блок «Я только что потратил тонну времени на форматирование« это и я действительно не чувствую, как будто работаю над остатками »в нижней части, ха - ха.
Джейсон C

3
@JasonC Именно так я и думал! ; D Завтра я поработаю над программой, которая форматирует код в ASCII art, и я буду богат!
bobbel

Я начал делать это с моим и быстро сдался. Хорошая работа.
ChiefTwoPencils

28

Mathematica

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
К сожалению, как указывает ваша ссылка на Википедию, ДНК отвергает первый метод создания 42: «Я могу быть извиняющимся, но я не пишу анекдоты в базе 13».
LSpice

26

Javascript

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

3
Еще один, который дал мне WTF момент, пока я не понял true == 1.
Джордж Райт

12
ALERT! Странные гусеницы 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 нагрузка выводит:

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


21

р

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

17

SWI-Пролог, кто-нибудь?

?- 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
Я никогда не пойму, как любой здравомыслящий человек может написать дату в таком порядке. Тот факт, что вы должны оставить комментарий, доказывает, насколько бесполезен этот формат.
Бодо

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получить 42. Похоже, что незнание приоритета оператора привело к 42.


питон

>>> 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
 _  _  ____
| || ||___ \
| || |_ __) |
|__   _/ __/
   |_||_____|

С

#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 дополняют строку до 42 байтов. Поэтому первый fopen используется для открытия нулевого устройства для доступа к записи. Затем fprintf записывает 42 байта в ноль, возвращая количество записанных байтов. Наконец, 42 форматируется строкой формата "% d" функции printf для отображения 42. Мне это нравится!
CasaDeRobison

12

Brainf ** к

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

Зависит ли это от переполнения в интерпретаторе?
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 в чем была ошибка?
Мукул Кумар

Написал это в первом комментарии. Visual Studio хотел getchбыть _getchвместо этого.
Hosch250


12

J

Симметричный однострочный без буквенно-цифровых символов.

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

Выходы 42.

Основное вычисление:

потолок (1 + (1 - е ^ 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
Я предпочитаю думать об этом как о Клини Стар .
Примо

Вы также можете написать"The End of the Universe"|0
Зубная щетка

10

PHP

Спросите WolframAlpha. Вот некоторый код, который использует API WolframAlpha для получения результата определенного поискового запроса:

<?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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.