Najbardziej kreatywny sposób wyświetlania 42


386

Douglas Adams urodził się 11 marca 1952 r. I zmarł, gdy miał zaledwie 49 lat. Na cześć tego wspaniałego pisarza wzywam was do pokazania 42 w możliwie najbardziej kreatywny sposób.

Możesz wydrukować go w dzienniku za pomocą skomplikowanej metody lub wyświetlić jako grafikę ASCII lub cokolwiek innego! Po prostu wymyśl kreatywną metodę wyświetlania 42.

Ponieważ ten konkurs popularności, niezależnie od tego, która odpowiedź będzie najbardziej pozytywna do 11 marca, zostanie ogłoszony zwycięzcą.

Uwaga: to nie jest duplikat. Pytanie, które oznaczono jako powielanie, było pytaniem trollującym, którego celem było napisanie kodu na wyjście 42, a nie znalezienie najbardziej kreatywnego sposobu na jego wyświetlenie .

Zwycięzca: govesNL! Z zadziwiającą liczbą 813 głosów! Gratulacje!

Wyróżnienia:

Mr Lister C 228 Za sprytne użycie #define

David Carraher Mathematica 45 Za skomplikowaną i skomplikowaną funkcję matematyczną, aby osiągnąć 42

Aschratt Windows Calculator 20 Ponieważ, cóż, to kalkulator systemu Windows I na pewno 1337.

f.rodrigues Python 17 Ze względu na sprytne użycie programów zewnętrznych. I MSPaint

Jason C LMGTFY 14 Za korzystanie z LMGTFY (Let Me Google That For You)

Trimsty Python 12 Do sprytnego wykorzystania komunikatu o błędzie na wyjściu 42.

Mukul Kumar C ++ 7 Do ładnego wyjścia ASCII.

Jeśli uważasz, że na liście jest inna odpowiedź, którą warto umieścić, skomentuj ją!


6
Stare zamknięte pytanie było trollowaniem kodu, tj. Czymkolwiek, co nie pokazuje 42 oprócz tego, że to robi lub robi to w naprawdę okropny sposób. To nie jest trolling kodu, tzn. Wyjście powinno naprawdę mieć ładnie 42. Dlatego nie jest duplikatem.
Victor Stafusa

2
@DanDascalescu Ta strona SE ma wiele pytań bez ścisłych wymagań, co pozwala użytkownikom na swobodę twórczą w odpowiedziach. Czasami zbyt wiele ograniczeń może utrudniać ekspresję kreatywności
gajeNL

9
Pytanie powinno pozostać przy 42 głosach.
Zero Fibre

28
Marvin The Robot „Chciałbym zamieścić moją genialną odpowiedź, ale prawdopodobnie głosowałabyś na nią z rezygnacją. Cały czas mieć rację jest tak przygnębiająca”.
Reactgular

3
Czy możemy zdobyć 42 ulubionych?
Milo

Odpowiedzi:


843

Double Brainfuck

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

które wyjścia ...

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

które wyjścia ...

6*7=42

92
Zawsze myślałem, że coś jest zasadniczo nie tak z wszechświatem.
mfitzp

147
Powinno być 6*9=42.
Prokurent

17
@Proxy: To prawda, ale czasami odniesienia te giną w
oczach

19
@ IsmaelMiguel: To tak podstawowa liczba 10 ...
Dennis

26
Głosowałem za całym pytaniem, aby ludzie mogli zobaczyć tę odpowiedź.
Michael Stern

329

do

Oto staruszek, ale kochanie ...

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

Ten program zawiera 42 różnych znaków ASCII.


15
to jest niesamowite
ZAPYTAJ

41
Uwielbiam korzystanie z #define, aby matematyka „dobrze” ^^. Jesteś skorupą liści.
Olivier Dulac

35
@mikhailcazi: Preprocesor zastąpi te stałe dosłownie, więc six*ninestaje się, 1+5*8+1co jest 42. Dobrze zrobiony panie Lister.
Bodo

7
@ canaaerus Cholera jasna, to jest geniusz. Brawo, panie Lister!
mikhailcazi

4
@mikhailcazi #definedziała w C ++ dokładnie tak samo, jak w C.
Pan Lister

137

Brainfuck

Zajęło mi to trochę czasu, ale podoba mi się wynik:

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

Po uruchomieniu wydrukuje oczywiście 42.


6
Nawet nie będę próbował (pokonać ani zrozumieć) ... To przypomina mi wiele wpisów, które widziałem na Międzynarodowym Konkursie Obfuscated C Code.
Isiah Meadows

64
Muszę przyznać, że styl czcionki w kodzie pokazującym „42” jest wspaniały ...
WallyWest

15
Szkoda, że ​​nie napisali jądra Linuxa.
devnull

10
Niestety, zostałeś wyprzedzony przez govesNL .
Blacklight Shining

6
Zgadzam się. Ich czcionka nie wygląda tak ładnie jak moja, ale zagnieżdżone wyjście to naprawdę fajny pomysł. Również ich kod ma większy sens niż mój. Najpierw zaprojektowałem czcionkę jako sztukę ascii, a potem bawiłem się kodem, aby dopasować 220 znaków do sztuki ascii, więc mój kod zawiera wiele bezcelowych elementów.
Donarsson

133

JavaScript:

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

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

Dane wyjściowe to:

42

Nieźle, prawda? :)

Dla osób, które nie rozumieją, ocenia to:

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


17
Koduję JavaScript od lat, ale nie mam pojęcia, co to jest facepalm
Songo

5
@CarlWitthoft Jak to działa jest to, że _jest poprawną nazwą zmiennej w JavaScript - i tak jest __, ___, ____, ________.
Szczoteczka do zębów

3
Wielkie dzięki. Wyślę te (niebezpieczne :-)) informacje do przyszłego użytku.
Carl Witthoft

2
Kto powiedział, że programiści nie są kreatywni!
Jonathan

1
Jako ktoś, kto pisze dużo JavaScript codziennie ... dobra robota, naprawdę mnie zaskoczyłeś. Z przyjemnością przejrzałbym go i przyjąłem trochę esolangu.
George Reith,

76

C, dwanaście dni świątecznych stylów

Nowa wersja:

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

Wynik:

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

Przy okazji, sprawdź także moją odpowiedź zamiany tekstu na mowę .


Orginalna wersja:

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

Dane wyjściowe to:

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

Alternatywne odstępy, jeśli czujesz się tandetny:

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

Program jest pojedynczą instrukcją rekurencyjną. Zrobiłem to w stylu mojego ulubionego zaciemnionego programu w historii C, Dwanaście dni Bożego Narodzenia (skompiluj, przygotuj umysł na zachwyt, biegnij).


JAK

Ponadto, ponieważ wydaje się to tak dobre miejsce jak każde, oto przewodnik opisujący, jak zrobić tego typu program. W tym przewodniku użyto oryginalnej wersji powyżej jako przykładu.Oprócz pierwszego bitu z literami blokowymi są to ogólne kroki:

WSTĘP: Najpierw zacząłem od pisania literami:

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

Następnie utworzyłem ponumerowaną listę unikalnych wzorców w każdym wierszu znaków o 5 kolumnach:

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

I tak każdy z 5 pikseli wierszy tekstu staje się ciągiem 9 liczb:

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

W celu zaciemnienia (i łatwości programowania) dodajemy znak „#” do liczb. W poniższym programie patternsjest tablica wzorców pikseli i linesjest zaciemnioną tablicą kodów wzorców dla każdej linii, zakończoną „x”. W celu dalszego zaciemnienia definiujemy piksele „na” patternsjako dowolny znak, który nie jest spacją; pozwala nam to umieścić bardziej mylący tekst w 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;
  }
}

KROK 1: Kolejny krok obejmuje kilka zadań:

  • Usuń wszystkie pętle i użyj rekurencji.
  • Zmień wszystkie funkcje (oprócz main) na formularz int function (int, int)i użyj dla tych samych nazw parametrów. Powody staną się jasne później.
  • Przejdź maindo formularza int main (int, int, int)i nazwij dwa ostatnie parametry tak samo, jak nazwy parametrów funkcji.
  • Zamień wszystkie odniesienia do stałych ciągów na same ciągi; i używaj każdego ciągu tylko raz, jeśli to możliwe.
  • Uwzględnij można usunąć; nie jest to konieczne int putchar (int).

Możemy również skorzystać z dziwnej funkcji C, która a[b]odpowiada b[a]dalszemu zaciemnianiu.

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

KROK 2: Następnie użyj operatorów ?:i ,, aby przekształcić każdą funkcję w pojedynczą returninstrukcję. Ilustruję to oddzielnie od powyższego, ponieważ tutaj zaczyna się mylnie patrzeć. Pamiętaj, że putchar()zwraca an inti ?:ma pierwszeństwo przed ,:

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

KROK 3: Ok. Następny krok jest duży. Wszystkie funkcje są teraz pojedynczymi instrukcjami o tej samej formie. Możemy teraz połączyć je wszystkie w jedną funkcję, identyfikując każdą po numerze - zasadniczo zamieniając cały program w jedną funkcję rekurencyjną. Zauważ, że pierwszy parametr tomain będzie 1, gdy program zostanie uruchomiony bez argumentów, więc powinien to być nasz stan początkowy.

Ponieważ nasz parametr cto mainjest naszą zmienną stanu, zawsze znamy jego wartość i możemy nieco zaciemnić, zastępując stałe liczb całkowitych ich wartościami c(na przykład, gdy wiemy, że cjest to 2, możemy zastąpić 5 z c+3). Inne małe obfuscations można zrobić zbyt (np Wymieniłem '#'z 35a 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));
  }
}

KROK 4: Na koniec usuń switchblok za pomocą szeregu ?:operatorów. Możemy również usunąć intdeklaracje, ponieważ C domyślnie ich użyje, a takżereturn sam (który w najgorszym przypadku wygeneruje ostrzeżenie). Następnie nasz program jest pojedynczą, rekurencyjną funkcją z jedną instrukcją. Całkiem fajnie, prawda?

Edycja: Zamieniłem na putchar()a maini c==4poniżej; bo właśnie o tym pomyślałem w ostatniej chwili:

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

Jeśli chcesz dodać trochę stylu, możesz użyć bardziej interesujących numerów, ca nawet oprzeć kontrole na innych numerach (np. W c==2przypadku zjest ignorowany i dostępny, więc zamiast dzwonić, main(2,z,_)możesz zadzwonić main(-97,_,_)i zastąpić c==2go c<-z). Bądź kreatywny; możliwości są nieskończone.

ZAKOŃCZENIE: Ostatnim krokiem jest ułożenie tekstu w jakimś kreatywnym wzorze i voila! Możesz trochę dostosować kod, aby pomóc w formatowaniu (np. Dodałem dodatkowe dane na końcu patternsłańcucha w opublikowanym programie, aby pomóc w prawidłowej długości linii). Panie na pewno będą na nogach.


Czy powinienem usunąć przewodnik? Bez niej lubię tę tajemnicę.
Jason C

Zaktualizowałem odpowiedź nową wersją, która jest krótsza i drukuje litery na wyjściu. Poradnik oparty jest na oryginalnej wersji (wciąż obecnej). Nowa wersja przechowuje dane wyjściowe jako dane RLE; pierwszy długi ciąg to dane.
Jason C

2
Tak więc chcę dać +1 tej odpowiedzi, ponieważ poświęciłeś trochę czasu na wyjaśnienie „jak” kryje się za twoim rozwiązaniem, ale obecnie jest to 42 powtórzenie i nie chcę tego zepsuć. ;)
Adam Parkin

