Advertisement
jukaukor

nbaseToMaya.jl

Feb 18th, 2022
37
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.83 KB | None | 0 0
  1.  
  2. function nbaseToMaya(nbase_number,nbase)
  3. # nbase-jarjestelmän luku nbase_number muunnetaan Mayojen 20-järjestelmään
  4. # kantaluvut nro="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
  5. # tulostus Mayojen numeromerkkeinä ylhäältä alas klassiseen tyyliin
  6. # Juhani Kaukoranta 18.2.2022
  7. # varmistetaan, että luku on annetty merkkijonona
  8. if typeof(nbase_number)==Int64
  9. nbase_number = string(nbase_number)
  10. end
  11. n = parse(Int,nbase_number,base=nbase) # muuntaa nbase_number to 10-base number n
  12. A = [] # vektori A kerää tulostettavat merkit
  13. value10 = [] # vektori kerää Maya-merkkit arvot 10-järjestelmässä
  14. x = n
  15. mayabase = 20 # Mayojen kantalukujärjestelmä
  16. temp = div(x,mayabase)
  17. while temp > 0
  18. if x-temp*mayabase < 20
  19. newnum =Char(119520+x-temp*mayabase)
  20. push!(value10,x-temp*mayabase) # lisää vektoriin value10 Maya-merkin 10-arvon
  21. end
  22. push!(A,newnum) # lisää vektoriin A lasketun Maya-merkin
  23. x = temp
  24. temp = div(x,mayabase)
  25. if temp == 0 # viimeinen, uusi kierros
  26. if x < 20
  27. newnum = Char(119520+x)
  28. end
  29. push!(A,newnum) # lisää A-vektoriin Maya-merkin
  30. push!(value10,x) # lisää vektoriin value1 Maya-merkin 10-arvon
  31. end
  32. end
  33. println(nbase,"-järjestelmän luku ",nbase_number," Mayojen 20-järjestelmässä:")
  34. println("käytössä kantalukujärjestelmien symbolit:")
  35. println("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")
  36. println("Maya klassinen, ylimpänä suurimmat 20:n potenssit")
  37. for j = reverse(1 : length(A)) # tulostus suurimmasta pienimpään
  38. println(A[j], " vastaa 10-järjestelmässä: ",value10[j],"*20^",j-1," = ",20^(j-1)*value10[j])
  39. end
  40. end
  41.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement