Роздрукуйте фавікон Stack Exchange


19

Виклик

Роздрукуйте або поверніть фавікон Stack Exchange, як зазначено нижче:

 ___________________
/                   \
---------------------
|                   |
---------------------
|                   |
---------------------
\__________    _____/
           |  /
           | /
           |/

Це , тому найкоротша відповідь на кожній мові виграє.


2
Чи повинен лівий верхній кут трохи вирівняний?
ETHproductions

@ETHproductions Це було призначено, але я зараз його змінюю . Так чи інакше це виглядає незручно.
musicman523

2
Фактичний вихід становить 219 байт, для довідки.
повністюлюдський

Додаткові лінії та / або пробіли на лініях дозволені, правда?
dzaima

Відповіді:


43

Операція Мова сценарію Flashpoint , 263 195 байт

f={r="                   ";t="---------------------\n";s=" ___________________\n/"+r+"\\n"+t+"|"+r+"|\n"+t+"|"+r+"|\n"+t+"\__________    _____/\n           |  /\n           | /\n           |/";s}

Не правильний інструмент для роботи.

Телефонуйте за допомогою:

hint call f;

Вихід:

Форматування не вдається, оскільки шрифт не є однобічним.


49
Тільки те, що змушує вас подивитися на виклик і подумати "о, я повинен відповісти, що в" Операції Flashpoint "
спантеличує

7
@totallyhuman Я вважаю, що його сценарій просто цікавий для написання. У нього є досить багато примх і обмежень, тому іноді потрібно використовувати деякі дивні способи вирішення, що робить його цікавим (але не дуже практичним).
Steadybox

5
Жорстке кодування відповіді, ймовірно, дасть кращий результат.
NieDzejkob

2
@NieDzejkob Це коротше, ніж просто жорстке кодування виводу, але більш нудне, ніж попередня версія.
Steadybox

@totallyhuman І зокрема з цим викликом я хотів перевірити, як мова може відповідати проблемі складності Колмогорова (для якої це набагато менше, ніж ідеально).
Steadybox

11

Вугілля , 38 37 33 30 байт

←×_χ↓F/||⟦ι¹¹⟧\×_⁹‖B_×ψ⁴↙↙³↑↑³

Спробуйте в Інтернеті! Посилання на багатослівну версію коду. Редагувати: вдалося зберегти байт за допомогою рефлексії, хоча @CarlosAlejo показує, що насправді це можна зробити в 37 байтах без відображення. Збережено ще 4 байти, намалювавши ліву ¾ та відобразивши остаточну ¼. Редагувати: попередня відповідь на 33 байти залежала від того, щоб ReflectButterflyOverlap()не надрукувати область перекриття відображенням, тому у випадку, якщо така поведінка змінилася, я шукав рішення, яке не покладалося на це, і результат все-таки був коротшим, завдяки моєму творче використання друку масиву. Пояснення:

←×_χ                            Print 10 `_`s leftwards (top row)
    ↓                           Move down to the next row
     F/||                       For each character in the string `/||`
          ι                     Current character
           ¹¹                   Integer 11, prints as `-----------`
         ⟦   ⟧                  Put both into an array
                                Implicitly print on separate lines
              \                 Implicitly print `\`
               ×_⁹              Implicitly print 9 `_`s
                  ‖B            Reflect right, overlapping the axis
                    _           Implicitly print `_`
                     ×ψ⁴        Implicitly delete 4 characters
                        ↙↙³     Move down left and print three `/`s
                           ↑↑³  Move up and print three '|'s

2
Дуже добре зіграли. Мені подобається, що на це питання є чотири відповіді деревного вугілля! ‖BOне в мові востаннє, коли я його використовував - я маю це пам’ятати на майбутнє.
DLosc

Мені довелося переконатися в тому, що ти маєш на увазі під "відображенням фіналу". Добре зіграно справді!
Чарлі

8

/// , 98 байт

/'/  //&/
"""
|!! |//%/\\\/
!'|//#/_____//"/-------//!/'''' / ###____
\/!! \\&&
"""
\\##''#%'% %\/

Спробуйте в Інтернеті! Або дивіться це інтерактивно!


3
Чи є утиліта, яка дозволяє мені бачити різні "кроки" /// програми? (Часткове виконання після кожної заміни.) Це могло б допомогти мені зрозуміти їх краще.
CAD97

@ CAD97 Я розмовляв з інтерпретатором, і він зазвичай бував з налагодженнями налагодження, але те, як онлайн-інтерпретатор наказує аргументи, це не працює так. Ви можете взяти копію перекладача самостійно і зробити щось подібне perl slashes.pl -d1 code.txt. Зараз я працюю над середовищем виконання онлайн для ///, але це може зайняти деякий час.
Conor O'Brien

3
@ CAD97 Казав, що річ в Інтернеті працює, подивіться!
Conor O'Brien

8

JavaScript (ES6), 113 112 байт

(Збережено байт завдяки @Craig Ayre.)

let f=

_=>` _19
/ 19\\
-21
| 19|
-21
| 19|
-21
\\_10 4_5/
 11| 2/
 11| /
 11|/`.replace(/.(\d+)/g,([a],b)=>a.repeat(b))
 
 console.log(f());


Схоже, перед вами функція заміни у вас заблукала. Я щойно придумав подібне оновлення для свого JS-рішення в 113 байт. Не знаю, чи варто публікувати це, чи дозволити вам це зробити.
Shaggy

А, зачекайте, я бачу лише тепер, коли ви розмістили своє рішення до того, як я розмістив своє. Я видаляю шахту, коли доберусь до комп'ютера, і ви можете зберегти байт за допомогою replace(/.(\d+)/g,(a,b)=>a[0].repeat(b)).
Shaggy

Спасибі, кудлатий. Я написав програму для автоматизації такого типу відповідей, і це було нерозумно, щоб він видав зайвий простір. Ваша запропонована replaceзаява, безумовно, є поліпшенням, яке я зараз включив у свою програму.
Рік Хічкок

1
Ви можете зберегти відповідність масиву байт a: ([a],b)=>a.repeat(b))?
Крейг Ейр

Так дякую! Мені був незнайомий цей синтаксис.
Рік Хічкок

7

SOGL V0.12 , 32 31 байт

^$∙r↑Ψ«2τγæΕž‘╬Æ╬⁷"ƧΡ⅟?0Ξ³‘6«8ž

Спробуйте тут!

Пояснення:

...‘               push a quarter of the icon
    Β             palindromize vertically
      ╬⁷           palindromize horizontally (these two should be ╬3 together, but spacing doesn't work correctly (though now it does since I fixed it))
        "...‘      push the extention
             6«8ž  at coordinates [12; 8] in the quad-palindromized image put that in

Чверть:

 __________
/
-----------
|
-----------

та інша частина:

    
|  /
| /
|/

"togethe"? "корито"? Також пройшло небагато часу, щоб зрозуміти, що .в поясненні мається на увазі string. Може використовувати ^...'і "...'?
CalculatorFeline

@CalculatorFeline я зазвичай робив ...для стислих рядків (ака-нонсенс), але останнім часом я почав робити одну-дві. І
сміливо

7

Python 2 , 115 байт, більш креативна ідея

t,u,v,w,x,y,z='\n -/\\_|';k=w+t+11*u+z;i=t+21*v+t
print u+19*y+t+w+19*u+x+(i+z+19*u+z)*2+i+x+10*y+4*u+5*y+k+u,k,k+w

Спробуйте в Інтернеті!

Python 2 , 102 байти, нудна ідея

print'eNrjUojHBFz6CpgghksXG+CqwaK2hgpqYxDuASkDM/S5kDUqKKDxUbn6XADUmClx'.decode('base64').decode('zip')

Спробуйте в Інтернеті!


2
Я проголосую за це, оскільки я занадто багато разів бачив цей метод. Просто нудно бачити знову і знову.
Р. Кап

8
@ R.Kap Якщо тільки немає коротшого шляху, це досить довільна причина, щоб зняти участь.
Денніс

1
@Dennis Можливо, але я все одно стоюсь на своїй думці і маю повне право висловити її. Я бачив цей метод незмінно використовуваний для подібних викликів, і він вимагає майже ніякої креативності з боку ОП, які є великими аспектами, принаймні, на мою думку, проблем складності Коломогорова, а отже, і моєї причини невдалого голосування .
Р. Кап

2
@ R.Kap Якщо алгоритми стиснення загального призначення можуть легко перемогти ручні, то це проблема проблеми, а не відповідь. Мені навіть не вдалося перемогти Bubblegum з Jelly, і декомпресія мала дуже маленькі головні витрати в Jelly.
Денніс

2
@Dennis Я тут навіть не кажу про довжину коду. Я говорю про зусилля та творчість, на які ця відповідь, на мою думку, не демонструється мовою, де можна зробити набагато більше, що є причиною того, що я зняв голос. Тепер, якщо ви не згодні з моїми міркуваннями, це добре. У такому випадку давайте погодимось не погодитися і закінчимо цю розмову прямо тут, перш ніж вона стане занадто довгою. :)
Р. Кап

6

Пітон 2, 124 байти

a,b,d,e,f,g,h=' _-|/\\\n';r=d*21+h+e+a*19+e+h;n=f+h+a*11+e;print a+b*19+h+f+a*19+g+h+r*2+r[:22]+g+b*10+a*4+b*5+n+a*2+n+a+n+f

Спробуйте в Інтернеті!


Ви ніколи не користуєтесь c, тому можете усунути його на 3 байти. Спробуйте в Інтернеті!
musicman523

@ musicman523 Я навіть не знаю, чому я це поставив. Дякую за улов! :)
Р. Кап

6

C (gcc) , 187 байт

Збережено 2 байти завдяки Коді Грей та 3 байти завдяки Кейу Гану!

#define a"         "
#define s a" "a
#define l"\n---------------------\n"
f(){puts(" ___________________\n/"s"\\"l"|"s"|"l"|"s"|"l"\\__________    _____/\n"a"  |  /\n"a"  | /\n"a"  |/");}

Спробуйте в Інтернеті!


2
putsбуло б тривіально коротше, якщо прийнятний новий рядок.
Коді Грей

ви можете використовувати f()замість цього main(). Функція також прийнятна.
Кейу Ган

5

Іржа , 181 байт

||" ___________________
/2\\
1
1
3
\\__________    _____/
4|  /
4| /
4|/".replace("1","3
|2|").replace("2",&" ".repeat(19)).replace("3",&"-".repeat(21)).replace("4",&" ".repeat(11))

Спробуйте в Інтернеті!

Іржа , 184 байти

Ця версія може бути більш гольфуючою, оскільки додає replaceкожну меншу кількість байтів кожен. Перший replaceне є частиною циклу , оскільки він тягне подвійну зміну мит sв Stringзамість &'static str.

||{let mut s=" 5__5__5
/2\\
1
1
3
\\55    5/
4|  /
4| /
4|/".replace("1","3
|2|");for p in vec![("2"," ",19),("3","-",21),("4"," ",11),("5","_",5)]{s=s.replace(p.0,&p.1.repeat(p.2))}s}

Спробуйте в Інтернеті!


5

C, 167 байт

i;char*d=" q    /()\\   A   |()|    A   |()|    A   \\h#c/  #&|!/   #&| /   #&|/",c,b;main(j){while(c=d[i++],b=c%5==2||c>123?c:c>95?95:c>45?45:c>=32?32:++c,i<47)for(j=c;j-->=b;)putchar(b);}

Спробуйте в Інтернеті!

Примітка: багато видимих ​​пробілів вище - насправді символ вкладки.

Читаема версія:

i;
char *d = " q   /()\\   A   |()|    A   |()|    A   \\h#c/  #&|!/   #&| /   #&|/", c, b;
main(j) {
    while(
        c = d[i++],
        b = c % 5==2 || c > 123 ? c:
            c > 95 ? 95:
            c > 45 ? 45:
            c >= 32 ? 32:
            ++c,
        i < 47
    )
        for(j = c; j-- >= b;)
            putchar(b);
}

Пояснення:

Масив даних, d, кодує відповідь в буквальних одиночних символах та кодує повторні символи. Кожен символ c, в масиві даних, відображається на базовий символ, b та ряд повторень. Потім воно друкується багато разів.

Символи, які використовуються лише поодинці (косою рискою та трубою), мають коди ASCII 47, 92 та 124. Два з них ділиться на 5, а решта - 2 (c%5=2||c>123). Я не зміг знайти коротший стан для тестування для всіх трьох.

Символи, які повторюються (підкреслення, тире та пробіл), з кодами ASCII 95, 45 та 32 відповідно, кодуються з більш високим кодом ASCII - збільшуються на один при повторенні. Так, наприклад, один простір - це просто пробіл, але два пробіли можуть бути закодовані наступним символом ASCII, знаком оклику. Якщо закодований символ був би непридатним, оскільки він відповідає вищевказаній умові модуля, його можна розділити, як і для # &, щоб представити одинадцять пробілів. Ця ж техніка використовується, щоб уникнути перекриття між діапазоном пробілів та символів тире.

Нарешті, десять нових рядків кодуються як вкладки для збереження байтів, які були б витрачені на втечу нових рядків за допомогою зворотної косої риски, а потім збільшуються для друку ( ++c).


Молодці! Я знав, що там кращі відповіді на С.
musicman523

Спасибі! Це був веселий виклик. Я витратив на це щось на кшталт чотирьох годин, тож радий, що зрештою це вийшло.
jiv

4

Вугілля деревне , 49 37 байт

↓⁵\…_χ↓↓³↗↗³…_⁵↑/↑⁵↖\←…_¹⁹↓ /F³«P²¹¶¶

Спробуйте в Інтернеті!

Нарешті я міг трохи пограти в гольф. Ця відповідь (на відміну від усіх інших відповідей деревного вугілля) не використовує відображення, але малює весь контур за один прохід, залишаючи горизонтальні смуги для кінця.

Посилання на багатослівну версію .


"На відміну від всіх інших відповідей на деревне вугілля" Насправді моя перша відповідь теж не використовувала роздумів, але я визнаю, що я не помітив шансу відіграти байт, починаючи малюнок лівою вертикальною лінією. (Єдиними іншими змінами між нашими рішеннями є те, що ви використовуєте діапазон, де я використовував Times, і ви друкуєте там, \де я щойно надрукував :UpLeft1 крок.)
Ніл,

Хоча здається, що відображення - це шлях, який потрібно пройти ...
Ніл

Також це вже двічі, коли мій ключ не працював ...
Ніл

3

Жуйка , 40 байт

Збережено 1 байт, видаливши останній рядок, дякую @ovs!

00000000: 5388 c704 5cfa 0a98 2086 4b17 1be0 aac1  S...\... .K.....
00000010: a2b6 860a 6a63 10ee 0129 0333 f4b9 9035  ....jc...).3...5
00000020: 2a28 a0f1 51b9 fa00                      *(..Q...

Спробуйте в Інтернеті!


Без зворотного нового рядка це отримує 40 байт .
ов

Спасибі! Я думаю, що мій текстовий редактор автоматично
додав його

Як ти це створив? zlib.compress(s.encode(), 9)виводить 46 байт, і відповідь, здається, zlib.
NieDzejkob

За пропозицією Денніса , я використовував zopfli --deflateдля створення неочищеного потоку DEFLATE, потім використовував xxdдля перетворення його у формат xxd. Я вважаю, що він zlibзалишає контрольну суму або не є сирим потоком DEFLATE з іншої причини.
musicman523

3

Вугілля деревне , 38 байт

←…_χP↑⁵P\F³«↑P¹¹↑»↗¹…_χ‖BM²¦⁷P↓⁴… ⁴↙↙³

Спробуйте в Інтернеті!

Я використав відповідь Карлоса у своєму первісному вигляді як стрибкову точку, але добре врятував, використовуючи рефлексію, скориставшись горизонтальною симетрією. (Вертикальна симетрія була не вартий тому, що підкреслення закінчилося неправильним рядом.) Ви можете бачити еволюцію полотна на кожному кроці тут .

Ось багатослівна версія .


btw ви можете використовувати -dдля показу кожного кроку (також вибачте, що я так сильно змінив деревне вугілля, я не впевнений, що дуже багато нових ідей дуже корисні, особливо побудований в козі ascii-art buildin та частина мови wolfram haha)
Лише ASCII


3

Пітон 2, 119 117 116 байт

print''.join(' \n-/|\\_'[ord(x)/8-4]*int('1245abjl'[ord(x)%8],36)for x in' V(8&H(7(@&@(7(@&@(7(HT"S8(%@!8(%@ 8(%@8')

Спробуйте в Інтернеті!

Трохи замученого кодування довжиною пробігу ...

EDIT: Збережіть 3 байти, замінивши набір довжин:

[1,2,4,5,10,11,19,21][ord(x)%8]

з

int('1245abjl'[ord(x)%8],36)


Wow! I was trying to think of an effective way to do this myself.
GarethPW

Nice code, but it seems that it is 119 bytes?
mdahmoune

@mdahmoune: Quite right - forgot to use r'' when checking the length...
Chas Brown

3

C++ 11 - 162 159 154 152 150 bytes

MSVC:

void f(){char*i="b t_b\nb/t b\\b\nv-b\nb|t b|b\nv-b\nb|t b|b\nv-b\nb\\k_e f_b/b\nl b|c b/b\nl b|b b/b\nl b|b/";while(*i)cout<<string(*i++-97,*i),i++;}

GCC: (+4 chars)

int f(){char*i="b t_b\nb/t b\\b\nv-b\nb|t b|b\nv-b\nb|t b|b\nv-b\nb\\k_e f_b/b\nl b|c b/b\nl b|b b/b\nl b|b/";while(*i){cout<<string(*i-97,*(i+1));i+=2;}}

Input string i is coded in char pairs:

  1. Count of chars to repeat (added to 'a' to be a legible character)
  2. Char to print

I think, there's still a lot of room for improvement here.

Edit:

  1. Replaced putchar with cout<<
  2. Remove while, Use string constructor to repeat chars
  3. Removed space before pointer and a spurious semi-colon ;;
  4. Compounding instructions with comma, removing braces.

C++11 does not support auto as a return type, that's a C++14 feature. However, you can fix this and save a byte by making the return type int. It doesn't appear that this code works, though; could you test it on Try it online! and see if you can fix it?
musicman523

Changed the return type auto -> void. I was testing on Visual Studio 2017 - automatically C++14. Added a version for gcc.
Robert Andrzejuk

Oh okay, gotcha. I'm running Linux so I don't have VS. Nice job!
musicman523

Hi Robert - your run length encoding approach is similar to my own; see here. I additionally pack each (length,char) pair into a single char instead of 2. There are 7 possible characters, and 8 distinct lengths; so I use the 56 characters in ' '..'X' for encoding; which saves 40 bytes with a little extra overhead for decoding.
Chas Brown


3

R16K1S60 Assembly, 152 144 Bytes

Writes output to screen peripheral the R16K1S60 in ASCII. Runs on The Powder Toy save 2012356. (See link in header for info)

The byte size of the program is the compiled result (Cells Used * 2), not the assembly.

You know you've done well when the logo takes more space than your bytecode.

a:
mov ex, ip
mov ax, .string
mov sp, ip
mov dx, 0x1000
send sp, dx
.loop:
mov bx, [ax]
cmp bx, ip
je .end
cmp bx, ip
je .newline

shr bx, cx, 8
and cx, 0x00FF
.inner:
send sp, cx
sub bx, ex
jnz .inner
.reentry:
add ax, ex
jmp .loop
.newline:
add dx, 0x0020
send sp, dx
jmp .reentry
.string:
dw 0x0120
dw 0x135F
dw 0x000C
dw 0x012F
dw 0x1320
dw 0x015C
dw 0x000C
dw 0x152D
dw 0x000C
dw 0x017C
dw 0x1320
dw 0x017C
dw 0x000C
dw 0x152D
dw 0x000C
dw 0x017C
dw 0x1320
dw 0x017C
dw 0x000C
dw 0x152D
dw 0x000C
dw 0x015C
dw 0x0A5F
dw 0x0420
dw 0x055F
dw 0x012F
dw 0x000C
dw 0x0B20
dw 0x017C
dw 0x0220
dw 0x012F
dw 0x000C
dw 0x0B20
dw 0x017C
dw 0x0120
dw 0x012F
dw 0x000C
dw 0x0B20
dw 0x017C
dw 0x012F
dw 0x0009
.end:
hlt

Explanation

The assembly code above implements a simple compression algorithm, with the words 0x000C being a newline and 0x0009 being the command to stop execution.

The other words are encoded simply, like this: 0xTTCC

  • T: Times to repeat the value

  • C: The ASCII character to print

The ASM uses every register available to it, including some of the less commonly used ones:

  • The Instruction Pointer, to get a few known values into quick recall to save some bytes (A constant value in an instuction that's not just a register uses an extra byte to store it)

  • The Stack Pointer is used as 6th general purpose register, because none of the code uses the stack.

Only AX, BX, CX, and DX are actually used for important data. EX and SP are used to store some constants that get frequently used.

It's somewhat simple, and has nil chance of winning, but it was fun to write!

See revision history for the old answer (It's just as large in terms of ASM)

funfact: if this was measured in words (in the case of the R16K1S60,16 bits) it'd be smaller than the pyth answer, at 72 bytes




2

Mathematica, 163 bytes

Row@Map[Column,Characters/@{" /-|-|-\\   ",r="_ - - -_   ",r,r,r,r,r,r,r,r,r,"_ - - - |||","_ - - -   /","_ - - -  / ","_ - - - /  ",r,r,r,r,r," \\-|-|-/   "},{1}]


2

Python 2, 171 bytes

p,u,q,v,r,s,F=' ','_','/','|','-'*21,'\\',lambda f,m:f+m*19+f;B=lambda n:p*11+v+p*n+q
print'\n'.join([F(p,u),q+p*19+s,r,F(v,p),r,F(v,p),r,s+u*10+p*4+u*5+q,B(2),B(1),B(0)])

Each line is exactly 85 bytes! Hoorah!


2

Zsh, 244 bytes

This is specifically written for Zsh, not Bash, as it allows a bit more in terms of weird syntax.

alias p=printf
function r { p "$1%.s" {0..$2}}
function l { p $1;r $2 19;p $3;p "\n"}
l " " _ " "
l / " " \\
l - - -
l \| " " \|
l - - -
l \| " " \|
l - - -
p \\
r _ 10
r " " 4
r _ 5
p "/\n"
r " " 11
p "|  /\n"
r " " 11
p "| /\n"
r " " 11
p \|/

Note: when I tried to run it on tio.run the output is different than on my terminal. The fix to this is replacing

function r { p "$1%.s" {0..$2}}

with

function r { p "$1%.0s" {0..$2}}

which would make it 245 bytes (link).

Edit Seems like I was too eager to hit that post button and I missed some spaces, making my solution a bit less efficient. My new output seems off though, but I think I counted correctly (but it wouldn't change the length anyway).


Welcome to PPCG! Notice that the lower line of underscores has a gap of four spaces in it, which is missing from the output of your code.
Steadybox

@Steadybox Ohh silly me. I've updated the answer, thanks for pointing it out!
Luca_Scorpion

No problem! Unfortunately, I think it's still a bit off, but this should fix it (and it saves you a byte too!).
Steadybox

I think you can save a few bytes by using 'funcname(){}' instead of 'function funcname{}'
Winny


2

Python 2, 159 153 139 bytes

s=" "*19;e="-"*21;a=" "*9;print" %s\n/%s\\\n%s\n|%s|\n%s\n|%s|\n%s\n\%s    %s/\n%s|  /\n%s| /\n%s|/"%("_"*19,s,e,s,e,s,e,"_"*8,"_"*7,a,a,a)

Try it online!

EDIT: Saved 6 bytes by using % formatting instead of .format().
EDIT: Saved another 14 bytes by fixing the output, thanks to musicman523.


1
This isn't printing the exact text (extra lines are present). Fixing this will probably save some bytes as well.
officialaimm

Here is a fixed version, coming in at a hot 139 bytes
musicman523


1

JavaScript (ES6), 151 bytes

_=>` 2_________
/0\\
1
|0|
1
|0|
1
\\2    _____/
3|  /
3| /
3|/`.replace(/\d/g,a=>a.repeat.call(...[[" ",19],["-",21],["_",10],[" ",11]][a]))

Test Snippet

f=
_=>` 2_________
/0\\
1
|0|
1
|0|
1
\\2    _____/
3|  /
3| /
3|/`.replace(/\d/g,a=>a.repeat.call(...[[" ",19],["-",21],["_",10],[" ",11]][a]))

O.innerHTML=f()
<pre id=O>




1

,,,, 115 101 98 bytes

I am absolutely ashamed that this is the best I can produce. >.>

"|/
"' 11×:"| /
"⇆:"|  /
"⇆'
'/'_5×' 4×'_10×92c'
'|' 19×'|'
'-21×+++++3×110⇆⊣"\
"' 19×'/'
'_19×' #
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.