using System.Collections.Generic;
using System.Threading.Tasks;
namespace Message_in_a_bottle
private static Dictionary<string, char> decoder = new Dictionary<string, char>();
static void Main(string[] args)
string decodeSeq = "A1B12C11D2";
List<string> results = new List<string>();
CrackTheMessage(code, results);
private static void FillDecoder(string decodeSeq)
for (int i = 0; i < decodeSeq.Length; i++)
if (decodeSeq[i] >= 'A' && decodeSeq[i] <= 'Z')
for (int j = i + 1; j < decodeSeq.Length && (decodeSeq[j] >= '0' && decodeSeq[j] <= '9'); j++)
letterCode = string.Concat(letterCode, decodeSeq[j]);
decoder.Add(letterCode, ch);
if (i + n < decodeSeq.Length - 1)
private static void Print(List<string> lt)
Console.WriteLine(lt.Count);
private static bool IsLetterCode(string s)
return decoder.ContainsKey(s);
private static void CrackTheMessage(string code, List<string> possibleResults, string taken = "")
string singleResult = "";
for (int i = 1; i <= code.Length; i++)
string strToCheck = code.Substring(0, i);
string sub = code.Substring(i);
if (IsLetterCode(strToCheck) )
singleResult += decoder[strToCheck];
CrackTheMessage(sub, possibleResults, strToCheck);