RosettaCodeData/Task/Chaocipher/11l/chaocipher.11l

49 lines
1.4 KiB
Text
Raw Permalink Normal View History

2023-07-01 11:58:00 -04:00
F correct_case(string)
R string.filter(s -> s.is_alpha()).map(s -> s.uppercase()).join()
F permu(String alp; num)
R alp[num..]alp[0 .< num]
F rotate_wheels(lalph, ralph, key)
V newin = ralph.index(key)
R (permu(lalph, newin), permu(ralph, newin))
F scramble_wheels(String =lalph, String =ralph)
lalph = lalph[0]lalph[2.<14]lalph[1]lalph[14..]
ralph = ralph[1.<3]ralph[4.<15]ralph[3]ralph[15..]ralph[0]
R (lalph, ralph)
F do_chao(=msg, =lalpha, =ralpha, en = 1B, show = 0B)
msg = correct_case(msg)
V out =
I show
print(= * 54)
print((10 * )left:(21 * )right: )
print(= * 54)
print(lalpha ralpha" \n")
L(l) msg
I en
(lalpha, ralpha) = rotate_wheels(lalpha, ralpha, l)
out = lalpha[0]
E
(ralpha, lalpha) = rotate_wheels(ralpha, lalpha, l)
out = ralpha[0]
(lalpha, ralpha) = scramble_wheels(lalpha, ralpha)
I show
print(lalpha ralpha)
R out
V lalpha = HXUCZVAMDSLKPEFJRIGTWOBNYQ
V ralpha = PTLNBQDEOYSFAVZKGJRIHWXUMC
V msg = WELLDONEISBETTERTHANWELLSAID
print(L: lalpha)
print(R: ralpha)
print(I: msg)
V o = do_chao(msg, lalpha, ralpha, 1B, 0B)
print(O: o)
print(D: do_chao(o, lalpha, ralpha, 0B, 0B))
print()
do_chao(msg, lalpha, ralpha, 1B, 1B)