public static bool TestForBWT() { bool result = true; string testString = "каркаркар"; BWTransformedString transformedString = BWTransformation(testString); if (transformedString.transformedString != "кккрррааа") { result = false; } if (testString != ReverseBWT(transformedString)) { result = false; } return(result); }
public static string ReverseBWT(BWTransformedString transformedString) { var numerationArray = GetNumeration(transformedString.transformedString); string resultStr = ""; int currentIndex = transformedString.lastSymbolPosition; for (int i = 0; i < transformedString.transformedString.Length; i++) { resultStr += transformedString.transformedString[currentIndex]; currentIndex = numerationArray[currentIndex]; } var charArrayOfString = resultStr.ToCharArray(); Array.Reverse(charArrayOfString); return(new string(charArrayOfString)); }