public static void Main(string[] args) { var data = new BigList<char>(); Console.WriteLine("Give commands in format commans|value1|value2... etc"); var line = Console.ReadLine(); while (line != "Exit") { var tokens = line.Split('|').Select(c => c.Trim()).ToList(); var command = tokens[0]; switch (command) { case "Insert": if (tokens.Count != 2) { throw new ArgumentException("Invalid command format!"); } data.AddRangeToFront(tokens[1].ToCharArray()); Console.WriteLine("OK"); break; case "Append": if (tokens.Count != 2) { throw new ArgumentException("Invalid command format!"); } data.AddRange(tokens[1].ToCharArray()); Console.WriteLine("OK"); break; case "Delete": if (tokens.Count != 3) { throw new ArgumentException("Invalid command format!"); } data.RemoveRange(int.Parse(tokens[1]), int.Parse(tokens[2])); Console.WriteLine("OK"); break; case "Print": if (tokens.Count != 1) { throw new ArgumentException("Invalid command format!"); } foreach (var ch in data) { Console.Write(ch); } Console.WriteLine(); break; } line = Console.ReadLine(); } }
internal void GetAreasUsed(BigList <long> list) { list.Add(startArea.Id); list.Add(indexHeaderPointer); foreach (var block in indexBlocks) { list.Add(block.StartOffset); long[] blockPointers = block.GetBlockPointers(); list.AddRange(blockPointers); } }
//Concat with Biglist public void BigListConcatReadStrings() { //Lists to calculate averages. List <int> lengths = new List <int>(); List <double> memallocs = new List <double>(); List <double> runtimes = new List <double>(); // Metadata information. structureName = "BigList"; for (int i = 0; i < fNumReplications; i++) { for (int j = 0; j < fNumIterations; j++) { //Get memory pre-operation. memStart = GC.GetTotalMemory(true); // Start stopwatch. sw.Reset(); sw.Start(); // Create new BigList BigList <char> combinedBL = new BigList <char>(warPeace); //Convert foxSentence to charArray and .Add foxlist to BigList for concat. combinedBL.AddRange(foxSentence); //Time Stop sw.Stop(); // Get Memory after operation. memEnd = GC.GetTotalMemory(false); Console.WriteLine("Start {0} End {1}", memStart, memEnd); //Calculate total memory. memUsed = memEnd - memStart; //Console.WriteLine(memUsed); // Append values to each list. lengths.Add(combinedBL.Count); memallocs.Add(memUsed); runtimes.Add(sw.ElapsedMilliseconds); } // Print results Console.WriteLine("Length of new BigList: " + lengths.Sum() / lengths.Count() + " characters" + "\nRuntime: " + runtimes.Sum() / lengths.Count() + " ms" + "\nMemory used: " + memallocs.Sum() / memallocs.Count() + " bytes"); } // Read Results. Console.ReadLine(); }
public static void Main() { var n = int.Parse(Console.ReadLine()); List <int> numbersToSwap = Console.ReadLine().Split(' ').Select(x => int.Parse(x)).ToList(); var collection = new BigList <int>(); for (int i = 0; i < n; i++) { collection.Add(i + 1); } for (int i = 0; i < numbersToSwap.Count; i++) { int currentNumber = numbersToSwap[i]; var currentIndex = 0; //for (int j = collection.Count - 1; j >= 0; j--) //{ // if (collection[j] == currentNumber) // { // currentIndex = j; // break; // } //} currentIndex = collection.IndexOf(currentNumber); var secondSub = collection.GetRange(currentIndex + 1, collection.Count - (currentIndex + 1)); var firstSub = collection.GetRange(0, currentIndex); collection.Clear(); collection.AddRange(secondSub); collection.Add(currentNumber); collection.AddRange(firstSub); } Console.WriteLine(string.Join(" ", collection)); }
public void Undo(string username) { if (!this.usersString.Contains(username)) { return; } var undoString = this.usersHistory.GetValue(username).Pop(); var newBigList = new BigList <char>(); newBigList.AddRange(undoString); this.usersString.Insert(username, newBigList); }
protected virtual IEnumerable <long> AddRange(long start, long end, IEnumerable <long> input) { var list = new BigList <long>((end - start) + 2); if (input != null) { list.AddRange(input); } for (var i = start; i <= end; ++i) { list.Add(i); } return(list); }
public static void Main(string[] args) { var data = new BigList <char>(); string input = Console.ReadLine(); while (input != "Exit") { var inputInfo = input.Split(' '); var command = inputInfo[0].Trim(); var dataToManipulate = inputInfo[1].Trim().ToCharArray(); switch (command) { case "INSERT": data.AddRangeToFront(dataToManipulate); Console.WriteLine("OK"); break; case "APPEND": data.AddRange(dataToManipulate); Console.WriteLine("OK"); break; case "DELETE": var index = int.Parse(inputInfo[2].Trim()); var count = int.Parse(inputInfo[3].Trim()); if (index < 0 || index >= data.Count || index + count >= data.Count) { Console.WriteLine("ERROR"); return; } data.RemoveRange(index, count); Console.WriteLine("OK"); break; case "Print": Console.WriteLine(string.Join("", data)); break; default: break; } } }
protected override IEnumerable <long> AddRange(long start, long end, IEnumerable <long> input) { var result = new BigList <long>(); if (input != null) { result.AddRange(input); } using (var en = list.GetEnumerator(start, end)) { while (en.MoveNext()) { result.Add(en.Current); } } return(result); }
private static void Main() { var rope = new BigList<char>(); string command = string.Empty; while (command != "PRINT") { var input = Console.ReadLine().Split(' '); command = input[0].ToUpper(); switch (command) { case "INSERT": var frontChars = input[1].Select(ch => ch); rope.AddRangeToFront(frontChars); Console.WriteLine("OK"); break; case "APPEND": var endChars = input[1].Select(ch => ch); rope.AddRange(endChars); Console.WriteLine("OK"); break; case "DELETE": int startIndex = int.Parse(input[1]); int count = int.Parse(input[2]); try { rope.RemoveRange(startIndex, count); Console.WriteLine("OK"); } catch (ArgumentOutOfRangeException) { Console.WriteLine("ERROR"); } break; case "PRINT": Console.WriteLine(string.Join(string.Empty, rope)); break; default: Console.WriteLine("Invalid command."); break; } } }
public static void Main() { BigList <char> editor = new BigList <char>(); string input = Console.ReadLine(); while (input != string.Empty) { var tokens = input.Split(' '); if (tokens[0] == "INSERT") { string inputString = tokens[1]; editor.AddRangeToFront(tokens[1].ToCharArray()); Console.WriteLine("OK"); } else if (tokens[0] == "APPEND") { editor.AddRange(tokens[1].ToCharArray()); Console.WriteLine("OK"); } else if (tokens[0] == "DELETE") { int startIndex = int.Parse(tokens[1]); int count = int.Parse(tokens[2]); editor.RemoveRange(startIndex, count); Console.WriteLine("OK"); } else if (tokens[0] == "PRINT") { Console.WriteLine(string.Join("", editor)); } else { Console.WriteLine("Uknown command."); } input = Console.ReadLine(); } }
public static void Main() { BigList <char> rope = new BigList <char>(); string command = Console.ReadLine(); while (!command.ToLower().Equals("print")) { string[] commandArgs = command.Split(); string comandType = commandArgs[0].ToLower(); if (comandType.Equals("insert")) { string str = commandArgs[1]; rope.InsertRange(0, str); Console.WriteLine("OK"); } else if (comandType.Equals("append")) { string str = commandArgs[1]; rope.AddRange(str); Console.WriteLine("OK"); } else if (comandType.Equals("delete")) { int index = int.Parse(commandArgs[1]); int count = int.Parse(commandArgs[2]); try { rope.RemoveRange(index, count); Console.WriteLine("OK"); } catch (ArgumentOutOfRangeException) { Console.WriteLine("ERROR"); } } command = Console.ReadLine(); } Console.WriteLine(string.Join("", rope)); }
public static void Main() { BigList <char> str = new BigList <char>(); while (true) { string[] input = Console.ReadLine().Split(' '); string command = input[0].ToLower(); switch (command) { case "insert": InsertString(str, input[1], int.Parse(input[2])); break; case "append": str.AddRange(input[1]); break; case "delete": str.RemoveRange(int.Parse(input[1]), int.Parse(input[2])); break; case "replace": ReplaceSubstring(str, int.Parse(input[1]), int.Parse(input[2]), input[3]); break; case "print": foreach (char ch in str) { Console.Write(ch); } break; default: Console.WriteLine("Invalid command, please try again"); break; } } }
private static bool AppendToRope(BigList<char> rope, string input) { var chars = input.ToCharArray(); rope.AddRange(chars); return true; }
private static void Append(BigList<char> rope, StringBuilder builder, string value) { rope.AddRange(value); builder.AppendLine("OK"); }
private static void ProcessData(string[] data) { switch (data[0].Trim().ToLower()) { case "insert": { string someString = data[1]; //content.InsertRange(0, someString.ToCharArray()); content.AddRangeToFront(someString.ToCharArray()); Console.WriteLine("Roger that"); } break; case "append": { string someString = data[1]; content.AddRange(someString.ToCharArray()); //someString.ToCharArray().ToList().ForEach(e => content.Add(e)); Console.WriteLine("Roger that"); } break; case "delete": { var intData = data[1].Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToArray(); if (intData.Count() == 2) { if (intData[0] + intData[1] < content.Count) { content.RemoveRange(intData[0], intData[1]); Console.WriteLine("Roger that"); } else { Console.WriteLine("ERROR. Please try again or press Enter to exit the program."); } } else { wrongCommandSyntax = true; } } break; case "replace": { var strData = data[1].Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).ToArray(); if (strData.Count() == 3) { int index = int.Parse(strData[0]); int length = int.Parse(strData[1]); if (index + length < content.Count) { content.RemoveRange(index, length); content.InsertRange(index, strData[2].ToCharArray()); Console.WriteLine("Roger that"); } else { Console.WriteLine("ERROR. Please try again or press Enter to exit the program."); } } else { wrongCommandSyntax = true; } } break; case "print": { content.ForEach(item => Console.Write(item)); Console.WriteLine(); } break; default: wrongCommandSyntax = true; break; } }
public static void Main(string[] args) { var text = new BigList<char> (); string input = " "; do { input = Console.ReadLine(); string command; string arguments; if( -1 != input.IndexOf( ' ' )) { command = input.Substring(0, input.IndexOf(' ')).ToLower(); arguments = input.Substring(input.IndexOf(' ')+1); } else { command = input; arguments = " "; } switch( command ) { case "append": text.AddRange(arguments.ToCharArray()); Console.WriteLine("OK"); break; case "insert": var pos = int.Parse(arguments.Substring(0, arguments.IndexOf(' '))); arguments = arguments.Substring(arguments.IndexOf(' ') + 1); try { text.InsertRange(pos, arguments); Console.WriteLine("OK"); } catch (Exception) { Console.WriteLine("ERROR"); } break; case "delete": var parts = arguments.Split( ' ' ); try { text.RemoveRange(int.Parse(parts[0]), int.Parse(parts[1])); Console.WriteLine("OK"); } catch(Exception) { Console.WriteLine("ERROR"); } break; case "replace": var replaceStart = int.Parse(arguments.Substring(0, arguments.IndexOf(' '))); arguments = arguments.Substring(arguments.IndexOf(' ')+1); var replaceCount = int.Parse(arguments.Substring(0, arguments.IndexOf(' '))); arguments = arguments.Substring(arguments.IndexOf(' ') + 1); try { text.RemoveRange(replaceStart, replaceCount); text.InsertRange(replaceStart, arguments.ToCharArray()); Console.WriteLine("OK"); } catch (Exception) { Console.WriteLine("ERROR"); } break; case "print": text.ForEach(Console.Write); Console.WriteLine (); break; } } while("end" != input.ToLower()); }
public static void Main(string[] args) { var data = new BigList <char>(); Console.WriteLine("Give commands in format commans|value1|value2... etc"); var line = Console.ReadLine(); while (line != "Exit") { var tokens = line.Split('|').Select(c => c.Trim()).ToList(); var command = tokens[0]; switch (command) { case "Insert": if (tokens.Count != 2) { throw new ArgumentException("Invalid command format!"); } data.AddRangeToFront(tokens[1].ToCharArray()); Console.WriteLine("OK"); break; case "Append": if (tokens.Count != 2) { throw new ArgumentException("Invalid command format!"); } data.AddRange(tokens[1].ToCharArray()); Console.WriteLine("OK"); break; case "Delete": if (tokens.Count != 3) { throw new ArgumentException("Invalid command format!"); } data.RemoveRange(int.Parse(tokens[1]), int.Parse(tokens[2])); Console.WriteLine("OK"); break; case "Print": if (tokens.Count != 1) { throw new ArgumentException("Invalid command format!"); } foreach (var ch in data) { Console.Write(ch); } Console.WriteLine(); break; } line = Console.ReadLine(); } }
public static void Main(string[] args) { var data = new BigList<char>(); var line = Console.ReadLine().Trim(); while (line != "Exit") { var tokens = line.Split('|').Select(c => c.Trim()).ToArray(); var command = tokens[0]; switch (command) { case "Insert": var possition = int.Parse(tokens[2]); if (possition > data.Count || possition < 0) { Console.WriteLine("Error"); } else { var insertData = tokens[1].ToCharArray(); data.InsertRange(possition, insertData); } break; case "Append": data.AddRange(tokens[1].ToCharArray()); break; case "Delete": var startIndex = int.Parse(tokens[1]); var count = int.Parse(tokens[2]); if (startIndex + count >= data.Count || startIndex < 0) { Console.WriteLine("Error"); } else { data.RemoveRange(startIndex, count); } break; case "Replace": var startPossition = int.Parse(tokens[1]); var replaceCount = int.Parse(tokens[2]); if (startPossition + replaceCount >= data.Count || startPossition < 0) { Console.WriteLine("Error"); } else { var replaceData = tokens[3].ToCharArray(); data.RemoveRange(startPossition, replaceCount); data.InsertRange(startPossition, replaceData); } break; case "Print": Console.WriteLine(string.Join("", data)); break; } line = Console.ReadLine().Trim(); } }
public StringEditor(string word = "") { Rope.AddRange(word.ToCharArray()); }
static void Main() { BigList <char> editor = new BigList <char>(); string input = Console.ReadLine(); Queue <string> output = new Queue <string>(); while (input != string.Empty) { var tokens = input.Split(' '); if (tokens[0] == "INSERT") { int startPosition = int.Parse(tokens[1]); string inputString = tokens[2]; if (startPosition < 0 || startPosition > editor.Count) { output.Enqueue("ERROR"); } else { editor.InsertRange(startPosition, inputString.ToCharArray()); output.Enqueue("OK"); } } else if (tokens[0] == "APPEND") { editor.AddRange(tokens[1].ToCharArray()); output.Enqueue("OK"); } else if (tokens[0] == "DELETE") { int startIndex = int.Parse(tokens[1]); int count = int.Parse(tokens[2]); if (startIndex < 0 || count < 0 || startIndex + count > editor.Count) { output.Enqueue("ERROR"); } else { editor.RemoveRange(startIndex, count); output.Enqueue("OK"); } } else if (tokens[0] == "REPLACE") { int startIndex = int.Parse(tokens[1]); int count = int.Parse(tokens[2]); string newString = tokens[3]; if (startIndex < 0 || count < 0 || startIndex + count > editor.Count) { output.Enqueue("ERROR"); } else { editor.RemoveRange(startIndex, count); editor.InsertRange(startIndex, newString); output.Enqueue("OK"); } } else if (tokens[0] == "PRINT") { output.Enqueue(string.Join("", editor)); } else if (tokens[0] == "END") { break; } else { output.Enqueue("Uknown command."); } input = Console.ReadLine(); } Console.WriteLine(); foreach (string outputLine in output) { Console.WriteLine(outputLine); } }
public static void Main(string[] args) { var data = new BigList <char>(); var line = Console.ReadLine().Trim(); while (line != "Exit") { var tokens = line.Split('|').Select(c => c.Trim()).ToArray(); var command = tokens[0]; switch (command) { case "Insert": var possition = int.Parse(tokens[2]); if (possition > data.Count || possition < 0) { Console.WriteLine("Error"); } else { var insertData = tokens[1].ToCharArray(); data.InsertRange(possition, insertData); } break; case "Append": data.AddRange(tokens[1].ToCharArray()); break; case "Delete": var startIndex = int.Parse(tokens[1]); var count = int.Parse(tokens[2]); if (startIndex + count >= data.Count || startIndex < 0) { Console.WriteLine("Error"); } else { data.RemoveRange(startIndex, count); } break; case "Replace": var startPossition = int.Parse(tokens[1]); var replaceCount = int.Parse(tokens[2]); if (startPossition + replaceCount >= data.Count || startPossition < 0) { Console.WriteLine("Error"); } else { var replaceData = tokens[3].ToCharArray(); data.RemoveRange(startPossition, replaceCount); data.InsertRange(startPossition, replaceData); } break; case "Print": Console.WriteLine(string.Join("", data)); break; } line = Console.ReadLine().Trim(); } }
static void Append(string[] args) { characters.AddRange(args[1]); }
static void Main() { var text = new BigList <char>(); while (true) { string commandParams = Console.ReadLine(); if (commandParams == "PRINT") { foreach (char symbol in text) { Console.Write(symbol); } Console.WriteLine(); continue; } if (commandParams == "END") { break; } string commandName = commandParams.Substring(0, commandParams.IndexOf(' ')).Trim(); char[] operand = commandParams.Substring(7).ToCharArray(); try { switch (commandName) { case "INSERT": string[] insertParams = new string(operand).Split(); int insertIndex = int.Parse(insertParams[0]); string textToInsert = insertParams[1]; text.InsertRange(insertIndex, textToInsert); break; case "APPEND": text.AddRange(operand); break; case "REPLACE": string[] replaceParams = new string(operand).Split(new [] { ' ' }, StringSplitOptions.RemoveEmptyEntries); int replaceIndex = int.Parse(replaceParams[0]); int replaceCount = int.Parse(replaceParams[1]); text.RemoveRange(replaceIndex, replaceCount); string replacement = replaceParams[2]; text.InsertRange(replaceIndex, replacement); break; case "DELETE": int[] deleteParams = new string(operand).Split().Select(int.Parse).ToArray(); int startIndex = deleteParams[0]; int count = deleteParams[1]; text.RemoveRange(startIndex, count); break; } Console.WriteLine("OK"); } catch (Exception) { Console.WriteLine("ERROR"); } } }
static void Main() { var text = new BigList<char>(); while (true) { string commandParams = Console.ReadLine(); if (commandParams == "PRINT") { foreach (char symbol in text) { Console.Write(symbol); } Console.WriteLine(); continue; } if (commandParams == "END") { break; } string commandName = commandParams.Substring(0, commandParams.IndexOf(' ')).Trim(); char[] operand = commandParams.Substring(7).ToCharArray(); try { switch (commandName) { case "INSERT": string[] insertParams = new string(operand).Split(); int insertIndex = int.Parse(insertParams[0]); string textToInsert = insertParams[1]; text.InsertRange(insertIndex, textToInsert); break; case "APPEND": text.AddRange(operand); break; case "REPLACE": string[] replaceParams = new string(operand).Split(new []{' '}, StringSplitOptions.RemoveEmptyEntries); int replaceIndex = int.Parse(replaceParams[0]); int replaceCount = int.Parse(replaceParams[1]); text.RemoveRange(replaceIndex, replaceCount); string replacement = replaceParams[2]; text.InsertRange(replaceIndex, replacement); break; case "DELETE": int[] deleteParams = new string(operand).Split().Select(int.Parse).ToArray(); int startIndex = deleteParams[0]; int count = deleteParams[1]; text.RemoveRange(startIndex, count); break; } Console.WriteLine("OK"); } catch (Exception) { Console.WriteLine("ERROR"); } } }