Haskell possui tuplas que podem ser escritas como
(a,b,c)
No entanto, este é apenas açúcar sintático para
(,,)a b c
Em geral, uma tupla n pode ser formada com n-1 ,
s entre (
... )
seguido por seus elementos separados por espaços. Por exemplo, a 7-tupla, (1,2,3,4,5,6,7)
pode ser formada por
(,,,,,,)1 2 3 4 5 6 7
Como Haskell não possui tuplas 1, elas não podem ser formadas. Você também não será responsável por tuplas vazias.
Tuplas aninhadas podem ser formadas usando parênteses para substituir a ordem das operações.
((1,2),3) == (,)((,)1 2)3
Como parte de nossa busca para remover todo o açúcar sintático do Haskell , vou pedir que você escreva um programa que remova o açúcar sintático das tuplas de Haskell também.
Seu programa deve usar uma tupla, uma matriz ou uma string representando uma tupla açucarada e deve gerar uma string representando uma tupla "sem açúcar". As tuplas de entrada sempre conterão números inteiros positivos ou outras tuplas.
Como estamos jogando golfe aqui, sua produção deve ser curta. Não deve conter desnecessários
Espaços. Os espaços devem ser usados apenas para separar argumentos de uma função de tupla e não devem aparecer após um
)
ou antes de um(
Parênteses. Parênteses devem ser usados apenas ao formar funções de tupla ou ao aninhar tuplas.
Esta é uma questão de código-golfe, para que as respostas sejam pontuadas em bytes, com menos bytes sendo melhores.
Casos de teste
(1,2) -> (,)1 2
(1,2,3) -> (,,)1 2 3
((1,2),3) -> (,)((,)1 2)3
(1,2,3,4) -> (,,,)1 2 3 4
(1,(2,3)) -> (,)1((,)2 3)
(10,1) -> (,)10 1
,
((1,(2,3)),4,(5,6))
e (1,(2,3),4)
.