Grid ASCII art code golf


19

Wyzwanie

Utwórz najkrótszy program spełniający wymagania

Wymagania

  1. Kod musi wygenerować siatkę 5 x 5 zer, tak jak poniżej:

    00000
    00000
    00000
    00000
    00000
    
  2. Kod musi akceptować dane wejściowe (kolumna, wiersz, znak). Siatka musi się odpowiednio zmienić:

    Początek:

    00000
    00000
    00000
    00000
    00000
    

    Wejście:

    (2,5,*)
    

    Wynik:

    0*000
    00000
    00000
    00000
    00000
    

    (Uwaga: lewy dolny róg to pozycja 1,1.)

  3. Program musi zwrócić komunikat o błędzie inny niż siatka, jeśli dane wejściowe wiersza / kolumny nie wynoszą 1,2,3,4 lub 5. Może to być dowolny wybrany komunikat (o ile nie jest to siatka), więc 0jest akceptowalny wynik błędu.

  4. Program musi działać ze wszystkimi drukowalnymi znakami ASCII (klawiatury amerykańskiej).

ZWYCIĘZCA

Zwycięzcą zostanie osoba, która ma najkrótszy kod i spełnia wszystkie wymagania. Jeśli więcej niż jedna odpowiedź działa i ma tę samą (najkrótszą) długość, zwycięzcą zostanie osoba, która udzieliła pierwszej odpowiedzi.


8
Program musi zwrócić komunikat o błędzie . Jaki komunikat o błędzie? Czy program może zwrócić 0błąd i siatkę sukcesu?
Rod

1
Skąd pochodzi macierz? czy musi to być zero, czy jeden indeksowany?
George

3
Przy okazji, witamy w PPCG.
Erik the Outgolfer

4
Program musi działać ze wszystkimi znakami na klawiaturze amerykańskiej Dlaczego nie tylko ASCII? Nie znam nawet znaków amerykańskiej klawiatury, co nie wnosi nic do wyzwania
Luis Mendo

1
@LuisMendo Myślę, że amerykańska klawiatura to ASCII lub przynajmniej podzbiór.
Conor O'Brien

Odpowiedzi:


11

Dyalog APL , 17 13 10 bajtów

Monituje o zamkniętą tablicę zawierającą (wiersz, kolumnę), a następnie o znak. Podaje BŁĄD INDEKSU w przypadku błędnego wejścia.

⊖⍞@⎕⊢5 50

Wypróbuj online!

 odwróć do góry nogami wynik

 wprowadzony znak

@ zastępując zawartość na miejscu

 ocena wejściowa (zamknięty wiersz, kolumna)

 z

5 5⍴ Tablica 5 × 5

0 zera


Jest konieczne? Myślę, że w tym przypadku jest to zbędne.
Conor O'Brien

1
@ ConorO'Brien @ ConorO'Brien, jeśli go nie ma, analizator składni traktuje (⊂⎕)5 5jako pojedynczą 3-elementową tablicę - argument za .
Adám

To 13 znaków Unicode, a nie 13 bajtów, prawda?
wilx

1
@wilx Kliknij słowo bajty !
Adám

Ta odpowiedź jest zwycięzcą.
Dave Jones

5

Rubin, 157 149 bajtów

g=(1..5).map{[0]*5}
loop{puts g.map(&:join).join ?\n
x=gets.match /\((.),(.),(.)\)/
a,b=x[1].hex,x[2].hex
1/0 if a<1||a>5||b<1||b>5
g[5-b][a-1]=x[3]}

Błąd przy nieprawidłowo wprowadzonym wejściu lub poza ograniczoną pozycją

Dzięki ConorO'Brien (8 bajtów) i niepotrzebnym (2 bajty) za pomoc w oszczędzaniu bajtów


loop do...end-> loop{...}; Myślę, że też Array.new(5,[0]*5)działa, a nawet [*[0]*5]*5.
Conor O'Brien

@ ConorO'Brien Nie, Array.new(5,[0]*5)utwórz tablicę referencyjną i [*[0]*5]*5
ułóż

Och, racja. Pomiń pierwszy *. To wciąż tworzy tablicę referencji.
Conor O'Brien

Array.new(5){[0]*5}można zastąpić, (1..5).map{[0]*5}aby zaoszczędzić 2 bajty.
obrzydliwy

4

Partia, 199 bajtów

@echo off
if %1 gtr 0 if %1 lss 6 if %2 gtr 0 if %2 lss 6 goto g
if
:g
for /l %%j in (5,1,-1)do call:l %* %%j
exit/b
:l
set s=000000
if %2==%2 call set s=%%s:~0,%1%%%3%%s:~%1%%
echo %s:~1,5%

Błędy, jeśli pozycja jest poza zakresem.


Myślę, że możesz używać symboli <, na przykład ^<. nie jestem pewien.
Conor O'Brien

3

PHP, 111 100 97 bajtów

$s=str_repeat("00000\n",5);$s[($x=($a=$argv)[1])+29-6*$y=$a[2]]=$a[3];echo$x&&$y&&$x<6&$y<6?$s:E;

wypisuje, Ejeśli wiersz / kolumna jest poza zakresem.
Biegnij zphp -r <code> <row> <column> <character>


3

Python, 66 bajtów

lambda a,b,n,l='00000\n':6>b>0<a<6and(5-b)*l+l[:a-1]+n+l[a:]+~-b*l

Czy to nie zawiedzie dla a = 4, b = 3?
Tytus

@Titus już nie; D
Rod

1
Rozwiązanie działa również dla Python3
George

3

Dyalog APL, 24 20 18 bajtów

Zaoszczędź 4 bajty dzięki Zgarb! Zaoszczędził 2 bajty dzięki Adamowi!

a←5 5⍴0⋄a[⊂⎕]←⍞⋄⊖a

Monity o dane wejściowe. Poniżej wyjaśnienie.


20 bajtów

{a←5 5⍴0⋄a[⊂⍺]←⍵⋄⊖a}

Przypisz do funkcji i wywołaj ją y x f 'c'. Na przykład:

      f←{a←5 5⍴0⋄a[⊂⍺]←⍵⋄⊖a}

      5 2 f '*'
0 * 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0

      6 6 f '*'
INDEX ERROR                   
     ←{a←5 5⍴0 ⋄ a[⊂⍺]←⍵ ⋄ ⊖a}
               ∧              

      0 0 f '*'
INDEX ERROR                   
     ←{a←5 5⍴0 ⋄ a[⊂⍺]←⍵ ⋄ ⊖a}
               ∧   

Wyjaśnienie

{a←5 5⍴0⋄a[⊂⍺]←⍵⋄⊖a}

{...}jest funkcją z lewym argumentem i prawym argumentem . rozdziela instrukcje, więc są trzy instrukcje:

a←5 5⍴0⋄a[⊂⍺]←⍵⋄⊖a

Pierwsze oświadczenie a←5 5⍴0zestawy ado A 5według 5siatki 0s.

Druga instrukcja ustawia element pod współrzędnymi podyktowanych do (czyli postać).

Wreszcie możemy wykonać na ai powrócić że otrzymując z pierwszych o aodwróceniu.


{a←5 5⍴0⋄a[⊂⌽⍺]←⍵⋄⊖a}oszczędza kilka bajtów.
Zgarb

@Zgarb Och, fantastycznie! Nie wiedziałem, że indeksowanie tak działa.
Conor O'Brien

Możesz zaoszczędzić dwa bajty, przekształcając w ciało tradfn:a←5 5⍴0⋄a[⊂⎕]←⍞⋄⊖a
Adám,

@ Adám jak to działa? Nie działa na TryAPL.
Conor O'Brien

@ ConorO'Brien Right. TryAPL zabrania monitowania o wprowadzenie danych, ale pełną wersję można uzyskać za darmo.
Adám

3

JavaScript (ES6), 73 76 bajtów

Zgłasza a, TypeErrorjeśli kolumna lub wiersz jest poza zakresem.

(c,r,C,a=[...`00000
`.repeat(5)])=>(a[29+c-r*6]=C,c<1|r<1|c>5|r>5||a).join``

Próbny


Słodki, ale to wyrzucić błąd, jeśli albo cczy rjest mniejszy niż 1?
ETHprodukcje

@ETHproductions To tylko testowanie c == 0 || r == 0. Ale myślę, że masz rację: zaktualizuję go, aby zapobiec ujemnym wartościom.
Arnauld

3

C #, 199 bajtów

Na podstawie odpowiedzi Pete Arden

string g(int c, int r, char a){if(c<1|c>5|r<1|r>5)return "Index Error";var b="00000";var d=new[]{b,b,b,b,b};c--;d[r-1]=new string('0',c)+a+new string('0',4-c);return string.Join("\r\n",d.Reverse());}

Nie golfowany:

public static string G(int c, int r, char a)
    {
        if (c < 1 || c > 5 || r < 1 || r > 5) return "Index Error"; // Check it's not out of range
        var b = "00000";
        var d = new [] { b, b, b, b, b };                           // Generate display box, and fill with the default character
        c--;                                                        // Convert the X to a 0 based index
        d[r - 1] = new string('0',c) + a + new string('0',4-c);     // Replace the array's entry in y coordinate with a new string containing the new character
        return string.Join("\r\n", d.Reverse());                    // Reverse the array (so it's the right way up), then convert to a single string
    }

Witamy na stronie! Nie jestem ekspertem w języku C #, ale wygląda na to, że istnieje spacja, którą można usunąć.
DJMcMayhem

1
(Przepraszamy, nie znam etykiety składania) Krótszy G (): publiczny ciąg statyczny G (int c, int r, char a) {return (0 <c && c <6 && 0 <r && r <6)? String.Concat (Enumerable.Range (1,29). Wybierz (i => i% 6> 0? I / 6 == 5-r && i% 6 == c? A: '0': '\ n')): "Błąd indeksu";}
Eric


2

Galaretka , 28 bajtów

To wydaje się zbyt długie ...

Ṫ0ẋ24¤;ṙÑs5UY
’ḅ5
Ṗḟ5R¤
-ÑÇ?

TryItOnline!

W jaki sposób?

Ṫ0ẋ24¤;ṙÑs5UY - Link 1, make grid: [row, column, character] e.g. [5,2,'*']
Ṫ             - tail: character                                  '*'
     ¤        - nilad followed by link(s) as a nilad  
 0            -     zero
  ẋ           -     repeated
   24         -     24 times                                     [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
      ;       - concatenate:                                     "000000000000000000000000*"
        Ñ     - call next link (2) as a monad                    21
       ṙ      - rotate left by                                   "000*000000000000000000000"
         s5   - split into chunks of length 5                    ["000*0","00000","00000","00000","00000"]
           U  - upend (reveres each)                             ["0*000","00000","00000","00000","00000"]
            Y - join with line feeds                              0*000
              - implicit print                                    00000
                                                                  00000
’ḅ5 - Link 2, position: [row, column]                             00000
’   - decrement                                                   00000
 ḅ5 - convert from base 5

Ṗḟ5R¤ - Link 3, input error checking: [row, column, character]
Ṗ     - pop: [row, column]
 ḟ    - filter out values in
  5R¤ - range(5): [1,2,3,4,5] - any values not in this remain giving a truthy result

-ÑÇ? - Main link: [row, column, character]
   ? - ternary if:
  Ç  -    last link (3) as a monad
-    -    -1 (if truthy - the error identification)
 Ñ   - next link (1) as a monad (if falsey - the grid)

2

JavaScript (ES6), 89 bajtów

f=(X,Y,Z,x=5,y=5)=>x+y>1?(x?X+x-6|Y-y?0:Z:`
`)+f(X,Y,Z,x?x-1:5,y-!x):X<1|X>5|Y<1|Y>5?e:""

Ponieważ uwielbiam rekurencję. Zgłasza ReferenceErrorniepoprawne współrzędne.



2

Brain-Flak 415 Bytes

Obejmuje +3 za -c

([][()()()]){{}}{}({}<(({}<(({})<>)<>>)<>)<>([((((()()()){}){}){}){}]{}<([((((()()()){}){}){}){}]{})>)(()()()()()){({}[()]<(({})){{}(<({}[()])>)}{}({}<(({})){{}(<({}[()])>)}{}>)>)}{}({}{}){<>{{}}<>{}}<>>)<>(()()()()()){({}[()]<(((((((((()()()){}){}){}){})))))((()()()()()){})>)}{}{}<>({}<()((((((()()()){}){}()){}){}()[{}])({})({})({})({}){}{}[((((()()()){}){}){}){}()]){({}[()]<<>({}<>)>)}{}<>{}>)<>{({}<>)<>}<>

Wypróbuj online!

Najpierw wstawia znak, a następnie wiersz, a następnie kolumnę bez spacji.

Większość z nich to po prostu obsługa błędów. Brain-Flak nie ma dobrego sposobu na sprawdzenie, czy wartości mieszczą się w zakresie. W przypadku błędów albo nie wyświetla niczego, albo po prostu znak, który miał zostać wstawiony. Rozwiązanie rzeczywistego problemu zajmuje tylko 211 bajtów:

<>(()()()()()){({}[()]<(((((((((()()()){}){}){}){})))))((()()()()()){})>)}{}{}<>({}<()((((((()()()){}){}()){}){}()[{}])({})({})({})({}){}{}[((((()()()){}){}){}){}()]){({}[()]<<>({}<>)>)}{}<>{}>)<>{({}<>)<>}<>

2

Excel VBA, 67 bajtów

Wyjścia do zakresu A1: E5 w arkuszu aktywnym projektu vba, wyjście z

Błąd w czasie wykonywania „1004”:

Błąd zdefiniowany przez aplikację lub obiekt

gdy podano nieprawidłowe dane wejściowe.

Kod:

Sub a(c,r,x)
c=IIf(r<1Or c>5,-1,c)
[A1:E5]=0
Cells(6-r,c)=x
End Sub

Stosowanie:

a 4,5,"#"

Dane wyjściowe (z powyższego przykładu) :

    A   B   C   D   E
1   0   0   0   #   0
2   0   0   0   0   0
3   0   0   0   0   0
4   0   0   0   0   0
5   0   0   0   0   0

1

C #, 208 bajtów

Gra w golfa:

string G(int c,int r,char a){if(c<1||c>5||r<1||r>5)return"Index Error";var b="00000";var d=new string[]{b,b,b,b,b};d[r-1]=d[r-1].Substring(0,c-1)+a+d[r-1].Substring(c);return string.Join("\r\n",d.Reverse());}

Nie golfowany:

public string G(int c, int r, char a)
{
  if (c < 1 || c > 5 || r < 1 || r > 5) return "Index Error";
  var b = "00000";
  var d = new string[] { b, b, b, b, b };
  d[r - 1] = d[r - 1].Substring(0, c - 1) + a + d[r - 1].Substring(c);
  return string.Join("\r\n", d.Reverse());
}

Testowanie:

Console.Write(G(6, 6, '*')); //Index Error

Console.Write(G(1, 4, '#'));

00000
#0000
00000
00000
00000

Console.Write(G(5, 5, '@'));

0000@
00000
00000
00000
00000

Console.Write(G(1, 1, '}'));

00000
00000
00000
00000
}0000

Jeśli ci / lub rsą poza zakresem, wyrzuci to, IndexOutOfRangeExceptionwięc możesz być w stanie usunąć pierwszą instrukcję if, chociaż nie sprawdziłem w tym celu specyfikacji poprawnie. Możesz skompilować do Func<int, int, char, string>bajtów, aby zaoszczędzić bajty, uważam, że musisz dodać using System.Linq;z powodu Reversepołączenia, chociaż nie pamiętam z głowy
TheLethalCoder

Zmień, d[r - 1] = d[r - 1].Substring(0, c - 1) + a + d[r - 1].Substring(c);aby d[--r] = d[r].Substring(0, c - 1) + a + d[r].Substring(c);zapisać 4 bajty
TheLethalCoder

1

WinDbg, 95 bajtów

j(0<(@$t0|@$t1))&(6>@$t0)&(6>@$t1)'f8<<16 L19 30;eb2000018+@$t0-@$t1*5 @$t2;da/c5 8<<16 L19';?0

Prawie połowa z nich po prostu weryfikacji indeksy są w zakresie ... Wejście odbywa się poprzez ustawienie pseudohalogenek rejestrów $t0, $t1oraz $t2(jeśli $t2posiada wartość ASCII char zastąpić). Na przykład, (2,5,*)podobnie jak w przykładzie:

0:000> r$t0=2
0:000> r$t1=5
0:000> r$t2=2a

Drukuje 0po błędzie.

Jak to działa:

j (0<(@$t0|@$t1)) & (6>@$t0) & (6>@$t1)  * If $t0 and $t1 are both positive and less than 6
'
    f 8<<16 L19 30;                      * Put 19 (0n25) '0's (ascii 30) at 2000000 (8<<16)
    eb 2000018+@$t0-@$t1*5 @$t2;         * Replace the specified cell with the new char
    da /c5 8<<16 L19                     * Print 19 (0n25) chars in rows of length 5
';
    ?0                                   * ...Else print 0

Przykładowe dane wyjściowe:

0:000> r$t0=2
0:000> r$t1=5
0:000> r$t2=2a
0:000> j(0<(@$t0|@$t1))&(6>@$t0)&(6>@$t1)'f8<<16 L19 30;eb2000018+@$t0-@$t1*5 @$t2;da/c5 8<<16 L19';?0
Filled 0x19 bytes
02000000  "0*000"
02000005  "00000"
0200000a  "00000"
0200000f  "00000"
02000014  "00000"


0:000> r$t0=-2
0:000> j(0<(@$t0|@$t1))&(6>@$t0)&(6>@$t1)'f8<<16 L19 30;eb2000018+@$t0-@$t1*5 @$t2;da/c5 8<<16 L19';?0
Evaluate expression: 0 = 00000000


0:000> r$t0=4
0:000> r$t1=2
0:000> r$t2=23
0:000> j(0<(@$t0|@$t1))&(6>@$t0)&(6>@$t1)'f8<<16 L19 30;eb2000018+@$t0-@$t1*5 @$t2;da/c5 8<<16 L19';?0
Filled 0x19 bytes
02000000  "00000"
02000005  "00000"
0200000a  "00000"
0200000f  "000#0"
02000014  "00000"


0:000> r$t1=f
0:000> j(0<(@$t0|@$t1))&(6>@$t0)&(6>@$t1)'f8<<16 L19 30;eb2000018+@$t0-@$t1*5 @$t2;da/c5 8<<16 L19';?0
Evaluate expression: 0 = 00000000

1

Haskell, 77 bajtów

r=[1..5]
(x#y)c|x>0,x<6,y>0,y<6=unlines[[last$'0':[c|i==x,j==6-y]|i<-r]|j<-r]

Przykład użycia:

*Main> putStr $ (2#5) '*'
0*000
00000
00000
00000
00000

Jeżeli xi yznajduje się w zasięgu, zewnętrznej i wewnętrznej pętli [1..5]i podjąć char cjeśli natrafi dana xi ya 0inaczej. Jeśli xlub ynie jest w zasięgu, Non-exhaustive patternszgłaszany jest wyjątek.



1

QBIC , 53 50 bajtów

EDYCJA: Teraz, gdy wiem, że nie muszę pokazywać początkowej siatki, podmieniłem dane wejściowe użytkownika _!_!_?dla parametrów wiersza poleceń ::;, oszczędzając 3 bajty.

[5|?@00000|]::;~(b>5)+(c>5)>1|_Xd\$LOCATE 6-c,b|?B

Wersja oryginalna: Zatrzymuje się między wydrukowaniem siatki 0 a pobraniem współrzędnych dla zamiany, pokazując siatkę 0.

[5|?@00000|]_!_!_?~(b>5)+(c>5)>1|_Xd\$LOCATE 6-c,b|?B

Drukuje 5 łańcuchów po 5 0', prosi użytkownika o 2 wejścia numeryczne i 1 ciąg znaków, sprawdza, czy liczby są mniejsze niż 5 i używa LOCATEfunkcji QBasic do podstawienia właściwego znaku.


0

Java, 99 bajtów

(i,j,k)->{int[]b=new int[]{60,60,60,60,60};int[][]a=new int[][]{b,b,b,b,b};a[i-1][5-j]=k;return a;}

0

> <> (Ryby), 36 bajtów (niekonkurujące)

1-$p;
00000
00000
00000
00000
00000

Wypróbuj tutaj!

To jest przez wprowadzenie parametrów na stosie, na przykład [ chr, y, x]. Jedna z zer na dole jest faktycznie zmieniana na chrinstrukcjęp . Są prawdopodobnie lepsze sposoby na zrobienie tego, ale myślałem, że była to wyjątkowa i zabawna sytuacja, w której ta funkcja> <> jest przydatna.

Wyjaśnienie

Ten program po prostu odejmuje 1 od x(jak w> <>, 0tak naprawdę byłaby to pierwsza kolumna), zamienia za xpomocą y, a następnie zmienia punkt codebox x, yna chrvia p. ynie trzeba odejmować 1, ponieważ kod jest już przesunięty o 1!

Wyjaśnienie niekonkurencyjne

Jest to niekonkurencyjne, ponieważ w rzeczywistości nie generuje wyników. Właśnie to uznałem za bardzo zabawne. Jeśli jest to uważane za prawidłowe wyjście, daj mi znać!

Jest również niekonkurencyjny, ponieważ ymoże wynosić 0, ale uważam, że to jedyny problem z odpowiedzią. Naprawię to, jeśli jest to uważane za prawidłowe wyjście, ale w przeciwnym razie po prostu sprawia, że ​​odpowiedź jest mniej zabawna ...


2
Jeśli takie odpowiedzi są odradzane, daj mi znać, a ja je usunę!
redstarcoder,

0

Bash, 59 bajtów

Grał w golfa

printf '00000%0.s\n' {1..5}|sed "$1 s/./$3/$2"|grep -z "$3"

1 USD , $ 2 - wiersz, kolumna, $ 3 - wymiana char, zgłaszany jest błąd poprzez kod wyjścia

Test

>./box 2 2 "*"
00000
0*000
00000
00000
00000
>echo $?
0

>./box 6 2 '*'     
>echo $?
1

0

Vim, 60 47 42 76 klawiszy

Dane wejściowe mają format (w pierwszym wierszu):

25*

Kursor zaczyna się od początku

"ax"bxx:if<C-r>a<1||<C-r>a>5||<C-r>b<1||<C-r>b>5
^
endif
6i0<ESC>Y5pG:norm <C-r>al<C-r>bkr<C-r>-
Hqqxjq5@qdd

Jeśli dane wejściowe są nieprawidłowe, wówczas wyrzuca: E492: Not an editor command: ^

Cide, który produkuje dane wyjściowe, to tylko 42bajty, ale w celu stworzenia błędu moja liczba bajtów jest drastycznie zwiększona.


BTW Nie wiem jak stworzyć błąd w Vimie
Kritixi Lithos

0

Java 8, 194 192 bajty

interface M{static void main(String[]a){String r="";int i=0,j,z=new Byte(a[0]),y=new Byte(a[1]);for(;++i<6;r+="\n")for(j=0;++j<6;r+=6-i==y&j==z?a[2]:0);System.out.print(z>0&z<7&y>0&y<7?r:0);}}

Wypróbuj tutaj z poprawnym wprowadzeniem.
Wypróbuj tutaj z niepoprawnym wprowadzeniem.

Będzie to 116 114 bajtów zamiast funkcji zamiast pełnego programu:

(a,b,c)->{String r="";for(int i=0,j;++i<6;r+="\n")for(j=0;++j<6;r+=b==6-i&a==j?c:0);return a>0&a<7&b>0&b<7?r:"0";}

Wypróbuj tutaj.

Wyjaśnienie:

interface M{                  // Class
  static void main(String[]a){//  Mandatory main-method
    String r="";              //   Result-String, starting empty
    int i=0,j,                //   Index-integers
        z=new Byte(a[0]),     //   First input converted to integer
        y=new Byte(a[1]);     //   Second input converted to integer
    for(;++i<6;               //   Loop (1) from 1 to 6 (inclusive)
        r+="\n")              //     After every iteration: Append a new-line to the result
      for(j=0;++j<6;          //    Inner loop (2) from 1 to 6 (inclusive)
        r+=6-i==y             //     If the second input equals `6-1`,
           &j==z?             //     and the first input equals `j`:
            a[2]              //      Append the third input to the result-String
           :                  //     Else:
            0                 //      Append a zero to the result-String
      );                      //    End of inner loop (2)
                              //   End of inner loop (1) (implicit / single-line body)
    System.out.print(         //   Print:
     z>0&z<7&y>0&y<7?         //    If the coordinates are valid (1-6):
      r                       //     Print the result `r`
     :                        //    Else:
      0);                     //     Print 0 as error instead
  }                           //  End of main-method
}                             // End of class
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.