Come faccio a convertire un numero intero a una lista e viceversa in Oz?
Domanda
Come faccio a convertire un numero intero a una lista e schienale in Oz ? Ho bisogno di prendere un numero come 321
e invertire in 123
.
La funzione inversa a Oz opera solo su elenchi così voglio convertire da 321 a [3 2 1], rovesciarla, e convertire [1 2 3] torna a 123. Questo può essere fatto in Oz?
Soluzione
Disclaimer: in realtà non so Oz fino a 5 minuti fa e letto solo gli esempi su Wikipedia, in modo Possono essere pieno di errori. Va comunque darvi una buona idea su come affrontare il problema. (Rendere la funzione ricorsiva in coda viene lasciato come esercizio al lettore).
Aggiornamento:. La seguente versione è testato e funziona
local
% turns 123 into [3,2,1]
fun {Listify N}
if N == 0 then nil
else (N mod 10) | {Listify (N div 10)}
end
end
% turns [1,2,3] into 321
fun {Unlistify L}
case
L of nil then 0
[] H|T then H + 10 * {Unlistify T}
end
end
in
% Turns 123 into 321
{Browse {Unlistify {Reverse {Listify 123}}}}
end
Altri suggerimenti
Questo dovrebbe fare il trucco più succintamente:
{Show {StringToInt {Reverse {IntToString 123}}}}
Saluti