Найбільш креативний спосіб відображення 42


386

Дуглас Адамс народився 11 березня 1952 року і помер, коли йому було лише 49 років. На честь цього чудового письменника я закликаю вас показати 42 найбільш творчим способом.

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

Оскільки цей конкурс на популярність, будь-яка відповідь, яка отримає найбільше відгуків до 11 березня, буде оголошена переможцем.

Примітка: це не дублікат. Питання, яке було позначене як дублювання, було кодовим запитанням, метою якого було написати код для виводу 42, не знайти найкреативніший спосіб відображення .

Переможець: grovesNL! З приголомшливими 813 голосами! Вітаю!

Почесні згадки:

Містер Лістер C 228 Для розумного використання #define

Девід Каррахер Математика 45 Для складної та складеної математичної функції досягнення 42

Aschratt Windows Calculator 20 Тому що, ну, це калькулятор Windows І, безумовно, 1337.

f.rodrigues Python 17 Через розумне використання зовнішніх програм. І MSPaint

Джейсон C LMGTFY 14 За використання LMGTFY (Дозвольте мені, що для вас)

Trimsty Python 12 Для розумного використання повідомлення про помилку для виводу 42.

Mukul Kumar C ++ 7 Для приємного виходу ASCII.

Якщо ви думаєте, що є ще одна відповідь, яку варто внести до списку, будь ласка, прокоментуйте це!


6
Старе закрите запитання було кодовим тролінгом, тобто все, що не показує 42 поруч із тим, що це роблять чи роблять це по-справжньому жахливо. Цей не кодовий тролінг, тобто результат повинен дійсно бути 42 в хороший спосіб. Отже, це не дублікат.
Віктор Стафуса

2
@DanDascalescu На цьому веб-сайті є багато питань без суворих вимог, що дозволяє користувачам проявляти творчу свободу у своїх відповідях. Іноді занадто багато обмежень можуть перешкоджати прояву творчості
grovesNL

9
Питання має залишатися на 42 голосі.
Нульове волокно

28
Марвін Робот "Я б опублікував свою блискучу відповідь, але ви, мабуть, проголосуєте за це. Бути правильним весь час так гнітюче".
Реаг.

3
Чи можемо ми отримати 42 фаворити?
Міло

Відповіді:


843

Подвійний Brainfuck

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

який виводить ...

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

який виводить ...

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
це приголомшливо
ЗАПИТАТИ

41
Мені подобається використання #define, щоб отримати математику "правильно" ^^. Ти дурний корм.
Олів'є Дулак

35
@mikhailcazi: Препроцесор замінить ці константи буквально, так це six*nineстає 1+5*8+142. Молодці містер Лістер.
BODO

7
@canaaerus Святе лайно, це геній. Браво, пане Лістере!
mikhailcazi

4
@mikhailcazi #defineпрацює на C ++ точно так само, як і в C.
Містер Лістер,

137

Брейнфук

Знадобився час, щоб дістатися, але мені подобається результат:

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

При запуску він, звичайно, надрукує 42.


6
Навіть не збираюся пробувати (бити чи розуміти) ... Це нагадує мені багато записів, які я бачив на Міжнародному конкурсі закордонних кодів C.
Ісія Медоуз

64
Я мушу визнати, що шрифт стилю коду для показу "42" є чудовим ...
WallyWest

15
Я б хотів, щоб вони написали ядро ​​Linux в мозковому мові.
devnull


6
Я згоден. Їх шрифт виглядає не так добре, як мій, але вкладений вихід - це дуже класна ідея. Також їх код має більше сенсу, ніж мій. Я спершу розробив шрифт як ascii art, а потім пограв з кодом, щоб він міг підходити до кількості 220 символів мистецтва Ascii, тому мій код містить багато безглуздих речей.
Донарссон

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
Сонго

5
@CarlWitthoft Як це працює, що _є допустимим ім'ям змінної в JavaScript - і так є __, ___, ____, ________.
Зубна щітка

3
Дуже дякую. Я подам цю (небезпечну :-)) інформацію для подальшого використання.
Карл Віттофт

2
Хто каже, що програмісти не креативні!
Джонатан

1
Як хтось, хто пише багато JavaScript щодня ... молодець, ти насправді на певний час натрапив на мене. Я б із задоволенням проглянув повз це і припустив якийсь езоланг.
Джордж Рейт

76

C, Дванадцять днів стилю Xmas

Нова версія:

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'. Для подальшої обфускації ми визначаємо пікселі "on" у 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, коли програма запускається без аргументів, так що це повинен бути наш початковий стан.

Крім того, оскільки наш параметр cдо main- це наша змінна стан, ми знаємо його значення в усі часи, і ми можемо придумати трохи далі, замінивши цілі константи на їх значення в термінах c(наприклад, коли ми знаємо, що cце 2, ми можемо замінити 5 з c+3). Інші маленькі obfuscations можна зробити теж (наприклад , я замінив '#'з 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, це ваша робота, щоб знизити його.
Джейсон C


63

Java

(або 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 dams :)
mikhailcazi

9
Насправді 41 певним чином є також DA (D - четверта літера, A - перша). Повеселіться!
vadchen

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

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:

forty two

Тестування:

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

take 2


1
На щастя, це не питання гольфу :) Здається, це добре допомагає математичній творчості там ...
cormullion

1
Дякую. Mathematica, безумовно, пропонує безліч варіантів для вивчення.
DavidC

3
Ніцца; хотілося б, щоб я міг повернутися у часі і помістити цю графіку на geocities.com/42, ха-ха.
Джейсон С

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 Як це башішм? $()визначається стандартом POSIX .
nyuszika7h

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

45

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

Множення Пі на 13,37 і ігнорування десяткової:P

Сорок два


17
+1, тому що дробів, безумовно, не 1337.
Джейсон C

1
Калькулятор програміста був би кращим, але в калькуляторі цього немає (пиріг)
Mukul Kumar

1
1337 * math.pi / 100
хроман

11
круглий (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])

Результат - відкриття фарби та малювання 42 як вільної руки.

42


1
У мене немає win32api :( Хотів побачити це ... Ще +1, хоча: D
Timtech

Я не використовую Windows, тому не можу його запустити; але ваш шлях геніальний .
pushpen.paul

3
Мені хотілося подати цю заяву, але в цьому рівно 42 результати, не хочеться це зіпсувати.
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 для блоку "Я просто витратив-за-тону часу-форматування" це-і-я-справді-не відчуваю, як працюю-ліворуч "внизу, ха-ха.
Джейсон C

3
@JasonC Саме так я і подумав! ; D Завтра я працюю над програмою, яка форматує код до мистецтва ASCII, і я буду багатим!
боббел

Я почав це робити зі своїм і швидко відмовився. Хороша робота.
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
На жаль, як вказує ваше посилання на Вікіпедію, ДНК відкидає перший метод отримання 42: "Можливо, мені шкода, але я не пишу жарти в базі 13".
LSpice

26

Javascript

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

3
Ще один, який дав мені момент WTF, поки я не зрозумів true == 1.
Джордж Рейт

12
АЛЕРТ! ВЕЛИКИЙ АСЦІЙ КАТЕРПІЛАР! ВИКОРИСТУЙТЕ ЕКСТРЕМНЕ ​​ОБЕРЕЖНО!
Джейсон 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

R

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

Результат:

42

18

Java

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

1
@canaaerus Я щойно використав дату в певному форматі, щоб вона могла бути оброблена програмою для приїзду 42. Я спробував різні інші читабельні для людини способи, і це було найближче, що я міг перетворити дату, щоб досягти рішення.
палердот

24
@canaaerus Я ніколи не зрозумію, як американці можуть також записувати дати mm/dd/yy. Якщо ви скажете 04/03/11, я прочитав би це 4-го березня 2011 року - не 3-го квітня.
Зубна щітка

7
@palerdot. Наскільки мені відомо, тільки американці-американці (а іноді й канадці) пишуть дати таким дивним, заплутаним, "середнім ендіанським" чином.
TRiG

2
@TRiG: Що ти очікуєш? Ми, окрім тих, хто з нас у науковому та інженерному напрямах, також уникаємо більш інтуїтивної та логічної метричної системи.
ChiefTwoPencils

15

dc

$ 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

  • Ви помітили використання символів зворотного простору?
  • Чи знаєте ви, до чого вони призводять?

Ні .., будь ласка, поясніть!
Антоніо Рагагнін

Символи зворотної області вкладають рядок довжиною 42 байти. Тож спочатку fopen використовується для відкриття нульового пристрою для доступу до запису. Потім fprintf записує 42 байти до нуля, повертаючи числа записаних байтів. Нарешті, що 42 відформатоване рядком формату printf "% d" для відображення 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> с: \ користувачів \ 1 і 2 - 3 \ документи \ візуальна студія 2012 \ проекти \ consoleapplication1 \ consoleapplication1 \ consoleapplication1.cpp (87): помилка C4996: 'getch': POSIX ім'я цього елемента застаріле. Замість цього використовуйте відповідну назву ISO C ++: _getch. Докладні відомості див.
Hosch250

Класно, раз я це виправив.
Hosch250

@ user2509848 яка помилка?
Мукул Кумар

Опублікував це в першому коментарі. Visual Studio хотів getchбути _getchзамість цього.
Hosch250

12

JavaScript

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

Виходи 42.


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

Запитайте ВольфрамАльфа. Ось код, який використовує 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.