Цікава персона


28

Фон

Особа інтересу - це злочинна драма на CBS, і моє улюблене телешоу, як пізно.

У шоу йдеться про людину на ім'я Гарольд Фінч, програміст-мільярдер, та його партнера Джона Різа, ветерана спецпідрозділу та екс-оперуповноваженого ЦРУ. Цей програміст створив розумний ШІ під назвою "Машина", який пророкує насильницькі злочини до того, як вони відбудуться. Він відстежує будь-яку людину на Землі у будь-який час шляхом моніторингу та аналізу всіх камер спостереження та електронних комунікацій по всьому світу.

Гарольд побудував Машину для уряду Сполучених Штатів для виявлення терористичної діяльності до факту. Він поділяє злочини, які він прогнозує, на списки, залежно від того, чи вони стосуються національної безпеки. Відповідні справи розглядаються урядом, тоді як "нерелевантний" список запрограмований на видалення щодня.

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


Змагання

Напишіть програму, яка не вводить даних, і виводить 30 випадкових телефонних номерів та SSN (див. Нижче).


Вихідні дані

Є два рядки тексту, які будуть надруковані кожного «дня».

  1. Crime predicted: 555-55-5555
  2. Calling: 1-555-555-5555 слідом за новою лінією

Цей процес повинен повторюватися протягом одного «місяця» (30 «днів»).


Номер телефону

Кожен номер телефону повинен містити такі елементи:

  • Повинно бути код країни США (перша цифра).

  • Повинен мати випадковий код області (перший набір з трьох цифр).

  • Перші три цифри самого номера телефону повинні бути555 , а потім 4 випадкові цифри.

Ось пояснений приклад:

1-814-555-3857
|  |   |   |
|  |   |   |
|  |   |   +---------->   random four digits
|  |   |
|  |   +-------------->   the set 555
|  |
|  +------------------>   area code
|
+--------------------->   country code

Номери соціального захисту

Кожен SSN повинен мати 9 випадкових цифр у наступному форматі.

342-98-1613

Приклад

Crime predicted: 234-72-8311
Calling: 1-633-555-0188

Crime predicted: 135-77-0910
Calling: 1-202-555-4719

Crime predicted: 722-90-6653
Calling: 1-466-555-1069

...

Триває ще 27 циклів.


Табло

Щоб ваш рахунок з’явився на дошці, він повинен бути у такому форматі:

# Language, Bytes

Перекреслення не повинно спричинити проблем.


3
Крім того, які дійсні значення для кодів країн / кодів США?
mınxomaτ

2
Я зняв обмеження в часі. Що стосується вашого другого питання, код країни США явно є 1. Що стосується кодів районів, то для цілей цього виклику будуть робити будь-які три цифри. @minxomat
Zach Gates

1
@LuisMendo існує консенсус щодо мета про те, що випадкові означає, якщо вони не визначені повністю
FryAmTheEggman

5
Звичайно, генерування чисел у форматі, який вони насправді передають The Machine у ​​шоу, було б ще складніше ...;)
Мейсон Уілер

Відповіді:


10

CJam, 68 66 64 байт

Дякуємо Деннісу за збереження 2-х байт!

"Crime predicted: --
Calling: 1--555-

"30*{_5<{iAa*:mr}&}/

Копіювання даних не працюватиме, оскільки є кілька недрукованих (один на кожній випадковій групі), ось ось xxdдамп:

00000000: 2243 7269 6d65 2070 7265 6469 6374 6564  "Crime predicted
00000010: 3a20 032d 022d 040a 4361 6c6c 696e 673a  : .-.-..Calling:
00000020: 2031 2d03 2d35 3535 2d04 0a0a 2233 302a   1-.-555-..."30*
00000030: 7b5f 353c 7b69 4161 2a3a 6d72 7d26 7d2f  {_5<{iAa*:mr}&}/

Щоб повернути його назад, вставте його у файл та запустіть xxd -r in_file > out_file. Ви також можете спробувати його в Інтернеті .

Пояснення

