In Elisir, gli elenchi (collegati) sono nel formato in [head | tail]cui head può essere qualsiasi cosa e tail è un elenco del resto dell'elenco e []- l'elenco vuoto - è l'unica eccezione a questo.
Gli elenchi possono anche essere scritti in modo [1, 2, 3]equivalente a[1 | [2 | [3 | []]]]
Il tuo compito è convertire un elenco come descritto. L'input sarà sempre un elenco valido (in elisir) contenente solo numeri corrispondenti alla regex \[(\d+(, ?\d+)*)?\]. Puoi prendere l'input con (uno spazio dopo ogni virgola) o senza spazi. L'output può essere con (uno spazio prima e dopo ciascuno |) o senza spazi.
Per gli ingressi con zeri iniziali è possibile emettere o senza gli zeri o con.
L'input deve essere considerato come una stringa (se si scrive una funzione), così come l'output.
Esempi
[] -> []
[5] -> [5 | []]
[1, 7] -> [1 | [7 | []]]
[4, 4, 4] -> [4 | [4 | [4 | []]]]
[10, 333] -> [10 | [333 | []]]
correlati , non un duplicato in quanto ciò comporta in parte l'aggiunta della modalità ]alla fine. Inoltre, la risposta di Haskell qui è abbastanza diversa da quella lì.