RosettaCodeData/Task/Vigen-re-cipher/Lambdatalk/vigen-re-cipher.lambdatalk
2023-07-01 13:44:08 -04:00

22 lines
688 B
Text

{def vigenere
{def vigenere.map
{lambda {:code :key :txt}
{S.map
{{lambda {:code :txt :key :i}
{W.code2char
{+ {% {+ {W.char2code {W.get :i :txt}}
{if :code
then {W.char2code {W.get {% :i {W.length :key}} :key}}
else {- 26 {W.char2code {W.get {% :i {W.length :key}} :key}}} }}
26}
65}} } :code :txt :key}
{S.serie 0 {- {W.length :txt} 1}}} }}
{lambda {:code :key :txt}
{S.replace \s by in {vigenere.map :code :key {S.replace \s by in :txt}}} }}
-> vigenere
1) encode: {vigenere true LEMON ATTACK AT DAWN}
-> LXFOPVEFRNHR
2) decode: {vigenere false LEMON LXFOPVEFRNHR}
-> ATTACKATDAWN