Обновить
0
0

Пользователь

Отправить сообщение

Если говорить просто об оптимизированном кодировании последовательности символов по этой таблице, то это можно было бы реализовать как-то вот так:

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());
	}
}

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность