Намалюйте ASCIIриск


25

Існує безліч питань, пов’язаних із нанесенням фігур за допомогою зірочок - так я подумав, маючи стільки зірочок там, ми повинні намалювати одну, використовуючи таблицю ASCII.

Виклик

Ваше завдання - написати програму або функцію, яка не вводить даних, і виводить цей точний текст:

          !
         "#
         $%
         &'
         ()
         *+
         ,-
         ./
         01
23456789:;<=>?@ABCDEF
GHIJKLMNOPQRSTUVWXYZ[
        \]^_
       `a  bc
      de    fg
     hi      jk
    lm        no
   pq          rs
  tu            vw
 xy              z{
|}                ~

Для довідки, на цьому веб-сайті подано повну таблицю ASCII.

Правила

  • Вихід повинен бути точним текстом, як показано вище. Простір провідних / задніх пробілів дозволений.
  • Застосовуються стандартні лазівки для гольфу - не читайте цей ASCIIrisk з Інтернету тощо.
  • Це , тому найкоротше рішення (у байтах) виграє.

2
Я хочу спробувати цей виклик ... але це звучить якось ризиково . Вибачте, будь ласка, мій страшний гумор.
HyperNeutrino

1
Переповнення стека має політику NoBadJokes, тому мені доведеться ігнорувати цей коментар. Вибачте, але це політика

2
Гаразд. Вибачте за порушення політики. Дякую, що проігнорували мій коментар, відповівши на нього.
HyperNeutrino

Відповіді:


5

05AB1E , 40 38 37 36 35 байт

žQ2ô376S3*£`2ôvyN·ð×ýð«}rsJ2äsr)˜.c

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

Пояснення

žQ                                   # push the printable ascii chars
  2ô                                 # split into pairs
    376S                             # split the number 376 into a list of digits
        3*                           # multiply each by 3 to get [9,21,18]
          £                          # divide the pairs of ascii chars into 
                                     # pieces of these sizes
           `                         # flatten list to stack
            2ô                       # split the "legs" of the asterisk into pairs of pairs
              v                      # loop over the pairs of pairs
               yN·ð×ý                # join the pairs by index*2 spaces
                     ð«              # append a space
                       }             # end loop
                        rs           # move the middle section to top of stack
                          J2ä        # convert to a string split into 2 pieces
                             sr      # rearrange the stack in the correct order
                               )˜    # wrap in a flattened list
                                 .c  # pad each element with spaces on either side

žQ2ôÐ9£s30£R21£RøsrR18£R2ôvyN·ð×ý})˜.C», Мені 39, але я думаю, що ти можеш поголити за допомогою ZIP.
Чарівний восьминіг Урна

@carusocomputing: Я не думаю, що zip тут не дуже корисний, оскільки ми хочемо, щоб символи залишалися послідовними. Розщеплення всього на парах на початку було гарною ідеєю. Зрозуміло марно, використовуючи стільки r і s, але я не бачу цього способу.
Емінья

13

Python 3 , 110 байт

s='%c';print(('\n'.join(['%10c%c']*9+[s*21]*2+[' '*(8-i)+s*2+'  '*i+s*2for i in range(9)]))%(*range(32,128),))

Створює шаблон

         xx
         xx
         xx
         xx
         xx
         xx
         xx
         xx
         xx
xxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxx
        xxxx
       xx  xx
      xx    xx
     xx      xx
    xx        xx
   xx          xx
  xx            xx
 xx              xx
xx                xx

з %cдля x, потім використовує рядкову інтерполяцію на, range(32,128)щоб вставити значення ASCII у шаблон.

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

Python 2 - на один байт довший, з більш довгим кортежем розпакування, але коротший print.

s='%c';print('\n'.join(['%10c%c']*9+[s*21]*2+[' '*(8-i)+s*2+'  '*i+s*2for i in range(9)]))%tuple(range(32,128))

Він заслуговує на нагороду подібності Ейфелевої вежі!
серхіол

11

V , 54 , 50 байт

¬ ~9ñ9É 11|á
ñ2ñ20lá
ñ$18é 9ñ^y|Ehé
Pf xxywk$hP>ñd

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

На відміну від звичайної, ця програма не містить жодних недрукованих символів.

Пояснення:

¬ ~                     " Insert the entire printable ASCII range
   9ñ           ñ       " 9 times:
     9É                 "   Insert 9 spaces at the beginning of this line
        11|             "   Move to the 11'th column on this line
           á<CR>        "   And append a newline after the 11'th column

Тепер буфер виглядає так:

          !
         "#
         $%
         &'
         ()
         *+
         ,-
         ./
         01
23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

Тепер ми збираємо середину:

2ñ        ñ             " Two times:
  20l                   "   Move 20 characters to the right (because 'l' == 'right', duh)
     á<CR>              "   Append a newline

Ось де це стає дивно.

$                       " Move to the end of this line 
 18é                    " Insert 18 spaces before the last character
     9ñ                 " Repeat the following 9 times:
       ^                "   Move to the first non-whitespace character
        y|              "   Yank all the whitespace before the current character. 
                        "   We'll call this the "Leading whitespace register"
          E             "   Move to the end of the current WORD (up to before a space)
           h            "   Move back one character
            é<CR>       "   And insert a newline before the current character
P                       "   Paste the leading whitespace for indentation
 f                      "   Move forward to a space
   xx                   "   Delete two characters
                        "   (Note how we are inbetween the two bottom branches right now)
     yw                 "   Yank everything upto the next branch (all spaces)
                        "   We'll paste this on the line up so that we can yank it again later
                        "   To keep track of how far apart the branches are
       k$               "   Move up a line and to the end of that line
         hP             "   Move back a character and paste the whitespace we yanked
           >            "   Indent this line by one space
            ñ           "   End the loop

Ось важлива примітка. >Команда насправді є оператором , який означає , що він не робить нічого без аргументу, текст оперувати. Наприклад,

>_      "Indent the current line
>>      "Indent the current line
>j      "Indent the current and next line
>G      "Indent every line

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

Зараз я визнаю, що ця петля трохи дивна, і важко відстежувати, як повинен виглядати весь текст у будь-який момент. Тож ви можете скористатися цією простішою програмою, щоб побачити, як вона буде виглядати після N циклів.

Якщо встановити його на 9, ви побачите, що у нас є трохи зайвого тексту, щоб позбутися. (Просто поточний рядок).

Таким чином, ми видаляємо поточний рядок за допомогою dd. Але зачекайте! Знаєте, як я сказав, що оператори повинні приймати аргумент, який колись неявно заповнюється? Аргументи також неявно заповнюються в кінці програми. Отже, замість того, ddабо d_(які є рівнозначними), ми можемо просто dдозволити V заповнити _для нас.


Приємна робота, що зловживає неявним ÿ:)
Kritixi Lithos


5

JavaScript (ES6), 156115 114 байт

На жаль, сумнозвісна String.fromCharCode()вартість 19 байт.

f=(x=y=k=1)=>k<96?String.fromCharCode(x-22?y/2^5&&(y>9?x-y+1>>1&&22-y-x>>1:x/2^5)?32:31+k++:(x=!++y,10))+f(x+1):''

console.log(f())

Відформатовано та прокоментовано

f = (                         // given:
  x =                         //   - x = current column
  y =                         //   - y = current row
  k = 1                       //   - k = current ASCII character code, minus 31
) =>                          //
  k < 96 ?                    // if we havent't reached character #127 (96 + 31):
    String.fromCharCode(      //   let's compute the next character
      x - 22 ?                //   if x is not equal to 22 (end of line):
        y / 2 ^ 5 && (        //     if y doesn't equal 10 or 11 (horizontal bar):
          y > 9 ?             //       and either y is greater than 9:
            x - y + 1 >> 1 && //         and we are not located on one of the
            22 - y - x >> 1   //         bottom diagonals
          :                   //       or y is less or equal to 9:
            x / 2 ^ 5         //         and x doesn't equal 10 or 11 (vertical bar)
        ) ?                   //     then:
          32                  //       append a space
        :                     //     else:
          31 + k++            //       append the next ASCII character
      :                       //   else:
        (x = !++y, 10)        //     increment y, reset x and append a LineFeed
    ) + f(x + 1)              //   do a recursive call with x + 1
  :                           // else:
    ''                        //   stop recursion

Я думаю, ви можете зробити, String.fromCharCode(...[...Array(n)].map(_=>k++))щоб зберегти 4 байти.
ETHproductions

@ETHproductions Мені подобається ідея викликати String.fromCharCode()масив, але я пішов на інший підхід. Все одно, дякую!
Арнольд

3

QBIC , 153 151 байт

[32,49,2|?space$(9)+chr$(a)+chr$(a+1)][2|X=Y[a,a+20|X=X+chr$(c)]a=a+21?X][0,8|X=space$(8-d)[0,1|X=X+chr$(a+e)]X=X+space$(d*2)[2,3|X=X+chr$(a+f)]a=a+f?X

Це насправді лише серія FOR-циклів і передача int символу ( chr$()).

Вибірка зразка:

          !
         "#
         $%
         &'
         ()
         *+
         ,-
         ./
         01
23456789:;<=>?@ABCDEF
GHIJKLMNOPQRSTUVWXYZ[
        \]^_
       `a  bc
      de    fg
     hi      jk
    lm        no
   pq          rs
  tu            vw
 xy              z{
|}                ~


3

PHP, 110 105 103 93 91 байт

for(;$c<95;$y+=!$x%=21)echo"
"[$x],chr(31+($y%11<9&(max($y,10)-abs(9.5-$x++))%11<9?:++$c));

друкує провідний новий рядок. Запуск з -nrабо перевірити його в Інтернеті .

Основний принцип прийнятий від Арнальда, але це повторює.
І це корисно від неявних типів PHP:
NULL до int для рядкового індексу, float to int for %, boolean to int for &і for +=.

пояснення з псевдокодом

If $x is 0, print a newline. ("\n"[$x] is newline for $x=0; empty for every larger $x)
if $y is neither 9 nor 10 (not middle part: $y<9|$y>10 <=> $y%11<9)
AND distance to center == abs(9.5-$x) (in [0.5,1.5,..,10.5]) ->
    lower part:     abs($y-10-distance)>1                   => ($y-distance)%11<9
                (this works because $y is always <20)
    upper part: $x<9|$x>10 <=> distance>1 <=> 10-distance<9 => (10-distance)%11<9
                (this works because % has negative results for negative first operands)
    both parts: $y>9?$y:10 <=> max($y,10)
// $a?:$b evaluates to $a if $a is truthy, to $b else
// and the ternary condition evaluates to 1 if the coords are not in the shape
then print chr(31+1) = space
else print chr(31+incremented $c)

2

Pyth , 53 байти

js.e@[+L*9;cb2c2b.e+*-8Ydj*yYdZcL2cb4)kcsrdC127,18 60

Програма, яка друкує результат.

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

Як це працює

srdC127 створює список символів для друку ASCII і з'єднує це з рядком.

c....,18 60розбиває цей рядок на індекси 18та60 , подаючи список з трьох рядків, що відповідають різним частинам виводу: верхній, середній і нижній.

.eпочинає перелічену карту над рядками з рядками as bта їх індексами якk .

[...)створює список, що містить бажану дію для кожної частини діаграми. Правильна дія вибирається шляхом індексації до списку з поточним індексом, використовуючи @...k.

  • Зверху

    cb2розбиває рядок на пари символів і +L*9;додає 9пробіли до кожної пари.

  • Середній

    c2b розбиває струну на дві струни однакової довжини.

  • Знизу

    cL2cb4 розбиває рядок на групи з чотирьох символів, а кожна група на пари.

    .eпочинається перелічена карта з парами рядків як Zі їх індексами як Y.

    j*yYdZз'єднує пари на 2*Yпробілах і +*-8Ydпопереджує 8-Yпробіли.

jsоб'єднує всі результати та приєднується до отриманого списку в нових рядках. Потім це неявно друкується.


2

Haskell , 144 байти

b!n=[1..n]>>b
('*':r)#(a:s)=a:r#s
(a:r)#s=a:r#s
r#s=r
p="**"
f=unlines([" "!9++p]!9++["*"!21]!2++[" "!(8-n)++p++" "!(2*n)++p|n<-[0..8]])#[' '..]

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

Пояснення:

b!n=[1..n]>>bвизначає функцію, !яка повторює список або рядок b n-ime.

unlines([" "!9++p]!9++["*"!21]!2++[" "!(8-n)++p++" "!(2*n)++p|n<-[0..8]]) використовує цю функцію для малювання зірочок зірочок (О, іронія!):

         **
         **
         **
         **
         **
         **
         **
         **
         **
*********************
*********************
        ****
       **  **
      **    **
     **      **
    **        **
   **          **
  **            **
 **              **
**                **

#визначається як функція, яка послідовно замінює *рядок символами із заданого списку. Він називається вищевказаною зірочкою зірочок і [' '..]є нескінченним списком усіх символів, починаючи з пробілу ' '.


Тут дуже пізно на вечірку, але це " "!(2*n)може бути "(TWO SPACES)"!n.
Лінн


2

J, 63

(не змагається)

a.{~32>.31+20 21$(* +/\),(9 21&$@{.,1:,1:,}.)(+.1&|."1)|.=|i:10

вираз оцінює справа наліво таким чином:

  • i: 10 нараховує від -10 до +10
  • | візьміть abs, щоб повернути +10 до 0 назад до +10
  • = самостійно класифікуйте, щоб отримати V форму 1 у блоці 0
  • |. порядок зворотного рядка для отримання / \ форми
  • ( +. 1&|."1 ) Вираз гачка зміщує кожен рядок праворуч на один, а АБО - на оригінал
  • ( 9 21&$@{. , 1: , 1: , }. ) вкладені вилки покласти в горизонталі і натягнути зверху
  • , перекреслити блок в лінійну послідовність для кумуляції
  • ( * +/\ ) накопичувати та примножувати себе
  • 20 21 $ повернути форму до блоку 20 рядів з 21 елемента
  • 31 + додайте 31, оскільки першим 1 повинен бути пробіл 32
  • 32 >. поверх 32
  • a. {~ вибирайте символи з вбудованих ascii

4
Ласкаво просимо до PPCG! Чому ви відзначили це як змагальним?
Мартін Ендер

Я просто думав, що я докладу своїх зусиль, навіть якщо минуло тривалий час [15 мільйонів] після початку змагань ... ти кажеш, що кожна головоломка залишається відкритою? .. також для виразу J для друку за межами REPL, тобто, коли виконується в сценарії, мені потрібно буде ввести smoutputкоманду префікса або еквівалент
jayprich

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

1

Рубін, 91 байт

->{(-11..8).map{|i|["%s"*21,"%#{9-i}s%s%#{i*2+1}s%s","%10s%s"][i/2<=>-1]}*$/%[*' '..?~,$/]}

Безумовно

->{(-11..8).map{|i|            #For each line
  ["%s"*21,                    #If i/2==-1 make a format string of 21 %s
   "%#{9-i}s%s%#{i*2+1}s%s",   #If i/2>-1 make a format string %{9-i}s%s%{i*2+1}s%s
   "%10s%s"][i/2<=>-1]         #If i/2<-1 make a format string %10s%s
  }*$/%                        #Join the format strings with newlines $/ then use sprintf operator %
  [*' '..?~,$/]                #to replace the %s with *' '..'~' and a newline for last corner.
}

1

Я пропустив відповідь на C # так ...

C # (.NET Core) , 175 174 байт

_=>{var r="";for(int i=0,j,d=32,s=1;i<54;i++)for(j=0;j++<"*#4#4#4#4#4#4#4#4#+K)%1###/#%#-#'#+#)#)#+#'#-#%#/###1#"[i]-33;)r+=(char)(i%2<1?32:d++)+(s++%21<1?"\n":"");return r;}

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

  • 1 байт збережено завдяки Kevin Cruijssen!

1
Ви можете зберегти байт, помістивши ints всередину for-loop:for(int i=0,j,d=32,s=1;i<54;i++)for(j=0
Кевін Круїйсен

1

Tcl , 209 байт

proc I {} {incr ::i}
proc A {} {time {append a [$::F %c [I]]} 21;puts $a}
set i 31
time {puts [[set F format] %10c%c [I] [I]]} 9
A
A
time {puts [$F %[expr 32-[I]/4]c%c $i [I]][$F %[expr $i/2-45]c%c [I] [I]]} 9

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


Tcl , 212 байт

proc I {} {incr ::i}
proc A {} {time {append a [$::F %c [I]]} 21;puts $a}
set i 31
time {puts [[set F format] %10c%c [I] [I]]} 9
A
A
time {puts [$F %[expr (129-[I])/4]c%c $i [I]][$F %[expr $i/2-45]c%c [I] [I]]} 9

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

tcl, 213

proc I {} {incr ::i}
set F format
proc A {} {time {append a [$::F %c [I]]} 21;puts $a}
set i 31
time {puts [$F %10c%c [I] [I]]} 9
A
A
time {puts [$F %[expr (129-[I])/4]c%c $i [I]][$F %[expr $i/2-45]c%c [I] [I]]} 9

демонстрація


tcl, 214

proc I {} {incr ::i}
set F format
proc A {} {time {append a [$::F %c [I]]} 21;puts $a}
set i 31
time {puts [$F %10c%c [I] [I]]} 9
A
A
time {I;puts [$F %[expr (129-$i)/4]c%c $i [I]][$F %[expr $i/2-45]c%c [I] [I]]} 9

демонстрація


tcl, 227

proc I {} {incr ::i}
set F format
proc A {} {time {append ::a [$::F %c [I]]} 21}
set i 31
time {puts [$F %10c%c [I] [I]]} 9
A
set a $a\n
A
puts $a
time {I;puts [$F %[expr (129-$i)/4]c%c $i [I]][$F %[expr $i/2-45]c%c [I] [I]]} 9

демонстрація

tcl, 236

proc I {} {incr ::i}
set F format
proc A {} {time {append ::a [$::F %c [I]]} 21}
set i 31
time {puts [$F %10c%c [I] [I]]} 9
set a ""
A
set a $a\n
A
puts $a
time {I;puts [$F %[expr (129-$i)/4]c%c $i [I]][$F %[expr $i/2-45]c%c [I] [I]]} 9

демонстрація


tcl, 237

proc I {} {incr ::i}
set F format
proc A {} {time {set ::a $::a[$::F %c [I]]} 21}
set i 31
time {puts [$F %10c%c [I] [I]]} 9
set a ""
A
set a $a\n
A
puts $a
time {I;puts [$F %[expr (129-$i)/4]c%c $i [I]][$F %[expr $i/2-45]c%c [I] [I]]} 9

демонстрація


Альтернативний підхід з однаковим розміром:

proc I {} {incr ::i}
set F format
proc A b {time {upvar $b c;set c $c[$::F %c [I]]} 21}
set i 31
time {puts [$F %10c%c [I] [I]]} 9
set a ""
A a
set a $a\n
A a
puts $a
time {I;puts [$F %[expr (129-$i)/4]c%c $i [I]][$F %[expr $i/2-45]c%c [I] [I]]} 9

демонстрація

Ткл, 288

lassign {set while puts format incr expr} S W P F I E
$S i 31
$W \$i<48 {$P [$F %10c%c [$I i] [$I i]]}
$S a ""
$W {[$I i]<71} {$S a $a[$F %c $i]}
$S a $a\n
$W \$i<92 {$S a $a[$F %c $i];$I i}
$P $a
$W \$i<128 {$P [$F %[$E (129-$i)/4]c%c $i [$I i]][$F %[$E $i/2-45]c%c [$I i] [$I i]]; $I i}

демонстрація


tcl, 297 байт (наївна спроба)

set i 31
while \$i<48 {puts [format %10c%c [incr i] [incr i]]}
set a ""
while {[incr i]<71} {set a $a[format %c $i]}
set a $a\n
while \$i<92 {set a $a[format %c $i];incr i}
puts $a
while \$i<128 {puts [format %[expr (129-$i)/4]c%c $i [incr i]][format %[expr $i/2-45]c%c [incr i] [incr i]]; incr i}

демонстрація


1
Що ви маєте на увазі під "наївною спробою"? Чи не слід замість цього вказати довжину в заголовку?

1
Я маю на увазі, що місця для гри в гольф більше, тому що ще багато повторень. І я більше буду гольфувати.
серхіол



@ ASCII лише: Дякую Моя не точно до вашої пропозиції! ;)
серхіол

1

Поетична , 899 байт

ill be honest with you
i expect a big solitude
i guess i had a guilt
my own idea being:i was real alone,i was a lonely human
also,i am still
o,i guess i was expecting a shift
i figured,surely i know i am tired of silence
now i dreamed for a shift
a magical desire cant come
i am barely a man,so i guess i see why a woman i see ignores myself
i know i am awful
o,a night of passion and a moment of love
i am truly the foolish person,every time i am saying i may recapture a love
o,i think i can,i think i can
i really do know i am unfit
o,i notice a lot,i think i know i am unfit
o,a novel,or perhaps poetry in code,i do enjoy the writing
and i shudder and i wonder in a moment
i was a weirdo,i was a freak,or like,i am creepy
o,i think i was a misfit
i know i am,really
o,i ought not concern myself
and sure,i am still some joyless man
i focused and i tried
a lasting solace and joy is nearby for me

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

Poetic - це езоланг, який я зробив у 2018 році для класного проекту. Це в основному мозковий ебать із довжиною слова замість символів.

Цей вірш ... пригнічує. 😟


0

Python 2.7, 194 188 байт

k,l,c,s,r=8,0,chr,' ',range;o=''.join(map(chr,r(32,127)))
for i in r(0,18,2):print s*9+o[i:i+2]
print o[18:39]+'\n'+o[39:60]
for i in r(60,95,4):print s*k+o[i:i+2]+s*l+o[i+2:i+4];k-=1;l+=2

Ви можете скинути 2 байти, змінивши map(chrна, map(cяк cуже визначено якchr

0

Jq 1,5 , 180 байт

foreach((range(9)|[9,2]),(range(2)|[0,21]),(range(9)|[8-.,2,.+.,2]))as$r({s:[range(32;127)]|implode};.r=$r|.p=""|until(.r==[];.p+=" "*.r[0]+.s[:.r[1]]|.s =.s[.r[1]:]|.r=.r[2:]);.p)

Розширено

foreach (                              # instruction sequence: [indent, count]
    (range(9)|[9,2]),                  # 9 rows of 2 characters indented 9 spaces
    (range(2)|[0,21]),                 # 2 rows of 21 characters
    (range(9)|[8-.,2,.+.,2])           # 9 rows of 4 characters with varying indent
) as $r (
    {s:[range(32;127)]|implode}        # state = ascii string
  ; .r = $r                            # current instruction
  | .p = ""                            # print string for this row
  | until(.r==[];                      # until current instruction is exhausted
        .p += " "*.r[0] + .s[:.r[1]]   # add to print string
      | .s = .s[.r[1]:]                # remove from state
      | .r = .r[2:]                    # remove from instruction
    )
  ; .p                                 # emit print string
 )

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


0

Штрихи ( /// ), 324 байти

          !
         "#
         $%
         &'
         ()
         *+
         ,-
         .\/
         01
23456789:;<=>?@ABCDEF
GHIJKLMNOPQRSTUVWXYZ[
        \\]^_
       `a  bc
      de    fg
     hi      jk
    lm        no
   pq          rs
  tu            vw
 xy              z{
|}                ~

Перша (за замовчуванням) дія у косої риси - це "друк", тому рядок друкується. /І \повинна бути замаскована виходячи \s.


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

Дещо жарт показувати красуні ///, і я додам таких!
clabe45

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.