using System; using System.Collections; using System.Collections.Generic; using System.Linq; namespace BITKit { public static class MathE { public static bool Equals(params T[] objs) { var a = objs.FirstOrDefault(); foreach (var b in objs) { if (a.Equals(b)) { a = b; continue; } else { return false; } } return true; } public static IEnumerable Subtract(IEnumerable a, IEnumerable b) where T : IEnumerable { List list = new(); foreach (var x in a) { if (b.Contains(x)) { } else { list.Add(x); } } return list; } public static bool Contains(IEnumerable a, IEnumerable b) { foreach (var x in b) { if (a.Contains(x)) { } else { return false; } } return true; } public static IEnumerable Combinations(IEnumerable source) { if (null == source) throw new ArgumentNullException(nameof(source)); T[] data = source.ToArray(); return Enumerable.Range(0, 1 << (data.Length) - 1) .Select(index => data.Where((v, i) => (index & (1 << i)) != 0).ToArray()); } } }