Solved
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace Caesar
{
class Program
{
static void Main(string[] args)
{
string Text = System.IO.File.ReadAllText(@"C:\Users\Grimswolf\Documents\Visual Studio 2015\Projects\Caesar\Caesar\Text\caesarShiftEncodedText.txt");
FileStream ostrm;
StreamWriter writer;
TextWriter oldOut = Console.Out;
try
{
ostrm = new FileStream(@"C:\Users\Grimswolf\Documents\Visual Studio 2015\Projects\Caesar\Caesar\Text\Shifted.txt", FileMode.OpenOrCreate, FileAccess.Write);
writer = new StreamWriter(ostrm);
}
catch (Exception e)
{
Console.WriteLine("Cannot open Redirect.txt for writing");
Console.WriteLine(e.Message);
return;
}
Console.SetOut(writer);
for (var i = 0; i < 27; i++)
{
Console.WriteLine("\n \n{0} \n \n {1}", i, Decrypt(Text, +i));
}
Console.SetOut(oldOut);
writer.Close();
ostrm.Close();
for (var i = 0; i < 27; i++)
{
Console.WriteLine("\n \n{0} \n \n {1}", i, Decrypt(Text, +i));
}
Console.WriteLine("Done");
Console.ReadLine();
}
public static string Decrypt(string caeserString, int move)
{
var ab =
Enumerable
.Concat(
Enumerable.Range((int)'a', 26),
Enumerable.Range((int)'A', 26))
.Select(i => (char)i)
.ToArray();
var map =
ab
.Zip(
ab.Concat(ab).Concat(ab).Skip(ab.Length + move),
(c0, c1) => new { c0, c1 })
.ToDictionary(x => x.c0, x => x.c1);
return String.Join("", caeserString.Select(x => map.ContainsKey(x) ? map[x] : x));
}
}
}