Il modo più creativo per visualizzare 42


386

Douglas Adams è nato l'11 marzo 1952 e morì quando aveva solo 49 anni. In onore di questo meraviglioso scrittore, ti sfido a mostrarne 42 nel modo più creativo possibile.

Potresti stamparlo nel registro, tramite un metodo contorto, o visualizzarlo come arte ASCII o altro! Basta inventare un metodo creativo per visualizzare 42.

Perché questo è un concorso di popolarità, qualunque sia la risposta con il maggior numero di voti entro l'11 marzo, sarà dichiarato vincitore.

Nota: questo non è un duplicato. La domanda che è stata contrassegnata come duplicazione era una domanda di troll del codice il cui obiettivo era quello di scrivere codice sull'output 42, non trovare il modo più creativo per visualizzarlo .

Vincitore: grovesNL! Con un sorprendente 813 voti! Congratulazioni!

Menzioni d'onore:

Sig. Lister C 228 Per l'uso intelligente di #define

David Carraher Mathematica 45 Per la funzione matematica complicata e contorta per raggiungere 42

Aschratt Windows Calculator 20 Perché, beh, è Windows Calculator E sicuramente 1337.

f.rodrigues Python 17 A causa dell'uso intelligente dell'uso di programmi esterni. E MSPaint

Jason C LMGTFY 14 Per l'uso di LMGTFY (Let Me Google That For You)

Trimsty Python 12 Per l'uso intelligente di un messaggio di errore sull'output 42.

Mukul Kumar C ++ 7 Per la bella uscita ASCII.

Se ritieni che ci sia un'altra risposta che vale la pena inserire nell'elenco, per favore commentala!


6
La vecchia domanda chiusa era un troll del codice, vale a dire, tutto ciò che non mostra oltre a sembrare di farlo o farlo in un modo davvero orribile. Questo non è il troll del codice, ovvero l'output dovrebbe essere davvero 42 in un modo carino. Quindi non è duplicato.
Victor Stafusa,

2
@DanDascalescu Questo sito SE ha molte domande senza requisiti rigorosi, che consente agli utenti di esercitare la libertà creativa nelle loro risposte. A volte troppe restrizioni possono impedire l'espressione della creatività
boschettiNL

9
La domanda dovrebbe rimanere con 42 voti.
Zero Fiber,

28
Marvin The Robot "Pubblicherei la mia brillante risposta, ma probabilmente lo voteresti in giù. Avere ragione in ogni momento è così deprimente."
Reactgular,

3
Possiamo ottenere 42 preferiti?
Milo,

Risposte:


843

Doppio Brainfuck

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

quali uscite ...

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

quali uscite ...

6*7=42

92
Ho sempre pensato che qualcosa fosse fondamentalmente sbagliato nell'universo.
mfitzp,

147
Dovrebbe essere 6*9=42.
Proxy

17
@Proxy: Vero, ma a volte quei riferimenti vanno persi sugli spettatori, nonostante il contesto ... ;-)
grovesNL

19
@IsmaelMiguel: È così base 10 di voi ...
Dennis,

26
Ho votato a favore dell'intera domanda in modo che la gente potesse vedere questa risposta.
Michael Stern,

329

C

Ecco un vecchio ma buono ...

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

Questo programma contiene 42 caratteri ASCII diversi.


15
è fantastico
ASKASK il

41
Adoro l'uso di #define per ottenere la matematica "giusta" ^^. Sei un fannullone.
Olivier Dulac,

35
@mikhailcazi: il preprocessore sostituirà letteralmente quelle costanti, quindi six*ninediventa 1+5*8+142. Ben fatto signor Lister.
bodo,

7
@canaaerus Merda, è geniale. Bravo, signor Lister!
mikhailcazi,

4
@mikhailcazi #definefunziona in C ++ esattamente come in C.
Mr Lister,

137

Brainfuck

Ci è voluto un po 'per arrivarci, ma mi piace il risultato:

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

Quando eseguito, stamperà 42, ovviamente.


6
Nemmeno per provare (battere o capire) ... Questo mi ricorda un sacco di voci che ho visto per il Concorso Internazionale Codice C Offuscato.
Isiah Meadows,

64
Devo ammettere che lo stile del carattere del codice per mostrare "42" è stupendo ...
WallyWest

15
Vorrei che avessero scritto il kernel Linux in brainfuck.
Devnull,

10
Purtroppo, sei stato superato da GroveNL .
Blacklight Shining

6
Sono d'accordo. Il loro carattere non è bello come il mio, ma l'output nidificato è un'idea davvero interessante. Anche il loro codice ha più senso del mio. Ho prima progettato il carattere come arte ASCII e poi ho giocato con il codice per adattarlo al conteggio di 220 caratteri dell'arte ASCII, quindi il mio codice contiene molte cose inutili.
Donarsson,

133

JavaScript:

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

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

L'output è:

42

Non male, eh? :)

Per le persone che non capiscono, in realtà valuta quanto segue:

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


17
Ho codificato JavaScript per anni, ma non ho idea di cosa sia facepalm
Songo,

5
@CarlWitthoft Come funziona è che _è un nome di variabile valido in JavaScript - e così è __, ___, ____, ________.
Spazzolino da denti

3
Grazie molto. Archiverò queste informazioni (pericolose :-)) per un uso futuro.
Carl Witthoft,

2
Chi dice che i programmatori non sono creativi!
Jonathan,

1
Come qualcuno che scrive molto JavaScript ogni giorno ... ben fatto, mi hai davvero sconcertato per un po '. Mi sarei sfogliato allegramente e mi sarei assunto un po 'di esolang.
George Reith,

76

C, dodici giorni di stile natalizio

Nuova versione:

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

Produzione:

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

A proposito, controlla anche la mia risposta vocale .


Versione originale:

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

L'output è:

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

Spaziatura alternativa, se ti senti pacchiano:

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

Il programma è una singola dichiarazione ricorsiva. L'ho realizzato nello stile del mio programma C offuscato preferito di sempre, Dodici giorni di Natale (compilare, preparare la mente da saltare, correre).


COME

Inoltre, poiché questo sembra un posto buono come un altro, ecco una guida che descrive come realizzare questo tipo di programma. Questa guida utilizza la versione originale sopra come esempio. A parte il primo bit con le lettere maiuscole, sono passaggi generali:

INIZIALE: Innanzitutto, ho iniziato creando le lettere maiuscole:

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

Ho quindi creato un elenco numerato dei modelli univoci in ciascuna riga di caratteri a 5 colonne:

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

E così ciascuna delle righe di testo di 5 pixel diventa una serie di 9 numeri:

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

Per offuscamento (e facilità di programmazione) aggiungiamo il carattere '#' ai numeri. Nel programma di seguito, patternsè presente la matrice di pattern di pixel ed linesè la matrice offuscata di codici di pattern per ogni riga, terminata da una "x". Per ulteriore offuscamento definiamo i pixel "on" in patternsqualsiasi carattere che non sia uno spazio; questo ci consente di inserire un testo più fuorviante in 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;
  }
}

PASSAGGIO 1: il passaggio successivo prevede alcune attività:

  • Rimuovere tutti i loop e utilizzare la ricorsione.
  • Modificare tutte le funzioni (tranne principale) nel modulo int function (int, int)e utilizzare gli stessi nomi dei parametri per ciascuno. Le ragioni diventeranno chiare in seguito.
  • Passare mainal modulo int main (int, int, int)e denominare gli ultimi due parametri come i nomi dei parametri delle funzioni.
  • Sostituisci tutti i riferimenti alle costanti di stringa con le stringhe stesse; e usa ogni stringa una volta sola se possibile.
  • L'inclusione può essere rimossa; non è necessario per int putchar (int).

Possiamo anche trarre vantaggio dalla strana caratteristica C in cui a[b]equivale b[a]a offuscare ulteriormente.

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

PASSAGGIO 2: Successivamente, utilizzare gli operatori ?:e ,per trasformare ciascuna funzione in una singola returnistruzione. Sto illustrando questo separatamente da quanto sopra perché è qui che le cose iniziano a diventare confuse da guardare. Ricorda che putchar()restituisce un inte ?:ha la precedenza su ,:

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

PASSAGGIO 3: Ok. Il prossimo passo è grande. Tutte le funzioni sono ora una singola istruzione della stessa forma. Ora possiamo combinarli tutti in un'unica funzione, identificandoli ciascuno con un numero - essenzialmente trasformando l'intero programma in un'unica funzione ricorsiva. Si noti che il primo parametro mainsarà 1 quando il programma viene eseguito senza argomenti, quindi dovrebbe essere il nostro stato iniziale.