"..."30*     Push the string 30 times
{ ... }/     For each character in the string:
_5<{ ... }&    If the ASCII code is < 5:
iAa*             Push an array of as many 10s as the ASCII code
:mr              For each 10, choose a random 0-9 number

Я б ніколи про це не думав, але, схоже, в Pyth на два байти коротше .
FryAmTheEggman

@FryAmTheEggman Я, мабуть, повинен вивчити Pyth, він часто коротший, ніж CJam. Ви можете опублікувати цю відповідь, якщо хочете :)
Андреа Біондо

8

Пітон 2, 129

from random import*
print''.join([c,`randint(0,9)`][c>'w']for c in'Crime predicted: xxx-xx-xxxx\nCalling: 1-xxx-555-xxxx\n\n'*30)

Наївний метод. Бере повідомлення

Crime predicted: xxx-xx-xxxx
Calling: 1-xxx-555-xxxx

і копіює 30 разів. Потім замінює кожного xвипадковою цифрою randint(0,9), зберігаючи всі інші символи однаковими.


6

Python 2, 151 байт

Дякую лорду (і @Dennis) за %0nd: D

from random import randrange as r
for i in[1]*30:print"Crime predicted: %03d-%02d-%04d\nCalling: 1-%03d-555-%04d\n"%(r(1e3),r(100),r(1e4),r(1e3),r(1e4))

6

Perl, 85 байт, завдяки Деннісу та grc!

$_="Crime Predicted: NNN-NN-NNNN 
Calling: 1-NNN-555-NNNN 

"x30;s/N/0|rand 10/eg;print

Оригінальний Perl, 91 92 байт

print"Crime Predicted: NNN-NN-NNNN
Calling: 1-NNN-555-NNNN

"=~s/N/int rand 10/egr for 1..30

1
@Dennis aw, я збирався опублікувати це, поки не побачив цю відповідь. Я мав $_="..."x30;s/_/0|rand 10/eg;printякий зберігає /rпрапор.
grc

Дякую @Dennis та @grc! Чи прийнято включати зміни, запропоновані у коментарях (з атрибуцією звичайно)? Якщо ні, то я скасую свої зміни. Але, у будь-якому випадку, дякую! Я зовсім забув про 0|rand ...трюк та оператора повторення, який я зараз використовую, щоб повторно ляпати головою за те, що пропустив!
type_outcast

2
Так, це звичайно. Якщо ви ще цього не зробили, варто ознайомитись із порадами щодо гольфу в Перлі? . Це чудовий ресурс.
Денніс

5

CJam, 73 71 70 байт

30{"Crime predicted: x-x-x
Calling: 1-x-555-x
"'x/[ZY4Z4]Aaf*::mr.+N}*

Спробуйте його в Інтернеті в інтерпретаторі CJam .

Як це працює

30{     e# Repeat 30 times:

e# Push the following string:

"Crime predicted: x-x-x
Calling: 1-x-555-x
"

'x/     e# Split at x's.
[ZY4Z4] e# Push the array [3 2 4 3 4].
Aaf*    e# For each integer in that array, repeat [10] that many times.
        e# This pushes [[10 10 10][10 10][10 10 10 10][10 10 10][10 10 10 10]].
::mr    e# For each 10, select a random integer between 0 and 9 (inclusive).
.+      e# Vectorized concatenation.
        e# This places the digits at the spots of the x's.
N       e# Push a linefeed.
}*      e#

5

ß, 121 118 112 байт

°/N=1°(30°/M°=ß$-ß$$'Crime predicted: 000-00-0000\nCalling: 1-000-555-0000\n\n'),'',3)µ€(M='0')?ß!G0,9,1):M)°)°)

В основному замінює 0 на випадкове число кожен і називає себе 30 разів.

Тестуйте його за допомогою онлайн-терміналу :

sharps:~$ "<ctrl+v the code here>"                       
Crime predicted: 214-59-4707                              
Calling: 1-850-555-8529                                   

Crime predicted: 722-97-6832                              
Calling: 1-864-555-6965                                   

<and so on...>

Правка (112B): Використання $$(щось на кшталт sprintf) та термінального оператора.


Чи можете ви надати посилання на специфікацію цієї мови?
LegionMammal978

@ LegionMammal978 писати потрібно певний час. Простіше кажучи: чи є кожна функція, яку має AutoIt.
mınxomaτ

4

Піта, 66

V30sX"Crime Predicted: v-w-x
Calling: 1-y-555-z
">5GmjkmOTdj32434T

Використовує Xдля перекладу останніх 5 літер алфавіту ( >5G == 'vwxyz') на 5 випадкових чисел. Використовується той самий РНГ, що і Сок.

Спробуйте його онлайн тут


4

Піта, 62

Реалізація фантастичної відповіді Андреа CJam.

sm?<Cd5jkmOTCdd*30"Crime Predicted: --
Calling: 1--555-

"

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

Спробуйте його онлайн тут


3

CJam, 74 байти

30{[ZY4Z4]{Aa*:mrs}%"Crime predicted: %s-%s-%s
Calling: 1-%s-555-%s

"e%}*

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

Для цього використовується e%оператор CJam , який генерує висновок за допомогою рядка формату printf.

30      Repeat count for whole output.
{       Start loop.
  [ZY4Z4] Build list of random number lengths: [3 2 4 3 4].
  {       Start loop over all random number lengths.
    Aa*     Build list of [10 ... ] with the random number length.
            E.g. for length 3, this will be [10 10 10].
    :mr     Apply the random number operator to the list. This will generate
            a list of random numbers between 0 and 9, with the given length.
    s       Convert it to a string.
  }%      End of loop over random number lengths.
  "..."   Format string, with a %s for each random number.
  e%      Apply printf style formatting.
}*      End of main repeat loop.

Вау, я думав, ти @DavidCarraher з цим аватаром!
Бета-розпад

@BetaDecay Це? codegolf.stackexchange.com/users/3967/david-carraher . Навіть не та сама тварина! :) Кольори майже однакові.
Рето Коради

Якщо поєднати наші підходи, ми можемо дістатись до 70 байт: постійна посилання
Денніс

@Dennis Сміливо йдіть на це. Ви мені багато разів допомагали.
Рето Коради

@RetoKoradi Досить близько;)
бета-розпад


3

JavaScript (ES6), 142

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

Редагувати Додано відсутні текст (я неправильно прочитав виклик)

Випробуйте запуск фрагмента нижче у веб-переглядачі, сумісному з EcmaScript 6

/* TEST redirect console.log */ console.log=x=>O.innerHTML+=x+'\n'

for(i=30;i--;)console.log(`Crime predicted: ${(R=d=>(1e-9+Math.random()+'').substr(2,d))(3)}-${R(2)}-${R(4)}
Calling: 1-${R(3)}-555-${R(4)}
`)
<pre id=O></pre>


Дуже приємне рішення! Однак остання частина номера телефону періодично має менше 4 цифр; те саме з другою та третьою частинами ССН.
ETHproductions

@ETHproductions щури! Повернення до попередньої версії!
edc65

3

Фур’є, 166 142 байти

45~d030(~i67a114a-9a+4a-8a32a112a^^a101ava+5a-6a116a101ava58a32a999roda99roda9999ro10a67a97a108aa-3a+5a-7a58a32a1oda999roda5oooda9999ro10aai^)

Це один з найвищих байтів, але я величезний фанат Фур'є і хотів спробувати свої сили у вирішенні. Не дуже оптимізований.

Розбийте його:

45~d

Встановлює змінну d до 45, ASCII код дефісу. Цей символ надрукований настільки сильно, що він зберігає кілька байтів, щоб оголосити його тут.

030(...)

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

67a114a-9a+4a-8a32a112a^^a101ava+5a-6a116a101ava58a32a

Друк "Злочин передбачив:".

999roda99roda9999ro10a

Роздрукуйте абсолютно випадковий SSN + новий рядок.

67a97a108aa-3a+5a-7a58a32a

Роздрукуйте "Дзвінки:".

1oda999roda5oooda9999ro

Роздрукуйте номер телефону, який відповідає вказівкам: 1-xxx-555-xxxx

10aa

Роздрукуйте два нових рядки, щоб почати все спочатку.


1
Гей, можливо, вам буде цікаво, що на веб-сайті fourier.tryitonline.net (а також labs.turbo.run/beta/fourier ) є онлайн-перекладач
Beta Decay

2

Pyth, 67 байт

V30s.ic"Crime predicted: |-|-|
Calling: 1-|-555-|
"\|mjkmOTdj32434T

Нові рядки є важливими і включаються в число байтів. Спробуйте це тут .

                                Implicit: T=10, k=''
       "..."                    The output string
      c     \|                  Split on '|' placeholders
                     j32434T    32434 to base ten -> [3,2,4,3,4]
              m                 Map for d in the above:
                 mOTd             Generate d random numbers from 0-9
               jk                 Concatenate into string (join on empty string)
    .i                          Interleave segments of output string with random strings
   s                            Concatenate and output
V30                             Perform the above 30 times

2

Haskell, 150 байт

import System.Random
p '#'=putChar=<<randomRIO('0','9')
p x=putChar x
main=mapM p$[1..30]>>"Crime predicted: ###-##-####\nCalling: 1-###-555-####\n\n"

2

JavaScript (ES6), 130 123 байт

Зробивши крок далі minxomat, я замінив 0s числом 0s, яке було б там. Код використовує ці числа, щоб витягнути правильну кількість цифр Math.random(), заощадивши при цьому хороший біт байтів.

for(i=30;i--;)console.log(`Crime predicted: 3-2-4
Calling: 1-3-555-4
`.replace(/[2-4]/g,x=>`${Math.random()}`.substr(2,x)))

Спробуй:

// redirecting console.log() for this demonstration
console.log=x=>O.innerHTML+=x+'\n';
O.innerHTML='';

for(i=30;i--;)console.log(`Crime predicted: 3-2-4
Calling: 1-3-555-4
`.replace(/[2-4]/g,x=>`${Math.random()}`.substr(2,x)))
<pre id=O>

Як завжди, пропозиції вітаються!


2

Java, 246 байт

import java.util.*;class C{static{Random r=new Random();for(int i=0;i++<30;)System.out.printf("Crime predicted: %s-%s-%s\nCalling: 1-%s-555-%s\n\n",r.nextInt(900)+100,r.nextInt(90)+10,r.nextInt(900)+100,r.nextInt(900)+100,r.nextInt(9000)+1000);}}

З розривами рядків:

import java.util.*;
class C{
    static{
       Random r = new Random();
       for(int i = 0; i++<30;)
           System.out.printf("Crime predicted: %s-%s-%s\nCalling: 1-%s-555-%s\n\n",r.nextInt(900)+100,r.nextInt(90)+10,r.nextInt(900)+100,r.nextInt(900)+100,r.nextInt(9000)+1000);
    }
}

Це початок. Замість отримання випадкових цифр я використав випадкові 3-значні або 4-значні числа.


2

R, 151 146 або 144 байт

Код

for(l in 1:30)cat(sep="","Crime predicted: ",(i=floor(runif(16,,10)))[1:3],"-",i[4:5],"-",i[6:9],"\nCalling: 1-",i[10:12],"-555-",i[13:16],"\n\n")

Перевірте це в Інтернеті .

Безумовно

for(l in 1:30) {
  i=floor(runif(16,,10))
  cat(sep="","Crime predicted: ",
      i[1:3],"-",i[4:5],"-",i[6:9],
      "\nCalling: 1-",i[10:12],"-555-",
      i[13:16],"\n\n")
  }

Я думаю, що є багато можливостей для вдосконалення, але мені непогано возитися зі струнами в Р.

Редагувати 1: змінив runif(16,max=10)на runif(16,,10).

Я зробив ще один код ( 147 144 байти), sprintfале не думаю, що це дуже схожий на R код.

for(l in 1:30)cat(do.call(sprintf,as.list(c('Crime predicted: %s%s%s-%s%s-%s%s%s%s\nCalling: 1-%s%s%s-555-%s%s%s%s\n\n',floor(runif(16,,10))))))

Ще один підхід (149 байт):

for(p in 1:30)cat(sep="",replace(s<-strsplit("Crime predicted: '''-''-''''\nCalling: 1-'''-555-''''\n\n","")[[1]],which(s<"-"),floor(runif(16,,10))))

2

PHP , 144 143 байт

<?=preg_replace_callback('/x/',function($x){return chr(rand(48,57));},str_repeat("Crime predicted: xxx-xx-xxxx
Calling: 1-xxx-555-xxxx

",30));


2

C #, 280 263 246 байт

Гольф:

using System;class C{static string G(){var r=new Random();var s="";n h=x=>r.Next(x).ToString("D"+x);for(int i=0;i++<30;){s+="Crime predicted: "+h(3)+"-"+h(2)+"-"+h(4)+"\nCalling: 1-"+h(3)+"-555-"+h(4)+"\n\n";}return s;}delegate string n(int x);}

Відступ:

using System;
class C
{
    static string G()
    {
        Random r = new Random();
        string s = "";
        Func<int, string> f = x => r.Next((int)Math.Pow(10, x)).ToString("D" + x);            

        for (int i = 0; i++ < 30;)
        {
            s += "Crime predicted: " + f(3) + "-" + f(2) + "-" + f(4) + "\nCalling: 1-" + f(3) + "-555-" + f(4) + "\n\n";
        }
        return s;
    }
}

Нове про Codegolf, поради вітаються!


Ласкаво просимо до головоломки програмування та коду для гольфу! Я не добре знайомі з C #, але так як він ґрунтується на .NET , як PowerShell, я думаю , що h(999)буде генерувати число від 000до 998включно, так що значить це не зовсім вдарив дух специфікації. Я зіткнувся з тим же питанням .
AdmBorkBork

Ти маєш рацію, я зараз це виправлю!
антонімімери

Після виправлення пішов до 280 байт, потім подумав про те, щоб виконати форматування в оброблювачі делегатів, зменшивши його до 263 байт.
антонімімери

1

Hassium , 230 байт

func main(){foreach(x in range(1,31){println("Crime predicted: "+r(3)+"-"+r(2)+"-"+r(4));println("Calling: 1-"+r(3)+"-555-"+r(4)+"\n");}}
func r(l){z=new Random();a="";foreach(y in range(1,l))a+=z.next(0,10).toString();return a;}

Розширено:

func main () {
        foreach (x in range(1, 31) {
                println("Crime predicted: " + r(3) + "-" + r(2) + "-" + r(4));
                println("Calling: 1-" + r(3) + "-555-" + r(4) + "\n");
        }
}
func r (l) {
        z = new Random();
        a = "";
        foreach (y in range(1, l))
                a += z.next(0, 10).toString();
        return a;
}

1

Рубі, 98 символів

30.times{puts"Crime Predicted: DEF-GH-IJKL
Calling: 1-MNO-555-QRST

".tr"D-OQ-T",rand.to_s[2..-1]}

Проба зразка:

bash-4.3$ ruby -e '30.times{puts"Crime Predicted: DEF-GH-IJKL\nCalling: 1-MNO-555-QRST\n\n".tr"D-OQ-T",rand.to_s[2..-1]}' | head
Crime Predicted: 867-29-2637
Calling: 1-278-555-5424

Crime Predicted: 913-31-6306
Calling: 1-744-555-8188

Crime Predicted: 868-36-4612
Calling: 1-926-555-3576

Crime Predicted: 988-06-1643

1

JavaScript, 146 141

console.log(Array(30).join("Crime predicted: 3-2-3\nCalling: 1-3-555-4\n\n").replace(/[2-4]/g,function(m){return(m+Math.random()).substr(3,m)}))

вже є відповідь тією ж мовою з меншими символами, ніж ваша.
Jakuje

@Jakuje інша відповідь використовує ES6, який ще не доступний
Peleg,

Тоді, мабуть, добре. Згадати це у своїй відповіді було б добре.
Jakuje

1
@Jakuje Люди можуть подати все, що хочуть! Йдеться стільки про виклик, скільки про побиття інших.
ErikE

1

до-ES6 Javascript, 128

for(i=30;i--;)console.log('Crime predicted: x-x-x\nCalling: x-555-x\n'.replace(/x/g, function(){return 1e3*Math.random()|0}))

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


1
Кілька помилок: 1) випадкові частини не мають правильної довжини (і навіть не намагаються) 2) відсутні "1-".
edc65


1

Джулія, 120 байт

R(n)=lpad(rand(0:10^n-1),n,0)
for i=1:30 println("Crime Predicted: "R(3)"-"R(2)"-"R(4)"\nCalling: 1-"R(3)"-555-"R(4))end

Безголівки:

# Define a function for returning a random number with a
# specified number of digits
function R(n::Int)
    lpad(rand(0:10^n-1), n, 0)
end

# Print 30 times
for i = 1:30
    println("Crime Predicted: " R(3) "-" R(2) "-" R(4)
            "\nCalling: 1-" R(3) "-555-" R(4))
end


1

PowerShell, 120 108 103 102 байт

0..29|%{("Crime predicted: XXX-XX-XXXX`nCalling: 1-XXX-555-XXX"-split"X"|%{$_+(Random 10)})-join'';""}

Скоротіть ще декілька байтів, встановивши розділений цикл, а натомість це код коду, який виводить до масиву @(..)та повторно приєднується.

Усунуто за @допомогою запам'ятовування, що (...)позначає блок коду, виконаний раніше -join''.

Це виключає необхідність присвоювати $aзмінну. Також зауважив, що завдяки тому, як -splitфункціонує функція, попередній код виплював занадто багато цифр для номера телефону, тому отримав безкоштовне збереження байтів, зменшившись до 1-XXX-555-XXX. Це компенсувало помилкове, Random 9що насправді вибирає випадкове 0-8, тому нам замість цього потрібно вказатиRandom 10.

Sooo dang близький до двозначних, але я не впевнений, де можна відіграти ще чотири 3 байти ...


Попередній, 108

0..29|%{$a="";"Crime predicted: XXX-XX-XXXX`nCalling: 1-XXX-555-XXXX"-split"x"|%{$a+="$_$(Random 9)"};$a;""}

Скоротивши код на пару байтів, замість того, щоб розділити рядок на Xs, потім повторно провести цикл через результуючий масив рядків і об'єднати кожен запис Randomцифрою, щоб побудувати наш остаточний рядок виводу $a. Зауважте, що ми не могли зробити щось подібне, "string".replace("x",$(Random 9))тому що тоді вам Randomдзвонять лише один раз, тому вам, наприклад, потрібен 1-222-555-2222номер телефону.


Попередня, 120

0..29|%{"Crime predicted: "+(Random 1e9).ToString("000-00-0000");"Calling: "+(Random 1e7).ToString("1-000-555-0000");""}

Дуже небезпечна конкуренція для багатослівної мови, завдяки великим специфікаціям виводу (тобто 000-00-0001трактується як дійсний SSN) та дійсно надійному .ToString()алгоритму форматування, який використовує PowerShell. PowerShell також виводить \r\nпісля кожного виводу рядка, тому вимога до нового рядка між ітераціями є простою "".

Зауважте, що для цього використовується мається на увазі Get-перед Random, тому на деяких платформах / реалізаціях це може бути дуже повільним .


0

Befunge-98, 170

Я думаю, що це все ще можна трохи покатати. Але принаймні я обіграв C #. Тестували на сайті befungius.aurlien.net .

a3*>  82*v>":detciderp emirC">:#,_$...'-,..'-,....av
>1 -:!#;_v^;v,,,"-555-"...,,,,,,,,,,,"Calling: 1-",<
\  ^v< <2?1v,
+    ^;^3<;<,
^ <0?3vv....<
^;^6<;<>a,v
   v_@#:-1<

0

Python 2, 151 150 байт

from random import*
p="Crime predicted: xxx-xx-xxxx\nCalling: 1-xxx-555-xxxx\n\n"*30
while'x'in p:p=p.replace('x',str(randint(0,9)),1)
print p.strip()

Настільки гольф, як я міг отримати цей метод.

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