Пользователь
Если говорить просто об оптимизированном кодировании последовательности символов по этой таблице, то это можно было бы реализовать как-то вот так:
using System; using System.Collections.Generic; using System.Linq; using System.Text; class PolybiusSquare { public static IEnumerable<byte> Encrypt(string str) { int i = 0, strLen = str.Length; byte[] enc = new byte[strLen]; foreach (char c in str) { int n = Char.ToLower(c) - 'a'; if (n < 0 || n > 25) { continue; } if (n > 8) { --n; } enc[i] = (byte)((n / 5 + 1) * 10 + (n % 5 + 1)); ++i; } return enc.Take(i); } public static StringBuilder Decrypt(IEnumerable<byte> enc) { var dec = new StringBuilder(enc.Count()); foreach (byte b in enc) { int n = (b / 10 - 1) * 5 + (b % 10 - 1); if (n > 8) { ++n; } dec.Append((char)('a' + n)); } return dec; } public static void Main() { var str = "abcdefghijklmnopqrstuvwxyz"; Console.Write("str: {0}\nenc: ", str); var enc = Encrypt(str); foreach (byte b in enc) { Console.Write("{0} ", b); } var dec = Decrypt(enc); Console.WriteLine("\ndec: {0}", dec.ToString()); } }
Если говорить просто об оптимизированном кодировании последовательности символов по этой таблице, то это можно было бы реализовать как-то вот так: