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

Вступ до веб-сайтів
Зміна сайтів - це усталене позначення для моделей жонглювання. Це працює, поділяючи візерунок на ритми. При кожному ударі ліва і права рука чергуються при киданні м'яча. Кожен кидок (тобто кожен удар) позначається числом, яке вказує, коли цей м'яч буде кинутий далі - це відповідає безпосередньо висоті кидка.
Давайте розглянемо кілька прикладів. Дивіться анімацію про все це тут .
3-кульовий каскад
Найпростіший 3-кульовий візерунок. Кожен м'яч кидається при кожному третьому ударі (чергуючи руки). Виписування ударів виглядає так (лінії ASCII з'єднують два удари, при яких кидається однакова куля):
Beat 1 2 3 4 5 6 7 8 9
Hand L R L R L R L R L
Siteswap 3 3 3 3 3 3 3 3 3
└─┼─┼─┘ │ │
└─┼───┘ │
└─────┘
Зверніть увагу, як кожен м'яч, кинутий у Lтакт, викидається поруч у Rтакт. Шаблони міняння сайтів повторюються неявно, тому цей шаблон зазвичай позначається як 333, хоча просто 3також буде достатньо.
441
Ось дещо складніший приклад із веб-сайтом 441 :
Beat 1 2 3 4 5 6 7 8 9
Hand L R L R L R L R L
Siteswap 4 4 1 4 4 1 4 4 1
│ │ └─┘ │ │
└─┼─────┘ │
└───────┘
Зверніть увагу, як кидки з парними числами йдуть до тієї самої руки, з якої вони були кинуті, а кидки з непарними номерами - до іншої.
423
Іноді просто хочеться провести м'яч через такт, а не кидати його. Все це означає, що цей м'яч буде кинутий наступного разу, коли його черга буде рукою - тобто на 2 удари пізніше. Тож тримання м'яча еквівалентно 2шаблону:
Beat 1 2 3 4 5 6 7 8 9
Hand L R L R L R L R L
Siteswap 4 2 3 4 2 3 4 2 3
│ └─┼─┘ │ │
│ └───┼─┘
└───────┘
50505
Це 0означає, що поточна рука порожня, як показано на цій схемі:
Beat 1 2 3 4 5 6 7 8 9
Hand L R L R L R L R L
Siteswap 5 0 5 0 5 5 0 5 0
└───┼───┼─┘ │
└───┼─────┘
└───────>
Жонглювання мультиплекс
Ця проблема була б занадто простою з ванільним сайтом. Введіть мультиплексні візерунки! Жонглювання мультиплексом означає, що ви кидаєте кілька кульок з однієї руки одночасно. Наприклад, у вищезгаданому 3-х кульовому каскаді, якби ви двоє кидали додаткову кулю при кожному третьому ударі, візерунок набував би [33]33вигляду так:
Beat 1 2 3 4 5 6 7 8 9
Hand L R L R L R L R L
Siteswap [33] 3 3 [33] 3 3 [33] 3 3
└┴──┼─┼──┴┘ │ │
└─┼──────┘ │
└────────┘
Ось ще один приклад, коли мультиплексний кидок має дві різні висоти / довжини. Його можна позначити як [34]11або [43]11:
Beat 1 2 3 4 5 6 7 8 9
Hand L R L R L R L R L
Siteswap [43] 1 1 [43] 1 1 [43] 1 1
││ └─┴──┘│ │
│└────────┘ │
└────────────┘
(Зауважте, що 1кинуті на ритмічні 2землі при ударі 3і одразу ж кидаються знову (як інший 1), щоб приземлитися в такт 4і бути частиною другого мультиплексного кидка.)
На початку цієї публікації був обмін сайтів для анімації [53]15121 .
Дійсність шаблону
Щоб шаблон був семантично достовірним, кількість кульок у руці завжди має відповідати кількості кидків, зазначених у цьому битті. Це означає, що не повинно бути кульок, що висаджуються в такт 0, має бути лише одна куля, що прибивається в такт, з будь-якою іншою однозначною цифрою, і має бути n кульок, що приземляються при мультиплексному такті, де n - кількість цифр у цьому мультиплексному кидці. Візерунок також повинен бути спроможним легко повторюватися.
Прикладами невірних шаблонів є 543(всі кулі приземляться в один і той же удар), 240( 2земля приземляється в 0такт) або 33[24](жодна куля не припадає на мультиплексний такт, але два кулі приземлюються при обох двох ударах).
Змагання
Ви візьмете шаблон заміни сайтів, який містить подстановочні символи, і виведете дійсний шаблон із заповненням цих марок.
Візьміть за вхід (через stdin, аргумент командного рядка, параметр файла або функції) рядок формату
n s
Де nє ціле число, яке вказує кількість кульок, які будуть використовуватися, і sє шаблоном заміни сайтів ( без пробілів). Ви можете припустити, що це синтаксично правильно - всі квадратні дужки зібрані і не вкладені, і несподіваних символів немає. Усі кидки будуть одноцифровими ( 0- 9). Однак деякі удари можуть просто позначатися як a _, які слід заповнити одним або мультиплексним кидком на виході.
Примітка: що - щось на зразок [_3]буде НЕ бути частиною введення. Або весь такт відсутній, або весь такт.
Виведіть дійсний візерунок, який можна змішати з заданою кількістю куль і узгодити з вхідним малюнком у всіх заданих ударах. Якщо для заданих входів неможливий дійсний зразок, виведіть !. Вихід також буде через stdout, у файл або як повернене значення функції.
Примітка . Вихід не повинен містити зайвих квадратних дужок або нулів у кількох кидках. Отже, результати, що містять [3]або [03]не приймаються, 3замість цього потрібно виводити . Порядок цифр у мультиплексному киданні не має значення.
Примітка. Ви можете опустити шаблони, що є дублікатами під циклічною перестановкою. Напр. Для введення даних 3 __(зверніть увагу на два підмітні знаки), обидва 42і 24є дійсними відповідями (серед інших), але вони фактично описують ту саму схему. Ви можете вивести обидва або тільки один з них, але вам доведеться це робити послідовно.
Це кодовий гольф , виграє найкоротший код (залежно від бонусів, зазначених у нижній частині питання).
Ви можете використовувати JuggleLab, щоб пограти з візерунками, щоб побачити, чи дійсні вони та як вони виглядають.
Приклади
Input Possible Outputs Comments
3 _ 3
[21]
[111]
3 4_3 423
4 4_2 4[51]2
4[42]2
4[321]2
3 _23_ 6231
4233
323[31]
2235
223[41]
0237
023[43]
[42]231
[32]23[11]
4 5_3 ! 5 and 3 will both land at the third beat, but
there is only a single throw at that beat. This
cannot be fixed with any throw in the blank.
2 5_4 ! Any possible throw in the wildcard (including a
0) will make a pattern for at least 3 balls.
3 54_ ! The only solution that would correspond to a
3-ball pattern is 540, which is not semantically
valid because the 5 and 4 both land at beat 3.
There are valid solutions, but they require at
least 4 balls.
Бонуси
- Якщо ваша відповідь може обробляти "цифри" до 35, позначені літерами (10 = А, 11 = В, ...), відніміть 20 символів . Ви можете вирішити, чи повинні ці літери бути великими, малими та малими літерами. (JuggleLab може впоратися з ними в малих регістру, якщо ви хочете переглянути деякі шалені моделі.)
- Якщо ваша відповідь виводить усі дійсні рішення, відніміть 20 символів .