public void TestInitializationOfBase() { var numberSystem = new NumberSystem(); numberSystem.InitializeBase(@"N:\Academics\BITS DLPD\DSA\Code\cs\NumberSystem\files\File1.txt"); Assert.AreEqual(8, numberSystem.NumberSystemBASE); Assert.AreEqual(numberSystem.NumberSystemBASE, numberSystem.SymbolNumberMap.Count()); }
public void ConversionFromBase10Test() { var numberSystem = new NumberSystem(); //numberSystem.InitializeBase(@"N:\Academics\BITS DLPD\DSA\Code\cs\NumberSystem\files\File1.txt"); //numberSystem.CreateNumbers(@"N:\Academics\BITS DLPD\DSA\Code\cs\NumberSystem\files\File2.txt"); //Assert.AreEqual(numberSystem.numbers.Count, 6); //numberSystem.numbers.ForEach(n => { var seq = ""; n.Sequence.ForEach(y => seq += y); Console.WriteLine(n.Radix + " " + seq); }); //Assert.AreEqual(8, numberSystem.NumberSystemBASE); //Assert.AreEqual(numberSystem.NumberSystemBASE, numberSystem.SymbolNumberMap.Count()); Assert.AreEqual("135",numberSystem.ConvertFromBase10(59,6)); }
/*Assumptions: * This system is based on the following assumptions. * 1. The numbers in the input file are all valid. Program doesnt check for validity * Validity means - if a number is of a valid base(base < the base of the system), * then it is expressed using symbols of that base only. * * 2.If any number is having a base greater than the base of the system, the system just shuts down. * 3.If any number is expressed using symbols which the system doesnt understand, the system just shuts down. * 4.If any of the file is not found in the given path, the system shuts down. * 5.This uses in-place partition method. * 6.The QuickSelect method has been exposed in two different ways. One is as per the problem statment and another is * just as QuickSelect(int k) as the instance of the numbersystem would have all other information like numbers[], size * */ //Sample execution commands /* * // Valid passes * mono NumberSystem.exe ./files/File1.txt ./files/File2.txt 3 ./files/File3.txt * O/P:Press enter to exit * mono NumberSystem.exe ./files/File1.txt ./files/File2.txt 1 ./files/File3.txt * mono NumberSystem.exe ./files/File1.txt ./files/File2.txt 2 ./files/File3.txt * // k > size/base of the number system * mono NumberSystem.exe ./files/File1.txt ./files/File2.txt 15 ./files/File3.txt * * //Invalid base detected * mono NumberSystem.exe ./files/File1.txt ./files/Fie2_Invalid_base.txt 3 ./files/File3.txt O/P : Base of input cant be greater than base of the system Press enter to exit * //Invalid characters detected * mono NumberSystem.exe ./files/File1.txt ./files/Fie2_Invalid_characters.txt 3 ./files/File3.txt O/P:Input sequence has some unrecognizable numbers Press enter to exit */ static void Main(string[] args) { string baseFilePath, numberFilePath, resultFilePath; int k; try { baseFilePath = args[0]; numberFilePath = args[1]; resultFilePath = args[3]; k = Int32.Parse(args[2]); NumberSystem numberSystem = new NumberSystem(); numberSystem.InitializeBase(baseFilePath); numberSystem.CreateNumbers(numberFilePath); if (k > numberSystem.numbers.Count) k = numberSystem.numbers.Count / 2; numberSystem.PrintNumber(resultFilePath, numberSystem.QuickSelect(k)); } catch (Exception e) { Console.WriteLine(e.Message); } Console.WriteLine("Press enter to exit"); Console.ReadKey(); }
public void Init(string numberFilePath = @"..\..\..\files\File2.txt") { numberSystem = new NumberSystem(); numberSystem.InitializeBase(@"..\..\..\files\File1.txt"); numberSystem.CreateNumbers(numberFilePath); }