Inoltre, poiché il nostro parametro ca mainè la nostra variabile di stato, sappiamo il suo valore in ogni momento, e possiamo nascondere un po 'più sostituendo costanti intere con i loro valori in termini di c(per esempio, quando sappiamo cè 2, possiamo sostituire 5 con c+3). Altre piccole offuscature possono essere fatte anche (ad esempio ho sostituito '#'con 35e 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));
  }
}

PASSAGGIO 4: infine, rimuovere il switchblocco utilizzando una serie di ?:operatori. Possiamo anche rimuovere le intdichiarazioni, dato che C le userà di default, così come la returnstessa (che genererà un avviso nel peggiore dei casi). Dopo questo, il nostro programma è una singola funzione ricorsiva con un'istruzione. Abbastanza bello, vero?

Modifica: ho sostituito putchar()con a maine c==4sotto; perché ci ho pensato all'ultimo minuto:

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

Se vuoi aggiungere un po 'di fascino, puoi usare numeri più interessanti ce persino basare i controlli su altri numeri (ad esempio, il c==2caso, zviene ignorato e disponibile, quindi invece di chiamare main(2,z,_)potresti chiamare main(-97,_,_)e sostituire c==2con c<-z). Essere creativo; le possibilità sono infinite.

FINITURA: Il passaggio finale, quindi, è quello di disporre il testo in uno schema creativo, e voilà! È possibile regolare un po 'il codice per aiutare con la formattazione (ad esempio ho aggiunto alcuni dati extra alla fine della patternsstringa nel programma pubblicato per aiutare a ottenere la lunghezza della linea giusta). Le donne saranno sicuramente tutte d'accordo.


Devo rimuovere la guida? Mi piace il mistero senza di esso.
Jason C,

Ho aggiornato la risposta con una nuova versione più corta e stampa le lettere nell'output. La guida si basa sulla versione originale (ancora presente). La nuova versione memorizza l'output come dati RLE; la prima stringa lunga è i dati.
Jason C,

2
Voglio quindi fare +1 su questa risposta dato che hai impiegato del tempo per spiegare il "come" dietro la tua soluzione, ma è attualmente a 42 rappresentanti e non voglio rovinarlo. ;)
Adam Parkin

4
@AdamParkin Haha! Bene qui, se arriva a 43, il tuo compito è ridimensionarlo.
Jason C


63

Giava

(o C ++, il codice è quasi simile)
Usando le funzioni String, quindi non dimenticare di includere la tua libreria!

PS So che è lungo, ma dovrebbe essere creativo, giusto? E comunque, non è una "vittorie di byte più bassi".

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

Ecco l'output:

         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 

Immagina la mia miseria quando ho contato e scoperto che "The Restaurant at the End of the Universe" aveva 41 personaggi! : / Sospiro.


2
perché c'è un 'DA' nell'output? è intenzionale?
Mhmd,

14
@ user689 D ouglas A dams :)
mikhailcazi,

9
In realtà 41 è anche DA in un certo senso (D è la quarta lettera, A è la prima). Tirati su!
Vadchen,

11
4-1 = 3 che significa, • _ •) (• _ •)> ⌐ ■ - ■ (⌐ ■ _ ■) Half Life 3 confermato.
Mohd Abdul Mujib,

17
The Restaurant at the End of the Universe ha 41 caratteri + "\ 0": DDD
enterx

59

matematica

Prendi 1

Con un po 'di lavoro, dovrei riuscire a giocarci un po'. :)

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

In TraditionalForm:

quarantadue

test:

answer[ultimateQuestion[Life,theUniverse,Everything]] 

42


Prendi 2

Nota: i numeri sono stati fatti come segue.

  • "42" è stato inizialmente stampato sullo schermo in caratteri molto grandi, con gli assi visualizzati, in modo da poter identificare le coordinate dei punti chiave.
  • Un altro "4" è stato disegnato una linea retta che collega i rispettivi punti chiave. È stato sovrapposto al "4" precedentemente disegnato per verificare la precisione. Il "2" è stato disegnato come una curva BSpline. Alcuni dei punti chiave, che ora erano punti di controllo, dovevano essere messi in posizione per tentativi ed errori per ottenere le curve desiderate.
  • Una terza coordinata (sempre zero) è stata aggiunta alla linea e BSplineCurve per abilitare la visualizzazione 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]] ]

prendi 2


1
Fortunatamente non è una domanda sul golf :) sembra essere un buon aiuto per la creatività matematica lì dentro ...
cormullion

1
Grazie. Mathematica offre sicuramente molte opzioni da esplorare.
DavidC,

3
Bello; vorrei poter tornare indietro nel tempo e mettere quella grafica su geocities.com/42, haha.
Jason C,

57

Sembra appropriato:

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

Produzione:

4
2

Ubuntu 12.04, desktop a 64 bit


23
+1 per non farti prendere dal panico
Milo,

Sarebbe un bash-ism, ma echo $(grep -i ... tr -d ' ') | sed 's/ //g'metterebbe tutto su una linea. Puoi anche usare i backquotes invece del $()modulo, ma è più difficile inserire un commento qui.
Mike Renfro,


@MikeRenfro Come è un bashishm? $()è specificato dallo standard POSIX .
nyuszika7h

Esatto, sono ovviamente obsoleto. L'ultima volta che ho controllato (molti anni fa), ho pensato che lo fosse. Anche allora potrebbe essere stato sbagliato.
Mike Renfro,

45

Calcolatrice di Windows

Moltiplicando Pi per 13.37 e ignorando il decimale:P

Quarantadue


17
+1 perché le frazioni non sono sicuramente 1337.
Jason C

1
La calcolatrice di un programmatore sarebbe stata migliore ma quella calcolatrice non ha (torta)
Mukul Kumar

1
1337 * math.pi / 100
chroman

11
round (1337 * math.pi / 100) <- Una piccola modifica poiché le torte sono rotonde.
Kevin,

41

Pitone

Immagino che funzioni solo su 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])

Il risultato è aprire Paint e dipingere 42 come mano libera.

42


1
Non ho win32api :( Volevo vederlo ... Ancora +1 però: D
Timtech,

Non uso Windows, quindi non posso eseguirlo; ma la tua strada è geniale .
pushpen.paul

3
Volevo votare questo, ma questo ha esattamente 42 voti, non voglio rovinare tutto.
Rohcana,

39

Java (altalena)

Verrà visualizzato un riquadro che disegna la risposta . Utilizza solo 42per i valori.

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 per il blocco "Ho appena trascorso una tonnellata di tempo-formattazione-questo-e-io-davvero-non-mi-senti-come-lavorare-gli-avanzi" in basso, haha.
Jason C,

3
@JasonC Questo è esattamente quello che ho pensato! ; D Domani lavorerò su un programma che formatta il codice per l'arte ASCII e sarò ricco!
Bob

Ho iniziato a fare questo con il mio e mi sono arreso rapidamente. Bel lavoro.
ChiefTwoPencils,

28

matematica

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

42

anche se penso che sia un imbroglio, davvero, dato che è hard-coded. E non molto creativo, da parte mia ... :)


28

Rubino

È ben noto cosa ottieni se moltiplichi sei per nove . Questo dà una soluzione:

puts (6 * 9).to_s(13)

Pitone

Una variante della formula autoreferenziale di 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)))

Produzione:

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

2
Sfortunatamente, come sottolinea il tuo link di Wikipedia, il DNA rifiuta il primo metodo di produzione 42: "Potrei essere un caso dispiaciuto, ma non scrivo battute nella base 13."
LSpice

26

Javascript

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

3
Un altro che mi ha dato un momento WTF fino a quando me ne sono reso conto true == 1.
George Reith,

12
METTERE IN GUARDIA! CATERPILLARI DI WEIRD ASCII! USARE ESTREMA ATTENZIONE!
Jason C,

Usa []invece di ""( [] == '')! alert((!![]+-~[])*(!![]+-~[])+[]+(!![]+-~[]))
Spazzolino

(!-[] === true) && (!~[] === false). È anche possibile sostituire {}per [].
Spazzolino

1
Che ne dici (!!{}+!-[]<<-~{})+[]+(!-[]+-~[])?
Spazzolino


23

Via:

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

Quel 1 LOAD genera:

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


21

R

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

Risultato:

42

18

Giava

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

Produzione:

42


2
+1 per l'utilizzo di un'equazione lineare interessante, buon lavoro!
recursion.ninja,

17

SWI-Prolog, qualcuno?

?- X.

Produzione:

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

Questo è persino più pigro di quello che chiama Mathematica-Wolfram-Alpha, ma ehi!


