Data update
This commit is contained in:
parent
5af6d93694
commit
796d366b97
455 changed files with 7413 additions and 1900 deletions
|
|
@ -1,5 +1,4 @@
|
|||
proc encr txt$ pw$ d . r$ .
|
||||
r$ = ""
|
||||
func$ encr txt$ pw$ d .
|
||||
txt$[] = strchars txt$
|
||||
for c$ in strchars pw$
|
||||
pw[] &= strcode c$ - 65
|
||||
|
|
@ -15,10 +14,10 @@ proc encr txt$ pw$ d . r$ .
|
|||
r$ &= strchar c
|
||||
.
|
||||
.
|
||||
return r$
|
||||
.
|
||||
s$ = "Beware the Jabberwock, my son! The jaws that bite, the claws that catch!"
|
||||
pw$ = "VIGENERECIPHER"
|
||||
call encr s$ pw$ 1 r$
|
||||
print r$
|
||||
call encr r$ pw$ -1 r$
|
||||
r$ = encr s$ pw$ 1
|
||||
print r$
|
||||
print encr r$ pw$ -1
|
||||
|
|
|
|||
|
|
@ -1,16 +1,4 @@
|
|||
/// Caller owns the returned slice memory.
|
||||
fn vigenere(allocator: Allocator, text: []const u8, key: []const u8, encrypt: bool) Allocator.Error![]u8 {
|
||||
var dynamic_string = std.ArrayList(u8).init(allocator);
|
||||
var key_index: usize = 0;
|
||||
for (text) |letter| {
|
||||
const c = if (std.ascii.isLower(letter)) std.ascii.toUpper(letter) else letter;
|
||||
if (std.ascii.isUpper(c)) {
|
||||
const k = key[key_index];
|
||||
const n = if (encrypt) ((c - 'A') + (k - 'A')) else 26 + c - k;
|
||||
try dynamic_string.append(n % 26 + 'A'); // A-Z
|
||||
key_index += 1;
|
||||
key_index %= key.len;
|
||||
}
|
||||
}
|
||||
return dynamic_string.toOwnedSlice();
|
||||
}
|
||||
const Vigenere = enum {
|
||||
encode,
|
||||
decode,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,22 +1,22 @@
|
|||
pub fn main() anyerror!void {
|
||||
// allocator
|
||||
// ------------------------------------------ allocator
|
||||
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
|
||||
defer {
|
||||
const ok = gpa.deinit();
|
||||
std.debug.assert(ok == .ok);
|
||||
}
|
||||
const allocator = gpa.allocator();
|
||||
//
|
||||
// --------------------------------------------- stdout
|
||||
const stdout = std.io.getStdOut().writer();
|
||||
//
|
||||
// ----------------------------------------------------
|
||||
const key = "VIGENERECIPHER";
|
||||
const text = "Beware the Jabberwock, my son! The jaws that bite, the claws that catch!";
|
||||
|
||||
const encoded = try vigenere(allocator, text, key, true);
|
||||
const encoded = try vigenere(allocator, text, key, .encode);
|
||||
defer allocator.free(encoded);
|
||||
try stdout.print("{s}\n", .{encoded});
|
||||
|
||||
const decoded = try vigenere(allocator, encoded, key, false);
|
||||
const decoded = try vigenere(allocator, encoded, key, .decode);
|
||||
defer allocator.free(decoded);
|
||||
try stdout.print("{s}\n", .{decoded});
|
||||
}
|
||||
|
|
|
|||
19
Task/Vigen-re-cipher/Zig/vigen-re-cipher-4.zig
Normal file
19
Task/Vigen-re-cipher/Zig/vigen-re-cipher-4.zig
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
/// Caller owns the returned slice memory.
|
||||
fn vigenere(allocator: Allocator, text: []const u8, key: []const u8, mode: Vigenere) Allocator.Error![]u8 {
|
||||
var dynamic_string = std.ArrayList(u8).init(allocator);
|
||||
var key_index: usize = 0;
|
||||
for (text) |letter| {
|
||||
const c = if (std.ascii.isLower(letter)) std.ascii.toUpper(letter) else letter;
|
||||
if (std.ascii.isUpper(c)) {
|
||||
const k = key[key_index];
|
||||
const n = switch (mode) {
|
||||
.encode => ((c - 'A') + (k - 'A')),
|
||||
.decode => 26 + c - k,
|
||||
};
|
||||
try dynamic_string.append(n % 26 + 'A'); // A-Z
|
||||
key_index += 1;
|
||||
key_index %= key.len;
|
||||
}
|
||||
}
|
||||
return dynamic_string.toOwnedSlice();
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue