W APL możesz pisać funkcje ukryte, zwane pociągami . Ich działanie nie ma znaczenia dla tego wyzwania. Oto różne sposoby ich grupowania za pomocą ⍴
funkcji:
⍴ -> ⍴
⍴⍴ -> ⍴⍴
⍴⍴⍴ -> ⍴⍴⍴
⍴⍴⍴⍴ -> ⍴(⍴⍴⍴)
⍴⍴⍴⍴⍴ -> ⍴⍴(⍴⍴⍴)
⍴⍴⍴⍴⍴⍴ -> ⍴(⍴⍴(⍴⍴⍴))
...
Kolejność pozostaje taka sama. Procedura jest taka, że dopóki są ściśle więcej niż 3 funkcje, ostatnie 3 funkcje są zgrupowane w jedną funkcję. Jeśli spotkamy zagnieżdżony pociąg, najpierw nawiasujemy go, zanim przejdziemy dalej. Oto procedura zastosowana do ⍴⍴⍴⍴⍴⍴
:
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.
Oto ta sama procedura stosowana do ⍴⍴⍴(⍴⍴)⍴(⍴⍴⍴⍴(⍴⍴⍴))⍴⍴
:
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.
Wejście
W przypadku tego wyzwania dane wejściowe zostaną uproszczone. Oznacza to, że możesz wybrać 2 różne znaki dla nawiasów otwierających i zamykających oraz 1 znak dla funkcji, różne od tych wybranych dla nawiasów. Wybrane znaki muszą być spójne. Dane wejściowe nie będą puste i nie będą zawierać nawiasów bez zawartości (tj ()
.).
Wynik
Ponownie możesz wybrać 3 różne znaki, 2 dla nawiasów i 1 dla funkcji. Zauważ, że nie muszą być one takie same jak te wybrane do wprowadzania, ale muszą być spójne.
Zasady
- Jeśli istnieją nawiasy, które zawierają tylko jedną funkcję w danych wejściowych, musisz je usunąć w danych wyjściowych. Twoje dane wyjściowe nie mogą zawierać niepotrzebnych nawiasów (tj. Obejmujących tylko jedną funkcję lub obejmujących całe dane wyjściowe).
- Nie musisz implementować zastosowanego tutaj algorytmu, o ile twoje rozwiązanie jest odpowiednie dla tego wyzwania.
- Dane wejściowe i wyjściowe są łańcuchami w formacie objaśnionym w sekcjach Wejście i Wyjście. Dane wejściowe będą miały co najmniej jeden znak.
- Korzystanie ze standardowych luk jest surowo zabronione.
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź. Jednak nie będzie akceptowanej odpowiedzi, ponieważ jest to konkurs dla poszczególnych języków i zachęca do odpowiadania w językach, w których zadanie to spowodowałoby dłuższy kod w porównaniu do kodu napisanego w innych językach.
Przypadki testowe
Używane tutaj znaki to ()⍴
powinieneś zastąpić je wybranymi znakami.
⍴ -> ⍴
⍴ -> ⍴
⍴⍴ -> ⍴⍴
⍴⍴⍴ -> ⍴⍴⍴
⍴⍴⍴⍴ -> ⍴(⍴⍴⍴)
⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴ -> ⍴⍴(⍴⍴(⍴⍴(⍴⍴(⍴⍴(⍴⍴(⍴⍴⍴))))))
⍴⍴⍴⍴⍴(⍴⍴⍴)⍴⍴(⍴(⍴⍴⍴)⍴⍴⍴)⍴⍴⍴ -> ⍴(⍴⍴(⍴⍴((⍴⍴⍴)⍴(⍴(⍴(⍴⍴⍴)(⍴⍴⍴))(⍴⍴⍴)))))
(⍴⍴⍴)(⍴⍴⍴)(⍴⍴⍴) -> (⍴⍴⍴)(⍴⍴⍴)(⍴⍴⍴)
(⍴⍴⍴)(⍴⍴⍴)⍴⍴⍴ -> (⍴⍴⍴)(⍴⍴⍴)(⍴⍴⍴)
⍴⍴(⍴)⍴⍴ -> ⍴⍴(⍴⍴⍴)
((⍴⍴)) -> ⍴⍴
⍴⍴((⍴⍴))⍴⍴ -> ⍴⍴((⍴⍴)⍴⍴)
To wyzwanie zostało opublikowane w piaskownicy. Jeśli masz wymagane uprawnienia, możesz wyświetlić post w piaskownicy tutaj .