public void TestFindOccurences(string text, string pattern, int[] expectedOccurences) { var criticalPosition = pattern.GetFactorizations().PatternCriticalPosition; var period = PeriodCalculator.GetPeriod(pattern, pattern.Length); var sb = new StringBuilder(); var algorithm = new SuffixStringMatchingAlgorithm(sb, pattern, 0, pattern.Length, criticalPosition, period); var occurences = new List <int>(); for (var i = 0; i < text.Length; ++i) { sb.Append(text[i]); if (algorithm.CheckMatch(sb.Length)) { occurences.Add(i); } } Assert.That(occurences, Is.EquivalentTo(expectedOccurences)); }
private String GenerateBlobName(String Id, DateTimeOffset cycleDate) { DateTimeOffset periodStop, periodStart = PeriodCalculator.CalculatePeriodDates(m_period, cycleDate, 0, out periodStop); StringBuilder blobName = new StringBuilder(); String delimiter = m_delimiter[0]; switch (m_logOrder) { case PeriodBlobLogOrder.Id: blobName.Append(Id).Append(delimiter) .Append(ToYMD(periodStart)).Append(delimiter) .Append(ToYMD(periodStop)); break; case PeriodBlobLogOrder.Time: blobName.Append(ToYMD(periodStart)).Append(delimiter) .Append(ToYMD(periodStop)).Append(delimiter) .Append(Id); break; } return(blobName.Append(delimiter).ToString()); }
public StringMatchingAlgorithm([NotNull] StringBuilder text, [NotNull] string pattern, int startPosition) { var factorizations = pattern.GetFactorizations(); if (factorizations.PatternFactorizationIsGood()) { shift = 0; incompleteAlgorithm = null; completeAlgorithm = new GoodFactorizationStringMatchingAlgorithm(text, startPosition, pattern, pattern.Length, factorizations.PatternCriticalPosition, PeriodCalculator.GetPeriod(pattern, pattern.Length)); } else { shift = pattern.Length - factorizations.PrefixLength; incompleteAlgorithm = new SuffixStringMatchingAlgorithm(text, pattern, startPosition, pattern.Length, factorizations.PatternCriticalPosition, PeriodCalculator.GetPeriod(pattern, pattern.Length)); completeAlgorithm = new GoodFactorizationStringMatchingAlgorithm(text, startPosition, pattern, factorizations.PrefixLength, factorizations.PrefixCriticalPosition, PeriodCalculator.GetPeriod(pattern, factorizations.PrefixLength)); } }
public void TestPatternPeriod(string template, int expectedPeriod) { Assert.That(PeriodCalculator.GetPeriod(template, template.Length), Is.EqualTo(expectedPeriod)); }
static void Main(string[] args) { DateTime inicio1 = new DateTime(2008, 10, 29, 0, 0, 0); DateTime fin1 = new DateTime(2008, 10, 31, 0, 0, 0); DateTime inicio2 = new DateTime(2009, 03, 02, 0, 0, 0); DateTime fin2 = new DateTime(2010, 03, 03, 0, 0, 0); DateTime inicio3 = new DateTime(2010, 04, 19, 0, 0, 0); DateTime fin3 = new DateTime(2010, 04, 23, 0, 0, 0); DateTime inicio4 = new DateTime(2010, 05, 01, 0, 0, 0); DateTime fin4 = new DateTime(2018, 04, 02, 0, 0, 0); DateTime inicio5 = new DateTime(2018, 04, 03, 0, 0, 0); DateTime fin5 = new DateTime(2018, 09, 26, 0, 0, 0); DateTime inicioF = new DateTime(2000, 05, 05, 0, 0, 0); DateTime finF = new DateTime(2001, 05, 01, 0, 0, 0); Periodo resultado1 = PeriodCalculator.CalcularPeriodo(inicio1, fin1); Periodo resultado2 = PeriodCalculator.CalcularPeriodo(inicio2, fin2); Periodo resultado3 = PeriodCalculator.CalcularPeriodo(inicio3, fin3); Periodo resultado4 = PeriodCalculator.CalcularPeriodo(inicio4, fin4); Periodo resultado5 = PeriodCalculator.CalcularPeriodo(inicio5, fin5); Periodo resultadoF = PeriodCalculator.CalcularPeriodo(inicioF, finF); Periodo totalPeriodo = new Periodo(); totalPeriodo = PeriodCalculator.SumarPeriodos(resultado1, resultado2); totalPeriodo = PeriodCalculator.SumarPeriodos(totalPeriodo, resultado3); totalPeriodo = PeriodCalculator.SumarPeriodos(totalPeriodo, resultado4); Console.WriteLine("DESDE {0} HASTA {1} = {2}-{3}-{4} {5}:{6}:{7}", inicio1, fin1, resultado1.Years, resultado1.Months, resultado1.Days, resultado1.Hours, resultado1.Minutes, resultado1.Seconds); Console.WriteLine("DESDE {0} HASTA {1} = {2}-{3}-{4} {5}:{6}:{7}", inicio2, fin2, resultado2.Years, resultado2.Months, resultado2.Days, resultado2.Hours, resultado2.Minutes, resultado2.Seconds); Console.WriteLine("DESDE {0} HASTA {1} = {2}-{3}-{4} {5}:{6}:{7}", inicio3, fin3, resultado3.Years, resultado3.Months, resultado3.Days, resultado3.Hours, resultado3.Minutes, resultado3.Seconds); Console.WriteLine("DESDE {0} HASTA {1} = {2}-{3}-{4} {5}:{6}:{7}", inicio4, fin4, resultado4.Years, resultado4.Months, resultado4.Days, resultado4.Hours, resultado4.Minutes, resultado4.Seconds); Console.WriteLine("DESDE {0} HASTA {1} = {2}-{3}-{4} {5}:{6}:{7}", inicio5, fin5, resultado5.Years, resultado5.Months, resultado5.Days, resultado5.Hours, resultado5.Minutes, resultado5.Seconds); Console.WriteLine("-----------------------------------------------------------------"); Console.WriteLine("Total General = {0}-{1}-{2} {3}:{4}:{5}", totalPeriodo.Years, totalPeriodo.Months, totalPeriodo.Days, totalPeriodo.Hours, totalPeriodo.Minutes, totalPeriodo.Seconds); Console.WriteLine("-----------------------------------------------------------------"); Console.WriteLine("DESDE {0} HASTA {1} = {2}-{3}-{4} {5}:{6}:{7}", inicioF, finF, resultadoF.Years, resultadoF.Months, resultadoF.Days, resultadoF.Hours, resultadoF.Minutes, resultadoF.Seconds); Console.WriteLine("-----------------------------------------------------------------"); totalPeriodo = PeriodCalculator.SumarPeriodos(totalPeriodo, resultadoF); Console.WriteLine("Total General = {0}-{1}-{2} {3}:{4}:{5}", totalPeriodo.Years, totalPeriodo.Months, totalPeriodo.Days, totalPeriodo.Hours, totalPeriodo.Minutes, totalPeriodo.Seconds); //resultado1.AddDayDate(); //resultado2.AddDayDate(); //resultado3.AddDayDate(); //resultado4.AddDayDate(); //resultadoF.AddDayDate(); //long inicioEnSegundos1 = DateTimeCalculator.ToSeconds(inicio1); //long finEnSegundos1 = DateTimeCalculator.ToSeconds(fin1); //long inicioEnSegundos2 = DateTimeCalculator.ToSeconds(inicio2); //long finEnSegundos2 = DateTimeCalculator.ToSeconds(fin2); //long inicioEnSegundos3 = DateTimeCalculator.ToSeconds(inicio3); //long finEnSegundos3 = DateTimeCalculator.ToSeconds(fin3); //long inicioEnSegundos4 = DateTimeCalculator.ToSeconds(inicio4); //long finEnSegundos4 = DateTimeCalculator.ToSeconds(fin4); //long inicioEnSegundos5 = DateTimeCalculator.ToSeconds(inicio5); //long finEnSegundos5 = DateTimeCalculator.ToSeconds(fin5); //long inicioEnSegundosF = DateTimeCalculator.ToSeconds(inicioF); //long finEnSegundosF = DateTimeCalculator.ToSeconds(finF); //Periodo resultado1 = DateTimeCalculator.SecondsToDateTime(finEnSegundos1 + 86400 - inicioEnSegundos1); //Periodo resultado2 = DateTimeCalculator.SecondsToDateTime(finEnSegundos2 + 86400 - inicioEnSegundos2); //Periodo resultado3 = DateTimeCalculator.SecondsToDateTime(finEnSegundos3 + 86400 - inicioEnSegundos3); //Periodo resultado4 = DateTimeCalculator.SecondsToDateTime(finEnSegundos4 + 86400 - inicioEnSegundos4); //Periodo resultado5 = DateTimeCalculator.SecondsToDateTime(finEnSegundos5 + 86400 - inicioEnSegundos5); //Periodo resultadoF = DateTimeCalculator.SecondsToDateTime(finEnSegundosF + 86400 - inicioEnSegundosF); //long total = (finEnSegundos1 + 86400 - inicioEnSegundos1) + (finEnSegundos2 + 86400 - inicioEnSegundos2) + (finEnSegundos3 + 86400 - inicioEnSegundos3) + (finEnSegundos4 + 86400 - inicioEnSegundos4); //Periodo totalGeneral = DateTimeCalculator.SecondsToDateTime(total); //TimeSpan interval1 = fin1 - inicio1; //TimeSpan interval2 = fin2 - inicio2; //TimeSpan interval3 = fin3 - inicio3; //TimeSpan interval4 = fin4 - inicio4; //TimeSpan interval5 = fin5 - inicio5; //Console.WriteLine("-----------------------------------------------------------------"); //Console.WriteLine("{0} - {1} = {2}", fin1, inicio1, interval1.ToString()); //Console.WriteLine("{0} - {1} = {2}", fin2, inicio2, interval2.ToString()); //Console.WriteLine("{0} - {1} = {2}", fin3, inicio3, interval3.ToString()); //Console.WriteLine("{0} - {1} = {2}", fin4, inicio4, interval4.ToString()); //Console.WriteLine("{0} - {1} = {2}", fin5, inicio5, interval5.ToString()); //Console.WriteLine("{0} {1} {2}", inicioEnSegundosF, finEnSegundosF, finEnSegundosF - inicioEnSegundosF); //Console.WriteLine("{0} {1} {2}", inicioEnSegundos2, finEnSegundos2, finEnSegundos2 - inicioEnSegundos2); //Console.WriteLine("-----------------------------------------------------------------"); //TimeSpan date1 = (fin1 - inicio1); //TimeSpan date2 = (fin2 - inicio2); //TimeSpan date3 = (fin3 - inicio3); //TimeSpan date4 = (fin4 - inicio4); //TimeSpan undia = new System.TimeSpan(1, 0, 0, 0); //date1 += undia; //date1 += undia; //date2 += undia; //date3 += undia; //date4 += undia; //Periodo puaj1 = new Periodo(); //Periodo puaj2 = new Periodo(); //Periodo puaj3 = new Periodo(); //Periodo puaj4 = new Periodo(); //puaj1.AddGenericDays(date1.Days); //puaj2.AddGenericDays(date2.Days); //puaj3.AddGenericDays(date3.Days); //puaj4.AddGenericDays(date4.Days); //puaj1.AddDaysPeriod(date1.Days); //puaj2.AddDaysPeriod(date2.Days); //puaj3.AddDaysPeriod(date3.Days); //puaj4.AddDaysPeriod(date4.Days); //Console.WriteLine($"fin - inicio = {date1.Days}"); //Console.WriteLine($"fin - inicio = {date2.Days}"); //Console.WriteLine($"fin - inicio = {date3.Days}"); //Console.WriteLine($"fin - inicio = {date4.Days}"); //Console.WriteLine("-----------------------------------------------------------------"); //Console.WriteLine("DESDE {0} HASTA {1} = {2}-{3}-{4} {5}:{6}:{7}", inicio1, fin1, puaj1.Years, puaj1.Months, puaj1.Days, puaj1.Hours, puaj1.Minutes, puaj1.Seconds); //Console.WriteLine("DESDE {0} HASTA {1} = {2}-{3}-{4} {5}:{6}:{7}", inicio2, fin2, puaj2.Years, puaj2.Months, puaj2.Days, puaj2.Hours, puaj2.Minutes, puaj2.Seconds); //Console.WriteLine("DESDE {0} HASTA {1} = {2}-{3}-{4} {5}:{6}:{7}", inicio3, fin3, puaj3.Years, puaj3.Months, puaj3.Days, puaj3.Hours, puaj3.Minutes, puaj3.Seconds); //Console.WriteLine("DESDE {0} HASTA {1} = {2}-{3}-{4} {5}:{6}:{7}", inicio4, fin4, puaj4.Years, puaj4.Months, puaj4.Days, puaj4.Hours, puaj4.Minutes, puaj4.Seconds); //Console.WriteLine("-----------------------------------------------------------------"); Console.ReadLine(); }