RosettaCodeData/Task/Compare-a-list-of-strings/PureBasic/compare-a-list-of-strings.basic
2023-07-01 13:44:08 -04:00

38 lines
1,008 B
Text

EnableExplicit
DataSection
Data.s ~"AA\tAA\tAA\nAA\tBB\tCC\nAA\tCC\tBB\nAA\tACB\tBB\tCC\nsingel_element"
EndDataSection
Macro PassFail(PF)
If PF : PrintN("Pass") : Else : PrintN("Fail") : EndIf
EndMacro
Macro ProcRec(Proc)
Define tf1$,tf2$ : Static chk.b : chk=#True
tf1$=StringField(s$,c,tz$) : tf2$=StringField(s$,c+1,tz$)
If Len(tf2$) : Proc(s$,tz$,c+1) : EndIf
EndMacro
Procedure.b IsStringsEqual(s$,tz$=~"\t",c.i=1)
ProcRec(IsStringsEqual)
chk & Bool(tf1$=tf2$ Or tf2$="")
ProcedureReturn chk
EndProcedure
Procedure.b IsStringsAscending(s$,tz$=~"\t",c.i=1)
ProcRec(IsStringsAscending)
chk & Bool(tf1$<tf2$ Or tf2$="")
ProcedureReturn chk
EndProcedure
Define t$,sf$,c.i,i.i,PF.b
Read.s t$ : c=CountString(t$,~"\n")
OpenConsole("Compare a list of Strings")
For i=1 To c+1
sf$=StringField(t$,i,~"\n")
PrintN("List : "+sf$)
Print("Lexical test : ") : PassFail(IsStringsEqual(sf$))
Print("Ascending test : ") : PassFail(IsStringsAscending(sf$))
PrintN("")
Next
Input()