1 module libd.algorithm.comparison; 2 3 import libd.algorithm; 4 5 bool any(alias Func, Range)(Range r) 6 { 7 while(!r.empty) 8 { 9 if(Func(r.front)) 10 return true; 11 r.popFront(); 12 } 13 return false; 14 } 15 /// 16 @("any") 17 unittest 18 { 19 import libd.datastructures : Array; 20 Array!int array; 21 array.put(0, 1, 2, 3, 4, 5, 6); 22 assert(array.range.any!(n => n == 6)); 23 assert(!array.range.any!(n => n > 10)); 24 } 25 26 bool all(alias Func, Range)(Range r) 27 { 28 while(!r.empty) 29 { 30 if(!Func(r.front)) 31 return false; 32 r.popFront(); 33 } 34 return true; 35 } 36 /// 37 @("all") 38 unittest 39 { 40 import libd.datastructures : LinkedList; 41 LinkedList!int list; 42 list.put(0, 1, 2, 3, 4, 5, 6); 43 assert(list.range.all!(n => n < 10)); 44 assert(!list.range.all!(n => (n % 2) == 0)); 45 } 46 47 bool equals(alias Comparator, Range1, Range2)(Range1 r1, Range2 r2) 48 { 49 while(true) 50 { 51 if(r1.empty && r2.empty) 52 return true; 53 else if(r1.empty != r2.empty) 54 return false; 55 else if(!Comparator(r1.front, r2.front)) 56 return false; 57 r1.popFront(); 58 r2.popFront(); 59 } 60 } 61 /// 62 @("equals - array==array") 63 unittest 64 { 65 int[3] array = [1, 2, 3]; 66 assert(array[0..$].equals!((a,b) => a==b)(array[0..$])); 67 }