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

69 lines
2.1 KiB
Plaintext

Function AnidadoConSangrado(anidado As String) As String
Dim As String salida = "", linea = ""
Dim As Integer 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 += 1
Wend
salida &= Str(ind \ 4) & " " & Mid(linea, ind + 1) & Chr(10)
linea = ""
End If
Else
linea &= Mid(anidado, i, 1)
End If
i += 1
Wend
If linea <> "" Then
ind = 0
While ind < Len(linea) And Mid(linea, ind + 1, 1) = "."
ind += 1
Wend
salida &= Str(ind \ 4) & " " & Mid(linea, ind + 1) & Chr(10)
End If
Return salida
End Function
Function SangradoAAnidado(sangrado As String) As String
Dim As String salida = "", linea = ""
Dim As Integer i = 1
Dim As Integer ind, nivel
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))
salida &= String(nivel * 4, ".") & Mid(linea, ind + 1) & Chr(10)
linea = ""
End If
Else
linea &= Mid(sangrado, i, 1)
End If
i += 1
Wend
If linea <> "" Then
ind = Instr(linea, " ")
nivel = Val(Mid(linea, 1, ind - 1))
salida &= String(nivel * 4, ".") & Mid(linea, ind + 1) & Chr(10)
End If
Return salida
End Function
Dim As String 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
Dim As String sangrado = AnidadoConSangrado(AnidadoInicial)
Print sangrado
Dim As String anidado = SangradoAAnidado(sangrado)
Print anidado
Print "Initial = Restored: "; Iif(AnidadoInicial = anidado, "True", "False")
Sleep