1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| class Program
{
static void Main(string[] args)
{
List<int> liste = new List<int>() { 2, 3, 4, 5, 6, 7 };
List<int> listeATrouver = new List<int> { 4,5,6 };
bool resultat = liste.ContainsSubSequence(listeATrouver);
}
}
public static class Extensions
{
public static bool ContainsSubSequence<T> (this IEnumerable<T> pListe, IEnumerable<T> pSubListe)
{
foreach (int index in pListe.FindAllIndexes(entier => entier.Equals(pSubListe.First())))
{
if (pListe.ToList().GetRange(index, pSubListe.Count()).SequenceEqual(pSubListe))
return true;
}
return false;
}
public static List<int> FindAllIndexes<T>(this IEnumerable<T> pListe, Func<T,bool> pPredicat)
{
List<int> liste = new List<int>();
int index=0;
foreach (T entier in pListe)
{
if (pPredicat(entier))
liste.Add(index);
index++;
}
return liste;
}
} |
Partager