Skip to content

Instantly share code, notes, and snippets.

@klotzambein
Created September 14, 2017 07:19
Show Gist options
  • Save klotzambein/ca3e3ffe7787c4ef796df12bff8c8c98 to your computer and use it in GitHub Desktop.
Save klotzambein/ca3e3ffe7787c4ef796df12bff8c8c98 to your computer and use it in GitHub Desktop.
using System;
using System.Collections.Generic;
using System.Linq;
class MainClass {
public static Letter GetAlphabet(Letter code, Letter letter) {
return (Letter)(((int)code + (int)letter) % 26);
}
public static void Main (string[] args) {
var code = "INFO"
.ToUpper()
.Select(c => {
switch (c) {
case 'A': return Letter.A;
case 'B': return Letter.B;
case 'C': return Letter.C;
case 'D': return Letter.D;
case 'E': return Letter.E;
case 'F': return Letter.F;
case 'G': return Letter.G;
case 'H': return Letter.H;
case 'I': return Letter.I;
case 'J': return Letter.J;
case 'K': return Letter.K;
case 'L': return Letter.L;
case 'M': return Letter.M;
case 'N': return Letter.N;
case 'O': return Letter.O;
case 'P': return Letter.P;
case 'Q': return Letter.Q;
case 'R': return Letter.R;
case 'S': return Letter.S;
case 'T': return Letter.T;
case 'U': return Letter.U;
case 'V': return Letter.V;
case 'W': return Letter.W;
case 'X': return Letter.X;
case 'Y': return Letter.Y;
case 'Z': return Letter.Z;
default:
return Letter.None;
}
})
.Where(l => l != Letter.None)
.ToArray();
var text = "Lieberladysfirstalsjameslast";
var letters = text
.ToUpper()
.Select(c => {
switch (c) {
case 'A': return Letter.A;
case 'B': return Letter.B;
case 'C': return Letter.C;
case 'D': return Letter.D;
case 'E': return Letter.E;
case 'F': return Letter.F;
case 'G': return Letter.G;
case 'H': return Letter.H;
case 'I': return Letter.I;
case 'J': return Letter.J;
case 'K': return Letter.K;
case 'L': return Letter.L;
case 'M': return Letter.M;
case 'N': return Letter.N;
case 'O': return Letter.O;
case 'P': return Letter.P;
case 'Q': return Letter.Q;
case 'R': return Letter.R;
case 'S': return Letter.S;
case 'T': return Letter.T;
case 'U': return Letter.U;
case 'V': return Letter.V;
case 'W': return Letter.W;
case 'X': return Letter.X;
case 'Y': return Letter.Y;
case 'Z': return Letter.Z;
default:
return Letter.None;
}
})
.Where(l => l != Letter.None);
//Console.WriteLine("CODE="+code+"; TEXT=" + text);
var iCode = 0;
var encoded = letters
.Select(l => {
var newL = GetAlphabet(code[iCode], l);
iCode = (iCode + 1) % code.Length;
return newL;
});
foreach (var l in encoded)
Console.Write(l.ToString());
Console.WriteLine();
}
public enum Letter {
A = 0,
B = 1,
C = 2,
D = 3,
E = 4,
F = 5,
G = 6,
H = 7,
I = 8,
J = 9,
K = 10,
L = 11,
M = 12,
N = 13,
O = 14,
P = 15,
Q = 16,
R = 17,
S = 18,
T = 19,
U = 20,
V = 21,
W = 22,
X = 23,
Y = 24,
Z = 25,
None = 99,
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment