Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
106
Task/Mayan-numerals/Go/mayan-numerals.go
Normal file
106
Task/Mayan-numerals/Go/mayan-numerals.go
Normal file
|
|
@ -0,0 +1,106 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
const (
|
||||
ul = "╔"
|
||||
uc = "╦"
|
||||
ur = "╗"
|
||||
ll = "╚"
|
||||
lc = "╩"
|
||||
lr = "╝"
|
||||
hb = "═"
|
||||
vb = "║"
|
||||
)
|
||||
|
||||
var mayan = [5]string{
|
||||
" ",
|
||||
" ∙ ",
|
||||
" ∙∙ ",
|
||||
"∙∙∙ ",
|
||||
"∙∙∙∙",
|
||||
}
|
||||
|
||||
const (
|
||||
m0 = " Θ "
|
||||
m5 = "────"
|
||||
)
|
||||
|
||||
func dec2vig(n uint64) []uint64 {
|
||||
vig := strconv.FormatUint(n, 20)
|
||||
res := make([]uint64, len(vig))
|
||||
for i, d := range vig {
|
||||
res[i], _ = strconv.ParseUint(string(d), 20, 64)
|
||||
}
|
||||
return res
|
||||
}
|
||||
|
||||
func vig2quin(n uint64) [4]string {
|
||||
if n >= 20 {
|
||||
panic("Cant't convert a number >= 20")
|
||||
}
|
||||
res := [4]string{mayan[0], mayan[0], mayan[0], mayan[0]}
|
||||
if n == 0 {
|
||||
res[3] = m0
|
||||
return res
|
||||
}
|
||||
fives := n / 5
|
||||
rem := n % 5
|
||||
res[3-fives] = mayan[rem]
|
||||
for i := 3; i > 3-int(fives); i-- {
|
||||
res[i] = m5
|
||||
}
|
||||
return res
|
||||
}
|
||||
|
||||
func draw(mayans [][4]string) {
|
||||
lm := len(mayans)
|
||||
fmt.Print(ul)
|
||||
for i := 0; i < lm; i++ {
|
||||
for j := 0; j < 4; j++ {
|
||||
fmt.Print(hb)
|
||||
}
|
||||
if i < lm-1 {
|
||||
fmt.Print(uc)
|
||||
} else {
|
||||
fmt.Println(ur)
|
||||
}
|
||||
}
|
||||
for i := 1; i < 5; i++ {
|
||||
fmt.Print(vb)
|
||||
for j := 0; j < lm; j++ {
|
||||
fmt.Print(mayans[j][i-1])
|
||||
fmt.Print(vb)
|
||||
}
|
||||
fmt.Println()
|
||||
}
|
||||
fmt.Print(ll)
|
||||
for i := 0; i < lm; i++ {
|
||||
for j := 0; j < 4; j++ {
|
||||
fmt.Print(hb)
|
||||
}
|
||||
if i < lm-1 {
|
||||
fmt.Print(lc)
|
||||
} else {
|
||||
fmt.Println(lr)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
numbers := []uint64{4005, 8017, 326205, 886205, 1081439556}
|
||||
for _, n := range numbers {
|
||||
fmt.Printf("Converting %d to Mayan:\n", n)
|
||||
vigs := dec2vig(n)
|
||||
lv := len(vigs)
|
||||
mayans := make([][4]string, lv)
|
||||
for i, vig := range vigs {
|
||||
mayans[i] = vig2quin(vig)
|
||||
}
|
||||
draw(mayans)
|
||||
fmt.Println()
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue