43 encode(plaintext:
string, diameter: number):
string {
44 const cols = Math.ceil(plaintext.length / diameter);
48 for (let c = 0; c < cols; c++) {
49 for (let r = 0; r < diameter; r++) {
50 const index = c + r * cols;
51 if (index < plaintext.length) {
52 result += plaintext[index];
65 decode(ciphertext:
string, diameter: number):
string {
66 const cols = Math.ceil(ciphertext.length / diameter);
67 const grid:
string[] = Array(diameter * cols).fill(
"");
71 for (let c = 0; c < cols; c++) {
72 for (let r = 0; r < diameter; r++) {
73 const index = c + r * cols;
74 if (pos < ciphertext.length) {
75 grid[index] = ciphertext[pos++];
81 return grid.join(
"").trimEnd();