Manière la plus créative d’afficher 42


386

Douglas Adams est né le 11 mars 1952 et est décédé alors qu'il n'avait que 49 ans. En l'honneur de ce merveilleux écrivain, je vous mets au défi d'afficher 42 de la manière la plus créative possible.

Vous pouvez l'imprimer dans le journal, via une méthode compliquée, ou l'afficher sous forme d'art ASCII, ou autre! Il suffit de proposer une méthode créative d’affichage 42.

Parce que c'est un concours de popularité, quelle que soit la réponse ayant obtenu le plus de votes positifs avant le 11 mars, sera déclaré gagnant.

Remarque: ce n'est pas un doublon. La question qui l’indiquait comme étant en double était une question à la traîne de code dont le but était d’écrire du code dans la sortie 42, sans trouver le moyen le plus créatif de l’ afficher .

Gagnant: grovesNL! Avec 813 votes stupéfiants! Félicitations!

Mentions honorables:

M. Lister C 228 Pour l'utilisation intelligente de #define

David Carraher Mathematica 45 Pour la fonction mathématique compliquée et compliquée à atteindre 42

Aschratt Windows Calculator 20 Parce que, bien, c'est la calculatrice Windows Et certainement 1337.

f.rodrigues Python 17 En raison de l'utilisation intelligente de programmes externes. Et MSPaint

Jason C LMGTFY 14 Pour l'utilisation de LMGTFY (Laissez-moi Google pour vous)

Trimsty Python 12 Pour une utilisation intelligente d’un message d’erreur à la sortie 42.

Mukul Kumar C ++ 7 Pour la belle sortie ASCII.

Si vous pensez qu'il y a une autre réponse à mettre sur la liste, merci de la commenter!


6
La vieille question fermée était un code-trolling, c'est-à-dire, tout ce qui ne montre pas 42 à part sembler le faire ou le faire d'une manière vraiment horrible. Celui-ci n’est pas du code, c’est-à-dire que la sortie devrait être vraiment 42 de façon agréable. Par conséquent, ce n'est pas un doublon
Victor Stafusa

2
@DanDascalescu Ce site SE contient de nombreuses questions sans exigences strictes, ce qui permet aux utilisateurs d'exercer une liberté de création dans leurs réponses. Parfois, trop de restrictions peuvent entraver l'expression de la créativité
grovesNL le

9
La question devrait rester à 42 voix.
Zero Fibre

28
Marvin The Robot "Je posterais ma brillante réponse, mais vous voteriez probablement contre. Vous avez raison tout le temps, c'est tellement déprimant."
Reactgular

3
Pouvons-nous avoir 42 favoris?
Milo

Réponses:


843

Double Brainfuck

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

qui sort ...

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

qui sort ...

6*7=42

92
J'ai toujours pensé que quelque chose était fondamentalement faux avec l'univers.
Mfitzp

147
Ça devrait être 6*9=42.
Procuration

17
@ Proxy: C'est vrai, mais parfois ces références sont perdues pour les téléspectateurs, même en dépit du contexte ... ;-)
grovesNL

19
@IsmaelMiguel: C'est tellement la base 10 de vous ...
Dennis

26
J'ai voté toute la question pour que les gens voient cette réponse.
Michael Stern

329

C

Voici un vieux mais goodie ...

#include <stdio.h>

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

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

Ce programme contient 42 caractères ASCII différents.


15
c'est génial
ASKASK

41
J'aime utiliser #define pour que les calculs soient "corrects" ^^. Vous êtes une frénésie.
Olivier Dulac

35
@mikhailcazi: Le préprocesseur remplacera ces constantes littéralement, donc six*ninedevient ce 1+5*8+1qui est 42. M. Lister bien fait.
Bodo

7
@ canaaerus Holy shit, c'est du génie. Bravo Monsieur Lister!
Mikhailcazi

4
@mikhailcazi #definefonctionne en C ++ exactement de la même manière qu'en C.
M. Lister le

137

Brainfuck

J'ai mis du temps à y arriver, mais j'aime bien le résultat:

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

Une fois exécuté, il imprimera 42, bien sûr.


6
Je ne vais même pas essayer (de battre ou de comprendre) ... Cela me rappelle beaucoup d'entrées que j'ai vues pour le Concours international de code C obscurci.
Isiah Meadows

64
Je dois admettre que la police de caractères du code
indiquant

15
J'aimerais qu'ils écrivent le noyau Linux dans brainfuck.
devnull

10
Malheureusement, vous avez été surpassé par GrovesNL .
Blacklight Shining

6
Je suis d'accord. Leur police ne semble pas aussi belle que la mienne, mais la sortie imbriquée est une idée vraiment géniale. De plus, leur code a plus de sens que le mien. J'ai d'abord conçu la police sous forme d'art ascii, puis je me suis servie du code pour l'adapter au nombre de 220 caractères de l'art ascii. Mon code contient donc beaucoup d'éléments inutiles.
Donarsson

133

JavaScript:

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

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

La sortie est:

42

Pas mal hein? :)

Pour les personnes qui ne comprennent pas, il évalue en réalité les éléments suivants:

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


17
Je code JavaScript depuis des années, mais je ne sais pas du tout quel visage il
Songo

5
@CarlWitthoft Comment ça marche ? Est - ce _est un nom de variable valide dans JavaScript - et ainsi est - __, ___, ____, ________.
Brosse à dents le

3
Merci beaucoup. Je vais classer ces informations (dangereuses :-)) pour une utilisation ultérieure.
Carl Witthoft

2
Qui a dit que les programmeurs ne sont pas créatifs!
Jonathan

1
En tant que personne qui écrit beaucoup de JavaScript tous les jours ... bravo, vous m'avez vraiment mal comprise. J'aurais volontiers passé devant elle et assumé quelques esolang.
George Reith

76

C, style des douze jours de Noël

Nouvelle version:

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

Sortie:

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

À propos, consultez également ma réponse text-to-speech .


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

La sortie est:

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

Espacement alternatif, si vous vous sentez collant:

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

Le programme est un seul énoncé récursif. Je l'ai fait dans le style de mon programme C obscurci préféré, Twelve Days of Christmas (compiler, préparer l'esprit à souffler, à courir).


COMMENT

De plus, comme cela semble être un endroit comme un autre, voici un guide décrivant comment réaliser ce type de programme. Ce guide utilise la version originale ci-dessus à titre d'exemple. Mis à part le premier bit avec les lettres majuscules, ce sont des étapes générales:

INITIAL: Tout d’abord, j’ai commencé par créer les lettres majuscules:

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

J'ai ensuite fait une liste numérotée des modèles uniques dans chaque ligne de caractères de 5 colonnes:

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

Ainsi, chacune des 5 lignes de pixels de texte devient une série de 9 chiffres:

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

Pour obscurcir (et faciliter la programmation), nous ajoutons le caractère '#' aux nombres. Dans le programme ci-dessous, se patternstrouve le tableau de motifs de pixels et linesle tableau obscurci de codes de motifs pour chaque ligne, se terminant par un «x». Pour un obscurcissement supplémentaire, nous définissons "sur" les pixels dans patternsun caractère qui n'est pas un espace; cela nous permet de mettre plus de texte trompeur dans 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;
  }
}

ÉTAPE 1: La prochaine étape implique quelques tâches:

  • Supprimez toutes les boucles et utilisez la récursivité.
  • Remplacez toutes les fonctions (sauf principale) par le formulaire int function (int, int)et utilisez les mêmes noms de paramètres pour chacune d’elles. Les raisons deviendront claires plus tard.
  • Passez mainau formulaire int main (int, int, int)et nommez les deux derniers paramètres de la même manière que les noms de paramètres de votre fonction.
  • Remplacez toutes les références aux constantes de chaîne par les chaînes elles-mêmes; et utilisez chaque chaîne une seule fois si possible.
  • L'inclusion peut être supprimée; c'est inutile pour int putchar (int).

Nous pouvons également tirer parti de la fonction C étrange où a[b]équivaut b[a]à obscurcir davantage.

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

ÉTAPE 2: Utilisez ensuite les opérateurs ?:et ,pour transformer chaque fonction en une seule returninstruction. Je l’illustre séparément de ce qui précède, car c’est là que les choses commencent à devenir confuses. Rappelez-vous que putchar()renvoie un int, et ?:prime sur ,:

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

ÉTAPE 3: Ok. La prochaine étape est un grand. Toutes les fonctions sont maintenant une seule déclaration de la même forme. Nous pouvons maintenant les combiner tous en une seule fonction, en les identifiant par un numéro - transformant ainsi l’ensemble du programme en une seule fonction récursive. Notez que le premier paramètre à mainsera 1 lorsque le programme sera exécuté sans arguments, ce qui devrait donc être notre état initial.

En outre, étant donné que notre paramètre cà mainnotre variable d'état, nous savons que sa valeur en tout temps, et nous pouvons obscurcir un peu plus loin en remplaçant des constantes entières avec leurs valeurs en termes de c(par exemple, quand on sait cest 2, on peut remplacer 5 avec c+3). D'autres petites obscurcissements peuvent aussi être faits (par exemple, j'ai remplacé '#'par 35et 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));
  }
}

ÉTAPE 4: Enfin, supprimez le switchbloc en utilisant une série d' ?:opérateurs. Nous pouvons également supprimer les intdéclarations, car C les utilisera par défaut, ainsi que le returnlui - même (qui générera un avertissement au pire). Après cela, notre programme est une fonction unique, récursive avec une instruction. Assez cool, non?

Edit: j'ai remplacé putchar()par un mainet en c==4dessous; parce que je viens d'y penser à la dernière minute:

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

Si vous voulez ajouter un peu de talent, vous pouvez utiliser des numéros plus intéressants cet même baser les vérifications sur d'autres numéros (par exemple, pour le c==2cas, il zest ignoré et disponible, de sorte qu'au lieu d'appeler, main(2,z,_)vous pouvez appeler main(-97,_,_)et remplacer c==2par c<-z). Sois créatif; les possibilités sont infinies.

FINISH: La dernière étape consiste donc à organiser le texte selon un modèle créatif, et le tour est joué! Vous pouvez ajuster un peu le code pour vous aider à formater (par exemple, j'ai ajouté des données supplémentaires à la fin de la patternschaîne dans le programme posté pour aider à obtenir la longueur de ligne correcte). Les dames ne manqueront pas d’être au top.


Dois-je retirer le guide? J'aime bien le mystère sans ça.
Jason C

J'ai mis à jour la réponse avec une nouvelle version plus courte et affiche les lettres dans la sortie. Le guide est basé sur la version originale (toujours présente). La nouvelle version stocke la sortie sous forme de données RLE; la première longue chaîne est la donnée.
Jason C

2
Je tiens tellement à +1 cette réponse étant donné que vous avez pris le temps d'expliquer le "comment" derrière votre solution, mais il est actuellement à 42 reps, et je ne veux pas gâcher cela. ;)
Adam Parkin

4
@AdamParkin Haha! Eh bien ici, si elle passe à 43, il vous incombe de la réduire.
Jason C


63

Java

(ou C ++, le code est presque similaire)
Utilisez les fonctions String, alors n'oubliez pas d'inclure votre bibliothèque!

PS Je sais que c'est long, mais c'est supposé être créatif, non? Et de toute façon, ce n'est pas un "plus petit octet-gagne".

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

Voici la sortie:

         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 

Imaginez ma misère quand j'ai compté et découvert que "Le restaurant au bout de l'univers" avait 41 caractères! :/ Soupir.


2
pourquoi y a-t-il un 'DA' dans la sortie? est-ce intentionnel?
Mhmd

14
@ user689 D M. Douglas A barrages :)
mikhailcazi

9
En fait, 41 est aussi DA en quelque sorte (D est la quatrième lettre, A est le premier). Courage!
vadchen

11
4-1 = 3, ce qui signifie • _ •) (• _ •)> ⌐ ■ - ■ (⌐ ■ _ ■) Half Life 3 confirmé.
Mohd Abdul Mujib

17
Le restaurant au bout de l'univers a 41 caractères + "\ 0": DDD
enterx 23/02/2014

59

Mathematica

Prendre 1

Avec un peu de travail, je devrais être capable de jouer au golf un peu. :)

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

Dans TraditionalForm:

quarante-deux

Essai:

answer[ultimateQuestion[Life,theUniverse,Everything]] 

42


Prendre 2

Note: Les chiffres ont été faits comme suit.

  • "42" a d'abord été imprimé à l'écran en très gros caractères, les axes étant affichés, afin que les coordonnées des points clés puissent être identifiées.
  • Un autre "4" a été tracé une large ligne droite reliant les points clés respectifs. Il a été superposé au "4" précédemment dessiné pour vérifier son exactitude. Le "2" a été dessiné comme une courbe BSpline. Certains des points clés, qui étaient maintenant des points de contrôle, ont dû être mis en place par essais et erreurs pour obtenir les courbes souhaitées.
  • Une troisième coordonnée (toujours zéro) a été ajoutée à la ligne et BSplineCurve pour permettre l’affichage 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]] ]

prendre 2


1
Heureusement , ce n'est pas une question de golf :) semble être une bonne dose de créativité mathématique là - dedans ...
cormullion

1
Merci. Mathematica offre certainement de nombreuses options à explorer.
DavidC

3
Agréable; J'aimerais pouvoir remonter le temps et mettre ce graphique sur geocities.com/42, haha.
Jason C

57

Semble approprié:

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

Sortie:

4
2

Ubuntu 12.04, bureau 64 bits


23
+1 pour ne pas paniquer
Milo

Ce serait un bas-isme, mais echo $(grep -i ... tr -d ' ') | sed 's/ //g'mettrait tout sur une seule ligne. Vous pouvez également utiliser des citations arrières au lieu du $()formulaire, mais il est plus difficile de commenter ici.
Mike Renfro


@ MikeRenfro Comment est-ce un bashishm? $()est spécifié par le standard POSIX .
Nyuszika7h

Correct, je suis évidemment obsolète. La dernière fois que j'ai vérifié (il y a plusieurs années), je pensais que c'était le cas. Peut-être eu tort alors.
Mike Renfro

45

Calculatrice Windows

Multiplier Pi avec 13.37 et ignorer la décimale:P

Quarante-deux


17
+1 parce que les fractions ne sont certainement pas 1337.
Jason C

1
Une calculatrice de programmeur aurait été meilleure mais cette calculatrice n'a pas (tarte)
Mukul Kumar

1
1337 * math.pi / 100
chroman

11
round (1337 * math.pi / 100) <- Un petit changement car les parts sont rondes.
Kevin

41

Python

Je suppose que cela ne fonctionne que sur 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])

Le résultat est d'ouvrir Paint and painting 42 à main libre.

42


1
Je n'ai pas win32api :( Je voulais voir ça ... Encore +1 si: D
Timtech

Je n'utilise pas Windows, je ne peux donc pas l'exécuter. mais ton chemin est génial .
pushpen.paul

3
Je voulais upvoter cela, mais cela a exactement 42 upvotes, ne veulent pas gâcher cela.
Rohcana

39

Java (Swing)

Cela affichera un cadre dessinant la réponse . Il utilise uniquement 42pour les valeurs.

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 pour le bloc "Je viens de passer une tonne de temps à formater-ceci-et-je-ne-sens-vraiment-pas-comme-à-travailler-les-restants", en bas, haha.
Jason C

3
@JasonC C'est exactement ce que je pensais! ; D Demain, je travaillerai sur un programme qui formate le code en art ASCII et je serai riche!
Bob

J'ai commencé à faire cela avec le mien et j'ai vite abandonné. Bon travail.
ChiefTwoPencils

28

Mathematica

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

42

Bien que je pense que c'est de la triche, vraiment, puisque c'est codé en dur. Et pas très créatif, de ma part ... :)


28

Rubis

On sait bien ce que vous obtenez si vous multipliez six par neuf . Cela donne une solution:

puts (6 * 9).to_s(13)

Python

Une variante de la formule auto-référentielle de 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)))

Sortie:

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

2
Malheureusement, comme le souligne votre lien Wikipedia, DNA rejette la première méthode de production de 42: "Je suis peut-être désolant, mais je n'écris pas de blagues en base 13."
LSpice

26

Javascript

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

3
Un autre qui m'a donné un moment WTF jusqu'à ce que je réalise true == 1.
George Reith

12
ALERTE! WEIRD CATERPILLARS ASCII! UTILISEZ EXTREME ATTENTION!
Jason C

Utilisez []au lieu de ""( [] == '')! alert((!![]+-~[])*(!![]+-~[])+[]+(!![]+-~[]))
Brosse à dents

(!-[] === true) && (!~[] === false). Vous pouvez également substituer {}à [].
Brosse à dents

1
Que diriez- (!!{}+!-[]<<-~{})+[]+(!-[]+-~[])vous
Brosse à dents


23

En avant:

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

Que 1 CHARGE génère:

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


21

R

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

Résultat:

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

Sortie:

42


2
+1 pour avoir utilisé une équation linéaire intéressante, bon travail!
recursion.ninja

17

SWI-Prolog, quelqu'un?

?- X.

Sortie:

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

C'est encore plus paresseux que celui de Mathematica qui appelle Wolfram-Alpha, mais hé!


3
Bienvenue chez Code-Golf! N'oubliez pas d'ajouter une explication sur la raison pour laquelle cette réponse est créative!
Justin

3
@Quincunx C'est un oeuf de Pâques dans SWI-Prolog.
svick

15

Shell Linux

Voici quelque chose que j'ai écrit en 1999 et que j'ai utilisé comme signature Usenet à l'époque.

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

Edit: Ha! C'était la 42ème réponse.


15

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

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

Sortie:

 42

2
Je ne comprendrai jamais comment un humain sensé peut écrire une date dans cet ordre. Le fait que vous deviez y mettre un commentaire prouve à quel point ce format est inutile.
Bodo

1
@canaaerus Je viens d'utiliser la date dans un format spécifique pour qu'elle puisse être traitée par un programme 42. J'ai essayé divers moyens lisibles par l'homme, et c'était le plus proche possible pour transformer la date afin d'arriver à la solution.
palerdot

24
@canaaerus Je ne comprendrai jamais comment les Américains peuvent écrire des dates mm/dd/yy. Si vous le dites 04/03/11, je le lirais le 4 mars 2011 - pas le 3 avril.
Brosse à dents

7
@palerdot. Autant que je sache, seuls les Américains d'origine américaine (et occasionnellement les Canadiens) écrivent des dates de cette manière étrange, déroutante et "du milieu".
TRiG

2
@TRiG: Qu'attendez-vous? Outre les scientifiques et les ingénieurs, nous évitons également le système métrique plus intuitif et logique.
ChiefTwoPencils

15

dc

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

Essayer de se multiplier 1+8et 5+1d’obtenir 42. Il semble que cette ignorance de la préséance des opérateurs ait conduit à 42.


Python

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

Sortie: 42


frapper

(Multiplier 6par 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"));}

Sortie: 42

  • Avez-vous remarqué l'utilisation de caractères de retour arrière?
  • Savez-vous en quoi cela aboutit?

Non .. s'il vous plaît expliquer!
Antonio Ragagnin

Les caractères de retour arrière remplissent la chaîne sur une longueur de 42 octets. Donc, d'abord fopen est utilisé pour ouvrir le périphérique nul pour un accès en écriture. Ensuite, fprintf écrit 42 octets sur null et renvoie le nombre d'octets écrits. Enfin, 42 est formaté par la chaîne de formatage "% d" de la fonction printf pour afficher 42. J'aime ça!
CasaDeRobison

12

Brainf ** k

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

Cela dépend-il d'un débordement dans l'interprète?
Cruncher

Oui, on dirait qu'il suppose un débordement à 255. 255/5 = 51 + 1 = 52 qui est un code de caractère pour 4. Je ne pense pas que tous les interprètes le fassent, mais +1
Cruncher

@Cruncher Il a besoin de cellules d'habillage 8 bits. C'est le type le plus commun.
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;
}  

sortie

entrez la description de l'image ici


Sortie: 1> c: \ utilisateurs \ 1 et 2 = 3 \ documents \ visual studio 2012 \ projets \ consoleapplication1 \ consoleapplication1 \ consoleapplication1.cpp (87): erreur C4996: 'getch': le nom POSIX de cet élément est obsolète. À la place, utilisez le nom conforme à ISO C ++: _getch. Voir l'aide en ligne pour plus de détails.
Hosch250

Cool, une fois que je l'ai réparé.
Hosch250

@ user2509848 quelle était l'erreur?
Mukul Kumar le

Posté dans le premier commentaire. Visual Studio voulait getchêtre à la _getchplace.
Hosch250

12

JavaScript

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

Sorties 42.


12

J

Monoligne symétrique sans caractères alphanumériques.

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

Sorties 42.

Le calcul principal est:

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


11

JavaScript

Le code ASCII pour *, qui pour la plupart des programmeurs signifie "tout", est 42. est +!"The End of the Universe"évalué à 0.

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

2
Je préfère penser à cela comme à une étoile Kleene .
Primo

Vous pourriez aussi écrire"The End of the Universe"|0
Brosse à dents

10

PHP

Demandez à WolframAlpha. Voici un code qui utilise l'API WolframAlpha pour récupérer le résultat d'une requête de recherche spécifique:

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

Sortie:

42

Démo de travail


1
Aller au réseau sans y avoir vraiment besoin ne me semble pas très créatif, surtout que c'est un anti-modèle courant.
Blacklight Shining
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.