34 lines
1016 B
Plaintext
34 lines
1016 B
Plaintext
beads 1 program 'Caesar cipher'
|
|
calc main_init
|
|
var str = "The five boxing wizards (🤖) jump quickly."
|
|
log "Plain: {str}"
|
|
str = Encrypt(str, 3)
|
|
log "Encrypted: {str}"
|
|
str = Decrypt(str, 3)
|
|
log "Decrypted: {str}"
|
|
|
|
// encrypt a string by shifting the letters over by a number of slots
|
|
// pass through any characters that are not in the Roman alphabet
|
|
calc Encrypt(
|
|
input:str --- string to encrypt
|
|
nshift --- number of characters to slide over
|
|
) : str --- encrypted string
|
|
|
|
var newStr = ""
|
|
loop from:1 to:str_len(input) count:myCount
|
|
var unicode : num = from_char(subset(input, from:myCount, len:1))
|
|
if unicode >= 65 and unicode <= 90
|
|
unicode = mod((unicode - 65 + nshift), 26) + 65
|
|
elif unicode >= 97 and unicode <= 122
|
|
unicode = mod((unicode - 97 + nshift), 26) + 97
|
|
newStr = newStr & to_char(unicode)
|
|
return newStr
|
|
|
|
// undo the encryption
|
|
calc Decrypt(
|
|
input:str
|
|
nshift
|
|
) : str
|
|
// we could also just shift by 26-nshift, same as going in reverse
|
|
return Encrypt(input, -nshift)
|