Skip to content

Instantly share code, notes, and snippets.

@nasustim
Created August 21, 2022 03:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nasustim/e720bc4c4a8337eacf31117a8f7b1b29 to your computer and use it in GitHub Desktop.
Save nasustim/e720bc4c4a8337eacf31117a8f7b1b29 to your computer and use it in GitHub Desktop.
package rotxiii
func Decode(src string) string {
SHIFT_LENGTH := 13
ALPHABET_LENGTH := 26
SKIP_SEQUENCES := []byte{' ', '.'}
b := []byte(src)
r := make([]byte, len(src))
for i, _ := range r {
hitSkipSeq := false
for _, ss := range SKIP_SEQUENCES {
if b[i] == ss {
hitSkipSeq = true
r[i] = ss
break
}
}
if hitSkipSeq {
continue
}
var limitSeq []byte
if 'A' <= b[i] && b[i] <= 'Z' {
limitSeq = []byte{'A', 'Z'}
} else {
limitSeq = []byte{'a', 'z'}
}
decc := b[i] - byte(SHIFT_LENGTH)
if !(limitSeq[0] <= decc && decc <= limitSeq[1]) {
decc += byte(ALPHABET_LENGTH)
}
r[i] = decc
}
return string(r)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment