Стаття Спінінг за допомогою Spintax
Спінінг статей - це техніка оптимізації пошукової системи, за допомогою якої оптимізатори пошукових систем розміщують унікальну версію відповідного вмісту у каталогах статей, веб-сайтах 2.0 чи інших джерелах для зворотних посилань.
Автори веб-сайтів періодично використовуються на власних сайтах, але зазвичай їх уникають, оскільки якість вмісту, що відкручується, буде нижчою, ніж вміст, написаний від руки. Спінінг працює за допомогою переписування існуючих статей або частин статей та заміни конкретних слів, фраз, пропозицій або навіть цілих абзаців будь-якою кількістю альтернативних версій, щоб забезпечити дещо інший варіант з кожним віджиманням.
Цей процес можна повністю автоматизувати або переписати вручну. Вашим завданням сьогодні буде створити програму або функцію, що інтерпретує рядок, що містить Spintax , синтаксис, за допомогою якого програма читатиме різні наявні варіанти. Нижче наведено приклад рядка, який використовує Spintax:
{Hello|Hi there|Bonjour}, user! {What's up?|How are you?|Feeling alright?|I caught a fish!}
Як бачимо, секції рядка, які слід "закрутити", укладені у фігурні дужки, де окремі параметри розділені |символом. Ось кілька прикладів пропозицій, які це може дати.
Hi there, user! What's up?
Hello, user! How are you?
Bonjour, user! Feeling alright?
Hello, user! What's up?
Hi there, user! I caught a fish!
Ваша робота
Якщо ви вирішите прийняти це, ваша місія полягає в тому, щоб створити програму або функцію, яка займає вхідний рядок, який може містити або не містить Spintax , а потім надрукувати 5 версій рядка, випадково вибравши один з варіантів з кожного блоку параметрів. Можна зробити кілька припущень:
- Вам не потрібно буде обробляти вкладений Spintax (
{This|is {an|one}|example}). - В
|,{і}персонаж не будуть відбуватися в іншому місці, крім всередині блоку Spintax. - Вам не потрібно перевіряти, чи відрізняються 5 вихідних пропозицій, якщо код вибирає параметри, використовуючи функцію випадкового числення вашої мови.
- Ви можете припустити, що вхід закінчується новим рядком.
Правила
Тести
1. {A|The|One} {quick|magnificent|charming|lucky|fast|super|cool} {gold|tan|yellow|white|brown|silver} {beaver|packrat|cat|lion|tiger|fox|dog|wolf} {consumed|ate|pilfered} my {pastry|strudel|cake}.
-------------------------------------------
One cool brown wolf consumed my pastry.
...(3 more here)...
The charming yellow beaver ate my cake.
-------------------------------------------
2. This sentence is valid, and happens to have no Spintax!
-------------------------------------------
This sentence is valid, and happens to have no Spintax!
...(3 more here)...
This sentence is valid, and happens to have no Spintax!
-------------------------------------------
3. {beg|get|ton|sun|bun|can|top|big}{2|3|4|5}{A|B|C|D|E|F|G}{2|3|4|5|6|7}{at|as|be|ex|hi|}{!|#|%}
-------------------------------------------
top2F2hi%
...(3 more here)...
big3E4ex#
Четвертий тест можна знайти тут.
Це код-гольф , тому виграє найменше кількість байтів.
{, |, }збирається знайти у вхідному рядку, де є Spintax.