4
@AdamParkin Haha! Cóż, jeśli osiągnie 43, Twoim zadaniem jest głosowanie za nim.
Jason C


63

Jawa

(lub C ++, kod jest prawie podobny)
Korzystanie z funkcji String, więc nie zapomnij dołączyć swojej biblioteki!

PS Wiem, że jest długa, ale powinna być kreatywna, prawda? Zresztą nie jest to „wygrana w najniższych bajtach”.

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

Oto wynik:

         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 

Wyobraź sobie moją nędzę, gdy policzyłem i odkryłem, że „Restauracja na końcu wszechświata” ma 41 znaków! : / Westchnienie.


2
dlaczego w danych wyjściowych występuje „DA”? czy to celowe?
Mhmd

14
@ user689 D ouglas A dams :)
mikhailcazi

9
W rzeczywistości 41 jest także niejako DA (D jest czwartą literą, A jest pierwszą). Rozchmurz się!
vadchen

11
4-1 = 3, co oznacza: • _ •) (• _ •)> ⌐ ■ - ■ (⌐ ■ _ ■) Half Half 3 potwierdzony.
Mohd Abdul Mujib

17
Restauracja na końcu wszechświata ma 41 znaków + „\ 0”: DDD
enterx

59

Matematyka

Weź 1

Przy odrobinie pracy powinienem być w stanie trochę pograć w golfa. :)

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

W TraditionalForm:

forty two

Testowanie:

answer[ultimateQuestion[Life,theUniverse,Everything]] 

42


Weź 2

Uwaga: Liczby zostały wykonane w następujący sposób.

  • „42” został po raz pierwszy wydrukowany na ekranie bardzo dużą czcionką, wyświetlane osie, aby można było zidentyfikować współrzędne kluczowych punktów.
  • Kolejne „4” narysowano szerokie proste linie łączące odpowiednie kluczowe punkty. Zostało nałożone na poprzednio narysowane „4”, aby sprawdzić dokładność. „2” zostało narysowane jako krzywa BSpline. Niektóre kluczowe punkty, które były teraz punktami kontrolnymi, musiały zostać ustalone na miejscu metodą prób i błędów, aby uzyskać pożądane krzywe.
  • Trzecia współrzędna (zawsze zero) została dodana do linii i BSplineCurve, aby umożliwić wyświetlanie 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
Na szczęście nie jest to pytanie w golfa :) wydaje się, że jest to dobra pomoc matematycznej kreatywności ...
cormullion

1
Dzięki. Mathematica z pewnością oferuje wiele opcji do odkrycia.
DavidC

3
Miły; szkoda, że ​​nie mogę cofnąć się w czasie i umieścić tej grafiki na geocities.com/42, haha.
Jason C

57

Wydaje się właściwe:

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

Wynik:

4
2

Ubuntu 12.04, 64-bitowy komputer stacjonarny


23
+1 za „nie panikuj”
Milo

Byłby to bełkot, ale echo $(grep -i ... tr -d ' ') | sed 's/ //g'położyłby to wszystko na jednej linii. Możesz również użyć cudzysłowów zamiast $()formularza, ale trudniej jest tutaj dodać komentarz.
Mike Renfro


@MikeRenfro Jak to jest bashishm? $()jest określony przez standard POSIX .
nyuszika7h

Zgadza się, oczywiście jestem nieaktualny. Kiedy ostatnio sprawdzałem (wiele lat temu), myślałem, że tak. Mogły się również mylić.
Mike Renfro

45

Kalkulator Windows

Mnożenie Pi przez 13,37 i ignorowanie dziesiętnego:P

Czterdzieści dwa


17
+1, ponieważ ułamki zdecydowanie nie są 1337.
Jason C

1
Kalkulator programisty byłby lepszy, ale ten kalkulator nie ma (kołowego)
Mukul Kumar

1
1337 * Math.PI / 100
chroman