3
Benvenuti in Code-Golf! Non dimenticare di aggiungere una spiegazione sul perché questa risposta è creativa!
Giustino,

3
@Quincunx È un uovo di Pasqua in SWI-Prolog.
svick,

15

Shell Linux

Ecco qualcosa che ho scritto nel 1999 e usato come mia firma Usenet allora.

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

Modifica: Ah! Questa era la 42a risposta.


15

Versione 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 */

Versione 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 */

Produzione:

 42

2
Non capirò mai come qualsiasi umano sano di mente possa scrivere una data in questo ordine. Il fatto che tu debba inserire un commento lì, dimostra quanto sia inutile questo formato.
bodo,

1
@canaaerus Ho appena usato la data in un formato specifico in modo che possa essere elaborata da un programma per arrivare a 42. Ho provato vari altri modi leggibili dall'uomo, e questo è stato il più vicino che ho potuto trasformare la data per arrivare alla soluzione.
Palerdot,

24
@canaaerus Non capirò mai come neanche gli americani possano scrivere le date mm/dd/yy. Se dici 04/03/11, l'ho letto come il 4 marzo 2011, non il 3 aprile.
Spazzolino da denti

7
@palerdot. Per quanto ne so, solo gli americani americani (e occasionalmente i canadesi) scrivono le date in quel modo strano, confuso, di "medio-endiano".
TRiG

2
@TRiG: cosa ti aspetti? Oltre a quelli di noi nel campo scientifico e ingegneristico, evitiamo anche il sistema metrico più intuitivo e logico.
ChiefTwoPencils,

15

dc

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

Cercando di moltiplicarsi 1+8e 5+1di ottenere 42. Sembra che l'ignoranza della precedenza dell'operatore abbia portato a 42.


Pitone

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

Produzione: 42


bash

(Moltiplicando 6per 9)

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

C

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

Produzione: 42

  • Hai notato l'uso di caratteri backspace?
  • Sai cosa danno questi risultati?

No ... per favore, spiega!
Antonio Ragagnin,

I caratteri backspace inseriscono la stringa in una lunghezza di 42 byte. Quindi il primo fopen viene utilizzato per aprire il dispositivo null per l'accesso in scrittura. Quindi fprintf scrive 42 byte su null, restituendo il numero di byte scritti. Alla fine quel 42 è formattato dalla stringa di formato "% d" della funzione printf per visualizzare 42. Mi piace!
CasaDeRobison,

12

Brainf ** k

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

Dipende da un overflow nell'interprete?
Cruncher,

Sì, sembra che presupponga un overflow a 255. 255/5 = 51 + 1 = 52 che è il codice carattere per 4. Non credo che tutti gli interpreti lo facciano, ma +1
Cruncher

@Cruncher Ha bisogno di celle da 8 bit. Questo è il tipo più comune.
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;
}  

produzione

inserisci qui la descrizione dell'immagine


Output: 1> c: \ utenti \ 1 e 2 è 3 \ documenti \ visual studio 2012 \ progetti \ consoleapplication1 \ consoleapplication1 \ consoleapplication1.cpp (87): errore C4996: 'getch': il nome POSIX per questo articolo è obsoleto. Utilizzare invece il nome conforme ISO C ++: _getch. Vedere la guida in linea per i dettagli.
Hosch250,

Bene, una volta che l'ho risolto.
Hosch250,

@ user2509848 qual è stato l'errore?
Mukul Kumar,

Inserito nel primo commento. Visual Studio voleva getchessere _getchinvece.
Hosch250,

12

JavaScript

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

Uscite 42.


12

J

One-liner simmetrico senza caratteri alfanumerici.

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

Uscite 42.

Il calcolo principale è:

soffitto (1 + (1 - e ^ 2) ^ 2) = 42


11

JavaScript

Il codice ASCII per *, che per la maggior parte dei programmatori sta per "tutto", è 42. +!"The End of the Universe"restituisce 0.

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

2
Preferisco pensarlo come una stella Kleene .
primo

Potresti anche scrivere"The End of the Universe"|0
Toothbrush,

10

PHP

Chiedi a WolframAlpha. Ecco un codice che utilizza l'API WolframAlpha per recuperare il risultato di una specifica query di ricerca:

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

Produzione:

42

Demo funzionante


1
Andare in rete quando davvero non è necessario non mi sembra molto creativo, soprattutto perché è un anti-pattern comune.
Blacklight Shining
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.