Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function nbaseToMaya(nbase_number,nbase)
- # nbase-jarjestelmän luku nbase_number muunnetaan Mayojen 20-järjestelmään
- # kantaluvut nro="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
- # tulostus Mayojen numeromerkkeinä ylhäältä alas klassiseen tyyliin
- # Juhani Kaukoranta 18.2.2022
- # varmistetaan, että luku on annetty merkkijonona
- if typeof(nbase_number)==Int64
- nbase_number = string(nbase_number)
- end
- n = parse(Int,nbase_number,base=nbase) # muuntaa nbase_number to 10-base number n
- A = [] # vektori A kerää tulostettavat merkit
- value10 = [] # vektori kerää Maya-merkkit arvot 10-järjestelmässä
- x = n
- mayabase = 20 # Mayojen kantalukujärjestelmä
- temp = div(x,mayabase)
- while temp > 0
- if x-temp*mayabase < 20
- newnum =Char(119520+x-temp*mayabase)
- push!(value10,x-temp*mayabase) # lisää vektoriin value10 Maya-merkin 10-arvon
- end
- push!(A,newnum) # lisää vektoriin A lasketun Maya-merkin
- x = temp
- temp = div(x,mayabase)
- if temp == 0 # viimeinen, uusi kierros
- if x < 20
- newnum = Char(119520+x)
- end
- push!(A,newnum) # lisää A-vektoriin Maya-merkin
- push!(value10,x) # lisää vektoriin value1 Maya-merkin 10-arvon
- end
- end
- println(nbase,"-järjestelmän luku ",nbase_number," Mayojen 20-järjestelmässä:")
- println("käytössä kantalukujärjestelmien symbolit:")
- println("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")
- println("Maya klassinen, ylimpänä suurimmat 20:n potenssit")
- for j = reverse(1 : length(A)) # tulostus suurimmasta pienimpään
- println(A[j], " vastaa 10-järjestelmässä: ",value10[j],"*20^",j-1," = ",20^(j-1)*value10[j])
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement