Шукайте текст у префіксі та перелічіть усі його суфікси у тексті


17

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

"Префікс" тут означає СТАРТ слова, де початок слова визначається як через пробіл, так і з першого символу вхідного тексту (для першого слова). "Префікс" посеред слова ігнорується.

Наприклад, якщо ваш вхідний префікс "arm", а вхідний текст - "Армія Дамблдора була повністю озброєна для майбутнього Армагеддону", тоді вихідний список містить (y, ed, agedon).

Випробування

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

Видалення дублікатів необов’язково.


Input prefix: "1"

Input text:

"He1in aosl 1ll j21j 1lj2j 1lj2 1ll l1j2i"

Output: (ll, lj2j, lj2) - in any permutation

Input prefix: "frac"

Input text: 

"fracking fractals fracted fractional currency fractionally fractioned into fractious fractostratic fractures causing quite a fracas"

Output: (king, tals, ted, tional, tionally, tioned, tious, tostratic, tures, as)

Input prefix: "href="https://www.astrotheme.com/astrology/"

Input text: 

"(div style="padding: 0; background: url('https://www.astrotheme.com/images/site/arrondi_450_hd.png') no-repeat; text-align: left; font-weight: bold; width: 450px; height: 36px")
  (div class="titreFiche" style="padding: 5px 0 0 6px")(a href="https://www.astrotheme.com/astrology/Nolwenn_Leroy" title="Nolwenn Leroy: Astrology, birth chart, horoscope and astrological portrait")Nolwenn Leroy(br /)
(/div)
  (div style="text-align: right; border-left: 1px solid #b2c1e2; border-right: 1px solid #b2c1e2; width: 446px; padding: 1px 1px 0; background: #eff8ff")
    (table style="width: 100%")(tr)(td style="width: 220px")
(div style="padding: 0; background: url('https://www.astrotheme.com/images/site/arrondi_450_hd.png') no-repeat; text-align: left; font-weight: bold; width: 450px; height: 36px")
  (div class="titreFiche" style="padding: 5px 0 0 6px")(a href="https://www.astrotheme.com/astrology/Kim_Kardashian" title="Kim Kardashian: Astrology, birth chart, horoscope and astrological portrait")Kim Kardashian(br /)(span style="font-weight: normal; font-size: 11px")Display her detailed horoscope and birth chart(/span)(/a)(/div)
(/div)
(div style="padding: 0; background: url('https://www.astrotheme.com/images/site/arrondi_450_hd.png') no-repeat; text-align: left; font-weight: bold; width: 450px; height: 36px")
  (div class="titreFiche" style="padding: 5px 0 0 6px")(a href="https://www.astrotheme.com/astrology/Julia_Roberts" title="Julia Roberts: Astrology, birth chart, horoscope and astrological portrait")Julia Roberts(br /)(span style="font-weight: normal; font-size: 11px")Display her detailed horoscope and birth chart(/span)(/a)(/div)
    (td id="cfcXkw9aycuj35h" style="text-align: right")
  (/div)"

Output: (Nolwenn_Leroy", Kim_Kardashian", Julia_Roberts")

Переможець

Це , тому виграє найменше байтів. :)

Можна приймати дані будь-яким способом, який працює, доки ваш код може вирішити довільні проблеми, як тестові випадки.


2
Щоб було зрозуміло, префікс повинен бути на початку слова? Якби у другому тестовому випадку в ньому було слово "дифракція", чи змінило б це вихід?
sundar

2
Як може https://www.astrotheme.com/astrology/бути префікс, коли йому передує href="?
Ніл

1
Чи може суфікс бути порожнім?
користувач202729

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

1
-1 до теперішнього часу, щоб дозволити поділ на інші пробіли. Було б сенс, щоб виклик був таким спочатку, але змінившись зараз, це розділить відповіді на ті, які роблять дві різні речі. І це не схоже на випадки, коли деякі мови не можуть впоратися, наприклад. 64-бітні числа чи щось таке, тут це просто означає реалізацію трохи (можливо) більш складної відповідності, тому має сенс виправляти відповіді з помилковими припущеннями і, можливо, додавати тестовий випадок, щоб перевірити це також.
sundar

Відповіді:


5

R , 63 байти

function(s,p,z=el(strsplit(s,' ')))sub(p,'',z[startsWith(z,p)])

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

На жаль, позитивна реалізація, на жаль, на 5 байт довше завдяки величезній regmatches/gregexprкомбінації:

function(s,p)regmatches(s,gregexpr(paste0('(?<=',p,')[^ ]*'),s,,T))

2
Наївний суб (grep ()) трохи кращий, ніж у 66, але все ще не зазіхає на startWith (). Тут я не бачу багато можливостей для вдосконалення без зміни підходу. Спробуйте в Інтернеті!
Кримінально-

4

Желе , 12 байт

Ḳfṛ"€¥Ḋ€ṫ€L}

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


Витвір мистецтва. : ') Буде використовувати це для розбору HTML у списки, велике спасибі. :)
DrQuarius


Здається, для мене це нормально . Не знаєте чому?
DrQuarius

1
@DrQuarius Це відомий жарт, і користувач202729 продовжив його.
Ерік Аутгольфер

4

Japt , 9 байт

8 байт, якщо ми можемо взяти введення як масив слів.

¸kbV msVl
¸         // Shorthand for `qS`, split into words.
 kbV      // Filter the words, selecting only those that start with the prefix.
     msVl // For each remaining word, remove prefix length chars from the start.

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


Дуже приємно, але, здається, не працює для останнього тестового випадку . Можливо, це пояснюється лапками всередині рядка? чи нові лінії?
DrQuarius

@DrQuarius Ваш останній тестовий випадок несправний, чи не так? Усі рядки, які ви шукаєте, знаходяться посередині слів (оточені url('')), жодна з них не знаходиться на початку.
Ніт


4

C (gcc) , 113 109 106 105 байт

-4 байти завдяки @LambdaBeta!
-3 байти завдяки @WindmillCookies!

i;f(char*s,char*t){for(i=strlen(s);*t;t++)if(!strncmp(t,s,i))for(t+=i,puts("");*t^32&&*t;)putchar(*t++);}

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


1
Ви можете зберегти 4 байти, видаливши обидва ^0. Просто ;*t;і&&*t;
LambdaBeta

@LambdaBeta дякую! Я пропустив це.
betseg

1
Мені вдалося зменшити її до 107, використовуючи іншу стратегію, вибачте :)
LambdaBeta

@LambdaBeta Я насправді думав про цей метод, але не думав, що він буде коротшим за рішення, яке я опублікував. Гарна відповідь, схвалений.
betseg

1
використовуються замість путчара, зараз це 107, виводиться на різних лініях: tio.run/…
Cookie Windmill

3

Japt , 16 12 байт

Порт Арнальда відповідь

-4 байти від @Shaggy

iS qS+V Å®¸g

iS                  Insert S value (S = " ") at beginning of first input (Implicit)
   q                split using
    S+V             S + Second input
        Å           slice 1
         ®          map
          ¸         split using S
           g        get first position

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



Напевно, слід згадати, що це рішення рішення Арнальда. (Якщо, звичайно, це не було отримано самостійно)
Shaggy

@Shaggy Чесно кажучи, я не помітив, що це однакова відповідь, все одно я дам йому кредит. вибачте
Luis felipe De jesus Munoz

Є 9-байтне рішення, якщо ви хочете спробувати.
Кудлатий

@Shaggy ви мали в виду це , або ж у вас є що - то інше на увазі?
Ніт

3

05AB1E , 11 байт

#ʒηså}εsgF¦

Спробуйте в Інтернеті! ( тут демонстрація багаторядкових рядків)

Як це працює?

# ʒηså} εsgF¦ Повна програма.
# Розбийте перший вхід на пробіли.
 ʒ} Фільтр слів за ...
  ηså ... "Чи відбувається другий вхід у префіксі слова?"
      ε І для кожного дійсного слова
       sg Отримати довжину другого входу.
         F¦ І скиньте перший символ слова стільки разів.

:) Дуже приємно, дякую за багатолінійну демонстрацію! Я думаю, що це спричиняло проблеми для інших програм.
DrQuarius

3

Стакс , 8 байт

·B¬╤²*6&

Запустіть і налагоджуйте його

Пояснення:

j{x:[fmx|- Full program, implicit input: On stack in order, 1st input in X register
j          Split string on spaces
 {   f     Filter:
  x:[        Is X a prefix?
      m    Map passing elements:
       x|-   Remove all characters in X the first time they occur in the element
             Implicit output

Я також міг би використовувати x%t(довжина X, обрізка зліва), яка однаково довга, але містить 9 байтів .


Гарний. :) Я думаю, що це може бути переможцем. Більшість претендентів на найнижчий байт не змогли проаналізувати третій тестовий випадок. :)
DrQuarius

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

3

Сітківка , 31 байт

L`(?<=^\2¶(.|¶)*([^ ¶]+))[^ ¶]+

Спробуйте в Інтернеті! Перший рядок повинен бути бажаним префіксом, решта - вхідним текстом. Не видаляє дублікати. Було б 25 байт, якби будь-який пробіл був дійсним сепаратором. Пояснення: Ми хочемо перерахувати суфікси дійсних префіксів. [^ ¶]+Відповідає сам суфікс. Префікс regexp - це вигляд, що забезпечує, що префікс суфікса є вхідним префіксом. Оскільки огляд оцінюється праворуч-ліворуч, це починається зі співставлення префікса (використовуючи той самий візерунок, але всередині ()s, щоб зафіксувати його), а потім будь-яких символів, перш ніж остаточно зіставити префікс у власному рядку на початку введення.


Пробіл, що означає пробіли та / або розриви ліній? Я думаю, що це вірне рішення, якщо так, але якщо я був справедливим до всіх, я залишу проблему, як заявлено.
DrQuarius

@DrQuarius Ні, будь-який білий простір включає вкладки, формати та навіть еліпси .
Ніл

Ретіна була першою мовою, яка прийшла в голову, коли я побачив публікацію (хоча я ще не знаю мови). Я думав, що це буде коротше, хоча. Чи можу я вам заважати за пояснення? Наприклад, наприклад. Документи кажуть , що це символ нового рядка, але я не можу зрозуміти, для чого тут так багато.
sundar

@sundar Вибачте, що я трохи поспішав. Перший забезпечує, що весь перший рядок узгоджується з префіксом. Друга потрібна, оскільки невідомо, скільки є проміжних ліній. Останні два роботи працюють однаково - класи, що заперечують символи, зазвичай містять нові рядки, але нам цього не потрібно.
Ніл

Ніяких проблем, дякую, що додали його. "Зазвичай включають нові рядки, але ми цього не хочемо" <- Якщо я правильно розумію, ми хочемо цього робити тут. OP суворо вказує, що розбіжниками вважаються лише пробіли, починаючи з префіксів, а суфікси закінчуються пробілами. Так для напр. "dif \ nfractional" не має відповідати "frac", оскільки префікс з'являється після нового рядка, а не пробілу. Аналогічно "перелом \ nзв'язаний" повинен повернути суфікс "ture- \ nrelated". Яка гарна новина тут, я думаю, адже ви можете видалити хоча б одну , можливо, і більше.
sundar

3

Брахілог , 24 21 байт

tṇ₁W&h;Wz{tR&h;.cR∧}ˢ

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

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

Введення - це масив з префіксом як перший елемент, а текст - як другий елемент.

tṇ₁W                    % Split the text at spaces, call that W
    &h;Wz               % Zip the prefix with each word, to give a list of pairs
         {         }ˢ   % Select the outputs where this predicate succeeds:
          tR            % Call the current word R
            &h;.c       % The prefix and the output concatenated
                 R      % should be R
                  ∧     % (No more constraints on output)

2

Формула IBM / Lotus Notes, 54 байти

c:=@Explode(b);@Trim(@If(@Begins(c;a);@Right(c;a);""))

Приймає його з двох полів з ім'ям aта b. Працює тому, що Формула буде рекурсивно застосовувати функції до списку без необхідності @Forциклу.

TIO не доступний, ось ось знімок екрана:

enter image description here


2

APL (Dyalog Unicode) , 23 байти SBCS

Повна програма. Підказки до тексту та префіксу від stdin. Друкує список до stdout.

(5'(\w+)\b',⎕)⎕S'\1'⊢⎕

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

 підказка (для тексту)

 врожайність, що (відокремлюється '\1'від )

()⎕S'\1' PCRE Пошук та повернення списку групи 1 для захоплення з наступного регулярного вираження:

 підказка (для префікса)

'(\w+)\b', додайте цей рядок (група символів слова, за якою йде межа слова)

5⌽ обертати перші 5 символів до кінця; '\bPREFIX(\w+)'


2

C (стук) , 107 байт

i;f(s,t,_)char*s,*t,*_;{i=strlen(s);_=strtok(t," ");while((strncmp(_,s,i)||puts(_+i))&&(_=strtok(0," ")));}

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

Опис:

i;f(s,t,_)char*s,*t,*_;{   // F takes s and t and uses i (int) and s,t,u (char*)
    i=strlen(s);           // save strlen(s) in i
    _=strtok(t," ");       // set _ to the first word of t
    while(                 // while loop
        (strncmp(_,s,i)||  // short-circuited if (if _ doesn't match s to i places)
         puts(_+i))        // print _ starting at the i'th character
        &&                 // the previous expression always returns true
        (_=strtok(0," "))) // set _ to the next word of t
    ;                      // do nothing in the actual loop
}

Доводиться ляскати, оскільки gcc segfaults без #include <string.h>проблем strtok.



2

MATL, 17 байт

Yb94ih'(.*)'h6&XX

Спробуйте це на MATL Online

Як?

Yb - Розбийте вхід на пробіли, розмістіть результати в масиві комірок

94- ASCII код ^символу

ih - Отримайте вхід (скажіть "frac"), об'єднайте "^" і вхід

'(.*)'h- Натисніть на рядок '(.*)'у стек, з'єднайте '^ frac' і '(. *)'. Отже, тепер у нас є '^frac(.*)регулярний вираз, який відповідає "frac" на початку рядка і фіксує все, що настає після.

6&XX- Запустіть відповідність регулярного виразів із 6&зазначенням режиму «Токни», тобто збігаються групи захоплення повертаються замість усієї відповідності.

Неналежне виведення результатів.


Так ось що і 'Tokens'робить; добре знати!
Луїс Мендо

1
Ха-ха. Я навіть не мав уявлення, зрозумів це шляхом спроби та помилки для цієї відповіді.
sundar


2

PowerShell 3.0, 60 62 59 байт

param($p,$s)-split$s|%{if($_-cmatch"^$p(.*)"){$Matches[1]}}

Втрачено кілька байт, що пригнічують вихід cmatch. Мав прискіпливе рішення, яке набуло деяких шляхом навмисного спричинення дублікатів. Але він також кинув червоні лінії, якщо він не збігався з першим, але це не добре зараз, коли я думаю про це. +2 байти, щоб виправити це.


Рішення з 60 байтами повертає подвійну відповідь у деяких випадках king, tals, ted, tional, tional, tionally, tioned, tioned, tious, tostratic, tures,tures,tures, tures, asі показує помилку індексу на He1inприкладі. Powershell 5.1, 6.0.2. Розв’язання з 62 байтами - це нормально.
маззи

1
@mazzy Я знав це, я просто зловживав бітом "Дублікатів дозволено", щоб він повертав ще більше дублікатів, коли він стикався з невідповідним матчем і кидав червоний колір на першу ітерацію без збігу.
Веська




1

Лушпиння , 11 байт

Досить просто порт відповіді Haskell :

m↓L⁰foΠz=⁰w

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

Пояснення

m↓L⁰f(Πz=⁰)w  -- prefix is explicit argument ⁰, the other one implicit. eg: ⁰ = "ab" and implicit "abc def"
           w  -- words: ["abc","def"]
    f(    )   -- filter by (example w/ "abc"
       z=⁰    -- | zip ⁰ and element with equality: [1,1]
      Π       -- | product: 1
              -- : ["abc"]
m             -- map the following
 ↓            -- | drop n elements
  L⁰          -- | n being the length of ⁰ (2)
              -- : ["c"]

1

Желе ,  11  9 байт

Ḳœṣ€ḢÐḟj€

Дьядічне посилання, що приймає текст (список символів) зліва та префікс (список символів) праворуч, що дає список списків символів (результуючі суфікси).

Спробуйте в Інтернеті! (Нижній колонтитул поєднується з пробілами, щоб уникнути неявного розбиття програми)
Note: I added three edge cases to the string in the OP - unfrackled and nofracfracheremate to the beginning, which should not output and fracfracit to the end which should output fracit.

Як?

Ḳœṣ€ḢÐḟj€ - Link: text, prefix                        e.g. "fracfracit unfracked", "frac"
Ḳ         - split (text) at spaces -> list of words        ["fracfracit", "unfracked"]
   €      - for each (word):
 œṣ       -   split around sublists equal to (prefix)       ["","","it"]  ["un","ked"]
     Ðḟ   - filter discard items for which this is truthy:
    Ḣ     -   head
          -   -- Crucially this modifies the list:             ["","it"]       ["ked"]
          -   -- and yields the popped item:                 ""            "un"
          -   -- and only non-empty lists are truthy:       kept          discarded
          -            ...so we end up with the list:      [["","it"]]
        € - for each (remaining list of lists of characters):
       j  -   join with the prefix                          "fracit"                                             
          -                                                ["fracit"]

попередній 11 байт:

Ḳs€L}Ḣ⁼¥ƇẎ€

Також діадичне посилання, як зазначено вище.

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


1

Perl 5 з -asE, 23 22 21 байт (?)

say/^$b(.*)/ for@F

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

Можна запускати як однолінійний командний рядок як perl -asE 'say/^$b(.*)/ for@F' -- -b=frac -, або з ім'ям файлу замість останнього -.
Або скажіть із файлу сценаріюperl -as -M5.010 script.pl -b=frac - (спасибі @Brad Gilbert b2gills за посилання TIO, що демонструє це).

Сам код становить 18 байт, я додав 3 байти для -b=параметра, який присвоює його значення (введення префікса) змінній, названій $bу коді. Це було винятком зі звичайного консенсусу щодо "прапорів не рахуються".

-aрозбиває кожен рядок введення на пробіли та розміщує результат у масиві @F. -s- це ярлик способу призначення аргументу командного рядка як змінної шляхом надання імені в командному рядку. Тут аргумент -b=frac, який розміщує префікс "frac" у змінній $b.

/^$b(.*)/ - Matches the value of $b at the beginning of the string. .* is whatever comes after that, until the end of the word, and the surrounding parantheses capture this value. The captured values are automatically returned, to be printed by say. Iterating through space-separated words with for @F means we don't have to check for initial or final spaces.



1

Perl 6, 30 bytes

{$^t.comb: /[^|' ']$^p <(\S+/}

Test it

Expanded:

{  # bare block lambda with placeholder params $p, $t

  $^t.comb:    # find all the substrings that match the following
  /
    [ ^ | ' ' ] # beginning of string or space
    $^p        # match the prefix
    <(         # don't include anything before this
    \S+        # one or more non-space characters (suffix)
  /
}

@sundar fixed​ ​
Brad Gilbert b2gills

You seem to have an extra space between 'p' and '<' btw.
sundar - Reinstate Monica

@sundar The space between p and <( is necessary as otherwise it may be seen as $v<…> which is short for $v{qw '…'}.
Brad Gilbert b2gills

1
Seems to work without it though, at least in this case.
sundar - Reinstate Monica

1
@sundar Technically it just warns, but I don't like writing code that warns when it is only one byte different than code that doesn't warn.
Brad Gilbert b2gills

1

Java 10, 94 bytes

p->s->{for(var w:s.split(" "))if(w.startsWith(p))System.out.println(w.substring(p.length()));}

Try it online here.

Ungolfed:

p -> s -> { // lambda taking prefix and text as Strings in currying syntax
    for(var w:s.split(" ")) // split the String into words (delimited by a space); for each word ...
        if(w.startsWith(p)) //  ... test whether p is a prefix ...
            System.out.println(w.substring(p.length())); // ... if it is, output the suffix
}

1

Small Basic, 242 bytes

A Script that takes no input and outputs to the TextWindow Object

c=TextWindow.Read()
s=TextWindow.Read()
i=1
While i>0
i=Text.GetIndexOf(s," ")
w=Text.GetSubText(s,1,i)
If Text.StartsWith(w,c)Then
TextWindow.WriteLine(Text.GetSubTextToEnd(w,Text.GetLength(c)+1))
EndIf
s=Text.GetSubTextToEnd(s,i+1)
EndWhile

Try it at SmallBasic.com! Requires IE/Silverlight



1

Brachylog, 12 bytes

hṇ₁∋R&t;.cR∧

Try it online!

Takes input as [text, prefix] through the input variable, and generates each word through the output variable. This was originally sundar's answer, which I started trying to golf after reading that it "could have been a few bytes shorter if there was variable sharing with inline predicates", which is possible now. Turns out that generator output saves even more bytes.

    R           R
   ∋            is an element of
h               the first element of
                the input
 ṇ₁             split on spaces,
     &          and the input
      t         's last element
         c      concatenated
       ;        with
        .       the output variable
          R     is R
           ∧    (which is not necessarily equal to the output).

My first two attempts at golfing it down, using fairly new features of the language:

With the global variables that had been hoped for: hA⁰&tṇ₁{∧A⁰;.c?∧}ˢ (18 bytes)

With the apply-to-head metapredicate: ṇ₁ᵗz{tR&h;.cR∧}ˢ (16 bytes)

And my original solution:

Brachylog, 15 bytes

ṇ₁ʰlᵗ↙X⟨∋a₀⟩b↙X

Try it online!

Same I/O. This is essentially a generator for words with the prefix, ṇ₁ʰ⟨∋a₀⟩, modified to remove the prefix.

                   The input variable
  ʰ                with its first element replaced with itself
ṇ₁                 split on spaces
    ᵗ              has a last element
   l               the length of which
     ↙X            is X,
       ⟨   ⟩       and the output from the sandwich
       ⟨∋  ⟩       is an element of the first element of the modified input
       ⟨ a₀⟩       and has the last element of the input as a prefix.
                   The output variable
       ⟨   ⟩       is the output from the sandwich
            b      with a number of characters removed from the beginning
             ↙X    equal to X.

A very different predicate with the same byte count:

Brachylog, 15 bytes

hṇ₁∋~c₂Xh~t?∧Xt

Try it online!

Same I/O.

   ∋               An element of
h                  the first element of
                   the input variable
 ṇ₁                split on spaces
    ~c             can be un-concatenated
      ₂            into a list of two strings
       X           which we'll call X.
        h          Its first element
         ~t        is the last element of
           ?       the input variable,
            ∧      and
             Xt    its last element is
                   the output variable.


0

Pyth, 21 20 18 17 16 bytes

AQVcH)IqxNG0:NG"

Try it online!

-1 by using V instead of FN because V implicitly sets N

-2 after some further reading about string slicing options

-1 using x to check for the presence of the substring at index 0

-1 using replace with "" for getting the end of the string

I'm sure this could use some serious golfing but as a Pyth beginner, just getting it to work was a bonus.

How does it work?

assign('Q',eval_input())
assign('[G,H]',Q)
for N in num_to_range(chop(H)):
    if equal(index(N,G),0):
        imp_print(at_slice(N,G,""))

0

Excel VBA, 86 bytes

Takes input as prefix in [A1] and values in [B1] and outputs to the console.

For each w in Split([B1]):?IIf(Left(w,[Len(A1)])=[A1],Mid(w,[Len(A1)+1])+" ","");:Next
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.