a := '132'
b := sortmerge(a)
? b
'123' (sem as aspas)
ou
a := 132
b := sortmerge(a)
c := b + 1
? c
124
ou ainda
a := 1152233
b := sortmerge(a)
? b
1235
ou
a := 'Cada ideia mais estapafurdia...'
b := sortmerge(a)
? b
'.Cadefimprstu' (sem as aspas)
Sei lá se serve, rs... mas taí, tomara que sirva.
Código: Selecionar todos
func sortmerge(cadeia)
loca i := 0
loca baguncado := {}
loca tmp := {}
loca sorteado := ''
loca xnum := .f.
if valtype(cadeia) = 'N'
ccadeia = alltrim(str(cadeia))
xnum = .t.
else
ccadeia = cadeia
endi
if len(ccadeia) = 0
if xnum
sorteado = 0 // será que tá certo fazer isso?!
else
sorteado = ''
endi
else
for i = 1 to len(ccadeia)
aadd(baguncado,subs(ccadeia,i,1))
next
tmp = asort(baguncado)
for i = 1 to len(tmp)
if at(tmp[i],sorteado) = 0
sorteado := sorteado+tmp[i]
endi
next
sorteado = alltrim(sorteado)
if xnum
sorteado = val(sorteado)
endi
endi
retu sorteado
