private async void RunAlgorithm(IInputService input) { _pause = false; if (_mapInput.Map == null) { MessageBox.Show("Nie wczytano mapy."); return; } if (_input == null || _algorithm == null || _input != input) { _input = input; _algorithm = new AlgorithmLogic(input, _mapInput.Map); } IOutputService output; while (!_algorithm.IsFinished() && !_pause) { output = await Task.Run(() => { return(_algorithm.Execute()); }); UpdateState(output); await Task.Delay(_delay); } //ustawiane na nulla, żeby przy kolejnym uruchomieniu pełnego algorytmu podał nowe dane z interfejsu w konstruktorze if (!_pause) { _algorithm = null; } }
public static List <Measurement> Estimate(IAlgorithm algorithm, int beginValues, int endValues, int step, int repetitionsCount, IАveragerResults averageResult) { var measurements = new List <Measurement>(); var data = new long[repetitionsCount]; var memories = new long[repetitionsCount]; var stopwatch = new Stopwatch(); for (var number = beginValues; number <= endValues; number += step) { for (var repetition = 0; repetition < repetitionsCount; repetition++) { algorithm.Prepare(number); stopwatch.Start(); algorithm.Execute(); memories[repetition] = Process.GetCurrentProcess().WorkingSet64; stopwatch.Stop(); data[repetition] = stopwatch.ElapsedMilliseconds; stopwatch.Reset(); } measurements.Add(new Measurement { Size = number, Time = averageResult.Calculate(data), Memory = (double)averageResult.Calculate(memories) / (1024 * 1024) }); } return(measurements); }
static void Main(string[] args) { IAlgorithm algorithm = GetAlgorithm("FirstNonrptnChar_EquilibruimIndex_CommonPrefix"); algorithm.Execute(); //Console.WriteLine("value" + val); }
/// <summary> /// Запускает исполнение алгоритма обработки файла /// </summary> /// <param name="sourceFilePath">Исходный файл (сжимаемый)</param> /// <param name="targetFilePath">Результирующий файл (сжатый)</param> public void Handle(string sourceFilePath, string targetFilePath) { //Вообще, в декомпозиции можно было пойти и дальше. //Алгоритм однотипен - прочитать с диска, сжать/разжать и записать на диск. //Можно было бы применить стратегию непосредственно к классам FileReader, FileCompressor (переименовать его), FileWriter. //Но это усложнило бы код. Цель - не максимальное дробление классов, а сокрытие внутренней логики работы обработчика файлов от внешнего пользователя. _algorithm.Execute(sourceFilePath, targetFilePath); }
//Should be handled as event trigger, for simplicity handled as event handler private void OnSelectionChanged(object sender, SelectionChangedEventArgs e) { if (e.AddedItems?.Count > 0) { IAlgorithm algo = e.AddedItems[0] as IAlgorithm; algo?.Execute(); } }
public TResult Execute(TInput input) { var sw = Stopwatch.StartNew(); var result = _algorithm.Execute(input); sw.Stop(); WriteTimeToFile(sw.ElapsedMilliseconds); return(result); }
public void Execute(IAlgorithm algorithm) { try { algorithm.Execute(); algorithm.Visualize(); } catch (ArgumentException e) { PrintErrorMessage(e.Message); Console.ReadKey(); } }
public virtual string Evaluate(string expression) { IList <string> tokens = Regex.Matches(expression, @"([A-Za-z])+|([0-9])+|([\\\]\[\/\.\,\!\@\#\$\%\^\&\*\+\-]){1}") .Cast <Match>() .Select(m => m.Value) .ToList <string>(); var result = solver.Execute(parser.Execute(cleaner.Execute(tokens))); StringBuilder resultString = new StringBuilder(); foreach (string token in result) { resultString.Append(token); } return(resultString.ToString()); }
private static void Check(string path, IAlgorithm algorithm) { var files = Directory.GetFiles(path); var inFiles = files.Where(x => x.Split('.').Last() == "in").ToArray(); var outFiles = files.Where(x => x.Split('.').Last() == "out").ToArray(); Console.WriteLine(algorithm.Name); for (int i = 0; i < inFiles.Length; i++) { var data = File.ReadAllText(inFiles[i]).Trim(); var expected = File.ReadAllText(outFiles[i]).Trim(); var actual = algorithm.Execute(data); Console.WriteLine($"{i + 1}. {actual == expected}"); } Console.WriteLine("-----------------------------------\n"); }