Sha256: 40f577cf001709c42ea9f200ea097e0726b86ea66bdb2c2e505529bc98625f1d

Contents?: true

Size: 1.23 KB

Versions: 396

Compression:

Stored size: 1.23 KB

Contents

using System;
using System.Collections.Generic;
using System.Linq;

public enum SublistType
{
    Equal,
    Unequal,
    Superlist,
    Sublist
}

public static class Sublist
{
    public static SublistType Classify<T>(List<T> list1, List<T> list2)
        where T : IComparable
    {
        if (list1.Count == list2.Count)
        {
            return AreEqual(list1, list2) ? SublistType.Equal : SublistType.Unequal;
        }

        if (list1.Count < list2.Count)
        {
            return IsSublist(list1, list2) ? SublistType.Sublist : SublistType.Unequal;
        }

        return IsSublist(list2, list1) ? SublistType.Superlist : SublistType.Unequal;
    }

    private static bool AreEqual<T>(List<T> list1, List<T> list2)
        where T : IComparable
    {
        return !list1.Where((t, i) => t.CompareTo(list2[i]) != 0).Any();
    }

    private static bool IsSublist<T>(List<T> list1, List<T> list2)
        where T : IComparable
    {
        if (list1.Count > list2.Count)
        {
            return false;
        }

        if (list1.Count == 0)
        {
            return true;
        }

        return Enumerable.Range(0, list2.Count - list1.Count + 1).Any(i => AreEqual(list1, list2.GetRange(i, list1.Count)));
    }
}

Version data entries

396 entries across 396 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/csharp/exercises/sublist/Example.cs
trackler-2.2.1.179 tracks/csharp/exercises/sublist/Example.cs
trackler-2.2.1.178 tracks/csharp/exercises/sublist/Example.cs
trackler-2.2.1.177 tracks/csharp/exercises/sublist/Example.cs
trackler-2.2.1.176 tracks/csharp/exercises/sublist/Example.cs
trackler-2.2.1.175 tracks/csharp/exercises/sublist/Example.cs
trackler-2.2.1.174 tracks/csharp/exercises/sublist/Example.cs
trackler-2.2.1.173 tracks/csharp/exercises/sublist/Example.cs
trackler-2.2.1.172 tracks/csharp/exercises/sublist/Example.cs
trackler-2.2.1.171 tracks/csharp/exercises/sublist/Example.cs
trackler-2.2.1.170 tracks/csharp/exercises/sublist/Example.cs
trackler-2.2.1.169 tracks/csharp/exercises/sublist/Example.cs
trackler-2.2.1.167 tracks/csharp/exercises/sublist/Example.cs
trackler-2.2.1.166 tracks/csharp/exercises/sublist/Example.cs
trackler-2.2.1.165 tracks/csharp/exercises/sublist/Example.cs
trackler-2.2.1.164 tracks/csharp/exercises/sublist/Example.cs
trackler-2.2.1.163 tracks/csharp/exercises/sublist/Example.cs
trackler-2.2.1.162 tracks/csharp/exercises/sublist/Example.cs
trackler-2.2.1.161 tracks/csharp/exercises/sublist/Example.cs
trackler-2.2.1.160 tracks/csharp/exercises/sublist/Example.cs