Advertisement
Guest User

Untitled

a guest
Oct 4th, 2015
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.53 KB | None | 0 0
  1. List<MyType> list1;
  2. List<MyType> list2;
  3.  
  4. Enumerable.SequenceEqual(list1.OrderBy(t => t), list2.OrderBy(t => t))
  5.  
  6. public static bool ScrambledEquals<T>(IEnumerable<T> list1, IEnumerable<T> list2) {
  7. var cnt = new Dictionary<T, int>();
  8. foreach (T s in list1) {
  9. if (cnt.ContainsKey(s)) {
  10. cnt[s]++;
  11. } else {
  12. cnt.Add(s, 1);
  13. }
  14. }
  15. foreach (T s in list2) {
  16. if (cnt.ContainsKey(s)) {
  17. cnt[s]--;
  18. } else {
  19. return false;
  20. }
  21. }
  22. return cnt.Values.All(c => c == 0);
  23. }
  24.  
  25. public static bool ScrambledEquals<T>(IEnumerable<T> list1, IEnumerable<T> list2, IEqualityComparer<T> comparer) {
  26. var cnt = new Dictionary<T, int>(comparer);
  27. ...
  28.  
  29. // lists should have same count of items, and set difference must be empty
  30. var areEquivalent = (list1.Count == list2.Count) && !list1.Except(list2).Any();
  31.  
  32. // check that [(A-B) Union (B-A)] is empty
  33. var areEquivalent = !list1.Except(list2).Union( list2.Except(list1) ).Any();
  34.  
  35. var a = new[] {1, 2, 3, 4, 4, 3, 1, 1, 2};
  36. var b = new[] { 4, 3, 2, 3, 1, 1, 1, 4, 2 };
  37.  
  38. // result below should be true, since the two sets are equivalent...
  39. var areEquivalent = (a.Count() == b.Count()) && !a.Except(b).Any();
  40.  
  41. var set1 = new HashSet<MyType>(list1);
  42. var set2 = new HashSet<MyType>(list2);
  43. return set1.SetEquals(set2);
  44.  
  45. list1.All(item => list2.Contains(item)) &&
  46. list2.All(item => list1.Contains(item));
  47.  
  48. list1.All(item => list2.Contains(item)) &&
  49. list1.Distinct().Count() == list1.Count &&
  50. list1.Count == list2.Count
  51.  
  52. static bool ArePermutations<T>(IList<T> list1, IList<T> list2)
  53. {
  54. if(list1.Count != list2.Count)
  55. return false;
  56.  
  57. var l1 = list1.ToLookup(t => t);
  58. var l2 = list2.ToLookup(t => t);
  59.  
  60. return l1.Count == l2.Count
  61. && l1.All(group => l2.Contains(group.Key) && l2[group.Key].Count() == group.Count());
  62. }
  63.  
  64. // veriables been used
  65. List<T> diffList = new List<T>();
  66. List<T> gotResultList = new List<T>();
  67.  
  68.  
  69.  
  70. // compare First field within my MyList
  71. gotResultList = MyList1.Where(a => !MyList2.Any(a1 => a1.MyListTField1 == a.MyListTField1)).ToList().Except(gotResultList.Where(a => !MyList2.Any(a1 => a1.MyListTField1 == a.MyListTField1))).ToList();
  72. // Generate result list
  73. diffList.AddRange(gotResultList);
  74.  
  75. // compare Second field within my MyList
  76. gotResultList = MyList1.Where(a => !MyList2.Any(a1 => a1.MyListTField2 == a.MyListTField2)).ToList().Except(gotResultList.Where(a => !MyList2.Any(a1 => a1.MyListTField2 == a.MyListTField2))).ToList();
  77. // Generate result list
  78. diffList.AddRange(gotResultList);
  79.  
  80.  
  81. MessageBox.Show(diffList.Count.ToString);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement