Я дуже хотів ромб, але все, що я отримав, був цей дурний прямокутник


33

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

ромб-в-прямокутнику

Вхідні дані

Введення - це розміри прямокутника. У наведеному прикладі це було б 125, 50. Ви можете брати вклад будь-яким зручним способом (як два цілі числа, список, рядки тощо).

Більший розмір буде 100 мінімумом, тоді як менший - 25 мінімумів. Обидві шапки по 200.

Вихідні дані

Виведенням буде зображення (відображене на екрані або збережене як файл) із зображенням

  • Вхідний прямокутник
  • Усі "робочі" лінії / кола
  • Вписаний ромб

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

Вихідне зображення повинно бути достатньо великим, щоб містити все. Наприклад, показані кола не можуть виходити за межі.

Метод

Метод, використаний у наведеному вище прикладі:

  • Намалюйте коло, використовуючи нижній лівий кут як центр, а верхній правий як точку по периметру, даючи радіус, рівний діагоналі прямокутника.
  • Зробіть те ж саме, але поміняючи точки по центру та по периметру.
  • Накресліть лінію між перетинами двох кіл, подавши перпендикулярну бісектрису до діагоналі прямокутника.
  • Скористайтеся перетинами нової лінії та прямокутника, щоб намалювати ромб.

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

Це не єдиний метод отримати свій ромб, і ви можете скористатися іншим, враховуючи, що ви пояснюєте, що робите. Я вважаю, що це, мабуть, найпростіше.

Правила

Можна малювати лише кола та лінії (а точніше - відрізки рядків). Коло визначається із точкою центра та точкою периметра. Рядок визначається будь-якими двома точками. Рядки не повинні бути заданої довжини, але вони повинні принаймні охоплювати визначальні точки (зверніть увагу на приклад зображення: лінія йде трохи далі від перетинів кола, але не до краю). Для кіл радіус від центру до обраної точки периметра вважається робочою лінією і повинен бути показаний.

Для растерізації ліній ви можете використовувати будь-який розпізнаний алгоритм (наприклад, Bresenham's) або покластися на будь-яку вбудовану вашу мову. Якщо ваш вихід має векторний характер, переконайтеся, що він відображається з роздільною здатністю, принаймні такою ж великою, як прямокутник введення в пікселях. Крім того, ви будете малювати на звичайному полотні, тому, будь ласка, придушіть будь-які позначки сітки або сторонні вихідні дані.

Жодного обману! Ви можете визначити розміщення точок / ліній / кіл лише за допомогою встановлених вами досі. Якщо ви не можете пояснити, як використовувати свої робочі лінії / кола, щоб показати, що це ромб, ви робите це неправильно.

Ви можете використовувати будь-яку пару протилежних точок, які вам потрібні, і прямокутник не потрібно малювати по осі, доки результат буде правильним.

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

Нарешті, це стандартний код гольфу, тому виграє найменший розмір у байтах.


Чи можемо ми скористатися математичною формулою для вирішення, наприклад, кінцевих точок лінії, проведеної між перехрестями кіл, після їх накреслення (без фактичного розбору зображення, щоб побачити, де перетинаються)?
ETHproductions

@ETHproductions Я б сказав так, оскільки досить легко показати, що кут між ними та радіусом становить 60 градусів з кожної сторони, і що вони утворюють рівносторонні трикутники. Якщо у когось є заперечення, я також хочу почути це.
Геобіт

3
Чи можемо ми припустити, що перший вхід буде більшим, ніж другий (або навпаки), чи відповіді повинні мати можливість обробляти як вертикально, так і горизонтально орієнтовані прямокутники?
Мартін Ендер

Яке призначення відрізка короткої лінії всередині прямокутника?
12Me21

Відповіді:


11

HTML + JavaScript (ES6), 34 + 353 = 387 байт

Вхід повинен бути вказаний у форматі [125,50].

[w,h]=eval(prompt(c=C.getContext("2d"))).sort();d=q=>(c.strokeStyle=q,b);l=(x,y=Z)=>x?c.lineTo(x,y)||l:c.stroke();b=(x,y=H,r)=>(c.beginPath(),r?c.arc(x,y,Math.sqrt(r),0,2*Math.PI):c.moveTo(x,y),l);b(Z=300,Z)(W=Z+w)(W,H=Z+h)(Z,H)(Z)();d`red`(Z,H,s=w*w+h*h)();b(W,Z,s)();b(Z)(W)();b(Z+w/2-h,Z+h/2-w)(H+w/2,W+h/2)();d`lime`(Z)(W-s/2/w)(W)(Z+s/2/w,H)(Z,H)()
<canvas id=C width=800 height=800>

Просто багато математики та малювання ... Прямокутник намальовано набік, якщо висота більша за ширину, що, на мою думку, дозволено.


Ооо, на 10 байт менше, ніж 444: P
Kritixi Lithos

@KritixiLithos Зараз я на 10 байт менше 400;-)
ETHproductions

Прямокутник стає вписаним у ромб, коли висота більша за ширину.
Ларкіт

1
@Larkeith На жаль, не знав, що нам доведеться висвітлювати ці випадки. Виправлено вартістю 42 байти.
ETHproductions

Ви можете використовувати "getContext` 2d `" (без пробілів), щоб зберегти кілька байтів (чому вони повинні були використовувати `і розбити розмітку ...)
12Me21,

10

Математика, 157 148 158 байт

Дякуємо Мартіну Ендеру за коментарі з їх звичайною високою якістю! У цьому випадку збережено 9 байт.

Відредагований, як тільки було з’ясовано, що аргументи можуть бути в будь-якому порядку; 10 байт додано для компенсації.

Graphics@{(m=Line)@{o=0{,},{#,0},c={##},{0,#2},o},Blue,m[l={o,c}],Circle[#,(c.c)^.5]&/@l,m[{k={#2,-#},-k}+{c,c}/2],Red,m@{o,p={0,c.c/2/#2},c,c-p,o}}&@@Sort@#&

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

Graphics@{
  (m=Line)@{o = 0{,}, {#, 0}, c = {##}, {0, #2}, o},
  Blue, m[l = {o, c}], Circle[#, (c.c)^.5] & /@ l, 
  m[{k = {#2, -#}, -k} + {c, c}/2],
  Red, m@{o, p = {c.c/2/#2, 0}, c, c - p, o}
} & @@ Sort@# &

Безіменна функція одного аргументу, який є впорядкованою парою додатних чисел; остаточний @@ Sort@# &перетворює цю пару в два числові аргументи, де перше число є меншим. Lineвиробляє багатокутний шлях від точки до точки, яка перетвориться на закритий багатокутник, якщо перша і остання точки однакові; Circleутворює коло із заданим центром та радіусом. Спеціальні точки oта c(нижній лівий та верхній правий кути прямокутника), p(третій кут ромба, заданий математичною формулою) та k(допомагаючи намалювати перпендикулярну бісектрису) даються імена на шляху збереження байтів при повторному виклику , як і спеціальна пара балівl = {o,c}. Mathematica із задоволенням додає точки безпосередньо, помножує обидві координати на один і той же коефіцієнт, бере їх крапковий добуток тощо, і все це спрощує код.

Вибірка з аргументами 125та 50:

введіть тут опис зображення


1
Знову зайвий пробіл. Ви можете використовувати цей трюк, щоб зберегти байт {0,0}. Оскільки немає необхідності використовувати синій та помаранчевий, ви можете зберігати байти, використовуючи Redзамість Orange. Ви використовуєте Lineчотири рази, що більш ніж достатньо для збереження байтів i=Line;(як правило, якщо вираз має nсимволи, і ви використовуєте його mпотрібні рази (m-1)*(n-1) > 4, менше, якщо ви можете призначити змінну під час першого використання без дужок).
Мартін Ендер

Цей 0{,}трюк фантастичний: D
Грег Мартін

Боюся, це не спрацює, якщо друга сторона довша за першу. Однак орієнтація не повинна бути узгодженою, тому це можна виправити, додавши @@Sort@#&та замінюючи їх, #і #2впродовж усього коду, або альтернативно, адаптуючи його для роботи з прямокутниками, орієнтованими на портрет.
Мартін Ендер

Так, це було навмисно ... схоже, ми чекаємо роз’яснення щодо того, чи можемо ми припустити, що розміри приходять у потрібному нам порядку.
Грег Мартін


9

MetaPost, 473 (з кольором) 353 (без кольору)

Кольорові (473 байти):

A:=170;B:=100;pair X,Y;path C,D,E,F,G,R,T;X=(0,0);Y=(A,B);R=X--(A,0)--Y--(0,B)--cycle;T=(0,B)--(A,B);draw R;E=X--Y;C=X..Y*2..cycle;D=Y..-Y..cycle;F=(D intersectionpoint C)--(C intersectionpoint D);draw C withcolor green;draw D withcolor green;draw E withcolor red;draw F withcolor red;draw (F intersectionpoint R)--Y withcolor blue;draw X--(F intersectionpoint T) withcolor blue;draw (F intersectionpoint T)--Y withcolor blue;draw (F intersectionpoint R)--X withcolor blue;

Небарвне (353 байти):

A:=170;B:=100;pair X,Y;path C,D,E,F,G,R,T;X=(0,0);Y=(A,B);R=X--(A,0)--Y--(0,B)--cycle;T=(0,B)--(A,B);draw R;E=X--Y;C=X..Y*2..cycle;D=Y..-Y..cycle;F=(D intersectionpoint C)--(C intersectionpoint D);draw C;draw D;draw E;draw F;draw (F intersectionpoint R)--Y;draw X--(F intersectionpoint T);draw (F intersectionpoint T)--Y;draw (F intersectionpoint R)--X;

Ніколи НІКОГО не використовував цього раніше, і я впевнений, що я порізав це ...
Але коли ви запускаєте це на цьому веб-сайті:

http://www.tlhiv.org/mppreview/

Він використовує перетин кіл, щоб намалювати другу вісь, а потім використовує перетин осі та прямокутника, щоб намалювати кінцевий ромб. Хоча я міг би обдурити і просто намалював лінію, перпендикулярну до першої осі ха-ха.

Щоб змінити розміри, просто змініть A і B.

Незалежно від того, ви закінчите (для L = 170, H = 100):

Зображення


3

Десмос, 375 (або 163) байт

w=125
h=50
\left(wt,\left[0,h\right]\right)
\left(\left[0,w\right],ht\right)
\left(x-\left[0,w\right]\right)^2+\left(y-\left[0,h\right]\right)^2=w^2+h^2
\frac{h}{w}x\left\{0\le x\le w\right\}
-\frac{w}{h}\left(x-\frac{w}{2}\right)+\frac{h}{2}
a=\frac{h^2}{2w}+\frac{w}{2}
\left(t\left(w-a\right)+\left[0,1\right]a,ht\right)
\left(at-\left[0,a-w\right],\left[0,h\right]\right)

wі hє входами. Спробуйте на Десмосі!

Чергова 163-байтна версія:

w=125
h=50
(wt,[0,h])
([0,w],ht)
(x-[0,w])^2+(y-[0,h])^2=w^2+h^2
hx/w\left\{0\le x\le w\right\}
-w(x-w/2)/h+h/2
a=h^2/2/w+w/2
(t(w-a)+[0,1]a,ht)
(at-[0,a-w],[0,h])

Ця версія вимагає копіювати кожен рядок і вставляти його в Desmos. Мета все ще має вирішити, чи це дійсний метод підрахунку, але попередній метод, безумовно, добре.


Це, здається, припускає, що вхідний прямокутник має ландшафтну орієнтацію, що не вказано в задачі.
Хеннінг Макгольм

1
На мою думку, «прямокутник не потрібно малювати по осі» означає, що на заздалегідь не визначена орієнтація прямокутника, включаючи пейзаж проти портрета, яку потрібно зберегти.
Грег Мартін

Оскільки задано лише розмір (а не координати), результат може бути вирівняний, як вам завгодно, якщо вважати, що розмір правильний.
Геобіт

Вперше я бачу, як Десмос використовується як гольф мова :)
Kritixi Lithos

3

ImageMagick Версія 7.0.3 + bash + sed, 496 байт

M=magick
L=$((400-$(($1))/2)),$((400+$(($2))/2))
R=$((400+$(($1))/2)),$((400-$(($2))/2))
Z=" $L $R" Y=" -1 x";D=' -draw' K=' -stroke'
A=' -strokewidth 3 +antialias -fill'
$M xc:[800x]$A none$K \#000$D "rectangle$Z"$D "line$Z"$K \#00F8$D "circle$Z"$K \#0F08$D "circle $R $L" -depth 8 png:a
$M a txt:-|sed "/38C/!d;s/:.*//">x;P=`head$Y`;Q=`tail$Y`
$M a$A \#F008$K \#F008$D "line $P $Q" b
$M b txt:-|sed "/C70/!d;s/:.*//">x;S=`head$Y`;T=`tail$Y`
$M b$A \#F804$K \#F80$D "polyline $L $S $R $T $L" x:

Результат з "rhombus.sh 180 120"

введіть тут опис зображення

Точніше (використовуючи полотно 6400x6400 замість 800x800), 570 байт

Перехрестя не є точним; Директива "Ширина ходу" робить лінії достатньо широкими, щоб переконатися, що принаймні один цілий піксель змішується лише з кольорами двох пересічних ліній, але в гірших випадках (25х200 та 200х25) перехрестя знаходиться під малим кутом, так що хмара змішаних пікселів довжиною кілька пікселів, і оскільки ми вибираємо перший та останній змішані пікселі, є невелика помилка. Використання полотна великого розміру в 8 разів з однаковою шириною обведення, а потім зменшення результату вниз зменшує помилку до менш ніж одного пікселя, але приблизно в 64 рази.

M=magick
L=$((3200-$(($1))*4)),$((3200+$(($2))*4))
R=$((3200+$(($1))*4)),$((3200-$(($2))*4))
K=-stroke;A='-strokewidth 3 +antialias'
$M xc:[6400x] $A -fill none $K \#000 -draw "rectangle $L $R" \
-draw "line $L $R" $K \#00F8 -draw "circle $L $R" \
$K \#0F08 -draw "circle $R $L" -depth 8 png:a 
$M a txt:-|grep 38C077|sed -e "s/:.*//p">x
P=`head -1 x`;Q=`tail -1 x`
$M a $A -fill \#F008 $K \#F008 -draw "line $P $Q" png:b
$M b txt:-|grep C70000|sed -e "s/:.*//p">x
S=`head -1 x`;T=`tail -1 x`
$M b $A -fill \#F804 $K \#F80 -draw "polyline $L $S $R $T $L" -resize 800 x:

Результати нормальних 800x800 проти точних 6400x6400:

нормальний та точний результати

Безголівки:

# rhombus.sh
# Inscribe a rhombus in the rectangle with dimensions 2*$1, 2*$2

# Run with "rhombus.sh W H"

M=magick

W=${1:-100};H=${2:-40}

# L locates the lower left corner of the rectangle
L=$((400-$((W))/2)),$((400+$((H))/2))

# R locates the upper right corner of the rectangle
R=$((400+$((W))/2)),$((400-$((H))/2))

# We'll need this several times
A='-strokewidth 3 +antialias'

# Establish 800x800 canvas (white) (circles + rectangle will
# always fit in 764x764)
#
# Draw the W x H rectangle (black) in center of canvas
#
# Draw two circles (blue, 50% alpha [#00F8] and green, 50% alpha [#0F08])
#  one centered at point L with peripheral point R
#  the other centered at point R with peripheral point L

$M xc:[800x] $A -fill none \
       -stroke \#000  -draw "rectangle $L $R" \
                      -draw "line      $L $R" \
       -stroke \#00F8 -draw "circle    $L $R" \
       -stroke \#0F08 -draw "circle    $R $L" \
       -depth 8 a.png 

# Find P and Q, the 2 intersections of the circles,
# that have mixed color #38C077 
$M a.png txt:-|grep 38C077|sed -e "s/:.*//p">x
P=`head -1 x`;Q=`tail -1 x`

# Draw line connecting the intersections P and Q
$M a.png $A -fill \#F008 -stroke \#F008 -draw "line $P $Q" b.png

# Find S and T, the 2 intersections of the line with the original rectangle,
# that have mixed color #C70000
$M b.png txt:-|grep C70000|sed -e "s/:.*//p">x
S=`head -1 x`;T=`tail -1 x`

# Draw the rhombus
$M b.png $A -fill \#F804 -stroke \#F80 -draw "polyline $L $S $R $T $L" d.png

Мені подобається те, як ти виявляєш перехрестя, дуже приємно. Правильний останній змішаний колір? Я запитую, бо схоже, що лінії ромба і прямокутника трохи відірвані. Я подумав, що, можливо, колір виявляється в злегка відшаровуваній ділянці (можливо ширина штриха).
Геобіц

2

R, 290 байт

function(A,B,p=polygon){R=A^2+B^2
D=2*A
a=sqrt(R)*cbind(cos(t<-seq(0,2*pi,.01)),sin(t))
b=t(t(a)+c(A,B))
x=range(a,b)
plot(NA,xli=x,yli=x,as=1,ax=F,an=F)
rect(0,0,A,B)
segments(0,0,A,B,c=4)
p(a,b=4)
p(b,b=4)
curve(B/2-A*x/B+A^2/2/B,co=4,a=T)
p(cbind(c((R-2*B^2)/D,A,R/D,0),c(B,B,0,0)),b=3)}

Анонімна функція, вихід виводиться на екран. Трохи невольф, з коментарями:

function(A,B){
    R=A^2+B^2
    D=2*A
    t=seq(0,2*pi,.01)
    a=sqrt(R)*cbind(cos(t),sin(t)) #Circle with (0,0) as center
    b=t(t(a)+c(A,B)) #Second circle transposed to (A,B) center
    x=range(a,b)
    #Empty plot, large enough to fit the 2 circles:
    plot(NA,xlim=x,ylim=x,asp=1,axes=F,ann=F)
    rect(0,0,A,B) #Initial rectangle
    segments(0,0,A,B,col=4) #Rectangle diagonal
    polygon(a,border=4) #Circle 1 (border is b thanks to partial matching)
    polygon(b,border=4) #Circle 2
    curve(B/2-A*x/B+A^2/2/B,col=4,add=T) #Line joining circles intersection
    polygon(cbind(c((R-2*B^2)/D,A,R/D,0),c(B,B,0,0)),border=3) #Rhombus
}

Приклад виходу для (120,100):

введіть тут опис зображення


2

LibreLogo , 270 байт

Введення користувача приймається як масив: [width, height]або [height, width].

Код:

fc [24]
D=180
R=sorted(eval(input "))
W=R[1]
H=R[0]
L=sqrt W**2+H**2
A=D/π*asin(H/L)
Z=A*2
S=L/2/cos A*π/D rectangle[W,H]pc 255 lt A fd 400 bk 800 fd 400 rt A pu bk H/2 lt 90 fd W/2 pd circle L*2 rt D-A fd L circle L*2 pc [5]lt D-A fd S lt Z fd S rt D+Z fd S lt Z fd S

Результат:

введіть тут опис зображення

Пояснення:

fc [24]                        ; Fill Color = Invisible
D = 180                        ; D = 180° (Saved Bytes)
R = sorted( eval( input " ) )  ; R = Sorted Array of Rectangle Width and Height (User Input)
W = R[1]                       ; W = Rectangle Width
H = R[0]                       ; H = Rectangle Height
L = sqrt W**2 + H**2           ; L = Rectangle Diagonal Length
A = D / π * asin( H / L )      ; A = Rectangle Diagonal Angle°
Z = A * 2                      ; Z = Rectangle Diagonal Angle° * 2 (Saved Bytes)
S = L / 2 / cos A * π / D      ; S = Rhombus Side Length
rectangle [W, H]               ; Draw Rectangle
pc 255                         ; Pen Color = Blue
lt A                           ; Left = Rectangle Diagonal Angle°
fd 400                         ; Forward = 400 pt
bk 800                         ; Back = 800 pt
fd 400                         ; Forward = 400 pt
rt A                           ; Right = Rectangle Diagonal Angle°
pu                             ; Pen Up
bk H / 2                       ; Back = Rectangle Height / 2
lt 90                          ; Left = 90°
fd W / 2                       ; Forward = Rectangle Width / 2
pd                             ; Pen Down
circle L * 2                   ; Draw Left Circle (Radius = Rectangle Diagonal Length)
rt D - A                       ; Right = 180° - Rectangle Diagonal Angle°
fd L                           ; Forward = Rectangle Diagonal Length
circle L * 2                   ; Draw Right Circle (Radius = Rectangle Diagonal Length)
pc [5]                         ; Pen Color = Red
lt D - A                       ; Left = 180° - Rectangle Diagonal Angle°
fd S                           ; Forward = Rhombus Side Length
lt Z                           ; Left = Rectangle Diagonal Angle° * 2
fd S                           ; Forward = Rhombus Side Length
rt D + Z                       ; Right = 180° + Rectangle Diagonal Angle° * 2
fd S                           ; Forward = Rhombus Side Length
lt Z                           ; Left = Rectangle Diagonal Angle° * 2
fd S                           ; Forward = Rhombus Side Length

1

Python 3,5 + Tkinter, 433 або 515 байт

Некольорові (433 байти):

from tkinter import*
def V(a,b):S=500;Y,Z=S+a,S-b;M=(a**2+b**2)**0.5;D=Tk();C=Canvas(D);B=C.create_oval;X=C.create_line;B(S+M,S-M,S-M,S+M);B(Y-M,Z+M,Y+M,Z-M);X(Y,Z,S,S);C.create_rectangle(Y,S,S,Z);Q=-((Z-S)/(Y-S))**-1;U,V=(Y+S)/2,(Z+S)/2;X(U+M,V+M*Q,U-M,V-M*Q);P=[(Y,Q*(Y-U)+V),(((Z-V)/Q)+U,Z)][a>b];L=[(S,Q*(S-U)+V),(((S-V)/Q)+U,S)][a>b];X(S,S,P[0],P[1]);X(Y,Z,P[0],P[1]);X(Y,Z,L[0],L[1]);X(S,S,L[0],L[1]);C.pack(fill=BOTH,expand=1)

Кольорові (515 байт):

from tkinter import*
def V(a,b):S=500;t='blue';Y,Z=S+a,S-b;M=(a**2+b**2)**0.5;D=Tk();C=Canvas(D);B=C.create_oval;X=C.create_line;B(S+M,S-M,S-M,S+M,outline=t);B(Y-M,Z+M,Y+M,Z-M,outline=t);X(Y,Z,S,S,fill=t);C.create_rectangle(Y,S,S,Z);Q=-((Z-S)/(Y-S))**-1;U,V=(Y+S)/2,(Z+S)/2;X(U+M,V+M*Q,U-M,V-M*Q,fill=t);P=[(Y,Q*(Y-U)+V),(((Z-V)/Q)+U,Z)][a>b];L=[(S,Q*(S-U)+V),(((S-V)/Q)+U,S)][a>b];o='orange';X(S,S,P[0],P[1],fill=o);X(Y,Z,P[0],P[1],fill=o);X(Y,Z,L[0],L[1],fill=o);X(S,S,L[0],L[1],fill=o);C.pack(fill=BOTH,expand=1)

Названа функція, яка приймає введення як 2 числа, розділені комами. Вихід подається в окремому вікні, яке вам, можливо, доведеться змінити розмір, щоб побачити повний вихід. Ось зразок кольорового виводу для V(180,130):

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


0

SmileBASIC, 280 байт

INPUT W,H
W=MAX(W,H)/4H=MIN(W,H)/4D=SQR(W*W+H*H)N=D+W
M+D+H
GBOX D,D,N,M,#RED
GCIRCLE D,M,D
GCIRCLE N,D,D
GLINE D,M,N,D
X=D+W/2Y=D+H/2A=ATAN(W,H)E=D*H/W/2S=E*COS(A)T=E*SIN(A)GLINE X-S*9,Y-T*9,X+S*9,Y+T*9GCOLOR-#L
GLINE D,M,X-S,Y-T
GLINE D,M,X+S,M
GLINE N,D,X+S,Y+T
GLINE N,D,X-S,D

(Скріншот / пояснення буде розміщено незабаром) Колір фону - чорний, прямокутник - червоний, кола та лінії - білий, а ромб - жовтий.

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