Wydrukuj trójkąt liczbowy


25

Podając liczbę N, wyślij trójkąt prostokątny NxN, w którym każdy wiersz ijest wypełniony liczbami do i.

Przykład

n = 0

(brak wyników)

n = 4

1
1 2
1 2 3
1 2 3 4

n = 10

1
1 2
1 2 3
.
.
.
1 2 3 4 5 6 7 8 9 10

(nie wymaga wyrównania)

n = N

1
1 2
1 2 3
.
.
.
1 2 3 4 .... N

Na końcu każdej linii nie ma spacji końcowych.

Najmniej wygranych bajtów, a standardowe luki nie są dozwolone.


Czy wyjście może być zagnieżdżoną listą liczb?
patrz

Jakie powinno być zachowanie dla n = 0, a dla n> 9?
freekvd 12.03.15

@ Sieg Pewnie, o ile dane wyjściowe są prawidłowe.
Tan WS

@freekvd dla 0 nie ma wyjścia, dla n> 9 nie jest wymagane specjalne formatowanie
Tan WS

O rany, złamałeś moje poddanie. Naprawianie
JAK

Odpowiedzi:


17

Joe , 5 3 bajtów (+2 lub +3 dla -tflagi)

Najwyraźniej nie wykorzystałem pełnego potencjału Joe. Było to możliwe, kiedy pierwszy raz to opublikowałem.

\AR

Tutaj Rpodaje zakres od 0 do n, wyłączny. Następnie \Apobiera kolejne jego prefiksy ( Ajest to funkcja tożsamości). Przykłady:

Z -tflagą (uwaga: jest to teraz standardowe wyjście nawet bez flagi):

   (\AR)5
0
0 1
0 1 2
0 1 2 3
0 1 2 3 4
   \AR5
0
0 1
0 1 2
0 1 2 3
0 1 2 3 4
   \AR2
0
0 1
   \AR1
0
   \AR0

Bez tego:

   \AR5
[[0], [0, 1], [0, 1, 2], [0, 1, 2, 3], [0, 1, 2, 3, 4]]
   (\AR)5
[[0], [0, 1], [0, 1, 2], [0, 1, 2, 3], [0, 1, 2, 3, 4]]
   \AR2
[[0], [0, 1]]
   \AR1
[[0]]
   \AR0
[]

Zasady nieco się zmieniły. Mój stary kod nie działał poprawnie z N = 0. Ponadto dane wyjściowe mogą być tylko zagnieżdżoną listą, więc -tmożna je usunąć.

1R1+R

Teraz Rndaje zakres od 0 do n, wyłączny. Jeśli podano 0, zwraca pustą listę. 1+dodaje 1 do każdego elementu tego zakresu. 1Rodwzorowuje wartości na zakres od 1 do x. Puste liaty po zmapowaniu zwracają puste listy.

Przykładowe dane wyjściowe:

   1R1+R0
[]
   1R1+R5
[[1], [1, 2], [1, 2, 3], [1, 2, 3, 4], [1, 2, 3, 4, 5]]

Aktualizacja: Właśnie coś zauważyłem. Funkcja automatycznie odwzorowuje na 0 elementów. Poniższy przykład jest uruchamiany z -tflagą.

   1R1+R3 5 8
1
1 2
1 2 3

1
1 2
1 2 3
1 2 3 4
1 2 3 4 5

1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6
1 2 3 4 5 6 7
1 2 3 4 5 6 7 8

Stare: 5 bajtów (z -tflagą)

1R1R

Jest to anonimowa funkcja, która przyjmuje liczbę, tworzy listę od 1 do N ( 1Rn) i mapuje te wartości do poprzedniego zakresu, dając zakres od 1 do x dla każdej pozycji z zakresu od 1 do N.

-tFlag daje wyjście jako J-jak stół.

   1R1R5
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5

Uwaga: język jest bardzo nowy i niekompletny, ale najnowsza wersja została wydana przed tym wyzwaniem.


4
Więc J nie wystarczyło, aby mieć przewagę nad wyzwaniami opartymi na macierzy? : D
Optymalizator

4
@Optimizer Optymalizacja jest ważna.
patrz

4
Nagle moją najczęściej głosowaną odpowiedzią jest ta, na którą spędziłem najmniej czasu. Niesprawiedliwość.
patrz

1
Myślę, że Joe nie jest twoim przeciętnym Joe ...
Justin

10

Python 3, 48 45 bajtów

f=lambda n:n and[f(n-1),print(*range(1,n+1))]

Brawo dla skutków ubocznych.


2
Zagnieżdżona nicość. To jest pokręcone.
patrz

To sprytna sztuczka: umieszczenie funkcji przed printwykonaniem prints w odwrotnej kolejności.
xnor

8

APL, 5

⍪⍳¨⍳⎕

tworzy wektor 1..n i dla każdego elementu inny taki wektor.

Następnie ⍪ tworzy kolumnę ze wszystkich wektorów. Pozwala to uniknąć problemu z końcowymi odstępami.

Wypróbuj na tryapl.org


Starsze rozwiązanie:

{⎕←⍳⍵}¨⍳⎕

Tworzy wektor 1..n

{⎕ ← ⍳⍵} to funkcja, która generuje dla każdego (¨) elementu wektor 1..n w osobnej linii

Niestety nie można wypróbować tego na tryapl.org, ponieważ ⎕ ← tam nie działa.


W żadnym wierszu nie powinno być żadnych spacji końcowych.
randomra

ah dziękuję, tęskniłem za tym. Wkrótce poprawione
Moris Zucca

Wiedziałem, że APL będzie rozwiązaniem
Conor O'Brien

O Boże, co widzą moje oczy
Codefun64

6

J, 27 bajtów

J nie jest dobry z wyjściem numerycznym niebędącym tablicą. Ta funkcja tworzy poprawnie sformatowany ciąg z liczb.

   ;@(<@,&LF@":@:>:@:i.@>:@i.)

   (;@(<@,&LF@":@:>:@:i.@>:@i.)) 4
1
1 2
1 2 3
1 2 3 4

Wypróbuj online tutaj.


Możesz także użyć, ]\@i.aby uzyskać;@(<@,&LF@":@:>:@:]\@i.)
patrz

6

PHP, 53 bajtów

Edycja 2: Ismael Miguel zasugerował odczyt z danych wejściowych zamiast definiowania funkcji, więc wynik dla PHP wynosi teraz 53 bajty:

for($a=1;@$i++<$n=$argv[1];$a.=" ".($i+print"$a\n"));

I jeszcze raz można to poprawić, jeśli PHP jest skonfigurowane do ignorowania błędów (52 bajty):

for($a=1;$i++<$n=$argv[1];$a.=" ".($i+print"$a\n"));
for($a=1;$i++<$n=$_GET[n];$a.=" ".($i+print"$a\n"));

Edycja: Austin zasugerował wersję 60 bajtów w komentarzach:

function f($n){for($a=1;@$i++<$n;$a.=" ".($i+print"$a\n"));}

Co można poprawić, jeśli nie wyświetlamy błędów PHP (59 bajtów):

function f($n){for($a=1;$i++<$n;$a.=" ".($i+print"$a\n"));}

$aprzechowuje następny wiersz, który zostanie wydrukowany, a za każdym razem jest drukowany spacja i następna liczba ( printzawsze zwraca 1) są z nim powiązane.


Funkcje rekurencyjne (65 bajtów):

function f($n){$n>1&&f($n-1);echo implode(' ',range(1,$n))."\n";}
function f($n){$n>1&&f($n-1);for(;@$i++<$n;)echo$i,' ';echo"\n";}   // Using @ to hide notices.

Krótsza funkcja rekurencyjna, z wyłączonym raportowaniem błędów (64 bajty):

function f($n){$n>1&&f($n-1);for(;$i++<$n;)echo$i,' ';echo"\n";}

Jeszcze krótsza funkcja rekurencyjna, z wyłączonym raportowaniem błędów i pustą linią przed rzeczywistym wyjściem (62 bajty):

function f($n){$n&&f($n-1);for(;$i++<$n;)echo$i,' ';echo"\n";}

Dla zabawy, nierekurencyjne funkcje:

function f($n){for($i=0;$i<$n;print implode(' ',range(1,++$i))."\n");}    // 70 bytes
function f($n){for(;@$i<$n;print implode(' ',range(1,@++$i))."\n");}      // 68 bytes, hiding notices.
function f($n){for(;$i<$n;print implode(' ',range(1,++$i))."\n");}        // 66 bytes, error reporting disabled.

2
45 bajtów:for($a=1;@$i<$n;$a.=" ".(@++$i+print"$a\n"));
Austin

@Austin: Przeczytałem w komentarzu, że kod musi być albo pełnym programem czytającym z wejścia, albo funkcją. Bardzo fajna sztuczka, można ją poprawić bitem / bajtem: for($a=1;@$i++<$n;$a.=" ".($i+print"$a\n"));(44 bajty)
Benoit Esnard

Ach, ok, to chyba byś zrobił function f($n){for($a=1;@$i++<$n;$a.=" ".($i+print"$a\n"));}, czyli 60 bajtów.
Austin

W rzeczy samej. Czy wszystko w porządku, jeśli zmienię swoją odpowiedź, aby dodać twoje rozwiązanie?
Benoit Esnard,

1
for($a=1;$i++<$n=$_GET[n];$a.=" ".($i+print"$a\n"));-> spróbuj tego (pełny kod, używając parametru url nz liczbą)
Ismael Miguel

5

CJam, 13 12 bajtów

ri{),:)S*N}/

Jak to działa :

ri{       }/     "Run the block input number of times with iteration index from 0 to N-1";
   )             "Increment the iteration index (making it 1 to N)";
    ,            "Get an array of 0 to iteration index";
     :)          "Increment each of the above array members by 1";
       S*        "Join all above array numbers with space";
         N       "Add a new line. After all iterations, things are automatically printed";

Wypróbuj online tutaj


4

Pyth, 9 bajtów

VQjdr1hhN

Naprawdę myślałem, że można to zrobić krócej, ale nie wydaje się tak.

Wypróbuj online .

            Q = input()
VQ          For N in [0, 1, ..., Q-1]:
    r1hhN       create list [1, ..., N+1+1-1]
  jd            print joined with spaces

1
Alternatywnym 9: VQaYhNjdY. Gdyby tylko azwrócił listę, to coś w stylu VQjdaYhNbyłoby 8.
Sp3000

2
akrótko użyte do zwrócenia dołączonej listy.
Optymalizator

Nie znam Pytha, więc mógłbyś wyjaśnić dlaczego N+1+1-1?
patrz

1
@Sieg rto funkcja zakresu Pythona, dlatego -1 ( r1Ntworzy listę [1, 2, ..., N-1]). Ale w iteracji pętli n-ty, chcę wykazu [1, 2, ..., N+1], dlatego trzeba dodać 2do N. r1hhNprzekłada się bezpośrednio na range(1, N+1+1). Inną możliwością byłoby r1+N2( range(1, N+2)).
Jakube,

Lub nawet mhdhN, ale to zupełnie inne podejście.
Jakube,

4

JavaScript (ES6) 49 52

Tak proste zadanie, zastanawiam się, czy można je skrócić w JS (aktualizacja: tak, za pomocą rekurencji)

Rekurencyjny 49

f=n=>alert((r=w=>n-i++?w+'\n'+r(w+' '+i):w)(i=1))

Iteraive 52

f=n=>{for(o=r=i=1;i++<n;o+='\n'+r)r+=' '+i;alert(o)}

Gdzie mogę to przetestować? Nie mogę znaleźć żadnych placów zabaw ES6, które to akceptują
Kristoffer Sall-Storgaard

@ KristofferSall-Storgaard Firefox domyślnie obsługuje ES6. Więc konsola Firefox.
Optymalizator

4

Java, 85 84 bajtów

Jest to zaskakująco krótko w Javie.

void a(int a){String b="";for(int c=0;c++<a;System.out.println(b+=(c>1?" ":"")+c));}

Zębaty:

void a(int a){
    String b="";
    for(int c=0;
        c++<a;
        System.out.println(
                b+=(c>1?" ":"")+c
        ));
}

1 bajt dzięki Bigtoe / Geobits


Możesz go uratować, przesuwając b+=...do println(b+=...).
Geobits

3

Prolog - 119

h(N):-setof(X,(between(1,N,K),setof(Y,between(1,K,Y),X)),[L]),k(L),nl,fail.
k([A|B]):-write(A),(B=[];write(" "),k(B)).

