RosettaCodeData/Task/Mayan-numerals/PureBasic/mayan-numerals.basic

69 lines
2.0 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#START_X=-4 : #START_Y=2
Dim pl$(5)
pl$(0)=" Θ " : pl$(1)=" • " : pl$(2)=" •• "
pl$(3)="••• " : pl$(4)="••••" : pl$(5)=""
If OpenConsole() : EnableGraphicalConsole(1) : Else : End 1 : EndIf
Procedure.s Dec2Mayan(wert.i)
result$=""
If wert=0 : result$="0;" : EndIf
While wert : result$=Str(wert%20)+";"+result$ : wert/20 : Wend
ProcedureReturn result$
EndProcedure
Procedure PutMayan(may$)
Shared pl$()
X=#START_X+6 : Y=#START_Y
For i=1 To CountString(may$,";")
m=Val(StringField(may$,i,";"))
yp=Y+4
If m=0 : ConsoleLocate(X,yp) : Print(pl$(0)) : X+5 : Continue : EndIf
While m
If m-5>=0
ConsoleLocate(X,yp) : Print(pl$(5)) : yp-1 : m-5
ElseIf m-4>=0
ConsoleLocate(X,yp) : Print(pl$(4)) : yp-1 : m-4
ElseIf m-3>=0
ConsoleLocate(X,yp) : Print(pl$(3)) : yp-1 : m-3
ElseIf m-2>=0
ConsoleLocate(X,yp) : Print(pl$(2)) : yp-1 : m-2
ElseIf m-1>=0
ConsoleLocate(X,yp) : Print(pl$(1)) : yp-1 : m-1
EndIf
Wend
X+5
Next
EndProcedure
Procedure MayanNumerals(may$)
X=#START_X : Y=#START_Y
m.i=CountString(may$,";")
For i=1 To m
X+5
ConsoleLocate(X,Y) : Print("╔════╗")
ConsoleLocate(X,Y+1) : Print("║ ║")
ConsoleLocate(X,Y+2) : Print("║ ║")
ConsoleLocate(X,Y+3) : Print("║ ║")
ConsoleLocate(X,Y+4) : Print("║ ║")
ConsoleLocate(X,Y+5) : Print("╚════╝")
Next
X=#START_X
For i=1 To m
X+5
If i<m
ConsoleLocate(X+5,Y) : Print("╦")
ConsoleLocate(X+5,Y+5) : Print("╩")
EndIf
Next
PutMayan(may$)
EndProcedure
Repeat
ConsoleLocate(0,0) : Print(LSet(" ",60))
ConsoleLocate(0,0) : Print("MAYAN: ? ") : i$=Input()
ClearConsole() : If i$="" : End : EndIf
j$=Dec2Mayan(Val(i$)) : MayanNumerals(j$)
ConsoleLocate(0,#START_Y+7) : Print("Dezimal = "+i$)
ConsoleLocate(0,#START_Y+8) : Print("Vigesimal= "+j$)
ForEver