Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
76
Task/Straddling-checkerboard/Go/straddling-checkerboard.go
Normal file
76
Task/Straddling-checkerboard/Go/straddling-checkerboard.go
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func main() {
|
||||
key := `
|
||||
8752390146
|
||||
ET AON RIS
|
||||
5BC/FGHJKLM
|
||||
0PQD.VWXYZU`
|
||||
p := "you have put on 7.5 pounds since I saw you."
|
||||
fmt.Println(p)
|
||||
c := enc(key, p)
|
||||
fmt.Println(c)
|
||||
fmt.Println(dec(key, c))
|
||||
}
|
||||
|
||||
func enc(bd, pt string) (ct string) {
|
||||
enc := make(map[byte]string)
|
||||
row := strings.Split(bd, "\n")[1:]
|
||||
r2d := row[2][:1]
|
||||
r3d := row[3][:1]
|
||||
for col := 1; col <= 10; col++ {
|
||||
d := string(row[0][col])
|
||||
enc[row[1][col]] = d
|
||||
enc[row[2][col]] = r2d+d
|
||||
enc[row[3][col]] = r3d+d
|
||||
}
|
||||
num := enc['/']
|
||||
delete(enc, '/')
|
||||
delete(enc, ' ')
|
||||
for i := 0; i < len(pt); i++ {
|
||||
if c := pt[i]; c <= '9' && c >= '0' {
|
||||
ct += num + string(c)
|
||||
} else {
|
||||
if c <= 'z' && c >= 'a' {
|
||||
c -= 'a'-'A'
|
||||
}
|
||||
ct += enc[c]
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func dec(bd, ct string) (pt string) {
|
||||
row := strings.Split(bd, "\n")[1:]
|
||||
var cx [10]int
|
||||
for i := 1; i <= 10; i++ {
|
||||
cx[row[0][i]-'0'] = i
|
||||
}
|
||||
r2d := row[2][0]-'0'
|
||||
r3d := row[3][0]-'0'
|
||||
for i := 0; i < len(ct); i++ {
|
||||
var r int
|
||||
switch d := ct[i]-'0'; d {
|
||||
case r2d:
|
||||
r = 2
|
||||
case r3d:
|
||||
r = 3
|
||||
default:
|
||||
pt += string(row[1][cx[d]])
|
||||
continue
|
||||
}
|
||||
i++
|
||||
if b := row[r][cx[ct[i]-'0']]; b == '/' {
|
||||
i++
|
||||
pt += string(ct[i])
|
||||
} else {
|
||||
pt += string(b)
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue