Haskell a des tuples qui peuvent être écrits comme
(a,b,c)
Mais ce n'est que du sucre syntaxique pour
(,,)a b c
En général, un n tuple peut être formé avec n-1 ,
s entre (
... )
suivi de ses éléments séparés par des espaces. Par exemple, le 7-tuple, (1,2,3,4,5,6,7)
peut être formé par
(,,,,,,)1 2 3 4 5 6 7
Étant donné que Haskell n'a pas de tuples 1, ils ne peuvent pas être formés. Vous ne serez pas non plus tenu responsable des tuples vides.
Les tuples imbriqués peuvent être formés à l'aide de parens pour remplacer l'ordre des opérations.
((1,2),3) == (,)((,)1 2)3
Dans le cadre de notre quête pour supprimer tout le sucre syntaxique de Haskell, je vais vous demander d'écrire un programme qui supprime également le sucre syntaxique des tuples de Haskell.
Votre programme doit prendre un tuple, un tableau ou une chaîne représentant un tuple sucré et doit produire une chaîne représentant un tuple "sans sucre". Les tuples en entrée ne contiendront que des entiers positifs ou d'autres tuples.
Puisque nous jouons ici, votre sortie devrait être courte. Il ne doit pas contenir de
Les espaces. Les espaces doivent être utilisés uniquement pour séparer les arguments d'une fonction de tuple et ne doivent pas apparaître après a
)
ou avant a(
Parenthèses. Les parenthèses ne doivent être utilisées que lors de la création de fonctions de tuple ou lors de l'imbrication de tuples.
C'est une question de code-golf donc les réponses seront notées en octets avec moins d'octets étant mieux.
Cas de test
(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))
et (1,(2,3),4)
.