11
round (1337 * math.pi / 100) <- Jedna niewielka zmiana, ponieważ ciasto jest okrągłe.
Kevin

41

Pyton

Myślę, że działa tylko w systemie 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])

Rezultatem jest otwarcie Farby i malowanie 42 jako wolnej ręki.

42


1
Nie mam win32api :( Chciałem to zobaczyć ... Nadal jednak +1: D
Timtech

Nie używam systemu Windows, więc nie mogę go uruchomić; ale twoja droga jest genialna .
pushpen.paul

3
Chciałem to głosować, ale to ma dokładnie 42 głosy, nie chcę tego zepsuć.
Rohcana,

39

Java (Swing)

Spowoduje to wyświetlenie ramki rysującej odpowiedź . Używa tylko 42wartości.

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 za blok „Właśnie spędziłem mnóstwo czasu na formatowaniu tego i naprawdę nie czuję się tak, jakbym pracował nad resztkami” na dole, ha ha.
Jason C

3
@JasonC Tak właśnie myślałem! ; D Jutro będę pracować nad programem, który formatuje kod do grafiki ASCII i będę bogaty!
bobbel

Zacząłem to robić z moim i szybko się poddałem. Dobra robota.
ChiefTwoPencils

28

Matematyka

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

42

chociaż myślę, że to oszustwo, naprawdę, ponieważ jest mocno zakodowane. I mało kreatywny z mojej strony ... :)


28

Rubin

Dobrze wiadomo, co otrzymasz, jeśli pomnożysz sześć przez dziewięć . To daje jedno rozwiązanie:

puts (6 * 9).to_s(13)

Pyton

Wariant samoreferencyjnej formuły Tuppera :

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

Wynik:

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

2
Niestety, jak wskazuje link z Wikipedii, DNA odrzuca pierwszą metodę produkcji 42: „Mogę być przykro, ale nie piszę żartów w bazie 13.”
LSpice

26

JavaScript

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

3
Kolejny, który dał mi chwilę WTF, dopóki się nie zorientowałem true == 1.
George Reith,

12
ALARM! WEIRD ASCII CATERPILLARS! UŻYWAJ EKSTREMALNEJ UWAGI!
Jason C.

Użyj []zamiast ""( [] == '')! alert((!![]+-~[])*(!![]+-~[])+[]+(!![]+-~[]))
Szczoteczka do zębów

(!-[] === true) && (!~[] === false). Można również zastąpić {}za [].
Szczoteczka do zębów

1
Jak o (!!{}+!-[]<<-~{})+[]+(!-[]+-~[])?
Szczoteczka do zębów


23

Naprzód:

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

Że 1 wyjście LOAD:

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


21

R

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

Wynik:

42

18

Jawa

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

Wynik:

42


2
+1 za zastosowanie interesującego równania liniowego, dobra robota!
recursion.ninja

17

SWI-Prolog, ktoś?

?- X.

Wynik:

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

To jest nawet bardziej leniwe niż wzywająca matematyka Wolfram-Alpha, ale hej!


3
Witamy w Code-Golf! Nie zapomnij dodać wyjaśnienia, dlaczego ta odpowiedź jest twórcza!
Justin

3
@Quincunx To pisanka w SWI-Prolog.
svick

15

Powłoka Linux

Oto coś, co napisałem w 1999 roku i użyłem wtedy jako podpisu Usenetu.

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

Edycja: Ha! To była 42 odpowiedź.


15

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

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

Wynik:

 42

2
Nigdy nie zrozumiem, jak każdy rozsądny człowiek może napisać datę w tej kolejności. Fakt, że musisz tam dodać komentarz, dowodzi, jak bezużyteczny jest ten format.
Bodo

1
@ canaaerus Właśnie użyłem daty w określonym formacie, aby mogła zostać przetworzona przez program, aby do niej dotrzeć 42. Wypróbowałem różne inne czytelne dla ludzi sposoby i to było najbliższe, kiedy mogłem zmienić datę, by znaleźć rozwiązanie.
palerdot

