Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
68
Task/Caesar-cipher/Lambdatalk/caesar-cipher.lambdatalk
Normal file
68
Task/Caesar-cipher/Lambdatalk/caesar-cipher.lambdatalk
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
{def caesar
|
||||
|
||||
{def caesar.alphabet {A.split ABCDEFGHIJKLMNOPQRSTUVWXYZ}}
|
||||
|
||||
{def caesar.delta
|
||||
{lambda {:s :i :a}
|
||||
{A.get {% {+ {A.in? {A.get :i :a} {caesar.alphabet}} 26 :s} 26}
|
||||
{caesar.alphabet}}}}
|
||||
|
||||
{def caesar.loop
|
||||
{lambda {:s :a :b :n :i}
|
||||
{if {> :i :n}
|
||||
then :b
|
||||
else {caesar.r :s
|
||||
:a
|
||||
{A.set! :i {caesar.delta :s :i :a} :b}
|
||||
:n
|
||||
{+ :i 1}} }}}
|
||||
|
||||
{lambda {:shift :txt}
|
||||
{let { {:s :shift}
|
||||
{:t {S.replace [^A-Z] by in :txt}} }
|
||||
{A.join {caesar.loop :s
|
||||
{A.split :t}
|
||||
{A.new}
|
||||
{- {W.length :t} 1}
|
||||
0 }}}}}
|
||||
-> caesar
|
||||
|
||||
|
||||
{def text VENI, VIDI, VICI}
|
||||
-> text
|
||||
{S.map {lambda {:i} {br}:i: {caesar :i {text}}}
|
||||
{S.serie 0 26}}
|
||||
->
|
||||
|
||||
0: VENIVIDIVICI
|
||||
1: WFOJWJEJWJDJ
|
||||
2: XGPKXKFKXKEK
|
||||
3: YHQLYLGLYLFL
|
||||
...
|
||||
23: SBKFSFAFSFZF
|
||||
24: TCLGTGBGTGAG
|
||||
25: UDMHUHCHUHBH
|
||||
26: VENIVIDIVICI
|
||||
|
||||
As a shorter alternative:
|
||||
|
||||
{def CAESAR
|
||||
{def CAESAR.rot
|
||||
{lambda {:shift :txt :alpha :i}
|
||||
{A.get {% {+ {A.in? {A.get :i :txt} :alpha} 26 :shift} 26}
|
||||
:alpha}}}
|
||||
{def CAESAR.loop
|
||||
{lambda {:shift :txt :alpha}
|
||||
{S.map {CAESAR.rot :shift :txt :alpha}
|
||||
{S.serie 0 {- {A.length :txt} 1}}} }}
|
||||
{lambda {:shift :txt}
|
||||
{S.replace \s by in
|
||||
{CAESAR.loop :shift
|
||||
{A.split {S.replace \s by in :txt}}
|
||||
{A.split ABCDEFGHIJKLMNOPQRSTUVWXYZ}} }}}
|
||||
-> CAESAR
|
||||
|
||||
{CAESAR 1 VENI VIDI VICI}
|
||||
-> WFOJWJEJWJDJ
|
||||
{CAESAR 25 WFOJWJEJWJDJ}
|
||||
-> VENIVIDIVICI
|
||||
Loading…
Add table
Add a link
Reference in a new issue