3

Python 2 - 62 54 65 bajtów

def f(n):
 for x in range(n):print' '.join(map(str,range(1,x+2)))

Liczba npowinna być podana jako dane wejściowe do programu, a nie inicjowana w zmiennej.
Zgarb,

Dzięki za podpowiedź. Nie byłam tego pewna.
pieprz

2
Przepraszam, powinienem być jaśniejszy. Chodziło mi o to, że musisz zdefiniować Npoprzez działanie N=input()lub coś podobnego, aby twój program mógł być uruchomiony jako taki. Oto dyskusja Meta na ten temat.
Zgarb,

To byłoby właściwe, prawda?
pieprz

Teraz wygląda dobrze!
Zgarb,

3

J, 9 znaków

Jako cichy, monadyczny czasownik.

[:":\1+i.
  • i. y- liczby od 0do y - 1.
  • 1 + i. y- liczby od 1do y.
  • ": y- wektor yprzedstawiony jako ciąg.
  • ":\ y- każdy prefiks yreprezentowany jako ciąg.
  • ":\ 1 + i. y- każdy prefiks liczb od 1do yreprezentowany jako matryca znaków.

To całkiem sprytne. +1
patrz

Jest to bardziej J-esque, ale czy nie narusza zasady, że w każdej linii nie ma spacji końcowych?
mile

@miles Rzeczywiście tak! Wszystko inne byłoby bardzo skomplikowane.
FUZxxl

3

> <> (Ryba) , 40 37 + 3 = 40 bajtów

&1>:&:&)?;1\
(?v:n" "o1+>}:{:@
ao\~1+

Po raz kolejny> <> radzi sobie całkiem dobrze przy kolejnym ćwiczeniu drukowania liczb. Uruchom z -vflagą do wprowadzania danych, np

py -3 fish.py -v 4

Wyjaśnienie

&               Put n in register
1               Push 1 (call this "i")

[outer loop]

:&:&)?          If i > n...
;                 Halt
1                 Else push 1 (call this "j")

[inner loop]

}:{:@(?         If j > i...
~1+ao             Pop j, print newline, increment i and go to start of outer loop
:n" "o1+          Else print j, print a space, increment j and go to start of inner loop

3

C (bez pętli, tak!) - 72 bajty

b(n,c){if(n){b(n-1,32);printf("%d%c",n,c);}}r(n){if(n){r(n-1);b(n,10);}}

Tworzy to funkcję, r(n)której można użyć w ten sposób:

main(){ r(5); }

Zobacz to w akcji, tutaj na tutorialspoint.com

Wymaga kilku prostych sztuczek, które można łatwo wyjaśnić. Myślę, że można to znacznie poprawić.


1
W rzeczywistości jest to 75 bajtów, a nie 74. Można go jednak zmniejszyć do 72 bajtów, zastępując „32” i „\ n” 10:b(n,c){if(n){b(n-1,32);printf("%d%c",n,c);}}r(n){if(n){r(n-1);b(n,10);}}
FatalSleep

1
Całkiem niezła sztuczka, dzięki!
A. Breust

Dzięki! Zrobiłem, co mogłem, aby cię poprawić w kategorii C, ale nie mogłem nic skrócić! Dlatego postanowiłem skrócić twój.
FatalSleep

64 bajty b(n,c){n&&b(n-1,32)^printf("%d%c",n,c);}r(n){n&&r(n-1)^b(n,10);} Wandbox
o79y

2

Python 2 - 72

>>> def p(N):print'\n'.join(' '.join(map(str,range(1,i+2)))for i in range(N))
... 
>>> p(5)
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5

Aby uzyskać odpowiedzi na tej stronie, powinieneś napisać pełny program lub funkcję. Powinieneś wydrukować wynik na standardowe wyjście lub zwrócić je z funkcji. N należy odczytać z danych wejściowych lub przyjąć jako parametr funkcji, a nie jako predefiniowaną zmienną.
jimmy23013

@ user23013 OK, naprawiono!
Kasramvd 12.03.15

Definicja funkcji musi być uwzględniona w liczbie bajtów, więc nie sądzę, że jest to 61. Prawdopodobnie w twoim najlepszym interesie jest nazywanie tej funkcji czymś krótkim p. Z drugiej strony możesz usunąć dwa spacje - jeden między printi '\n'drugi między )))i for.
Sp3000,

@ Sp3000 OK, dziękuję za uwagę! naprawiono !;)
Kasramvd 12.03.15

72:def p(N):print'\n'.join(' '.join(map(str,range(1,i+2)))for i in range(N))
patrz

2

Perl, 28

Odczytuje parametr ze standardowego wejścia.

@x=1..$_,print"@x
"for 1..<>

Z linii poleceń:

perl -E'$,=$";say 1..$_ for 1..<>'

ale nie wiem, jak to policzyć (prawdopodobnie między 25 a 29).


1

Pyton

import string
N,s=int(input()),list(string.digits)
for i in range(1,N+1):
    print(' '.join(s[1:i+1]))

1
Czy to nie zawiedzie, jeśli N> = 10?
patrz

@Sieg Tak masz rację. Właśnie uczyłem się Pythona, szukałem sposobu na konwersję listy int na listę ciągów.
bacchusbeale

63 bajty: for i in range(int(input())):print(' '.join("123456789"[:i+1]))- Zauważ, że ciągi są traktowane jak listy.
patrz


1

Klip , 16

Jm[ijkw,1iwS},1n

Wyjaśnienie

J                   .- join with newlines                           -.
 m[i        },1n    .- map numbers from 1 to numeric value of input -.
    jkw   wS        .- join with spaces                             -.
       ,1i          .- numbers from 1 to index                      -.

1

Udać się, 93 81 78 93 90 bajtów

func r(n int)(s string){s=string(n+48);if n!=1{s=r(n-1)+" "+s};println(s);return}

Obecny nie golfił

func r(n int) (s string) {
    // Convert n to a string, we do not have to initialize s since
    // we hijacked the return value.
    // Numbers in the ascii table starts at 48
    s = string(n | 48)
    // Unless we are on our last iteration, we need previous iterations,
    // a space and our current iteration
    if n != 1 {
        // Collect the result of previous iteration for output
        s = r(n-1) + " " + s
    }
    println(s)
    // We can use a naked return since we specified the
    // name of our return value in the function signature
    return
}

Jeśli musimy obsłużyć N> 9, możemy użyć następujących przy 78 bajtach, jednak wymaga to zaimportowania fmtpakietu.

func r(n int)(s string){s=Sprint(n);if n!=1{s=r(n-1)+" "+s};Println(s);return}

Jeśli dołączymy instrukcję importu, wrócę do początkowej wersji 93 92 90 bajtów

import."fmt";func r(n int)(s string){s=Sprint(n);if n>1{s=r(n-1)+" "+s};Println(s);return}

Przetestuj online tutaj: http://play.golang.org/p/BWLQ9R6ilw

Wersja z fmtjest tutaj: http://play.golang.org/p/hQEkLvpiqt


Nie jestem pewien, co sądzę o rzucie łańcucha, ale wszelkie próby przekształcenia go w tablicę bajtów po prostu
wydłużają

Główny problem, jaki widzę, to to, że nie działa dla n> 9. Możesz jednak zapisać bajt, zmieniając !=na >.
Geobits,

@Bigtoes, teraz naprawione, nie wiem, czy mam liczyć importoświadczenie
Kristoffer Sall-Storgaard

Wiem, że są liczone dla języków, które znam lepiej, więc najprawdopodobniej tak. Ssie, wiem :)
Geobits

1

ZX / Sinclair BASIC - 39 bajtów

ZX Basic wykorzystuje 1 bajt na słowo kluczowe (wszystkie wielkie litery), więc pomaga nieco zmniejszyć rozmiar bajtu ...

1 INPUT n:FOR i=1 TO n:FOR j=1 TO i:PRINT j;" ";:NEXT j:PRINT:NEXT i

Używając n = 8

wprowadź opis zdjęcia tutaj


1
Miły. Ale ZX basic używa 6 dodatkowych ukrytych bajtów dla każdego literału liczbowego (wspólna sztuczka to VAL("1")(6 bajtów, ponieważ VAL to 1) zamiast 1(7 bajtów))
edc65

1

R, 28

for(i in 1:scan())print(1:i)

Dane wyjściowe są niepoprawne dla wartości wejściowej 0. Ponadto nie jest jasne, czy interlinia [1]w każdym wierszu narusza specyfikację.
Alex A.

@AlexA. jeśli przyjrzysz się uważnie pytaniu, zobaczysz mój komentarz z pytaniem, jakie zachowanie powinno być dla n = 0. Ale dzięki za wskazanie mi właściwego kierunku!
freekvd 13.03.15

Widziałem komentarz. Chodzi o to, że to nie drukuje nic dla 0, tylko drukuje 1; 1 0. (Udawaj, że ;to przerwa na linii).
Alex A.,

Możesz również rozważyć użycie cat(1:i,"\n"). Mimo że jest nieco dłuższy print(1:i), nie zawiera wiodących znaków [1]w każdej linii.
Alex A.

1

TI-Basic, 28 bajtów

Input N
For(I,1,N
randIntNoRep(1,N->L1
SortA(L1
Disp L1
End

1
Nie wyświetla się, jak wskazuje format; raczej tablica jest wyświetlana, w nawiasach i wszystkim, na ekranie głównym.
lirtosiast

1

C, 89 znaków

// 90 characters
f(int n){int a=1,b;for(;n--;++a){for(b=0;b<a;++b)printf("%c%d",(!!b)*' ',b+1);puts("");}}

Aby wyeliminować zamieszanie wokół puts("");. To po prostu drukuje znak nowej linii (jak widać tutaj ):

Zauważ, że puts nie tylko różni się od fputs tym, że używa stdout jako miejsca docelowego, ale także automatycznie dodaje znak nowej linii na końcu (co nie fputs).

Mam nieco krótszy algorytm java @ TheBestOne:

// 89 characters
f(int a){char b[999]="",*p=b+1;int c=0;for(;a--&&(sprintf(b,"%s %d",b,++c)&&puts(p)););}

puts("");nic nie robi. Możesz użyć char b[999]=""zamiast char b[999]={0}zapisać 1 postać.
mch

2
puts("");wypisuje znak nowej linii.
Felix Bytow

1

Perl: 34 znaków

print"@$_\n"for map[1..$_],1..$_;

Ten kod pobiera numer wejściowy dostarczany przez specjalną zmienną $_.


1
Większość nawiasów jest tutaj zbędna: print"@$_\n"for map[1..$_],1..$_działa również.
nutki

Poprawiłem kod.
Felix Bytow

1

C # - 94 bajtów

Zapisane jako anonimowa funkcja zwracająca ciąg, który nie wydaje się być niedozwolony przez specyfikację.

n=>String.Join("\n\n",Enumerable.Range(1,n).Select(l=>String.Join(" ",Enumerable.Range(1,l))))

Oto wersja bez golfa (komentarze są czytane w kolejności BDCA):

n =>
    String.Join("\n\n",                    //...then join it together with newlines.
        Enumerable.Range(1, n).Select(l => //For each l from 1 to n, ...
                String.Join(" ",              //...and join it with spaces, ...
                    Enumerable.Range(1, l)    //...get the range from 1 to l, ...

1

Bash + coreutils, 26 bajtów

seq $1|sed "x;G;s/\n/ /;h"
  • seq po prostu generuje liczby od 1 do n
  • sed zapisuje cały wynik dla danego wiersza w przestrzeni wstrzymania, a następnie dołącza do niego następny wiersz.

1

Haskell, 62 57 bajtów

e=enumFromTo 1
f=putStr.unlines.map(unwords.map show.e).e

Styl bez punktów. Przykład użycia:

Prelude> f 5
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5

Wykonanie e=enumFromTo 1oszczędza 7 bajtów.
Zgarb,

@Zgarb: Dzięki, ale jeśli się wymienię enumFromTo 1, muszę również nadać głównej funkcji nazwę, więc jest to 5 bajtów. Bez nazwy byłby to letkonstrukt:let e=enumFromTo 1 in (putStr.unlines.map(unwords.map show.e).e) 5
nimi


1

Scala, 73 65 62 bajtów

(n:Int)=>print(1 to n map(1 to _ mkString " ") mkString "\n")

Nie golfił

def printNumberTriangle(n: Int): Unit = {
  def rowString(m: Int): String = 1.to(m).mkString(" ")
  print(1.to(n).map(rowString).mkString("\n"))
}
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.