RosettaCodeData/Task/Tree-datastructures/Yabasic/tree-datastructures.basic

80 lines
2.1 KiB
Plaintext

AnidadoInicial$ = "Rosetta Code" + chr$(10) + "....rocks" + chr$(10) + "........code" + chr$(10) + "........comparison" + chr$(10) + "........wiki" + chr$(10) + "....mocks" + chr$(10) + "........trolling" + chr$(10)
print AnidadoInicial$
sangrado$ = AnidadoConSangrado$(AnidadoInicial$)
print sangrado$
anidado$ = SangradoAAnidado$(sangrado$)
print anidado$
print "Initial = Restored: ";
if AnidadoInicial$ = anidado$ then print "True" else print "False": fi
end
sub AnidadoConSangrado$ (anidado$)
local salida$, linea$, i, ind
salida$ = ""
linea$ = ""
i = 1
ind = 0
while i <= len(anidado$)
if mid$(anidado$, i, 1) = chr$(10) or mid$(anidado$, i, 1) = chr$(13) then
if linea$ <> "" then
ind = 0
while ind < len(linea$) and mid$(linea$, ind + 1, 1) = "."
ind = ind + 1
wend
salida$ = salida$ + str$(ind / 4) + " " + mid$(linea$, ind + 1) + chr$(10)
linea$ = ""
fi
else
linea$ = linea$ + mid$(anidado$, i, 1)
fi
i = i + 1
wend
if linea$ <> "" then
ind = 0
while ind < len(linea$) and mid$(linea$, ind + 1, 1) = "."
ind = ind + 1
wend
salida$ = salida$ + str$(ind / 4) + " " + mid$(linea$, ind + 1) + chr$(10)
fi
return salida$
end sub
sub SangradoAAnidado$ (sangrado$)
local salida$, linea$, i, ind, tmp$
salida$ = ""
linea$ = ""
i = 1
while i <= len(sangrado$)
if mid$(sangrado$, i, 1) = chr$(10) or mid$(sangrado$, i, 1) = chr$(13) then
if linea$ <> "" then
ind = instr(linea$, " ")
nivel = val(mid$(linea$, 1, ind - 1))
tmp$ = ""
for t = 1 to nivel * 4
tmp$ = tmp$ + "."
next t
//salida$ = salida$ + string$(nivel * 4, ".") + mid$(linea$, ind + 1) + chr$(10)
salida$ = salida$ + tmp$ + mid$(linea$, ind + 1) + chr$(10)
linea$ = ""
fi
else
linea$ = linea$ + mid$(sangrado$, i, 1)
fi
i = i + 1
wend
if linea$ <> "" then
ind = instr(linea$, " ")
nivel = val(mid$(linea$, 1, ind - 1))
salida$ = salida$ + string$(nivel * 4, ".") + mid$(linea$, ind + 1) + chr$(10)
fi
return salida$
end sub