24
@ canaaerus Nigdy też nie zrozumiem, jak Amerykanie mogą pisać daty mm/dd/yy. Jeśli powiesz 04/03/11, przeczytałbym go 4 marca 2011 r. - nie 3 kwietnia.
Szczoteczka do zębów

7
@palerdot. O ile mi wiadomo, tylko Amerykanie amerykańscy (i czasami Kanadyjczycy) piszą daty w ten dziwny, mylący sposób z „środkowej klasy”.
TRiG

2
@TRiG: Czego oczekujesz? My, oprócz nas w dziedzinie nauki i inżynierii, unikamy również bardziej intuicyjnego i logicznego systemu metrycznego.
ChiefTwoPencils

15

dc

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

Próbowanie pomnożenia 1+8i 5+1zdobycia 42. Wygląda na to, że doprowadziła do tego nieznajomość pierwszeństwa operatora 42.


Pyton

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

Wynik: 42


grzmotnąć

(Mnożenie 6przez 9)

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

do

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

Wynik: 42

  • Czy zauważyłeś użycie znaków backspace?
  • Czy wiesz, co to skutkuje?

Nie ... proszę wyjaśnić!
Antonio Ragagnin

Znaki cofania dopełniają ciąg do długości 42 bajtów. Więc pierwszy fopen służy do otwarcia zerowego urządzenia w celu uzyskania dostępu do zapisu. Następnie fprintf zapisuje 42 bajty na zero, zwracając liczbę zapisanych bajtów. Wreszcie, 42 jest sformatowany przez ciąg formatu% d funkcji printf, aby wyświetlić 42. Podoba mi się!
CasaDeRobison

12

Brainf ** k

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

Czy to zależy od przepełnienia w tłumaczu?
Cruncher

Tak, wygląda na to, że zakłada przepełnienie do 255. 255/5 = 51 + 1 = 52, co jest kodem znakowym dla 4. Nie sądzę, że wszyscy tłumacze to robią, ale +1
Cruncher

@Cruncher Potrzebuje 8-bitowych komórek do zawijania. Jest to najczęstszy typ.
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;
}  

wynik

wprowadź opis zdjęcia tutaj


Dane wyjściowe: 1> c: \ users \ 1 i 2 to 3 \ dokumenty \ visual studio 2012 \ projects \ consoleapplication1 \ consoleapplication1 \ consoleapplication1.cpp (87): błąd C4996: „getch”: Nazwa POSIX dla tego elementu jest nieaktualna. Zamiast tego użyj nazwy zgodnej z ISO C ++: _getch. Szczegółowe informacje można znaleźć w pomocy online.
Hosch250

Fajnie, kiedy to naprawię.
Hosch250,

@ user2509848 jaki był błąd?
Mukul Kumar

Wysłałem to w pierwszym komentarzu. Zamiast tego chciał getchbyć Visual Studio _getch.
Hosch250

12

JavaScript

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

Wyjścia 42.


12

jot

Symetryczny jednowierszowy bez znaków alfanumerycznych.

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

Wyjścia 42.

Główne obliczenia to:

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


11

JavaScript

Kod ASCII dla *, który dla większości programistów oznacza „wszystko”, ma +!"The End of the Universe"wartość 42. to 0.

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

2
Wolę myśleć o tym jak o Gwiazdce Kleene .
primo

Możesz także napisać"The End of the Universe"|0
Szczoteczka do zębów

10

PHP

Zapytaj WolframAlpha. Oto kod, który używa interfejsu API WolframAlpha do pobrania wyniku określonego zapytania:

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

Wynik:

42

Działające demo


1
Przechodzenie do sieci, kiedy naprawdę nie jest to konieczne, nie wydaje mi się zbyt kreatywne, zwłaszcza, że ​​jest to powszechny anty-wzór.
Blacklight Shining
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.