Chaocipher: Difference between revisions
no edit summary
No edit summary |
No edit summary |
||
Line 12:
=={{header|Ada}}==
This solution uses array slices to permute the left and right strings. Use of slices clarifies the looping logic.
Ada strings are indexed with the predefined subtype Positive which begins at 1.
<lang Ada>
with Ada.Text_IO; use Ada.Text_IO;
procedure
type iMode is (Encrypt, Decrypt);
Line 24 ⟶ 25:
ciphertext : String (1 .. plaintext'length);
plaintext2 : String (1 .. plaintext'length);
offset : Natural;
function IndexOf (Source : String; Value : Character) return Positive is
Line 64 ⟶ 66:
-- permute left
-- The array value permutations are performed using array slices
-- rather than explicit loops
temp (1 .. offset + 1) := left (index .. index + offset);
temp (
temp (
-- permute right
-- The array value permutations are performed using array slices
-- rather than explicit loops
if index > 1 then
temp (1 .. offset + 1) := right (index .. index + offset);
temp (offset + 2 .. 26) := right (1 .. index - 1);
store := temp (1);
temp (1 .. 25) := temp (2 .. 26);
temp (26) := store;
store := temp (3);
temp (3 .. 13) := temp (4 .. 14);
temp (14) := store;
right := temp;
end if;
end loop;
Line 102 ⟶ 105:
end Exec;
begin
Put_Line ("The original text is : " & plaintext);
Line 115 ⟶ 117:
New_Line;
Put_Line ("The recovered plaintext is : " & plaintext2);
end
</lang>
{{output}}
Line 124 ⟶ 126:
HXUCZVAMDSLKPEFJRIGTWOBNYQ PTLNBQDEOYSFAVZKGJRIHWXUMC
ONYQHXUCZVAMDBSLKPEFJRIGTW XUCPTLNBQDEOYMSFAVZKGJRIHW
ADBSLKPEFJRIGMTWONYQHXUCZV OYSFAVZKGJRIHMWXUCPTLNBQDE
HUCZVADBSLKPEXFJRIGMTWONYQ NBDEOYSFAVZKGQJRIHMWXUCPTL
QUCZVADBSLKPEHXFJRIGMTWONY NBEOYSFAVZKGQDJRIHMWXUCPTL
HFJRIGMTWONYQXUCZVADBSLKPE JRHMWXUCPTLNBIEOYSFAVZKGQD
CVADBSLKPEHFJZRIGMTWONYQXU YSAVZKGQDJRHMFWXUCPTLNBIEO
NQXUCVADBSLKPYEHFJZRIGMTWO BIOYSAVZKGQDJERHMFWXUCPTLN
YHFJZRIGMTWONEQXUCVADBSLKP RHFWXUCPTLNBIMOYSAVZKGQDJE
NQXUCVADBSLKPEYHFJZRIGMTWO MOSAVZKGQDJERYHFWXUCPTLNBI
XCVADBSLKPEYHUFJZRIGMTWONQ AVKGQDJERYHFWZXUCPTLNBIMOS
TONQXCVADBSLKWPEYHUFJZRIGM IMSAVKGQDJERYOHFWZXUCPTLNB
SKWPEYHUFJZRILGMTONQXCVADB RYHFWZXUCPTLNOBIMSAVKGQDJE
ZILGMTONQXCVARDBSKWPEYHUFJ LNBIMSAVKGQDJOERYHFWZXUCPT
JILGMTONQXCVAZRDBSKWPEYHUF LNIMSAVKGQDJOBERYHFWZXUCPT
RBSKWPEYHUFJIDLGMTONQXCVAZ RYFWZXUCPTLNIHMSAVKGQDJOBE
RBSKWPEYHUFJIDLGMTONQXCVAZ RYFWZXUCPTLNIHMSAVKGQDJOBE
UJIDLGMTONQXCFVAZRBSKWPEYH LNHMSAVKGQDJOIBERYFWZXUCPT
ILGMTONQXCFVADZRBSKWPEYHUJ MSVKGQDJOIBERAYFWZXUCPTLNH
DRBSKWPEYHUJIZLGMTONQXCFVA YFZXUCPTLNHMSWVKGQDJOIBERA
HJIZLGMTONQXCUFVADRBSKWPEY HMWVKGQDJOIBESRAYFZXUCPTLN
ILGMTONQXCUFVZADRBSKWPEYHJ VKQDJOIBESRAYGFZXUCPTLNHMW
XUFVZADRBSKWPCEYHJILGMTONQ SRYGFZXUCPTLNAHMWVKQDJOIBE
WCEYHJILGMTONPQXUFVZADRBSK NAMWVKQDJOIBEHSRYGFZXUCPTL
KCEYHJILGMTONWPQXUFVZADRBS NAWVKQDJOIBEHMSRYGFZXUCPTL
PXUFVZADRBSKCQEYHJILGMTONW RYFZXUCPTLNAWGVKQDJOIBEHMS
KQEYHJILGMTONCWPXUFVZADRBS WGKQDJOIBEHMSVRYFZXUCPTLNA
LMTONCWPXUFVZGADRBSKQEYHJI BEMSVRYFZXUCPHTLNAWGKQDJOI
The ciphertext is :
The recovered plaintext is : WELLDONEISBETTERTHANWELLSAID
|