Data update
This commit is contained in:
parent
61b93a2cd1
commit
5af6d93694
858 changed files with 20572 additions and 2082 deletions
|
|
@ -1,37 +1,36 @@
|
|||
identification division.
|
||||
program-id. caesar.
|
||||
data division.
|
||||
1 msg pic x(50)
|
||||
value "The quick brown fox jumped over the lazy dog.".
|
||||
1 offset binary pic 9(4) value 7.
|
||||
1 from-chars pic x(52).
|
||||
1 to-chars pic x(52).
|
||||
1 tabl.
|
||||
2 pic x(26) value "abcdefghijklmnopqrstuvwxyz".
|
||||
2 pic x(26) value "ABCDEFGHIJKLMNOPQRSTUVWXYZ".
|
||||
2 pic x(26) value "abcdefghijklmnopqrstuvwxyz".
|
||||
2 pic x(26) value "ABCDEFGHIJKLMNOPQRSTUVWXYZ".
|
||||
procedure division.
|
||||
begin.
|
||||
display msg
|
||||
perform encrypt
|
||||
display msg
|
||||
perform decrypt
|
||||
display msg
|
||||
stop run
|
||||
.
|
||||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. CAESAR.
|
||||
|
||||
encrypt.
|
||||
move tabl (1:52) to from-chars
|
||||
move tabl (1 + offset:52) to to-chars
|
||||
inspect msg converting from-chars
|
||||
to to-chars
|
||||
.
|
||||
DATA DIVISION.
|
||||
WORKING-STORAGE SECTION.
|
||||
01 MSG PIC X(50)
|
||||
VALUE "The quick brown fox jumped over the lazy dog.".
|
||||
01 OFFSET PIC 9(4) VALUE 7 USAGE BINARY.
|
||||
01 FROM-CHARS PIC X(52).
|
||||
01 TO-CHARS PIC X(52).
|
||||
01 TABL.
|
||||
02 PIC X(26) VALUE "abcdefghijklmnopqrstuvwxyz".
|
||||
02 PIC X(26) VALUE "ABCDEFGHIJKLMNOPQRSTUVWXYZ".
|
||||
02 PIC X(26) VALUE "abcdefghijklmnopqrstuvwxyz".
|
||||
02 PIC X(26) VALUE "ABCDEFGHIJKLMNOPQRSTUVWXYZ".
|
||||
|
||||
decrypt.
|
||||
move tabl (1 + offset:52) to from-chars
|
||||
move tabl (1:52) to to-chars
|
||||
inspect msg converting from-chars
|
||||
to to-chars
|
||||
.
|
||||
end program caesar.
|
||||
PROCEDURE DIVISION.
|
||||
BEGIN.
|
||||
DISPLAY MSG
|
||||
PERFORM ENCRYPT
|
||||
DISPLAY MSG
|
||||
PERFORM DECRYPT
|
||||
DISPLAY MSG
|
||||
STOP RUN.
|
||||
|
||||
ENCRYPT.
|
||||
MOVE TABL (1:52) TO FROM-CHARS
|
||||
MOVE TABL (1 + OFFSET:52) TO TO-CHARS
|
||||
INSPECT MSG CONVERTING FROM-CHARS TO TO-CHARS.
|
||||
|
||||
DECRYPT.
|
||||
MOVE TABL (1 + OFFSET:52) TO FROM-CHARS
|
||||
MOVE TABL (1:52) TO TO-CHARS
|
||||
INSPECT MSG CONVERTING FROM-CHARS TO TO-CHARS.
|
||||
|
||||
END PROGRAM CAESAR.
|
||||
|
|
|
|||
|
|
@ -1,86 +1,84 @@
|
|||
>>SOURCE FORMAT IS FREE
|
||||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. caesar-cipher.
|
||||
|
||||
ENVIRONMENT DIVISION.
|
||||
CONFIGURATION SECTION.
|
||||
REPOSITORY.
|
||||
FUNCTION encrypt
|
||||
FUNCTION decrypt
|
||||
.
|
||||
FUNCTION decrypt.
|
||||
|
||||
DATA DIVISION.
|
||||
WORKING-STORAGE SECTION.
|
||||
01 plaintext PIC X(50).
|
||||
01 offset PIC 99.
|
||||
|
||||
01 offset USAGE BINARY-CHAR.
|
||||
01 encrypted-str PIC X(50).
|
||||
|
||||
PROCEDURE DIVISION.
|
||||
DISPLAY "Enter a message to encrypt: " NO ADVANCING
|
||||
DISPLAY "Enter a message to encrypt: " WITH NO ADVANCING
|
||||
ACCEPT plaintext
|
||||
DISPLAY "Enter the amount to shift by: " NO ADVANCING
|
||||
DISPLAY "Enter the amount to shift by: " WITH NO ADVANCING
|
||||
ACCEPT offset
|
||||
|
||||
MOVE FUNCTION encrypt(offset, plaintext) TO encrypted-str
|
||||
MOVE encrypt(offset, plaintext) TO encrypted-str
|
||||
DISPLAY "Encrypted: " encrypted-str
|
||||
DISPLAY "Decrypted: " FUNCTION decrypt(offset, encrypted-str)
|
||||
.
|
||||
DISPLAY "Decrypted: " decrypt(offset, encrypted-str).
|
||||
|
||||
END PROGRAM caesar-cipher.
|
||||
|
||||
|
||||
IDENTIFICATION DIVISION.
|
||||
FUNCTION-ID. encrypt.
|
||||
|
||||
ENVIRONMENT DIVISION.
|
||||
CONFIGURATION SECTION.
|
||||
REPOSITORY.
|
||||
FUNCTION ALL INTRINSIC.
|
||||
|
||||
DATA DIVISION.
|
||||
LOCAL-STORAGE SECTION.
|
||||
01 i PIC 9(3).
|
||||
|
||||
01 a PIC 9(3).
|
||||
|
||||
01 i USAGE INDEX.
|
||||
01 a USAGE BINARY-CHAR.
|
||||
LINKAGE SECTION.
|
||||
01 offset PIC 99.
|
||||
01 offset USAGE BINARY-CHAR.
|
||||
01 str PIC X(50).
|
||||
|
||||
01 encrypted-str PIC X(50).
|
||||
|
||||
PROCEDURE DIVISION USING offset, str RETURNING encrypted-str.
|
||||
MOVE str TO encrypted-str
|
||||
PERFORM VARYING i FROM 1 BY 1 UNTIL i > FUNCTION LENGTH(str)
|
||||
IF encrypted-str (i:1) IS NOT ALPHABETIC OR encrypted-str (i:1) = SPACE
|
||||
PERFORM VARYING i FROM 1 BY 1 UNTIL i > LENGTH(str)
|
||||
IF str(i:1) IS NOT ALPHABETIC OR str(i:1) = SPACE
|
||||
MOVE str(i:1) TO encrypted-str(i:1)
|
||||
EXIT PERFORM CYCLE
|
||||
END-IF
|
||||
|
||||
IF encrypted-str (i:1) IS ALPHABETIC-UPPER
|
||||
MOVE FUNCTION ORD("A") TO a
|
||||
IF str(i:1) IS ALPHABETIC-UPPER
|
||||
MOVE ORD("A") TO a
|
||||
ELSE
|
||||
MOVE FUNCTION ORD("a") TO a
|
||||
MOVE ORD("a") TO a
|
||||
END-IF
|
||||
|
||||
MOVE FUNCTION CHAR(FUNCTION MOD(FUNCTION ORD(encrypted-str (i:1))
|
||||
- a + offset, 26) + a)
|
||||
TO encrypted-str (i:1)
|
||||
MOVE CHAR(MOD(ORD(str(i:1)) - a + offset, 26) + a)
|
||||
TO encrypted-str(i:1)
|
||||
END-PERFORM
|
||||
.
|
||||
EXIT FUNCTION.
|
||||
|
||||
END FUNCTION encrypt.
|
||||
|
||||
|
||||
IDENTIFICATION DIVISION.
|
||||
FUNCTION-ID. decrypt.
|
||||
|
||||
ENVIRONMENT DIVISION.
|
||||
CONFIGURATION SECTION.
|
||||
REPOSITORY.
|
||||
FUNCTION encrypt
|
||||
.
|
||||
FUNCTION encrypt.
|
||||
|
||||
DATA DIVISION.
|
||||
LOCAL-STORAGE SECTION.
|
||||
01 decrypt-offset PIC 99.
|
||||
|
||||
01 decrypt-offset USAGE BINARY-CHAR.
|
||||
LINKAGE SECTION.
|
||||
01 offset PIC 99.
|
||||
01 offset USAGE BINARY-CHAR.
|
||||
01 str PIC X(50).
|
||||
|
||||
01 decrypted-str PIC X(50).
|
||||
|
||||
PROCEDURE DIVISION USING offset, str RETURNING decrypted-str.
|
||||
SUBTRACT 26 FROM offset GIVING decrypt-offset
|
||||
MOVE FUNCTION encrypt(decrypt-offset, str) TO decrypted-str
|
||||
.
|
||||
SUBTRACT offset FROM 26 GIVING decrypt-offset
|
||||
MOVE encrypt(decrypt-offset, str) TO decrypted-str
|
||||
EXIT FUNCTION.
|
||||
|
||||
END FUNCTION decrypt.
|
||||
|
|
|
|||
|
|
@ -10,37 +10,37 @@ const int Key = 12;
|
|||
|
||||
class Encrypting : Enumerator
|
||||
{
|
||||
int theKey;
|
||||
Enumerator theEnumerator;
|
||||
int _key;
|
||||
Enumerator _enumerator;
|
||||
|
||||
constructor(int key, string text)
|
||||
{
|
||||
theKey := key;
|
||||
theEnumerator := text.enumerator();
|
||||
_key := key;
|
||||
_enumerator := text.enumerator();
|
||||
}
|
||||
|
||||
bool next() => theEnumerator;
|
||||
bool next() => _enumerator;
|
||||
|
||||
reset() => theEnumerator;
|
||||
reset() => _enumerator;
|
||||
|
||||
enumerable() => theEnumerator;
|
||||
enumerable() => _enumerator;
|
||||
|
||||
get()
|
||||
get Value()
|
||||
{
|
||||
var ch := theEnumerator.get();
|
||||
var ch := *_enumerator;
|
||||
|
||||
var index := Letters.indexOf(0, ch);
|
||||
|
||||
if (-1 < index)
|
||||
{
|
||||
^ Letters[(theKey+index).mod:26]
|
||||
^ Letters[(_key+index).mod:26]
|
||||
}
|
||||
else
|
||||
{
|
||||
index := BigLetters.indexOf(0, ch);
|
||||
if (-1 < index)
|
||||
{
|
||||
^ BigLetters[(theKey+index).mod:26]
|
||||
^ BigLetters[(_key+index).mod:26]
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
16
Task/Caesar-cipher/GW-BASIC/caesar-cipher.basic
Normal file
16
Task/Caesar-cipher/GW-BASIC/caesar-cipher.basic
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
10 REM Caesar cipher
|
||||
20 CLS
|
||||
30 DEC$ = ""
|
||||
40 TYPE$ = "cleartext "
|
||||
50 PRINT "If decrypting enter "+"<d> "+" -- else press enter "; : INPUT DEC$
|
||||
60 INPUT "Enter offset > "; IOFFSET
|
||||
70 IF DEC$ = "d" THEN IOFFSET = 26-IOFFSET: TYPE$ = "ciphertext "
|
||||
110 PRINT "Enter "+TYPE$+"> ";
|
||||
120 INPUT CAD$
|
||||
140 LONGITUD = LEN(CAD$)
|
||||
150 FOR I = 1 TO LONGITUD
|
||||
160 ITEMP = ASC(MID$(CAD$,I,1))
|
||||
170 IF ITEMP > 64 AND ITEMP < 91 THEN ITEMP = ((ITEMP-65)+IOFFSET) MOD 26 : PRINT CHR$(ITEMP+65); : ELSE PRINT CHR$(ITEMP);
|
||||
230 NEXT I
|
||||
240 PRINT
|
||||
250 END
|
||||
21
Task/Caesar-cipher/Koka/caesar-cipher.koka
Normal file
21
Task/Caesar-cipher/Koka/caesar-cipher.koka
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
fun encode(s : string, shift : int)
|
||||
fun encode-char(c)
|
||||
if c < 'A' || (c > 'Z' && c < 'a') || c > 'z' return c
|
||||
val base = if c < 'Z' then (c - 'A').int else (c - 'a').int
|
||||
val rot = (base + shift) % 26
|
||||
(rot.char + (if c < 'Z' then 'A' else 'a'))
|
||||
s.map(encode-char)
|
||||
|
||||
fun decode(s: string, shift: int)
|
||||
s.encode(0 - shift)
|
||||
|
||||
fun trip(s: string, shift: int)
|
||||
s.encode(shift).decode(shift)
|
||||
|
||||
fun main()
|
||||
"HI".encode(2).println
|
||||
"HI".encode(20).println
|
||||
"HI".trip(10).println
|
||||
val enc = "The quick brown fox jumped over the lazy dog".encode(11)
|
||||
enc.println
|
||||
enc.decode(11).println
|
||||
32
Task/Caesar-cipher/True-BASIC/caesar-cipher.basic
Normal file
32
Task/Caesar-cipher/True-BASIC/caesar-cipher.basic
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
LET dec$ = ""
|
||||
LET tipo$ = "cleartext "
|
||||
|
||||
PRINT "If decrypting enter 'd' -- else press enter ";
|
||||
INPUT dec$
|
||||
PRINT "Enter offset ";
|
||||
INPUT llave
|
||||
|
||||
IF dec$ = "d" THEN
|
||||
LET llave = 26 - llave
|
||||
LET tipo$ = "ciphertext "
|
||||
END IF
|
||||
|
||||
PRINT "Enter "; tipo$;
|
||||
INPUT cadena$
|
||||
|
||||
LET cadena$ = UCASE$(cadena$)
|
||||
LET longitud = LEN(cadena$)
|
||||
|
||||
FOR i = 1 TO longitud
|
||||
!LET iTemp = ASC(MID$(cadena$,i,1)) 'QBasic
|
||||
LET itemp = ORD((cadena$)[i:i+1-1][1:1]) !'True BASIC
|
||||
|
||||
IF iTemp > 64 AND iTemp < 91 THEN
|
||||
!LET iTemp = ((iTemp - 65) + llave) MOD 26 'QBasic
|
||||
LET iTemp = MOD(((iTemp - 65) + llave), 26) !'True BASIC
|
||||
PRINT CHR$(iTemp + 65);
|
||||
ELSE
|
||||
PRINT CHR$(iTemp);
|
||||
END IF
|
||||
NEXT i
|
||||
END
|
||||
Loading…
Add table
Add a link
Reference in a new issue