Wydrukuj imiona postaci


42

Każdy znak Unicode ma nazwę, na przykład „LATIN CAPITAL LETTER A”. Nazwa znaku Unicode może zawierać tylko wielkie litery, białe znaki i znak minus.

Napisz program, który odczytuje tekst i wyświetla nazwy każdego znaku w nowym wierszu. Na przykład, jeśli dane wejściowe to „Hello, World!”, Dane wyjściowe to

LATIN CAPITAL LETTER H
LATIN SMALL LETTER E
LATIN SMALL LETTER L
LATIN SMALL LETTER L
LATIN SMALL LETTER O
COMMA
SPACE
LATIN CAPITAL LETTER W
LATIN SMALL LETTER O
LATIN SMALL LETTER R
LATIN SMALL LETTER L
LATIN SMALL LETTER D
EXCLAMATION MARK
  • Dane wejściowe powinny pochodzić z pliku lub danych użytkownika, a nie tylko z ciągu znaków w kodzie.
  • Dane wyjściowe należy zapisać do pliku lub standardowego wyjścia lub wydrukować na ekranie.
  • Internet i biblioteki zewnętrzne nie są dozwolone, wszystkie niezbędne dane powinny znajdować się w kodzie.
  • Załóżmy, że dane wejściowe zawierają tylko drukowalne znaki ASCII w zakresie podstawowego kodu łacińskiego 32-126. Możesz zignorować końcowy znak nowej linii.
  • Wszystkie języki programowania są dozwolone. Najkrótszy kod w bajtach wygrywa.

Oficjalne nazwy znaków Unicode można znaleźć tutaj . Innych źródeł:

To jest moje pierwsze pytanie, więc byłbym wdzięczny za wszelkie sugestie, czy można to poprawić.

Na potrzeby tego wyzwania poniższa lista ma charakter normatywny.

    32  0020        SPACE
!   33  0021        EXCLAMATION MARK
"   34  0022        QUOTATION MARK
#   35  0023        NUMBER SIGN
$   36  0024        DOLLAR SIGN
%   37  0025        PERCENT SIGN
&   38  0026        AMPERSAND
'   39  0027        APOSTROPHE
(   40  0028        LEFT PARENTHESIS
)   41  0029        RIGHT PARENTHESIS
*   42  002A        ASTERISK
+   43  002B        PLUS SIGN
,   44  002C        COMMA
-   45  002D        HYPHEN-MINUS
.   46  002E        FULL STOP
/   47  002F        SOLIDUS
0   48  0030        DIGIT ZERO
1   49  0031        DIGIT ONE
2   50  0032        DIGIT TWO
3   51  0033        DIGIT THREE
4   52  0034        DIGIT FOUR
5   53  0035        DIGIT FIVE
6   54  0036        DIGIT SIX
7   55  0037        DIGIT SEVEN
8   56  0038        DIGIT EIGHT
9   57  0039        DIGIT NINE
:   58  003A        COLON
;   59  003B        SEMICOLON
<   60  003C        LESS-THAN SIGN
=   61  003D        EQUALS SIGN
>   62  003E        GREATER-THAN SIGN
?   63  003F        QUESTION MARK
@   64  0040        COMMERCIAL AT
A   65  0041        LATIN CAPITAL LETTER A
B   66  0042        LATIN CAPITAL LETTER B
C   67  0043        LATIN CAPITAL LETTER C
D   68  0044        LATIN CAPITAL LETTER D
E   69  0045        LATIN CAPITAL LETTER E
F   70  0046        LATIN CAPITAL LETTER F
G   71  0047        LATIN CAPITAL LETTER G
H   72  0048        LATIN CAPITAL LETTER H
I   73  0049        LATIN CAPITAL LETTER I
J   74  004A        LATIN CAPITAL LETTER J
K   75  004B        LATIN CAPITAL LETTER K
L   76  004C        LATIN CAPITAL LETTER L
M   77  004D        LATIN CAPITAL LETTER M
N   78  004E        LATIN CAPITAL LETTER N
O   79  004F        LATIN CAPITAL LETTER O
P   80  0050        LATIN CAPITAL LETTER P
Q   81  0051        LATIN CAPITAL LETTER Q
R   82  0052        LATIN CAPITAL LETTER R
S   83  0053        LATIN CAPITAL LETTER S
T   84  0054        LATIN CAPITAL LETTER T
U   85  0055        LATIN CAPITAL LETTER U
V   86  0056        LATIN CAPITAL LETTER V
W   87  0057        LATIN CAPITAL LETTER W
X   88  0058        LATIN CAPITAL LETTER X
Y   89  0059        LATIN CAPITAL LETTER Y
Z   90  005A        LATIN CAPITAL LETTER Z
[   91  005B        LEFT SQUARE BRACKET
\   92  005C        REVERSE SOLIDUS
]   93  005D        RIGHT SQUARE BRACKET
^   94  005E        CIRCUMFLEX ACCENT
_   95  005F        LOW LINE
`   96  0060        GRAVE ACCENT
a   97  0061        LATIN SMALL LETTER A
b   98  0062        LATIN SMALL LETTER B
c   99  0063        LATIN SMALL LETTER C
d   100 0064        LATIN SMALL LETTER D
e   101 0065        LATIN SMALL LETTER E
f   102 0066        LATIN SMALL LETTER F
g   103 0067        LATIN SMALL LETTER G
h   104 0068        LATIN SMALL LETTER H
i   105 0069        LATIN SMALL LETTER I
j   106 006A        LATIN SMALL LETTER J
k   107 006B        LATIN SMALL LETTER K
l   108 006C        LATIN SMALL LETTER L
m   109 006D        LATIN SMALL LETTER M
n   110 006E        LATIN SMALL LETTER N
o   111 006F        LATIN SMALL LETTER O
p   112 0070        LATIN SMALL LETTER P
q   113 0071        LATIN SMALL LETTER Q
r   114 0072        LATIN SMALL LETTER R
s   115 0073        LATIN SMALL LETTER S
t   116 0074        LATIN SMALL LETTER T
u   117 0075        LATIN SMALL LETTER U
v   118 0076        LATIN SMALL LETTER V
w   119 0077        LATIN SMALL LETTER W
x   120 0078        LATIN SMALL LETTER X
y   121 0079        LATIN SMALL LETTER Y
z   122 007A        LATIN SMALL LETTER Z
{   123 007B        LEFT CURLY BRACKET
|   124 007C        VERTICAL LINE
}   125 007D        RIGHT CURLY BRACKET
~   126 007E        TILDE

4
Cześć, poszedłem naprzód i zredagowałem twoje pytanie, wycofaj się, jeśli się nie zgadzasz. Nie potrzebujesz więcej źródeł informacji, potrzebujesz jednej , normatywnej wersji pytania, aby uniknąć problemów z rozbieżnościami. Wybrałem ssec.wisc.edu/~tomw/java/unicode.html#x0000, ponieważ był najbardziej zwięzły. Poza tym +1
Level River St

Dzięki za edycję @steveverrill, byłem zbyt leniwy, by sam to zrobić.
ja i mój kot

Najwyraźniej wartości są dostępne jako część systemu Windows w C:\Windows\System32\getuname.dll. Czy to również liczy się jako „biblioteka zewnętrzna”, nawet jeśli jest wbudowana w system Windows?
lc.

6
Właśnie nauczyłem się słowa solidus.
Łukasza

Odpowiedzi:


31

Java - 113 bajtów (152, jeśli odczytane z wiersza poleceń)

Edycja: usunięto bezużyteczne nawiasy klamrowe.

Edycja2: usunięto niepotrzebną zmienną.

Edycja3: Zamiast Character.getName () używam c.getName ().

Edycja4: Przekazywanie ciągu jako argumentu wiersza poleceń.

Z argumentem wiersza poleceń (113 bajtów):

class Z{public static void main(String[]x){for(Character c:x[0].toCharArray())System.out.println(c.getName(c));}}

Z linią odczytu (152 bajty):

class Z{public static void main(String[]x){for(Character c:new java.util.Scanner(System.in).nextLine().toCharArray())System.out.println(c.getName(c));}}

Java ma wszystko, czego potrzeba. Jestem pewien, że można to zagrać w golfa.


7
Cholera! Wbudowany! Aby uczynić to interesującym wyzwaniem, uważam, że jest to niezgodne z „wszystkie niezbędne dane powinny znajdować się w kodzie”. Ale bardzo sprytny.
Level River St

1
@steveverrill No cóż :). Widziałem inne wyzwanie, w którym pospolite seplenienie zrobiło coś podobnego (licząc od jednego do 100, jeśli dobrze pamiętam).
Peter Lenkefi,

6
Wow, tym razem Java ma szansę pokonać wiele języków golfowych.
vsz

4
Alternatywne rozwiązanie Java 8: x[0].chars().forEach(i->System.out.println(Character.getName(i)));Zapisuje 2 znaki w porównaniu do rozwiązania argumentów wiersza poleceń (przez zastąpienie for-loop).
hjk

3
A możex[0].chars().map(' '::getName).forEach(System.out::println);
Eric

18

Python 3, 56 bajtów

Używa wbudowanej funkcji unicodedata.name(), więc może nie być kompetentna. Odpowiedź Java zrobiła to samo, więc pomyślałem, że przynajmniej warto było to opublikować.

from unicodedata import*
for i in input():print(name(i))

Chciałem też napisać jedną w pythonie, ale moja odpowiedź w języku Java była wystarczająco cheatyczna :).
Peter Lenkefi,

1
Z pewnością for i in input():print(unicodedata.name(i))jest krótszy?
Eric

1
@Eric Nie. Musisz import unicodedata, więc to już dłużej .
mbomb007

17

JavaScript (ES6) 594 618 626

Uwaga : Mógłbym zaoszczędzić ~ 30 bajtów na kompresji długiego łańcucha za pomocą atob / btoa, ale znak utf8 powyżej „~” nie jest dobrze akceptowany przez edytor postów Stack Exchange. Zamiast tego wolę zachować działający fragment kodu.

Edytuj 8 znaków zapisanych dzięki @Ypnypn

Oczywista kompresja powtarzających się słów. Nowa linia w backticks jest znacząca i liczona.

Przetestuj uruchomienie fragmentu w przeglądarce Firefox.

// TEST SUITE
// for testing purpose, redefine alert() to write inside the snippet body
alert=x=>O.innerHTML=x
// for testing purpose, redefine prompt() to have a default text containing all characters
_prompt=prompt
prompt=(i,s)=>{
  for(s='',i=32;i<127;i++)s+=String.fromCharCode(i);
  return _prompt("Insert your message or keep the default",s);
}  
  
// That's the answer code:
z='SPACE/EXCLAMA0QUOTA0NUMBER1DOLLAR1PERCENT1AMPERSAND/APOSTROPHE3242ASTERISK/PLUS1COMMA/HYPHEN-MINUS/FULL STOP/78ZERO8ONE8TWO8THREE8FOUR8FIVE8SIX8SEVEN8EIGHT8NINE86SEMI6LESS-THAN1EQUALS1GREATER-THAN1QUES0COMMERCIAL AT3SQUARE5REVERSE 7/4SQUARE5CIRCUMFLEX9/LOW LINE/GRAVE93CURLY5VERTICAL LINE/4CURLY5TILDE'.replace(/\d/g,c=>'TION MARK/, SIGN/,PARENTHESIS/,/LEFT ,RIGHT , BRACKET/,COLON/,SOLIDUS,/DIGIT , ACCENT'.split`,`[c]).split`/`,alert([...prompt()].map(c=>(q=c.charCodeAt()-32)<33?z[q]:q<59?'LATIN CAPITAL LETTER '+c:q<65?z[q-26]:q<91?'LATIN SMALL LETTER '+c.toUpperCase():z[q-52]).join`
`)
<pre id=O></pre>


9

R, 54 bajty 62

library(Unicode)
cat(u_char_name(utf8ToInt(scan(,""))),sep="\n")

Edycja: na komentarz @flodels, muszę go najpierw przeczytać z połączenia, więc musiałem dodać scan. Jest to również prawdopodobnie rozwiązanie niekompetentne, zgodne ze wszystkimi zasadami.

Stosowanie

> cat(u_char_name(utf8ToInt(scan(,""))),sep="\n")
1: 'Hello, World!'
2: 
Read 1 item
LATIN CAPITAL LETTER H
LATIN SMALL LETTER E
LATIN SMALL LETTER L
LATIN SMALL LETTER L
LATIN SMALL LETTER O
COMMA
SPACE
LATIN CAPITAL LETTER W
LATIN SMALL LETTER O
LATIN SMALL LETTER R
LATIN SMALL LETTER L
LATIN SMALL LETTER D
EXCLAMATION MARK

Możesz także zawinąć w funkcję dla wygodniejszego użytkowania

UNI <- function(x)cat(paste0(u_char_name(utf8ToInt(x)),"\n"))

Zatem użycie jest po prostu

UNI("Hello, World!")

1
Liczba bajtów jest poprawna :)
Rozpad Beta

1
Witamy w PPCG! : D
Beta Decay

Dobrze, że masz wbudowane zadanie, ale wynik nie jest zgodny z żądaniem - tabela 4 kolumn zamiast tabeli 1 kolumny. Myślę, że powinieneś dodać trochę rdzenia, aby uzyskać poprawne wyjście
edc65

@ edc65, że łatwo to naprawić, właśnie pomyślałem o tym jako bonusie.
David Arenburg,

@ edc65 naprawił to.
David Arenburg,

7

Perl 6 , 21 bajtów

Nie widziałem reguły wyraźnie przeciwnej użyciu wbudowanej metody uzyskiwania nazw Unicode.
(Również odpowiedź Java, która jest obecnie najwyżej oceniana, robi to samo)

.say for get.uninames

1
Perl 6 jest dziwny. Ale to uwielbiam.
kot

6

Perl (+ coreutils) , 563 bajty

Uwaga : poniżej nie będzie działać tak, jak jest, należy je odtworzyć z xxdzrzutu poniżej! Próbowałem przekazać nieprzetworzone dane od razu zcat, ale to się nie udało. Mogę po prostu użyć natywnego modułu Perl Gzip, ale to na pewno jutro!

use MIME::Base64;$x=encode_base64(join'',<DATA>);print eval(`base64 -D<<<'$x'|zcat`)->[-32+ord$_].$/for<>=~/./g
__END__
.....x.U.._.u.[r. .@.._~.E(X.i..............J_....1..N......7K......|ih....P...a7......,a.....o.!.=N.K.i.....$..vFv.Pv..........*o...=..|o..O.B..c%2\bj1Gr...nr.|c.{...q......3......aw;b\1...C.Yp..l..K...bB..2C...K..O8e.v...."..C..
.s; .}Oj.....JC..-`@.gMXM..@M...41k.i.K..M.&.&.&.&.&.MdM.&.;..X5q..M.wM|o....3.s.{....MJf4.h>G..B...~$....w...WC.q.2..b.o..Hh.7|.... c..(.I......d|.1...8.8.8.x.q.1.X..*.U.W..d|.....f..4f...l..g'>..oUq4.....j.jU...
0000000: 7573 6520 4d49 4d45 3a3a 4261 7365 3634  use MIME::Base64
0000010: 3b24 783d 656e 636f 6465 5f62 6173 6536  ;$x=encode_base6
0000020: 3428 6a6f 696e 2727 2c3c 4441 5441 3e29  4(join'',<DATA>)
0000030: 3b70 7269 6e74 2065 7661 6c28 6062 6173  ;print eval(`bas
0000040: 6536 3420 2d44 3c3c 3c27 2478 277c 7a63  e64 -D<<<'$x'|zc
0000050: 6174 6029 2d3e 5b2d 3332 2b6f 7264 245f  at`)->[-32+ord$_
0000060: 5d2e 242f 666f 723c 3e3d 7e2f 2e2f 670a  ].$/for<>=~/./g.
0000070: 5f5f 454e 445f 5f0a 1f8b 0808 ff78 ec55  __END__......x.U
0000080: 0003 5f00 7594 5b72 eb20 0c40 b7c2 5f7e  .._.u.[r. .@.._~
0000090: da45 2858 b669 c4c3 089c a49d ee7f 1b17  .E(X.i..........
00000a0: 92b1 9df4 4a5f 96ce d180 3192 7f4e 9cc0  ....J_....1..N..
00000b0: e2e9 e384 374b e0a1 b818 8c87 7c69 68a9  ....7K......|ih.
00000c0: b1bc 8150 fd19 b361 3785 960d 9108 f62c  ...P...a7......,
00000d0: 61b6 18ca 9682 6f80 210c 3d4e 914b 8e69  a.....o.!.=N.K.i
00000e0: eefb 108e c524 c8ad 7646 76dc 5076 d3fc  .....$..vFv.Pv..
00000f0: 9701 17cc 8efb ae89 2a6f cbda e83d b4e7  ........*o...=..
0000100: 7c6f ab85 4fef 42ed d563 2532 5c62 6a31  |o..O.B..c%2\bj1
0000110: 4772 c383 0e6e 72c5 7c63 8e7b 1203 ee71  Gr...nr.|c.{...q
0000120: b91e bccc 190f 33c6 9a8f c4ad 8761 773b  ......3......aw;
0000130: 625c 31ec 19f6 43ec 5970 8f8d 6ca4 d84b  b\1...C.Yp..l..K
0000140: 18bd db62 42e6 cf32 43d8 ce84 4b05 da4f  ...bB..2C...K..O
0000150: 3865 8476 f4b7 8aa5 22bf de43 ff0a ed73  8e.v...."..C...s
0000160: 3b20 037d 4f6a b714 8c85 e44a 4384 a52d  ; .}Oj.....JC..-
0000170: 6040 1367 4d58 4d0c 9a40 4d8c 9a98 3431  `@.gMXM..@M...41
0000180: 6bc2 69e2 4b13 174d 9026 bc26 8226 a226  k.i.K..M.&.&.&.&
0000190: 9226 164d 644d b026 d43b af9a 5835 71d5  .&.MdM.&.;..X5q.
00001a0: c44d 1377 4d7c 6fd3 cdad a133 9a73 067b  .M.wM|o....3.s.{
00001b0: c1fe aeb9 4d4a 6634 c768 3e47 febf 42eb  ....MJf4.h>G..B.
00001c0: b2ad 7e24 bc19 b0fd 77d2 978c 5743 cf71  ..~$....w...WC.q
00001d0: 9a32 acf8 621e 6fc1 1e48 68fa 377c 96b1  .2..b.o..Hh.7|..
00001e0: 95f1 2063 94f1 28e3 49c6 b38c 9d8c bf64  .. c..(.I......d
00001f0: 7c91 31c9 d8cb 38c8 38ca 38c9 7891 7196  |.1...8.8.8.x.q.
0000200: 31cb 58b9 cb2a e355 c657 19df 647c 97f1  1.X..*.U.W..d|..
0000210: dec2 b666 babf 3466 ebdf e26c eff5 6727  ...f..4f...l..g'
0000220: 3efb f76f 5571 34e0 e9f7 1fe2 6a1f 6a55  >..oUq4.....j.jU
0000230: 0700 00                                  ...

Aby odtworzyć plik, wykonaj:

xxd -r > 57413.pl

wklej zrzut heksowy i naciśnij Enter, a następnie Ctrl+ D.

Uruchom jako:

perl 57413.pl <<< 'Hello, World!'
LATIN CAPITAL LETTER H
LATIN SMALL LETTER E
LATIN SMALL LETTER L
LATIN SMALL LETTER L
LATIN SMALL LETTER O
COMMA
SPACE
LATIN CAPITAL LETTER W
LATIN SMALL LETTER O
LATIN SMALL LETTER R
LATIN SMALL LETTER L
LATIN SMALL LETTER D
EXCLAMATION MARK

Poprzednia czysta wersja Perla, 893 bajty

print[SPACE,'EXCLAMATION MARK','QUOTATION MARK',NUMBER.($s=" SIGN"),DOLLAR.$s,PERCENT.$s,AMPERSAND,APOSTROPHE,LEFT.($p=" PARENTHESIS"),RIGHT.$p,ASTERISK,PLUS.$s,COMMA,'HYPHEN-MINUS','FULL STOP',$d=SOLIDUS,($d="DIGIT ").ZERO,$d.ONE,$d.TWO,$d.THREE,$d.FOUR,$d.FIVE,$d.SIX,$d.SEVEN,$d.EIGHT,$d.NINE,COLON,SEMICOLON,"LESS-THAN$s",EQUALS.$s,"GREATER-THAN$s",'QUESTION MARK','COMMERCIAL AT',($b=($a=LATIN)." CAPITAL ".($l="LETTER ")).A,$b.B,$b.C,$b.D,$b.E,$b.F,$b.G,$b.H,$b.I,$b.J,$b.K,$b.L,$b.M,$b.N,$b.O,$b.P,$b.Q,$b.R,$b.S,$b.T,$b.U,$b.V,$b.W,$b.X,$b.Y,$b.Z,'LEFT SQUARE '.($e=BRACKET),"REVERSE $d","RIGHT SQUARE $e",'CIRCUMFLEX ACCENT','LOW LINE','GRAVE ACCENT',($m="$a SMALL $l ").A,$m.B,$m.C,$m.D,$m.E,$m.F,$m.G,$m.H,$m.I,$m.J,$m.K,$m.L,$m.M,$m.N,$m.O,$m.P,$m.Q,$m.R,$m.S,$m.T,$m.U,$m.V,$m.W,$m.X,$m.Y,$m.Z,"LEFT CURLY $e",'VERTICAL LINE',"RIGHT CURLY $e",TILDE]->[-32+ord$_].$/for<>=~/./g

5

awk - 794 739

     1 LATINOWY LITERA KAPITAŁOWA B
     2 LATINOWY LITERA KAPITAŁOWA E
     3 LATINOWY LITERA KAPITAŁOWA G
     4 LATINOWY LITER KAPITAŁOWY I
     5 LATINOWY LITERA KAPITAŁOWA N
     6 LEWY UCHWYT KRÓTKI 
     7 LATIN MAŁY LITER S.
     8 ŁACIŃSKI MAŁY LIST P.
     9 LATIN MAŁY LIST L
    10 ŁACIŃSKI MAŁY LIST I
    11 ŁACIŃSKI MAŁY LIST T
    12 LEWA RODZINA 
    13 ZNAK CYTATOWY 
    14 ŁACIŃSKI MAŁY LIST I
    15 COMMA 
    16 LATINOWY LITERA KAPITAŁOWA L
    17 ŁACIŃSKI MAŁY LIST V
    18 COMMA 
    19 LATINOWY LITER KAPITAŁOWY S.
    20 ŁACIŃSKI MAŁY LIST V
    21 COMMA 
    22 ŁACIŃSKI MAŁY LIST A
    23 ŁACIŃSKI MAŁY LIST X
    24 COMMA 
    25 AKCENT CIRCUMFLEX 
    26 ŁACIŃSKI MAŁY LIST X
    27 COMMA 
    28 LEWY UCHWYT KWADRATOWY 
    29 ŁACIŃSKI MAŁY LIST X
    30 COMMA 
    31 LATINOWY LITERA KAPITAŁOWA Q
    32 COMMA 
    33 LATINOWY LITERA KAPITAŁOWA O
    34 COMMA 
    35 ŁACIŃSKI MAŁY LIST T
    36 LATINOWY LITERA KAPITAŁOWA K
    37 COMMA 
    38 ŁACIŃSKI MAŁY LIST C
    39 LATINOWY LITER KAPITAŁOWY K
    40 COMMA 
    41 LATINOWY LITERA KAPITAŁOWA V
    42 COMMA 
    43 ŁACIŃSKI MAŁY LIST Q
    44 ŁACIŃSKI MAŁY LIST X
    45 COMMA 
    46 LATIN MAŁY LIST G
    47 COMMA 
    48 LATINOWY LITER KAPITAŁOWY I
    49 COMMA 
    50 LATIN MAŁY LIST W
    51 LATIN MAŁY LIST U
    52 COMMA 
    53 LATINOWY LITERA KAPITAŁOWA X
    54 COMMA 
    55 ŁACIŃSKI MAŁY LIST B
    56 ŁACIŃSKI MAŁY LIST Y
    57 COMMA 
    58 ŁACIŃSKI MAŁY LIST B
    59 LEWY UCHWYT KRÓTKI 
    60 COMMA 
    61 ŁACIŃSKI MAŁY LIST B
    62 LATIN MAŁY LIST Z
    63 COMMA 
    64 ŁACIŃSKI MAŁY LIST B
    65 ŁACIŃSKI MAŁY LIST D
    66 COMMA 
    67 ŁACIŃSKI MAŁY LIST B
    68 ŁACIŃSKI MAŁY LIST P.
    69 COMMA 
    70 ŁACIŃSKI MAŁY LIST B
    71 ŁACIŃSKI MAŁY LIST R
    72 COMMA 
    73 LATIN MAŁY LIST B
    74 PRAWY, OBECNY WSPORNIK 
    75 COMMA 
    76 ŁACIŃSKI MAŁY LIST B
    77 ŁACIŃSKI MAŁY LIST K
    78 COMMA 
    79 LATIN MAŁY LIST B
    80 LATIN MAŁY LIST L
    81 COMMA 
    82 ŁACIŃSKI MAŁY LIST B
    83 ŁACIŃSKI MAŁY LIST O
    84 COMMA 
    85 ŁACIŃSKI MAŁY LIST E.
    86 COMMA 
    87 LATINOWY LITERA KAPITAŁOWA str
    88 COMMA 
    89 LATINOWY LITERA KAPITAŁOWA R
    90 ŁACIŃSKI MAŁY LIST X
    91 COMMA 
    92 LOW LINE 
    93 ŁACIŃSKI MAŁY LIST X
    94 COMMA 
    95 LATINOWY LITER KAPITAŁOWY J
    96 ŁACIŃSKI MAŁY LIST X
    97 COMMA 
    98 LATINOWY LITERA KAPITAŁOWA U
    99 ŁACIŃSKI MAŁY LIST V
   100 COMMA 
   101 LATINOWY LITERA KAPITAŁOWA M
   102 TILDE 
   103 COMMA 
   104 PRZESTRZEŃ 
   105 ŁACIŃSKI MAŁY LIST T
   106 GRAVE ACCENT 
   107 Łaciński litera Y
   108 COMMA 
   109 Łaciński litera Z
   110 LATINOWY LITER KAPITAŁOWY X
   111 COMMA 
   112 ŁACIŃSKI MAŁY LIST C
   113 GRAVE ACCENT 
   114 Łaciński litera Y
   115 COMMA 
   116 LATINOWY LITERA KAPITAŁOWA N
   117 REVERSE SOLIDUS 
   118 REVERSE SOLIDUS 
   119 COMMA 
   120 LINIA PIONOWA 
   121 ŁACIŃSKI MAŁY LIST S.
   122 COMMA 
   123 ŁACIŃSKI MAŁY LIST M
   124 REVERSE SOLIDUS 
   125 REVERSE SOLIDUS 
   126 COMMA 
   127 PRZESTRZEŃ 
   128 ŁACIŃSKI MAŁY LIST T
   129 LATIN MAŁY LIST H
   130 Łaciński litera Y
   131 COMMA 
   132 LATINOWY LITER KAPITAŁOWY T
   133 ŁACIŃSKI MAŁY LIST S.
   134 COMMA 
   135 ŁACIŃSKI MAŁY LIST C
   136 LATIN MAŁY LIST H
   137 Łaciński litera Y
   138 COMMA 
   139 ŁACIŃSKI MAŁY LIST F.
   140 PRZESTRZEŃ 
   141 ŁACIŃSKI LITER H
   142 Łaciński litera Y
   143 LATINOWY LITERA KAPITAŁOWA str
   144 LATINOWY LITERA KAPITAŁOWA H
   145 LATINOWY LITERA KAPITAŁOWA E
   146 LATINOWY LITERA KAPITAŁOWA N
   147 HYPHEN-MINUS 
   148 LATINOWY LITERA KAPITAŁOWA M
   149 LITYNOWY LIST KAPITAŁOWY I
   150 LATINOWY LITERA KAPITAŁOWA N
   151 LATINOWY LITERA KAPITAŁOWA U
   152 LATINY LITERY KAPITAŁOWE S.
   153 PRZESTRZEŃ 
   154 LATYNA LITERA KAPITAŁOWA G
   155 LATINOWY LITERA KAPITAŁOWA R
   156 LATINOWY LITERA KAPITAŁOWA E
   157 Łaciński litera A
   158 LATINOWY LITERA KAPITAŁOWA T
   159 Łaciński litera E
   160 LATINOWY LITERA KAPITAŁOWA R
   161 HYPHEN-MINUS 
   162 LATINOWY LITER KAPITAŁOWY T
   163 LATINOWY LITERA KAPITAŁOWA H
   164 LATYNA LITERA KAPITAŁOWA A
   165 LATINOWY LITERA KAPITAŁOWA N
   166 PRZESTRZEŃ 
   167 LATINOWY LITER KAPITAŁOWY str
   168 LATINOWY LITERA KAPITAŁOWA A
   169 LATINOWY LITERA KAPITAŁOWA R
   170 LATINOWY LITERA KAPITAŁOWA E
   171 LATINOWY LITERA KAPITAŁOWA N
   172 LATINOWY LITERA KAPITAŁOWA T
   173 LATINOWY LITERA H
   174 LATINOWY LITERA KAPITAŁOWA E
   175 LATINOWY LITER KAPITAŁOWY S.
   176 LATINOWY LITER KAPITAŁOWY I
   177 Łaciński litera s
   178 PRZESTRZEŃ 
   179 LATINOWY LITERA KAPITAŁOWA E
   180 LATINOWY LITERA KAPITAŁOWA X
   181 Łaciński litera C
   182 LATINOWY LITERA KAPITAŁOWA L
   183 Łaciński litera A
   184 LATINOWY LITERA KAPITAŁOWA M
   185 Łaciński litera A
   186 LATINOWY LITERA KAPITAŁOWA T
   187 Łaciński litera I
   188 LATINOWY LITERA KAPITAŁOWA O
   189 LATINOWY LITERA KAPITAŁOWA N
   190 PRZESTRZEŃ 
   191 Łaciński litera C
   192 LATINOWY LITERA KAPITAŁOWA O
   193 LATINOWY LITERA KAPITAŁOWA M
   194 LATINOWY LITERA KAPITAŁOWA M
   195 LATINOWY LITERA KAPITAŁOWA E
   196 LATINOWY LITERA KAPITAŁOWA R
   197 Łaciński litera C
   198 Łaciński litera I
   199 LATINOWY LITERA KAPITAŁOWA A
   200 LATINOWY LITER KAPITAŁOWY L
   201 PRZESTRZEŃ 
   202 LATINOWY LITER KAPITAŁOWY C
   203 LATINOWY LITER KAPITAŁOWY I
   204 LATINOWY LITERA KAPITAŁOWA R
   205 LATINOWY LITERA KAPITAŁOWA C
   206 LATINOWY LITERA KAPITAŁOWA U
   207 LATINOWY LITERA KAPITAŁOWA M
   208 LATINOWY LITERA KAPITAŁOWA F
   209 LATINOWY LITERA KAPITAŁOWA L
   210 LATINOWY LITERA KAPITAŁOWA E
   211 Łaciński litera X
   212 PRZESTRZEŃ 
   213 Łaciński litera A
   214 LATINOWY LITERA KAPITAŁOWA P.
   215 LATINOWY LITERA KAPITAŁOWA O
   216 Łaciński litera s
   217 Łaciński litera T
   218 LATINOWY LITERA KAPITAŁOWA R
   219 LATINOWY LITERA KAPITAŁOWA O
   220 LATINOWY LITER KAPITAŁOWY str
   221 Łaciński litera H
   222 LATINOWY LITERA KAPITAŁOWA E
   223 PRZESTRZEŃ 
   224 Łaciński litera s
   225 LATINOWY LITERA KAPITAŁOWA E
   226 LATINOWY LITERA KAPITAŁOWA M
   227 LITYNOWY LITER I
   228 Łaciński litera C
   229 Łaciński litera O
   230 LATINOWY LITERA KAPITAŁOWA L
   231 Łaciński litera O
   232 LATINOWY LITERA KAPITAŁOWA N
   233 PRZESTRZEŃ 
   234 Łaciński litera A
   235 LATINOWY LITERA KAPITAŁOWA M
   236 LATINOWY LITERA KAPITAŁOWA P.
   237 Łaciński litera E
   238 LATINOWY LITERA KAPITAŁOWA R
   239 Łaciński litera s
   240 LATINOWY LITERA KAPITAŁOWA A
   241 LATINOWY LITERA KAPITAŁOWA N
   242 Łaciński litera D
   243 PRZESTRZEŃ 
   244 LATINOWY LITERA KAPITAŁOWA L
   245 LATINOWY LITERA KAPITAŁOWA E
   246 Łaciński litera s
   247 Łaciński litera s
   248 HYPHEN-MINUS 
   249 LATINOWY LITERA KAPITAŁOWA T
   250 LATINOWY LITERA KAPITAŁOWA H
   251 Łaciński litera A
   252 LATINOWY LITERA KAPITAŁOWA N
   253 PRZESTRZEŃ 
   254 LATINOWY LITERA KAPITAŁOWA Q
   255 LATYNA LITERA KAPITAŁOWA U
   256 LATINOWY LITERA KAPITAŁOWA O
   257 Łaciński litera T
   258 Łaciński litera A
   259 LATINOWY LITERA KAPITAŁOWA T
   260 LATINOWY LITER KAPITAŁOWY I
   261 Łaciński litera O
   262 LATINOWY LITERA KAPITAŁOWA N
   263 PRZESTRZEŃ 
   264 Łaciński litera V
   265 Łaciński litera E
   266 Łaciński litera R
   267 LATINOWY LITERA KAPITAŁOWA T
   268 LATINOWY LITER KAPITAŁOWY I
   269 ​​LITYNOWY LITER KAPITAŁOWY C
   270 LATINOWY LITERA KAPITAŁOWA A
   271 LATINOWY LITERA KAPITAŁOWA L
   272 PRZESTRZEŃ 
   273 LATINOWY LITERA KAPITAŁOWA Q
   274 LATINOWY LITERA KAPITAŁOWA U
   275 LATINOWY LITERA KAPITAŁOWA E
   276 Łaciński litera s
   277 Łaciński litera T
   278 LATINOWY LITER KAPITAŁOWY I
   279 Łaciński litera O
   280 LATINOWY LITER KAPITAŁOWY N
   281 PRZESTRZEŃ 
   282 Łaciński litera A
   283 Łaciński litera s
   284 Łaciński litera T
   285 Łaciński litera E
   286 Łaciński litera R
   287 LATINOWY LITER KAPITAŁOWY I
   288 Łaciński litera s
   289 LATINOWY LITERA KAPITAŁOWA K
   290 PRZESTRZEŃ 
   291 Łaciński litera C
   292 Łaciński litera A
   293 LATINOWY LITERA KAPITAŁOWA P.
   294 LATINOWY LITER KAPITAŁOWY I
   295 LATINOWY LITERA KAPITAŁOWA T
   296 Łaciński litera A
   297 LATINOWY LITERA KAPITAŁOWA L
   298 PRZESTRZEŃ 
   299 Łaciński litera s
   300 LATINOWY LITERA KAPITAŁOWA O
   301 LATINOWY LITERA KAPITAŁOWA L
   302 LITINOWY LITER KAPITAŁOWY I
   303 LATINOWY LITERA D
   304 LATINOWY LITERA KAPITAŁOWA U
   305 Łaciński litera s
   306 MIEJSCA 
   307 LATINOWY LITERA B
   308 LATINOWY LITERA KAPITAŁOWA R
   309 LATINOWY LITERA KAPITAŁOWA A
   310 LATINOWY LITER KAPITAŁOWY C
   311 LATINOWY LITERA KAPITAŁOWA K
   312 LATINOWY LITERA KAPITAŁOWA E
   313 Łaciński litera T
   314 PRZESTRZEŃ 
   315 LATINOWY LITERA KAPITAŁOWA R
   316 LATINOWY LITERA KAPITAŁOWA E
   317 Łaciński litera V
   318 LATINOWY LITERA KAPITAŁOWA E
   319 LATINOWY LITERA KAPITAŁOWA R
   320 LATINOWY LITER KAPITAŁOWY S.
   321 Łaciński litera E
   322 PRZESTRZEŃ 
   323 LATINOWY LITERA KAPITAŁOWA P.
   324 LATINOWY LITERA KAPITAŁOWA E
   325 LATINOWY LITERA KAPITAŁOWA R
   326 Łaciński litera C
   327 Łaciński litera E
   328 LATINOWY LITERA KAPITAŁOWA N
   329 Łaciński litera T
   330 PRZESTRZEŃ 
   331 Łaciński litera A
   332 LATINOWY LITERA KAPITAŁOWA C
   333 LATINOWY LITER KAPITAŁOWY C
   334 LATINOWY LITERA KAPITAŁOWA E
   335 LATINOWY LITERA KAPITAŁOWA N
   336 Łaciński litera T
   337 PRZESTRZEŃ 
   338 LATINOWY LITERA KAPITAŁOWA L
   339 LATINOWY LITERA KAPITAŁOWA E
   340 LATINOWY LITERA KAPITAŁOWA T
   341 Łaciński litera T
   342 Łaciński litera E
   343 LATINOWY LITERA KAPITAŁOWA R
   344 PRZESTRZEŃ 
   345 Łaciński LITER D
   346 Łaciński litera O
   347 LATINOWY LITERA KAPITAŁOWA L
   348 LATINOWY LITERA KAPITAŁOWA L
   349 Łaciński litera A
   350 LATINOWY LITERA KAPITAŁOWA R
   351 PRZESTRZEŃ 
   352 Łaciński litera E
   353 LATINOWY LITERA KAPITAŁOWA Q
   354 LATINOWY LITERA KAPITAŁOWA U
   355 Łaciński litera A
   356 LATINOWY LITERA KAPITAŁOWA L
   357 Łaciński litera s
   358 PRZESTRZEŃ 
   359 Łaciński litera s
   360 LATINOWY LITER KAPITAŁOWY Q
   361 LATINOWY LITERA KAPITAŁOWA U
   362 Łaciński litera A
   363 LATINOWY LITERA KAPITAŁOWA R
   364 LATINOWY LITERA KAPITAŁOWA E
   365 SPACE 
   366 LATINOWY LITERA KAPITAŁOWA N
   367 LITINY LITERA KAPITAŁOWA U
   368 LATINOWY LITERA KAPITAŁOWA M
   369 LITYNOWY LITER KAPITAŁOWY B
   370 LATINOWY LITERA KAPITAŁOWA E
   371 Łaciński litera R
   372 PRZESTRZEŃ 
   373 Łaciński LITER D
   374 Łaciński litera I
   375 LATINOWY LITERA KAPITAŁOWA G
   376 Łaciński litera I
   377 Łaciński litera T
   378 PRZESTRZEŃ 
   379 LATINOWY LITERA KAPITAŁOWA R
   380 LATINOWY LITER KAPITAŁOWY I
   381 Łaciński litera G
   382 ŁACIŃSKI LITER H
   383 Łaciński litera T
   384 PRZESTRZEŃ 
   385 LATINOWY LITERA KAPITAŁOWA T
   386 Łaciński litera H
   387 Łaciński litera R
   388 LATINOWY LITERA KAPITAŁOWA E
   389 Łaciński litera E
   390 PRZESTRZEŃ 
   391 Łaciński litera C
   392 LATINOWY LITERA KAPITAŁOWA O
   393 LATINOWY LITERA KAPITAŁOWA L
   394 Łaciński litera O
   395 LATINOWY LITERA KAPITAŁOWA N
   396 MIEJSCA 
   397 Łaciński litera T
   398 Łaciński litera I
   399 LATINOWY LITERA KAPITAŁOWA L
   400 LATINOWY LITERA KAPITAŁOWA D
   401 Łaciński litera E
   402 PRZESTRZEŃ 
   403 Łaciński litera C
   404 LATINOWY LITERA KAPITAŁOWA O
   405 LATINOWY LITERA KAPITAŁOWA M
   406 LATINOWY LITERA KAPITAŁOWA M
   407 Łaciński litera A
   408 MIEJSCA 
   409 Łaciński litera C
   410 LATINOWY LITER KAPITAŁOWY U
   411 LATINOWY LITERA KAPITAŁOWA R
   412 LATINOWY LITERA KAPITAŁOWA L
   413 Łaciński litera Y
   414 PRZESTRZENI 
   415 Łaciński litera s
   416 LATINOWY LITERA KAPITAŁOWA P.
   417 Łaciński litera A
   418 Łaciński litera C
   419 LATINOWY LITERA KAPITAŁOWA E
   420 PRZESTRZEŃ 
   421 Łaciński litera s
   422 LATINOWY LITERA KAPITAŁOWA M
   423 ŁACIŃSKI LITER A
   424 LATINOWY LITERA KAPITAŁOWA L
   425 LATINOWY LITERA KAPITAŁOWA L
   426 SPACE 
   427 Łaciński litera s
   428 Łaciński litera E
   429 Łaciński litera V
   430 Łaciński litera E
   431 LATINOWY LITERA KAPITAŁOWA N
   432 PRZESTRZEŃ 
   433 LATINOWY LITERA KAPITAŁOWA E
   434 Łaciński litera I
   435 LATINOWY LITERA KAPITAŁOWA G
   436 Łaciński litera H
   437 LATINOWY LITERA KAPITAŁOWA T
   438 SPACE 
   439 LATINOWY LITERA KAPITAŁOWA G
   440 LATINOWY LITER KAPITAŁOWY R
   441 Łaciński litera A
   442 Łaciński litera V
   443 Łaciński litera E
   444 PRZESTRZEŃ 
   445 LATINOWY LITERA KAPITAŁOWA L
   446 Łaciński litera A
   447 Łaciński litera T
   448 Łaciński litera I
   449 LATINOWY LITERA KAPITAŁOWA N
   450 MIEJSCA 
   451 LATINOWY LITERA KAPITAŁOWA N
   452 LATINOWY LITER KAPITAŁOWY I
   453 LATINOWY LITERA KAPITAŁOWA N
   454 LATINOWY LITERA KAPITAŁOWA E
   455 MIEJSCA 
   456 Łaciński litera F
   457 LATINOWY LITERA KAPITAŁOWA O
   458 LATINOWY LITERA KAPITAŁOWA U
   459 LATINOWY LITERA KAPITAŁOWA R
   460 PRZESTRZEŃ 
   461 LATINOWY LITERA KAPITAŁOWA P.
   462 LATINOWY LITERA KAPITAŁOWA L
   463 LATINOWY LITERA KAPITAŁOWA U
   464 Łaciński litera s
   465 MIEJSCA 
   466 LATINOWY LITERA KAPITAŁOWA F
   467 LATINOWY LITER KAPITAŁOWY I
   468 Łaciński litera V
   469 Łaciński litera E
   470 MIEJSCA 
   471 LATINOWY LITERA KAPITAŁOWA L
   472 LATINOWY LITER KAPITAŁOWY I
   473 LATINOWY LITERA KAPITAŁOWA N
   474 LATINOWY LITERA KAPITAŁOWA E
   475 MIEJSCA 
   476 LATINOWY LITERA KAPITAŁOWA L
   477 Łaciński litera E
   478 LATINOWY LITERA KAPITAŁOWA F
   479 LATINOWY LITERA KAPITAŁOWA T
   480 PRZESTRZEŃ 
   481 Łaciński litera s
   482 Łaciński litera T
   483 LATINOWY LITERA KAPITAŁOWA O
   484 LITINY LITERA KAPITAŁOWA P.
   485 SPACE 
   486 LATINOWY LITERA KAPITAŁOWA M
   487 Łaciński litera A
   488 LATINOWY LITERA KAPITAŁOWA R
   489 LITINOWY LITER KAPITAŁOWY K
   490 MIEJSCA 
   491 Łaciński litera F
   492 Łaciński litera U
   493 LATINOWY LITERA KAPITAŁOWA L
   494 LATINOWY LITERA KAPITAŁOWA L
   495 MIEJSCA 
   496 Łaciński litera s
   497 Łaciński litera I
   498 LATINOWY LITERA KAPITAŁOWA G
   499 LATINOWY LITERA KAPITAŁOWA N
   500 MIEJSCA 
   501 LATINOWY LITER Z KAPITAŁU Z
   502 Łaciński litera E
   503 LATINOWY LITERA KAPITAŁOWA R
   504 LATINOWY LITERA KAPITAŁOWA O
   505 MIEJSCA 
   506 LATINOWY LITERA KAPITAŁOWA T
   507 Łaciński litera W
   508 LATINOWY LITERA KAPITAŁOWA O
   509 MIEJSCA 
   510 LATINOWY LITERA KAPITAŁOWA O
   511 LATINOWY LITERA KAPITAŁOWA N
   512 LATINOWY LITER KAPITAŁOWY E
   513 PRZESTRZEŃ 
   514 LATINOWY LITERA KAPITAŁOWA L
   515 Łaciński litera O
   516 LATINOWY LITERA KAPITAŁOWA W
   517 MIEJSCA 
   518 LATINOWY LITER KAPITAŁOWY S.
   519 LATINOWY LITER KAPITAŁOWY I
   520 LATINOWY LITER KAPITAŁOWY X
   521 PRZESTRZEŃ 
   522 LATINOWY LITER A
   523 LITINOWY LITER KAPITAŁOWY T
   524 ZNAK CYTATOWY 
   525 COMMA 
   526 LATIN MAŁY LIST W
   527 PRAWA RODZICA 
   528 SEMICOLON 
   529 ŁACIŃSKI MAŁY LIST Y
   ZNAK 530 RÓWNIKÓW 
   531 ŁACIŃSKI MAŁY LIST W
   532 LEWY UCHWYT KWADRATOWY 
   533 DIGIT TWO 
   534 PRAWY UCHWYT KWADRATOWY 
   535 SEMICOLON 
   536 LATIN MAŁY LIST F
   537 ŁACIŃSKI MAŁY LIST O
   538 ŁACIŃSKI MAŁY LIST R
   539 LEWA RODZINA 
   540 LATIN MAŁY LIST X
   541 ZNAK RÓWNOŚCI 
   542 ŁACIŃSKI MAŁY LIST W
   543 LEWY UCHWYT KWADRATOWY 
   544 DIGIT ONE 
   545 PRAWY UCHWYT KWADRATOWY 
   546 SEMICOLON 
   547 LATIN MAŁY LIST I
   548 ZNAK PLUS 
   549 ZNAK PLUS 
   550 MNIEJSZY NIŻ ZNAK 
   551 DIGIT TWO 
   552 CYFROWY SZEŚĆ 
   553 SEMICOLON 
   554 ŁACIŃSKI MAŁY LIST X
   555 ZNAK RÓWNOŚCI 
   556 ŁACIŃSKI MAŁY LIST X
   557 ZNAK CYTATOWY 
   558 ŁACIŃSKI MAŁY LIST N
   559 Łaciński litera W
   560 PRAWY UCHWYT KWADRATOWY 
   561 COMMA 
   562 ZNAK CYTATOWY 
   563 PRAWA RODZINA 
   564 ŁACIŃSKI MAŁY LIST Y
   ZNAK 565 RÓWNIKÓW 
   566 ŁACIŃSKI MAŁY LIST Y
   567 ZNAK CYTATOWY 
   568 LATIN MAŁY LIST N
   569 ŁACIŃSKI MAŁY LIST J
   570 UCHWYT PRAWEGO KWADRATU 
   571 COMMA 
   572 ZNAK CYTATOWY 
   573 SEMICOLON 
   574 LATIN MAŁY LIST F
   575 LATIN MAŁY LIST O
   576 ŁACIŃSKI MAŁY LIST R
   577 LEWA RODZINA 
   578 ŁACIŃSKI MAŁY LIST S.
   579 ŁACIŃSKI MAŁY LIST P.
   580 LATIN MAŁY LIST L
   581 ŁACIŃSKI MAŁY LIST I
   582 ŁACIŃSKI MAŁY LIST T
   583 LEWA RODZINA 
   584 ŁACIŃSKI MAŁY LIST X
   585 SPACE 
   586 ŁACIŃSKI MAŁY LIST Y
   587 PRZESTRZEŃ 
   588 ŁACIŃSKI MAŁY LIST W
   589 UCHWYT LEWEGO KWADRATU 
   590 CYFROWY TRZECI 
   591 PRAWY UCHWYT KWADRATOWY 
   592 COMMA 
   593 ŁACIŃSKI MAŁY LIST B
   594 COMMA 
   595 ZNAK CYTATOWY 
   596 COMMA 
   597 ZNAK CYTATOWY 
   598 PRAWA RODZINA 
   599 SEMICOLON 
   600 LATIN MAŁY LIST J
   601 ZNAK PLUS 
   602 ZNAK PLUS 
   603 MNIEJSZY NIŻ ZNAK 
   604 DIGIT ONE 
   605 DIGIT TWO 
   606 CYFROWY SZEŚĆ 
   607 SEMICOLON 
   608 LATINOWY LITERA KAPITAŁOWA F
   609 Łaciński litera s
   610 ZNAK RÓWNOŚCI 
   611 LOW LINE 
   612 PRAWA RODZINA 
   613 LATIN MAŁY LIST D
   614 LEWY UCHWYT KWADRATOWY 
   615 ŁACIŃSKI MAŁY LIST S.
   616 ŁACIŃSKI MAŁY LIST P.
   617 LATIN MAŁY LIST R
   618 ŁACIŃSKI MAŁY LIST I
   619 LATIN MAŁY LIST N
   620 LATIN MAŁY LIST T
   621 LATIN MAŁY LIST F
   622 LEWA RODZICA 
   623 ZNAK CYTATOWY 
   624 ZNAK PROCENTOWY 
   625 LATIN MAŁY LIST C
   626 ZNAK CYTATOWY 
   627 COMMA 
   628 ŁACIŃSKI MAŁY LIST J
   629 PRAWA RODZINA 
   630 PRAWY WSPORNIK KWADRATOWY 
   631 ZNAK RÓWNOŚCI 
   632 ŁACIŃSKI MAŁY LIST J
   633 PRAWY, OBECNY WSPORNIK 
   634 LEWY WSPORNIK KRZYŻOWY 
   635 LATIN MAŁY LIST F
   636 ŁACIŃSKI MAŁY LIST O
   637 ŁACIŃSKI MAŁY LIST R
   638 LEWA RODZINA 
   639 LATIN MAŁY LIST K
   640 ZNAK RÓWNOŚCI 
   641 ZERO CYFROWE 
   642 SEMICOLON 
   643 ŁACIŃSKI MAŁY LIST K
   644 ZNAK PLUS 
   645 ZNAK PLUS 
   646 MNIEJSZY NIŻ ZNAK 
   647 LATINOWY LITERA KAPITAŁOWA N
   648 LATINOWY LITERA KAPITAŁOWA F
   649 SEMICOLON 
   650 ŁACIŃSKI MAŁY LIST P.
   651 ŁACIŃSKI MAŁY LIST R
   652 ŁACIŃSKI MAŁY LIST I
   653 ŁACIŃSKI MAŁY LIST N
   654 ŁACIŃSKI MAŁY LIST T
   655 MIEJSCA 
   656 ŁACIŃSKI MAŁY LIST I
   657 ZNAK RÓWNOŚCI 
   658 NISKA LINIA 
   659 PRAWA RODZINA 
   660 LATIN MAŁY LIST W
   661 LATIN MAŁY LIST H
   662 ŁACIŃSKI MAŁY LIST I
   663 ŁACIŃSKI MAŁY LIST L
   664 ŁACIŃSKI MAŁY LIST E.
   665 LEWA RODZINA 
   666 ŁACIŃSKI MAŁY LIST I
   667 ZNAK PLUS 
   668 ZNAK PLUS 
   669 MNIEJSZY NIŻ ZNAK 
   670 ŁACIŃSKI MAŁY LIST S.
   671 ŁACIŃSKI MAŁY LIST P.
   672 ŁACIŃSKI MAŁY LIST L
   673 ŁACIŃSKI MAŁY LIST I
   674 LATIN MAŁY LIST T
   675 LEWA RODZINA 
   676 ŁACIŃSKI MAŁY LIST B
   677 LEWY UCHWYT KWADRATOWY 
   678 ŁACIŃSKI MAŁY LIST D
   679 LEWY UCHWYT KWADRATOWY 
   680 DOLLAR SIGN 
   681 ŁACIŃSKI MAŁY LIST K
   682 PRAWY UCHWYT KWADRATOWY 
   683 HYPHEN-MINUS 
   684 CYFROWY TRZECI 
   685 DIGIT ONE 
   686 PRAWY UCHWYT KWADRATOWY 
   687 COMMA 
   688 ŁACIŃSKI MAŁY LIST Q
   689 PRAWA RODZICA 
   690 PRAWA RODZINA 
   691 ŁACIŃSKI MAŁY LIST P.
   692 ŁACIŃSKI MAŁY LIST R
   693 ŁACIŃSKI MAŁY LIST I
   694 LATIN MAŁY LIST N
   695 ŁACIŃSKI MAŁY LIST T
   696 LATIN MAŁY LIST F
   697 LEWA RODZINA 
   698 ŁACIŃSKI MAŁY LIST Z
   699 ZNAK RÓWNOŚCI 
   700 ŁACIŃSKI MAŁY LIST W
   701 LEWY UCHWYT KWADRATOWY 
   702 ŁACIŃSKI MAŁY LIST D
   703 LEWY UCHWYT KWADRATOWY 
   704 ŁACIŃSKI MAŁY LIST Q
   705 LEWY UCHWYT KWADRATOWY 
   706 ŁACIŃSKI MAŁY LIST I
   707 PRAWY UCHWYT KWADRATOWY 
   708 PRAWY UCHWYT KWADRATOWY 
   709 HYPHEN-MINUS 
   710 CYFROWY SZEŚĆ 
   711 DIGIT NINE 
   712 PRAWY UCHWYT KWADRATOWY 
   713 PRAWA RODZINA 
   714 ZNAK CYTATOWY 
   715 MIEJSCA 
   716 ZNAK CYTATOWY 
   717 LEWA RODZINA 
   718 ŁACIŃSKI MAŁY LIST Z
   719 TILDE 
   720 SOLIDUS 
   721 LATINOWY LITERA KAPITAŁOWA T
   722 LATINOWY LITERA KAPITAŁOWA T
   723 SOLIDUS 
   724 ZNAK PYTANIA 
   725 LATIN MAŁY LIST T
   726 LATIN MAŁY LIST O
   727 LATIN MAŁY LIST U
   728 ŁACIŃSKI MAŁY LIST P.
   729 ŁACIŃSKI MAŁY LIST P.
   730 ŁACIŃSKI MAŁY LIST E.
   731 LATIN MAŁY LIST R
   732 LEWA RODZINA 
   733 DOLLAR SIGN 
   734 ŁACIŃSKI MAŁY LIST K
   735 PRAWA RODZINA 
   736 COLON 
   737 LOW LINE 
   738 PRAWA RODZINA 
   739 PRAWY, OBECNY UCHWYT

Żartowałem; D

BEGIN{split("i,Lv,Sv,ax,^x,[x,Q,O,tK,cK,V,qx,g,I,wu,X,by,b{,bz,bd,bp,br,b},bk,bl,bo,e,P,Rx,_x,Jx,Uv,M~, t`Y,ZX,c`Y,N\\,|s,m\\, thY,Ts,chY,f HYPHEN-MINUS GREATER-THAN PARENTHESIS EXCLAMATION COMMERCIAL CIRCUMFLEX APOSTROPHE SEMICOLON AMPERSAND LESS-THAN QUOTATION VERTICAL QUESTION ASTERISK CAPITAL SOLIDUS BRACKET REVERSE PERCENT ACCENT LETTER DOLLAR EQUALS SQUARE NUMBER DIGIT RIGHT THREE COLON TILDE COMMA CURLY SPACE SMALL SEVEN EIGHT GRAVE LATIN NINE FOUR PLUS FIVE LINE LEFT STOP MARK FULL SIGN ZERO TWO ONE LOW SIX AT",w);x=w[1];for(y=w[2];C++<26;x=x"nW],")y=y"nj],";for(split(x y w[3],b,",");j++<126;FS=_)d[sprintf("%c",j)]=j}{for(k=0;k++<NF;print i=_)while(i++<split(b[d[$k]-31],q))printf(z=w[d[q[i]]-69])" "(z~/TT/?toupper($k):_)}

Działa z stdin / stdout.

Bardziej „czytelny”:

BEGIN{

  # This string (508 bytes) holds a representation of the character names in 
  # the right order, plus a list of the used words.

    split("i,Lv,Sv,ax,^x,[x,Q,O,tK,cK,V,qx,g,I,wu,X,by,b{,bz,bd,bp,br,b},bk,bl,bo,
    e,P,Rx,_x,Jx,Uv,M~, t`Y,ZX,c`Y,N\\,|s,m\\, thY,Ts,chY,f HYPHEN-MINUS GREATER-T
    HAN PARENTHESIS EXCLAMATION COMMERCIAL CIRCUMFLEX APOSTROPHE SEMICOLON AMPERSA
    ND LESS-THAN QUOTATION VERTICAL QUESTION ASTERISK CAPITAL SOLIDUS BRACKET REVE
    RSE PERCENT ACCENT LETTER DOLLAR EQUALS SQUARE NUMBER DIGIT RIGHT THREE COLON
    TILDE COMMA CURLY SPACE SMALL SEVEN EIGHT GRAVE LATIN NINE FOUR PLUS FIVE LINE
     LEFT STOP MARK FULL SIGN ZERO TWO ONE LOW SIX AT",w);

  # Since the letters each appear 26 times I construct that part at runtime.
  # The array b will hold the coded combinations of which words need to
  # be printed for each input character.

    x=w[1];
    for(y=w[2];C++<26;x=x"nW],")
        y=y"nj],";

  # The array d is an ASCIICodeFromChar function replacement.
  # I set the field separator to empty, so each character of the input is
  # an input field. That's why using a BEGIN part was mandatory.

    for(split(x y w[3],b,",");j++<126;FS=_)
        d[sprintf("%c",j)]=j
}

  # Here I go through the element of b that matches the input and print
  # the requested words, using the input to produce a capital letter if
  # needed. I excluded these from the word list to save another 26 bytes

{
    for(k=0;k++<NF;print i=_)
        while(i++<split(b[d[$k]-31],q))
            printf(z=w[d[q[i]]-69])" "(z~/TT/?toupper($k):_)
}

5

C ++ 11, 739 bajtów

#include<iostream>
#define D,"DIGIT "
#define G" SIGN",
int main(){std::string a=" BRACKET",s="SQUARE"+a,c="CURLY"+a,t="TION MARK",p="PARENTHESIS",l="LEFT ",r="RIGHT ",x="LATIN ",y="L LETTER ",z[]{"SPACE","EXCLAMA"+t,"QUOTA"+t,"NUMBER"G"DOLLAR"G"PERCENT"G"AMPERSAND","APOSTROPHE",l+p,r+p,"ASTERISK","PLUS"G"COMMA","HYPHEN-MINUS","FULL STOP","SOLIDUS"D"ZERO"D"ONE"D"TWO"D"THREE"D"FOUR"D"FIVE"D"SIX"D"SEVEN"D"EIGHT"D"NINE","COLON","SEMICOLON","LESS-THAN"G"EQUALS"G"GREATER-THAN"G"QUES"+t,"COMMERCIAL AT",l+s,"REVERSE SOLIDUS",r+s,"CIRCUMFLEX ACCENT","LOW LINE","GRAVE ACCENT",l+c,"VERTICAL LINE",r+c,"TILDE"};getline(std::cin,s);for(char c:s)std::cout<<(c<65?z[c-32]:c<91?x+"CAPITA"+y+c:(c-=32,c<65?z[c-26]:c<91?x+"SMAL"+y+c:z[c-52]))+"\n";}

Oparty na rozwiązaniu sweerpotato, ale mocno zmodyfikowany.


Ładnie wykonane: ~)!
sweerpotato,

5

C, 644 656

Pełny program, odczyt ze standardowego wejścia

Testuj na Ideone

Jest to przeniesienie mojej odpowiedzi JavaScript do C. Język C jest dobry w manipulowaniu pojedynczymi znakami jako liczbami (bez potrzeby .toUpperCasei tym podobnych), ale jest słabszy w manipulowaniu ciągami.

char*s,*p,*q,b[999],*d=b+99,c,*l[129];
main(k){for(k=32,p="/SPACE/EXCLAMAaQUOTAaNUMBERbDOLLARbPERCENTbAMPERSAND/APOSTROPHEdcecASTERISK/PLUSbCOMMA/HYPHEN-MINUS/FULL STOP/hiZEROiONEiTWOiTHREEiFOURiFIVEiSIXiSEVENiEIGHTiNINE/gSEMIgLESSnbEQUALSbGREATERnbQUESaCOMMERCIAL ATdkfREVERSE h/ekfCIRCUMFLEXj/LOWmGRAVEjdlfVERTICALmelfTILDE/";
c=*p;p++)c>96?q?(p=q,q=0):(q=p,p=strchr("aTION MARK/b SIGN/cPARENTHESIS/d/LEFT eRIGHT f BRACKET/gCOLON/hSOLIDUSi/DIGIT j ACCENTkSQUARElCURLYm LINE/n-THANz",c)):c-47?*d++=c:(*d++=0,l[k++]=d);
for(;~(k=getchar());puts(k<65?l[k]:(k&31)<27?b:l[k<97?k-26:k-52]))sprintf(b,"LATIN %s LETTER %c",k<91?"CAPITAL":"SMALL",k&95);}

Mniej golfa

char *all = "/SPACE/EXCLAMAaQUOTAaNUMBERbDOLLARbPERCENTbAMPERSAND/APOSTROPHEdcecASTERISK/PLUSbCOMMA/HYPHEN-MINUS/FULL STOP/hiZEROiONEiTWOiTHREEiFOURiFIVEiSIXiSEVENiEIGHTiNINE/gSEMIgLESSnbEQUALSbGREATERnbQUESaCOMMERCIAL ATdkfREVERSE h/ekfCIRCUMFLEXj/LOWmGRAVEjdlfVERTICALmelfTILDE/";
char *subs = "aTION MARK/b SIGN/cPARENTHESIS/d/LEFT eRIGHT f BRACKET/gCOLON/hSOLIDUSi/DIGIT j ACCENTkSQUARElCURLYm LINE/n-THANz";

main(int k)
{
    char c, *s, *p, *q=0, 
    b[999], // work buffer
    *d = b+99, // first part of buffer is used later
    *l[129]; // characters descriptions (used 32 to 126)

    // Uncompress the descriptions of all char except letters
    for(k = 32, p = all; c = *p; ++p)
    {
       c >= 'a' // substitution word are marked as lowercase letters
        ? q  
           ? (p = q, q = 0)
           : (q = p, p = strchr(subs, c))
        : c != '/'
           ? *d++ = c 
           : (*d++ = 0, l[k++] = d); // end char description
    }
    // Scan the input string and print each char description
    for(; (k=getchar()) != -1; )
    {
       sprintf(b,"LATIN %s LETTER %c", k<91 ? "CAPITAL":"SMALL", k & 95);
       puts( k<65 ? l[k] : k<91 ? b : k<97 ? l[k-26] : k<123 ? b : l[k-52]);
    }
}

4

Common Lisp (SBCL), 52 79

(map()(lambda(y)(format t"~:@(~A~)~%"(substitute #\  #\_(char-name y))))(read))

Jest to wbudowane i zależy od implementacji, więc możesz zignorować go przy wyborze akceptowanej odpowiedzi. Niestety nie wystarczy to do pokonania Pythona . Zaktualizowana wersja jest zgodna z oczekiwanymi danymi wyjściowymi (muszę zastąpić podkreślenia spacjami).

Przykład

CL-USER> (map()(lambda(y)(format t"~:@(~A~)~%"(substitute #\  #\_(char-name y))))(read))
"(λ(r)(* 2 ᴨ r))"
LEFT PARENTHESIS
GREEK SMALL LETTER LAMDA
LEFT PARENTHESIS
LATIN SMALL LETTER R
RIGHT PARENTHESIS
LEFT PARENTHESIS
ASTERISK
SPACE
DIGIT TWO
SPACE
GREEK LETTER SMALL CAPITAL PI
SPACE
LATIN SMALL LETTER R
RIGHT PARENTHESIS
RIGHT PARENTHESIS


4

C ++ 14, 1043 1000 998 996 972 bajtów

Rozwiązanie groteskowe w C ++ 14:

#include<iostream>
#include<map>
#define b cout
#define d string
#define e },{
using namespace std;char l='\n';d s[]{"DIGIT ","LATIN CAPITAL LETTER ","LATIN SMALL LETTER "};map<char, d> m{{' ',"SPACE"e'!',"EXCLAMATION MARK"e'\"',"QUOTATION MARK"e'#',"NUMBER SIGN"e'$',"DOLLAR SIGN"e'%',"PERCENT SIGN"e'&',"AMPERSAND"e'\'',"APOSTROPHE"e'(',"LEFT PARENTHESIS"e')',"RIGHT PARENTHESIS"e'*',"ASTERISK"e'+',"PLUS SIGN"e',',"COMMA"e'-',"HYPHEN-MINUS"e'.',"FULL STOP"e'/',"SOLIDUS"e':',"COLON"e';',"SEMICOLON"e'<',"LESS-THAN SIGN"e'=',"EQUALS SIGN"e'>',"GREATER-THAN SIGN"e'?',"QUESTION MARK"e'@',"COMMERCIAL AT"e'[',"LEFT SQUARE BRACKET"e'\\',"REVERSE SOLIDUS"e']',"RIGHT SQUARE BRACKET"e'^',"CIRCUMFLEX ACCENT"e'_',"LOW LINE"e'`',"GRAVE ACCENT"e'{',"LEFT CURLY BRACKET"e'|',"VERTICAL LINE"e'}',"RIGHT CURLY BRACKET"e'~',"TILDE"}};int main(){d str;getline(cin,str);for(char c:str){islower(c)?b<<s[2]<<(char)(c-32):isupper(c)?b<<s[1]<<c:isdigit(c)?b<<*s<<c:b<<m.at(c);b<<l;}}

Dzięki kirbyfan64sos za grę w golfa poza dwoma bajtami


Czy możesz to zrobić *szamiast s[0]?
kirbyfan64sos

Jasne, że mogę! Całkowicie tego przegapiłem
sweerpotato,

3

CJam, 517

l{i32-["SPACE""EXCLAMA""TION MARK":T+"QUOTA"T+"NUMBER DOLLAR PERCENT"{S/" SIGN"am*~}:H~"AMPERSAND""APOSTROPHE""LEFT PARENTHESIS":L"RIGHT ":R1$5>+"ASTERISK""PLUS"H"COMMA""HYPHEN-MINUS""FULL STOP""SOLIDUS":D"DIGIT "a"ZERO ONE TWO THREE FOUR FIVE SIX SEVEN EIGHT NINE"S/m*~"COLON""SEMI"1$+"LESS-THAN EQUALS GREATER-THAN"H"QUES"T+"COMMERCIAL AT""CAPITA"{["LATIN "\"L LETTER "]a'[,65>m*~L5<}:Z~"SQUARE BRACKET":Q+"REVERSE "D+RQ+"CIRCUMFLEX ACCENT""LOW LINE""GRAVE"2$A>+"SMAL"Z"CURLY"33$B>+:C+"VERTICAL LINE"RC+"TILDE"]=N}/

Wersja online

Próbowałem różnych rozwiązań, ale po prostu przechowywanie wszystkich nazw w ogromnej tablicy wydaje się najbardziej wydajne.

Nawiasem mówiąc, to mój pierwszy prawdziwy program CJam.


3

C ++ 14 716 706 704

#include<iostream>
char*q,x,b[584],*t=b,a[]=R"(space}exclamation|mark}quot"-number|sign}dolla!apercent!mam"%sand}apostrophe}left|par%3hesis}righ"Wasterisk}plus*<comma}hy)#n{minus}full|stop}solid"Ldigit|zero!Tone!Gtw"kthre#&four!Uiv#&six!Heve>^!_e6r!ani,1colon}semi!Fless{than8Eequal:$grea<s$2quesMj>EJoial|at}lQ9n|capit"?let('|Jes+\re|bracket}r5urse|C5M?%2circumflex|acXR}low|l:bgrave#'0=smaNy0+curly*s/Ytic4z)$/\$itilde)",*s=a;int c,z,l='{';int main(){for(;x=*s++;)if(z=x-32,x>96)*t++=x<l?z:"- "[x%l];else for(c=z*95+*s++-32,q=t-c/13,x=3+c%13;x--;)*t++=*q++;while(std::cin.get(x)){for(s=b,z=0,c=x<65?x-32:x<91?z=33:x<97?x-57:x<l?z=40:x-82;c--;)while(*s++);auto&o=std::cout<<s;(z?o.put(x&~32):o)<<"\n";}}

Wersja na żywo .

Z pewnymi odstępami:

#include <iostream>

// a is compressed using an LZ like compression scheme
char *q, x, b[584],
    *t = b,
    a[] =
        R"(space}exclamation|mark}quot"-number|sign}dolla!apercent!mam"%sand}apostrophe}left|par%3hesis}righ"Wasterisk}plus*<comma}hy)#n{minus}full|stop}solid"Ldigit|zero!Tone!Gtw"kthre#&four!Uiv#&six!Heve>^!_e6r!ani,1colon}semi!Fless{than8Eequal:$grea<s$2quesMj>EJoial|at}lQ9n|capit"?let('|Jes+\re|bracket}r5urse|C5M?%2circumflex|acXR}low|l:bgrave#'0=smaNy0+curly*s/Ytic4z)$/\$itilde)",
    *s = a;

int c, z, l = '{';

int main() {
    // Decompress from a into b
    for (; x = *s++;)
        if (z = x - 32, x > 96)
            *t++ = x < l ? z : "- "[x % l];
        else
            for (c = z * 95 + *s++ - 32, q = t - c / 13, x = 3 + c % 13; x--;) *t++ = *q++;

    // Process input a char at a time, performing a lookup into b for the c'th null separated string
    while (std::cin.get(x)) {
        for (s = b, z = 0,
            c = x < 65 ? x - 32 : x < 91 ? z = 33 : x < 97 ? x - 57 : x < l ? z = 40 : x - 82;
             c--;)
            while (*s++)
                ;
        auto& o = std::cout << s;
        (z ? o.put(x & ~32) : o) << "\n";
    }
}

Skompresowany ciąg adekompresuje się do:

spacja} wykrzyknik | znak} cytat | znak} liczba | znak} dolar | znak} procent | znak} ampersand} apostrof} lewy | nawias} prawy | nawias} gwiazdka} plus | znak} przecinek} łącznik {minus} pełny | stop} solidus} cyfra | zero} cyfra | jedna} cyfra | dwie} cyfra | trzy} cyfra | cztery} cyfra | pięć} cyfra | sześć} cyfra | siedem} cyfra | osiem} cyfra | dziewięć} dwukropek} średnik} mniejszy niż {| znak} równa się | znak} większy {niż | znak} pytanie | znak} handlowy | at} łaciński | kapitał | litera |} lewy | kwadrat | nawias} odwrotny | solidus} prawy | kwadrat | nawias} obwodowy | akcent} niski | linia } grave | accent} latin | small | letter |} left | curly | brack} vertical | line} right | curly | brack} tylda

Podczas dekompresji }jest zastępowane przez \0, |z (spacja) oraz {z -i małe litery są konwertowane na wielkie.

Łańcuch jest skompresowany w stylu LZ jako dosłowne [a-~]lub dwuznakowe przesunięcie / długość w stosunku do dopasowania wcześniejszego ciągu.


3

Clojure, 56 bajtów

(doseq[c(read-line)](println(Character/getName(int c))))

Zainspirowany odpowiedzią @ peter. Używa Clojure do interakcji Java.


3

Perl - 894 bajtów

Pięknie wykonane ręcznie. Po raz pierwszy gra w golfa w Perlu, więc wszelkie wskazówki są mile widziane.

$_=$ARGV[0];s/(.)/$1\n/g;s/([A-Z])/& CAPITAL' $1/g;s/([a-z])/& SMALL' \U$1/g;s/,/COMMA/g;s/& /LATIN /g;s/' / LETT, /g;s/&/AMP,SAND/g;s/'/APOSTROPHE/g;s/ \n/SPACE\n/g;s/\*/AST,ISK/g;s/-/HYPHEN-MINUS/g;s/\./FULL STOP/g;s/@/COMM,CIAL AT/g;s/~/TILDE/g;s/:/&/g;s/;/SEMI&/g;s/&/COLON/g;s/\|/V,TICAL&/g;s/_/LOW&/g;s/&/ LINE/g;s/\^/CIRCUMFLEX&/g;s/`/GRAVE&/g;s/&/ ACCENT/g;s/\//&/g;s/\\/REV,SE &/g;s/&/SOLIDUS/g;s/!/!&/g;s/"/"&/g;s/\?/?&/g;s/!/EXCLAMA/g;s/"/QUOTA/g;s/\?/QUES/g;s/&/TION MARK/g;s/#/NUMB,&/g;s/\$/DOLLAR&/g;s/%/P,CENT&/g;s/\+/PLUS&/g;s/</LESS-THAN&/g;s/=/EQUALS&/g;s/>/GREAT,-THAN&/g;s/&/ SIGN/g;s/\(/<&/g;s/\)/>&/g;s/&/ PARENTHESIS/g;s/\[/<&/g;s/\]/>&/g;s/&/ SQUARE'/g;s/{/<&/g;s/}/>&/g;s/&/ CURLY'/g;s/'/ BRACKET/g;s/</LEFT/g;s/>/RIGHT/g;s/0/&Z,O/g;s/1/&ONE/g;s/2/&TWO/g;s/3/&THREE/g;s/4/&FOUR/g;s/5/&FIVE/g;s/6/&SIX/g;s/7/&SEVEN/g;s/8/&EIGHT/g;s/9/&NINE/g;s/&/DIGIT /g;s/,/ER/g;print;

1

Współczynnik, 58 bajtów

[ readln [ char>name "-"" " replace >upper print ] each ] 

Dość proste; robi dokładnie to samo, co odpowiedzi Java i Perl 6.


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.