Pi 到英语翻译器

问题描述 投票:0回答:2

我正在尝试将 pi 转换为字母。例如,3141519265 将是 cadaeaibfe。 C是字母表中的第三个字母。所以我们会得到三个。我已经创建了包含所有翻译的地图,但我不知道如何翻译。我猜我必须创建一个 for 循环来解析 pi。我怎么能做到这一点?

这是我的代码:

package main

import (
    "fmt"
    "io/ioutil"
    "log"
)

var (
     m map[int]string;
     pi int = 3141519265
)

func main() {
    m = make(map[int]string)
    m[1] = "a"
    m[2] = "b"
    m[3] = "c"
    m[4] = "d"
    m[5] = "e"
    m[6] = "f"
    m[7] = "g"
    m[8] = "h"
    m[9] = "i"
    m[10] = "j"
    m[11] = "k"
    m[12] = "l"
    m[13] = "m"
    m[14] = "n"
    m[15] = "o"
    m[16] = "p"
    m[17] = "q"
    m[18] = "r"
    m[19] = "s"
    m[20] = "t"
    m[21] = "u"
    m[22] = "v"
    m[23] = "w"
    m[24] = "x"
    m[25] = "y"
    m[26] = "z"
}
go
2个回答
0
投票

您可能需要稍微充实一下您的算法,以确定您想要表示一个字符的位数(314 是“CAD”还是“CN”?)。为了简化起见,我假设 0-9 是唯一唯一的数字,这就是我想到的。

https://play.golang.org/p/vgo3gSLqUI0

package main

import (
    "fmt"
)

func intSplit(i int) []int {
    var r []int

    for i != 0 {
        r = append(r, i%10)
        i = i / 10
    }
    return r
}

func intSliceToString(is []int) string {
    var s string

    for i := range is {
        uv := is[len(is)-1-i] + 64 // 64 is the unicode offset & the -1-i essentially reverse the loop
        s = s + fmt.Sprintf("%c", uv)
    }

    return s
}

func deCypher(i int) string {
    list := intSplit(i)
    return intSliceToString(list)

}
func main() {

    dc := deCypher(54321)
    fmt.Println(dc)

}

0
投票

3.14159265358974323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230 6647093848609550582231725359408128481117450284102703805211055596446229489509303819

© www.soinside.com 2019 - 2024. All rights reserved.