В APL можна записати мовчазні функції, які називаються поїздами . Те, як вони працюють, не має значення для цього завдання. Ось різні способи їх групування, використовуючи ⍴
як функцію:
⍴ -> ⍴
⍴⍴ -> ⍴⍴
⍴⍴⍴ -> ⍴⍴⍴
⍴⍴⍴⍴ -> ⍴(⍴⍴⍴)
⍴⍴⍴⍴⍴ -> ⍴⍴(⍴⍴⍴)
⍴⍴⍴⍴⍴⍴ -> ⍴(⍴⍴(⍴⍴⍴))
...
Порядок залишається колишнім. Процедура полягає в тому, що поки існує строго більше 3 функцій, останні 3 функції згруповані в одну функцію. Якщо ми зустрінемо вкладений поїзд, ми спочатку його додаємо в дужки, перш ніж продовжувати. Ось процедура, що застосовується до ⍴⍴⍴⍴⍴⍴
:
Step 0: ⍴⍴⍴⍴⍴⍴
There are strictly more than 3 functions, repeat.
Step 1: ⍴⍴⍴(⍴⍴⍴)
There are strictly more than 3 functions, repeat.
Step 2: ⍴(⍴⍴(⍴⍴⍴))
There are 3 or less functions, we're done.
Ось та сама процедура, що застосовується до ⍴⍴⍴(⍴⍴)⍴(⍴⍴⍴⍴(⍴⍴⍴))⍴⍴
:
Step 0: ⍴⍴⍴(⍴⍴)⍴(⍴⍴⍴⍴(⍴⍴⍴))⍴⍴
There are strictly more than 3 functions, repeat.
We have met a nested train, applying procedure to that first:
Step 0: ⍴⍴⍴⍴(⍴⍴⍴)
There are strictly more than 3 functions, repeat.
We have met a nested train, applying procedure to that first:
Step 0: ⍴⍴⍴
There are 3 or less functions, we're done.
Step 1: ⍴⍴(⍴⍴(⍴⍴⍴))
There are 3 or less functions, we're done.
Step 1: ⍴⍴⍴(⍴⍴)⍴((⍴⍴(⍴⍴(⍴⍴⍴)))⍴⍴)
There are strictly more than 3 functions, repeat.
We have met a nested train, applying procedure to that first:
Step 0: ⍴⍴
There are 3 or less functions, we're done.
Step 2: ⍴⍴⍴((⍴⍴)⍴((⍴⍴(⍴⍴(⍴⍴⍴)))⍴⍴))
There are strictly more than 3 functions, repeat.
Step 3: ⍴(⍴⍴((⍴⍴)⍴((⍴⍴(⍴⍴(⍴⍴⍴)))⍴⍴)))
There are 3 functions or less, we're done.
Вхідні дані
Для цього завдання введення буде спрощено. Це означає, що ви можете вибрати дві різні символи для відкриття та закриття дужок та 1 символ для функцій, відмінних від тих, що вибрані для дужок. Обрані вами символи повинні відповідати. Вхід не буде порожнім і не буде містити дужки без вмісту (тобто ()
).
Вихідні дані
Знову ж таки, ви можете вибрати 3 різних символів, 2 для дужок та 1 для функцій. Зауважте, що вони не повинні відповідати обраним для введення даних, але вони повинні бути послідовними.
Правила
- Якщо в вхідних дужках є дужки, які містять лише одну функцію, ви повинні їх видалити у висновку. Ваш висновок може не містити непотрібних дужок (тобто додавати лише одну функцію або охоплювати весь вихід).
- Вам не потрібно реалізовувати алгоритм, використаний тут, поки ваше рішення справедливе для цього завдання.
- Введення та вихід - це рядки у форматі, поясненому в розділах Введення та Виведення. Вхід матиме щонайменше один символ.
- Використовувати стандартні лазівки категорично заборонено.
- Це код-гольф , тому найкоротша відповідь виграє. Однак прийнятої відповіді не буде, оскільки це конкуренція на одній мові, і заохочувати відповідати мовами, на яких це завдання призведе до більш тривалого коду порівняно з кодом, написаним іншими мовами.
Тестові справи
Тут використовуються символи ()⍴
, ви повинні замінити їх вибраними символами.
⍴ -> ⍴
⍴ -> ⍴
⍴⍴ -> ⍴⍴
⍴⍴⍴ -> ⍴⍴⍴
⍴⍴⍴⍴ -> ⍴(⍴⍴⍴)
⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴ -> ⍴⍴(⍴⍴(⍴⍴(⍴⍴(⍴⍴(⍴⍴(⍴⍴⍴))))))
⍴⍴⍴⍴⍴(⍴⍴⍴)⍴⍴(⍴(⍴⍴⍴)⍴⍴⍴)⍴⍴⍴ -> ⍴(⍴⍴(⍴⍴((⍴⍴⍴)⍴(⍴(⍴(⍴⍴⍴)(⍴⍴⍴))(⍴⍴⍴)))))
(⍴⍴⍴)(⍴⍴⍴)(⍴⍴⍴) -> (⍴⍴⍴)(⍴⍴⍴)(⍴⍴⍴)
(⍴⍴⍴)(⍴⍴⍴)⍴⍴⍴ -> (⍴⍴⍴)(⍴⍴⍴)(⍴⍴⍴)
⍴⍴(⍴)⍴⍴ -> ⍴⍴(⍴⍴⍴)
((⍴⍴)) -> ⍴⍴
⍴⍴((⍴⍴))⍴⍴ -> ⍴⍴((⍴⍴)⍴⍴)
Ця проблема була розміщена в пісочниці. Якщо у вас є необхідна привілей, ви можете переглянути цю сторінку пісочниці тут .