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?

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top