Silnia w haiku!


60

Zadanie

Utwórz program, który oblicza silnię liczby bez użycia wbudowanych funkcji silni. Łatwo? Problem polega na tym, że musisz napisać cały program (łącznie z testowaniem go) w formie haiku .

Za mało pracy
Możesz użyć tyle haikusów, ile potrzebujesz, ale po wymowie muszą być zgodne z formatem sylaby 5-7-5.

Punktacja

To , więc aby wygrać, musisz uzyskać jak najwięcej pozytywnych opinii. Twój program musi składać się z co najmniej jednego pełnego haiku, a wszystkie haikusy muszą być kompletne.

Podczas czytania kodu, pierwszy wiersz każdego haiku będzie miał 5 sylab, drugi będzie miał 7, a trzeci będzie miał 5.


5
Brzmi jak idealne dopasowanie do czegoś napisanego w Shakespeare: shakespearelang.sourceforge.net/report/shakespeare/…
Denis de Bernardy

2
Wydaje się, że większość odpowiedzi ignoruje „w tym testowanie ”.
Anko

5
Podoba mi się, jak link do strony, która poprawnie mówi, że ważną rzeczą dla Haiku są (a) kiru i (b) referencje sezonowe, a następnie pytam tylko o mniej więcej opcjonalną część liczenia mora (lub sylaby w języku, który nie to naprawdę ma mora . 😸
Christopher Creutzig

1
Zgadzam się z @ChristopherCreutzig - byłoby znacznie ciekawiej, gdybyśmy musieli zapewnić sezonowe referencje i cięcia. Niestety często pomijamy te podstawy haiku. Wydaje mi się, że theninterpunkcja może pomóc w cięciu. Dla Kigo , nie jestem pewien ...
Darren Stone

Nie jestem ekspertem od Haikusa, ale z pewnością oczekuje się pewnej lirycznej jakości. Do tej pory widzę tylko jedną odpowiedź, która ma jakąkolwiek.
SebastianH

Odpowiedzi:


54

Pogawędka

(oceniaj w obszarze roboczym; otwiera okno dialogowe, prosi o numer i drukuje wynik na standardowym wyjściu):

"in" "this" 'poem,' "you" "must"
"pronounce" "characters" "like" "these:"
"return(^)," "and" "times(*);" "please".

"but" 'never' "in" "here"
"tell" "anyone" "about" "those"
"few" "parentheses".

"otherwise" "these" "words" 
"are" "stupid" "and" "this" "coded" 
"rhyme" "is" "wasted" Time.

"let" "us" "now" "begin" 
"by" "defining," "in" Object
"and" compile: "the" "rhyme:"

'fac: "with" arg"ument"
"to" "compare" arg <"against" 2 ">"
"and" ifTrue: [ ^"return"

"["1] "or" ifFalse: "then"
["return"^ arg *"times" "the" "result"
"of" ("my"self ")getting"

"the" fac:"torial"
"of" "the" "number" arg "minus"-
1 "[(yes," "its" "easy")]'.

("Let" "me" "my"self "ask"
"for" "a" "number," "to" "compute"
"the" fac:"torial"

("by" "opening" "a" 
"nice" Dialog "which" "sends" "a"
request: "asking" "for"

'the Number to use' 
"(which" "is" "(" "treated" ) asNumber)
"then" print "the" "result".

Starałem się przynieść refleksję („w tym wierszu”) i kigo. Uwzględniono również niektóre elementy rymów w stylu zachodnim (proszę-> te, czas-> rym); nie będąc jednak ojczystym językiem japońskim ani angielskim, nie wybaczaj żadnych szczegółów stylistycznych ;-)


BTW: Aby spróbować w Squeak / Pharo, zamień „Dialog” na „FillInTheBlankMorph” i „print” na „inspect”.
blabla999,

40

Haskell

fact :: Int -> Int          -- fact is Int to Int
fact x = product (range x)  -- fact x is product range x
range x = [1..x]            -- range x is 1 [pause] x

Czas edukacji w Haskell:

  • range xFunkcja tworzy listę liczb całkowitych od 1 do wartości x.
  • fact xFunkcja mnoży wszystkie wartości na liście range xrazem, aby obliczyć wynik.
  • Pierwszy wiersz mówi, że factfunkcja przyjmuje liczbę całkowitą i zwraca liczbę całkowitą.

3
Tracisz coś nieco @JanDvorak?
jwg

2
Forma nad funkcją. Gdyby to było prawdziwe programowanie, z pewnością uwzględniałbym przypadek przepełnienia :)
danmcardle

7
range x is 1 to xjest 6 sylab
David Z

9
@David Przeczytałem to jako „zasięg x to jeden [dramatyczna pauza] x”.
Anko

3
Gorąco polecam Learn You a Haskell, jeśli chcesz nauczyć się Haskell.
danmcardle

40

Java - 2 haikus

protected static
        int factorial(int n) {
    if (n == 0) {
        return n + 1;
    } return factorial(n
            - 1) * n;}

Nawet jeśli pytanie nie jest , często łapię się na graniu w odpowiedź. W tym przypadku grałem w golfa w liczbie haiku.

Mówię to tak:

chronione statyczne
int silnia int n n,
jeśli n wynosi zero

zwróć n plus jeden
czynnik zwrócony n
minus jeden raz n


Program testowy:

class Factorial {                                    // class Factorial
    public static void main(String[]                 // public static void main string
            command_line_run_args) {                 // command line run args

        int i = 0;                                   // int i is zero
        while (7 != 0)                               // while seven is not zero
            System.out.                              // System dot out dot

                    println(i + "!"                  // print line i plus not
                            + " = " + factorial(     // plus is plus factorial
                            i += 1));}               // i plus equals 1

    protected static
            int factorial(int n) {
        if (n == 0) {
            return n + 1;
        } return factorial(n
                - 1) * n;}}

Zauważ, że ten program zaczyna wypisywać 0s szybko; jest to wynikiem przepełnienia. Możesz łatwo uzyskać większe prawidłowe liczby, zmieniając każdy intna long.

Standardowe wymowy dla System.out.printlni public static void main(String[] args)są odzwierciedlone w programie.


2
Przepraszam za brak opinii; Chcę ulepszyć rozwiązanie Haskell
John Dvorak

26

APL

factorial←{×/⍳⍵}

Czynnikowy jest—
produktem pochodzenia naturalnego
aż do omega


1
+1 dla <- funkcjonującego jak kireji, bez względu na to, czy wiedziałeś, co robisz, czy nie.
Jonathan Van Matre

@JathanathanVanMatre LOL nawet nie ma pojęcia! Użyłem słownika, aby policzyć sylaby (nie native speakera). Dodałem myślnik, aby pokazać kireji.
Tobia,

2
+1 za bycie jednocześnie prostym i eufonicznym w języku angielskim.
imallett

Prosty, ale piękny.
FUZxxl,

1
Zapisz trzy bajty: factorial←×/⍳„do wejścia”.
Adám

17

Szekspir

The Products of Love:
A haiku tragedy with
mathy undertones.

Romeo, a man.
Juliet, a maiden fair.
Friar John, a monk.

Act I: A Cycle.
Scene I: Pertinent Values.
[Enter Romeo]

[Enter Friar John]
Romeo: Listen to thy
heart. Thou art thyself.

Friar John: Thou art
as forthright as a songbird.
[Exit Friar John]

[Enter Juliet]
Romeo: Thou art as fair
as a violet.

Scene II: Questioning
Themselves. [Exit Juliet]
[Enter Friar John]

Friar John: Art thou
as just as the sum of me
and a nobleman?

Romeo: If so,
let us proceed to scene III.
[Exit Friar John]

[Enter Juliet]
Romeo: Thou art as good
as the product of

thyself and myself.
Juliet: Thou art as fierce
as the sum of an

eagle and thyself.
We must return to scene II.
Scene III: A Lengthy

Title for a Brief
Dénouement; Or, The Last Word.
[Exit Friar John]

[Enter Juliet]
Romeo: Open your heart.
[Exit Romeo]

Przypadek testowy (wyobrażony):

Pomimo swojej długości program ten przyjmuje tylko jedną liczbę całkowitą jako dane wejściowe i zapewnia jedną liczbę całkowitą jako dane wyjściowe. Więc:

6 ↵ 720
7 ↵ 5040
0 ↵ 1    1 ↵ 1

(„Sześć, siedem dwadzieścia. / Siedem, pięć tysięcy czterdzieści. / Zero, jeden. Jeden, jeden.”)


5
Nie jestem pewien, co sądzę o tym, że mogę powiedzieć, że jest to legalny kod.
randomra

12

Python 2, 4 Haikus

Kompletny program Python 2 haifac.py. Uruchom jakopython haifac.py <n>

#run this full program
import operator as\
op; import sys#tem

#please provide an arg
n = sys.argv[1]
def haifac (n):

    if n < 1:
        return 1#to me at once
    else:#do something else

        return op.mul(
            n, haifac(n - 1))
print haifac(int(n))

Wymowa:

uruchom ten pełny
operator importu programu jako
system importu operacyjnego

proszę podać argument
n równy sys arg v 1
zdefiniować hai fac n

jeśli n mniej niż 1
zwróć mi od razu 1
, zrób coś innego

return op dot mul
n hai fac n minus 1
print hai fac int n


1
Lubię używać tego, #to me at onceżeby miernik działał ...
Floris

2
A ja na początku podoba mi się ucieczka nowej linii :)
Johannes H.

2
Myślę, że używanie komentarzy jest jak oszustwo.
Ypnypn

9

GolfScript, 2 Haikus

),{0>},{,,*}*

Czytaj jako haiku, wyliczając każde naciśnięcie klawisza:

#close parenthesis
#comma open-brace zero
#greater-than close-brace

#comma open-brace
#comma comma asterisk
#close-brace asterisk

W przypadku testowym (5 haikus):

[1 2 3]4+          #generate the array [1 2 3 4]
{                  #start creating block
),{0>},{,,*}*      #actual factorial code
}%                 #close block and map across array (so that we should have [1! 2! 3! 4!])
[1 2 6]2.3**12++=  #generate the array [1 2 6 24] and check for equality

Czytaj jako haiku:

#open-bracket one
#space two space three close-bracket
#four plus open-brace

#close parenthesis
#comma open-brace zero
#greater-than close-brace

#comma open-brace
#comma comma asterisk
#close-brace asterisk

#close-brace percent-sign
#open-bracket one space two
#space six close-bracket

#two period three
#asterisk asterisk one
#two plus plus equals

8

Naprzód

: fugu 1              \ colon fugu one                = 5
swap 1 + 1 ?do        \ swap one plus one question do = 7
i * loop ;            \ eye star loop semi            = 5

Fugu jest funkcją, a moja próba kigo : blowfish jest referencją zimową. Zamierzam ?dobyć kireji , punktem zwrotnym, przed liczoną pętlą.


7

PHP, 4 haikus

Wszystko w tym rymowaniu !

function haiku($can) { // function haiku can (5)
    if ($can == 1) // if can is equal to one (7)
        return ++$stun; // return increase stun (5)

    if ($can == 0) { // if can equals ou (5)
        echo "It is one, you know! "; //echo "It is one, you know! " (7)
        return 1+$blow; } //return one plus blow (5)

    if ($can > $fun) { //if can exceeds fun (5)
        return haiku($can-1) //return haiku can less one (7)
            *$can; }} //multiplied by can (5)

if (null == $knee) { // if null equals knee (5)
    $free=0+3; // free equals zero plus three (7)
    echo haiku($free); } // echo haiku free (5)

1
Czytam wiersz trzeci return plus plus stun.
corsiKa

Naprawdę podoba mi się ten.
BenjiWiebe

7

Biała przestrzeń

Wykorzystuje to jedno z najbardziej znanych haiku i wiele o nim napisano.

Nie mam pojęcia, dlaczego nikt tego wcześniej nie zrobił, nawet nie wymaga to wysiłku!

Przede wszystkim, zanim przeczytam wiersz, chcę, abyście się oparli, zrelaksowali i cieszyli spokojem stworzonym przez wielką pustkę otaczającą wiersz. Podkreśla staw, otoczony rozległym krajobrazem.

古 池 や    
蛙 飛 び こ む               
水 の 音             






































































































































kod źródłowy na filebin

Jeśli nie mówisz po japońsku, wymawia się to w następujący sposób:

fu ru i ke ya

ka wa zu to bi ko mu

mi zu no o to

Oczywiście jest liczony przez morae. Kireji jestや( ya ) The Kigo (odniesienie sezonowy) jest蛙( Kawazu , żaba, -> wiosna) .

Używając interpretera linux z oficjalnej strony, możesz go użyć w następujący sposób:

$ echo 5 | ./wspace .ws


6

Matematyka

f[x_]:=     (* f of x defined *)
 x f[x-1]   (* x times f of x less 1 *)
f[1]=1      (* Mogami River *) 

Pedanci mogą czytać ostatni wiersz jako „f z 1 to 1”, ale nie mogłem się oprzeć krzykowi Basho.

Testowanie:

Table[f[n],     (* Table f of n *)
 {n, 1, 10, 1}] (* n from 1 to 10 by 1 *)
ListLogPlot[%]  (* ListLogPlot output *)

Powracający:

(1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800)

wykres wartości

Premia za wyróżnienie językowe Haiku (inspirowana @cormullion)

Rewrite any term
High-level functions abound —
Mathematica

5

Partia

@set /a t=1 &^
for /L %%a in (2, 1, %1) ^
do @set /a t*=%%a

Wymowa ; ignoruje wyrażenia matematyczne oraz następujące symbole @ / % ^ , ( ):

ustaw na 1, a
dla L a w 2 1 1
ustaw ata

Uwaga; to oblicza silnię, ale jej nie wyprowadza - zmienna tzawiera silnię.

Następujący kod Haiku / można dodać do tego samego pliku wsadowego, aby wyprowadzić silnię (te |są wymawiane jako potok):

@echo %t% ||^
When will you learn, unclemeat ^
Why must you use Batch?

5

Clojure

(->> *command-line-args*                ; thrush com-mand line args
  seq last read-string range (map inc)  ; seq last read string range map inc
  (reduce *) println)                   ; re-duce times print-lin

5

FA#

let fact n =
    [1..n] |>
    Seq.fold (*) 1

niech fakt n będzie
od jednego do n, zastosuj
Seq kropka krotnie gwiazda jeden


ukradł mój ...;)
Jwosty

5

newLISP

Nawiasy nie są wymawiane:

(define (fac n (so))            ; define fac n so 
(if (= n 0) 1                   ; if equals n zero 1
(* n (fac (dec n)))))           ; times n fac dec n

(for (n 0 10)                   ; for n zero ten
; let's test from zero to ten
(println (fac n thus)))         ; printline fac n thus

Kod Lisp składa się z

liczne nawiasy

i kilka funkcji


Uwielbiam komentarz haiku. Biorąc to za inspirację i dodając jedną do mojej odpowiedzi.
Jonathan Van Matre

5

Perl

$r = 1; for(1           # r gets one for one
.. pop @ARGV) { $r *=   # to pop arg v r splat gets
$_; } print $r;         # the default print r

Wrzuć to do pliku o nazwie f.pl

A wynik:

$ perl f.pl 3
6 $ perl f.pl 1-1
1 $ perl f.pl 10
3628800 $ 

Który jest czytany jako:

perl fpl trzy
perl fpl jeden mniej jeden
perl fpl dziesięć

1
Jak wymawiasz testowanie w 7-5-7?
Christopher Creutzig

@ChristopherCreutzig Mogę tam dostać 5 i 6 do testowania ('perl fpl three' (5) i 'perl fpl ze-ro' (6)) ... Nie jestem w stanie wymyślić czystego 7, który pokazuje niezbędne testy.

@ChristopherCreutzig Wymyślił jakąś sztuczkę. Dziękujemy za przypomnienie mi tego wymogu. (

5

LiveScript

Ten jest średniowieczny:

prelude = ^^ do                       # prelude is clone do
  require \prelude-ls                 # require prelude dash ls
{ product } = prelude                 # product is prelude

story = (ah) ->                       # story is ah such:
  ones-misery = (one) ->              # one's misery is one such
    let death = product               # let death be product

      fight = [1 to one]              # fight is one to one
      why = (one) -> death <| fight   # why is one such death take fight
  ones-misery ah                      # one's misery ah

room = console.log                    # room is console log
room <| (story 10)!                   # room take story three bang
[null of { use : this }]              # no of use is this

Drukuje 3628800, czyli jest 10!. To trochę rondo: funkcja storyzwraca funkcję ones-misery, która zawsze zwraca odpowiedź. W ten sposób jest bardziej artystyczny.

Brak komentarzy wypełniacza lub niepotrzebnych ciągów!


Bonusowa historia debugowania:

Wybuchnąłem śmiechem,
gdy poinformowano mnie, że błąd
deathjest undefined


3
Haha, nie trafiłbyś tego błędu, gdybyś miał „śmierć =! Dumny”. poetryfoundation.org/poem/173363
Jonathan Van Matre

5

Haskell

To będzie rymowane haiku!

fakt 0 = 1 - fakt zero to jeden
fact ton = ton * (fakt ogłuszenie) - fakt ton jest ton razy ogłuszenie faktem
        gdzie ogłuszenie = pred ton - gdzie ogłuszenie jest pred ton

Tak!

Uwaga: Pred oznacza poprzedni numer. Również w haskell możesz mieć wiele definicji funkcji i używana jest pierwsza, która ma sens.


Elegancki! (wypełniacz)
kot

4

Ruby - One Haiku

ARGV.first.to_i.
 tap do |please| puts 1.upto(
 please ).inject( :*) end

Przeczytaj (ignorując interpunkcję, ale z jedną emotikoną) w następujący sposób:

 arg vee first to i
   tap do please puts one up to
 please inject smile end

Nie generuje danych wyjściowych dla 0 !.
200_sukces

@ 200_success: Dzięki. Być może będę musiał z tym żyć, nie jest to ściśle związane z wymaganiami, więc pomyślę
Neil Slater,

Również test ma być haiku. Tęskniłem za tym podczas pierwszego czytania.
Jonathan Van Matre

@Jonathan Van Matre: Tak, też mi tego brakowało. Wydaje się, że nawet najlepsze odpowiedzi nie przejmują się tym. Ponieważ moja jest w linii poleceń, uzyskanie wielu linii jest trudne, więc chyba powinienem na razie usunąć test, aby była to kanonicznie dobra odpowiedź. . .
Neil Slater

4

W SML:

fun fact 0 = 1
  | fact n = n*fact(n-1)
  ;

czytać jako:

"fun fact 0 is one,
bar that, fact n is n times
fact of n less one"

3

Perl

Wiem, że używanie gotowych funkcji jest niezgodne z zasadami, ale oto, co otrzymuję.

Wyobraź sobie, że Twoim zadaniem jest pouczenie gryzoni o dużych rozmiarach:

use Math::BigRat; use
feature 'say'; use warnings; say
new Math::BigRat($_)->bfac

Mogę tylko zgadywać, co oznacza ostatnie słowo i jak ono się wymawia, ale zapewniam cię, że to jedna sylaba. Najwyraźniej nie rozumie, czego od niego chcesz, więc musisz opracować (łagodząc standardy jakości, tracąc cierpliwość):

use Math::BaseConvert
':all'; no strict subs; no warnings;
reset and say fact($_)

wciąż bezskutecznie. Następnie musisz to wyjaśnić zwykłym angielskim:

no strict; no warnings;
use Math::Combinatorics;
say factorial($_)

Co stało się potem, nie wiem, ale kod jest prawidłowy:

perl -nE 'use Math::BigRat; use feature "say"; use warnings; say new Math::BigRat($_)->bfac'
42
1405006117752879898543142606244511569936384000000000

i

perl -nE 'use Math::BaseConvert ":all"; no strict subs; no warnings; reset and say fact($_)'
33
8683317618811886495518194401280000000

i

perl -nE 'no strict; no warnings; use Math::Combinatorics; say factorial($_)'
16
20922789888000

3
„Zapewniam cię, że to jedna sylaba” :)
kormullion

1
Szkoda, że ​​nie możesz tam rzucić błędu Coy .

To jedyna jak dotąd odpowiedź, która ma jakąkolwiek liryczną jakość :)
SebastianH

1
@SebastianH, dzięki :), chociaż oszukiwałem, podczas gdy inni próbowali grać według zasad
2846289

2

Pyton

lambda n: reduce(
    lambda a, b: a * b,
    range(1, n), n)

Sposób w jaki to czytam:

lambda n: reduce
lambda a b: a times b
range 1 to n, n

`


Generuje błędne wyjście dla 0 !.
200_sukces

2

do

#include <std\
io.h> 
#include \
<stdlib.h>

int main(int argc
 , char** argv)
{   // iteratively
    // compute factorial here
long int n = \
0, i \
= 0, r = \
1 /*
product starts at one*/;

if (argc 
> 1) { n = 
strtol(argv[\
1], NULL, 10)
; if (n 
< 0) {
       printf("Arg must\
       be >= 0\n");
       exit(-
    1);}
} i = 
n;
while (i) { r 
= r * i;
    i
--;
} /* print
the result*/ printf(
"%d factorial\
equals %d\
\n", n
, r);
/*done*/}

Wymowa:

funt obejmuje standardową
kropkę I / O h funt zawiera
standardową lib kropkę h

int main int arg c
przecinek char star star arg v
open brace comment

iteracyjnie
oblicza silnia tutaj
long int n jest równe

zero przecinka
równa zero przecinka
równa się jednemu komentarzowi

produkt zaczyna się od jednego
średnika, jeśli arg c
jest większy niż jeden

nawias klamrowy n to
str-to-l arg v sub
one przecinek NULL przecinek

średnik, jeśli
n mniej niż zero, zacznij
printf arg musi

być większa lub
równa zero ukośnikowi odwrotnemu
n średnik

wyjście ujemne
jeden średnik końcowy nawias
końcowy i równa się

n średnik,
gdy i nawias klamrowy r
jest równy r razy i

średnik i
spadek średnik
zamknij nawias klamrowy drukuj

wynik printf
procent d silnia
jest równy procent d

whack n comma n
comma r średnik
komentarz zrobiony end nawias klamrowy


#Charakter jest zazwyczaj wymawiane ostry lub octothorpe w kodzie C.
FUZxxl,

1

C # - 3 haikus

Usunąłem zwykłe używanie C #, przestrzeni nazw i definicji klas, co byłoby czwartym haiku.

public static void
Main(){int num = Convert.
ToInt32

(Console.ReadLine());
 Console.WriteLine(num ==
 0 ? 1 :

Enumerable.
Range(1, num).Aggregate
((i, j) => i * j));}

które czytam jako

public static void 
Main int num equals Convert
To int thirty-two

Console dot Read line
Console Write line num equals
zero? then one, else

Enumerable
Range 1 to num aggregate
i j i times j

1

Haskell

module Haiku where          -- read literally.
fac x = let in do           -- = is read as 'equals'
product [1..x]              -- product one to x

zwróć uwagę, że moduł ... gdzie jest dodawany automatycznie do dowolnego kodu Haskell bez jego kompilacji, więc nie pisanie go praktycznie oszukuje.


Do dzisiaj nie miałem pojęcia, że ​​możesz wpisać jedno zdanie pod spodem doi nie musiało tak być Monad a => a.
Onyxite

1

JAWA:

W odpowiedzi na pytanie i na Dwaiku (Double-Haiku lub jakkolwiek to chcesz nazwać) opublikowane przez Quincunx w Javie, oto poprawne Haiku:

public static int factorial(int n) {
   return (n==0) ? (n+1) : (factorial(n-1) * n);
}

1

JavaScript - Two Haikus

function factor (a) {          // function factor a
  if(!a){ return 1 ||          // if not a return 1 or
    a & 17}                    // a and seventeen

  else if (a + 1){             // else if a plus one 
    return a * factor          // return a into factor
    (a + ( - 1) )  }}          // a plus minus one 

Nie jestem native speakerem. Użyłem więc słownika do policzenia sylab. Mam nadzieję, że jest wystarczająco dobry. Wszelkie opinie są mile widziane :)


1

PowerShell, 2 haikus

function facto ($num){    # function facto num
$i = 1; 1..$num|          # i equals one; i to num
foreach { $i =            # for each i equals

$i * $_}; write $i}       # i times this write i
$answer = facto $args[    # answer equals facto args
0]; write $answer         # zero write answer

1

Czy wolno nam używać wypełniacza?

Haikus Python 2:

number = num + 1
a = 13 + 4
b = 14

nuum = len([1])
for i in range(1, number):
    nuum *= i

nuum equals length one?
Pierre Arlaud,

długość listy
Maltysen

Proszę o wymowę pierwszego wiersza. num equals length of the listrobi 7 sylab zamiast 5
Pierre Arlaud

1
Można wymienić nuumzfoo (bo czytam jeśli jako nu-um, co daje ponad limit.)
ASCIIThenANSI

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.