package scala.collection.parallel.ops
import scala.collection.parallel._
trait IntOperators extends Operators[Int] {
def reduceOperators = List(_ + _, _ * _, math.min(_, _), math.max(_, _), _ ^ _)
def countPredicates = List(
x => true,
_ >= 0, _ < 0, _ < 50, _ < 500, _ < 5000, _ < 50000, _ % 2 == 0, _ == 99,
x => x > 50 && x < 150,
x => x > 350 && x < 550,
x => (x > 1000 && x < 1500) || (x > 400 && x < 500)
)
def forallPredicates = List(_ >= 0, _ < 0, _ % 2 == 0, _ != 55, _ != 505, _ != 5005)
def existsPredicates = List(_ >= 0, _ < 0, _ % 2 == 0, _ == 55, _ == 505, _ == 5005)
def findPredicates = List(_ >= 0, _ % 2 == 0, _ < 0, _ == 50, _ == 500, _ == 5000)
def mapFunctions = List(-_, math.abs(_), _ % 2, _ % 3, _ % 4, _ % 150, _ % 500)
def partialMapFunctions = List({case x => -x}, { case 0 => -1; case x if x > 0 => x + 1}, {case x if x % 3 == 0 => x / 3})
def flatMapFunctions = List(
(n: Int) => if (n < 0) List() else if (n % 2 == 0) List(1, 2, 3) else List(4, 5, 6),
(n: Int) => List[Int](),
(n: Int) => if (n == 0) List(1, 2, 3, 4, 5) else if (n < 0) List(1, 2, 3) else List()
)
def filterPredicates = List(
_ % 2 == 0, _ % 3 == 0,
_ % 4 != 0, _ % 17 != 0,
n => n > 50 && n < 100,
_ >= 0, _ < 0, _ == 99,
_ > 500, _ > 5000, _ > 50000,
_ < 500, _ < 50, _ < -50, _ < -5e5,
x => true, x => false,
x => x % 53 == 0 && x % 17 == 0
)
def filterNotPredicates = filterPredicates
def partitionPredicates = filterPredicates
def takeWhilePredicates = List(
_ != 50, _ != 500, _ != 5000, _ != 50000, _ % 2 == 0, _ % 3 == 1, _ % 47 != 0,
_ < 100, _ < 1000, _ < 10000, _ < 0,
_ < -100, _ < -1000, _ > -200, _ > -50,
n => -90 < n && n < -10,
n => 50 < n && n < 550,
n => 5000 < n && n < 7500,
n => -50 < n && n < 450
)
def dropWhilePredicates = takeWhilePredicates
def spanPredicates = takeWhilePredicates
def foldArguments = List(
(0, _ + _),
(1, _ * _),
(Int.MinValue, math.max(_, _)),
(Int.MaxValue, math.min(_, _))
)
def addAllTraversables = List(
List[Int](),
List(1),
List(1, 2),
List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10),
Array.fill(1000)(1).toSeq
)
def newArray(sz: Int) = new Array[Int](sz)
def groupByFunctions = List(
_ % 2, _ % 3, _ % 5, _ % 10, _ % 154, _% 3217,
_ * 2, _ + 1
)
}
trait IntSeqOperators extends IntOperators with SeqOperators[Int] {
def segmentLengthPredicates = List(
_ % 2 == 0, _ > 0, _ >= 0, _ < 0, _ <= 0, _ > -5000, _ > 5000, _ % 541 != 0, _ < -50, _ > 500,
n => -90 < n && n < -10, n => 500 < n && n < 1500
)
def indexWherePredicates = List(
_ % 2 == 0, _ % 11 == 0, _ % 123 == 0, _ % 901 == 0,
_ > 0, _ >= 0, _ < 0, _ <= 0,
_ > 50, _ > 500, _ > 5000,
_ < -10, _ < -100, _ < -1000,
n => n > 50 && n < 100,
n => n * n > 1000000 && n % 111 == 0
)
def lastIndexWherePredicates = List(
_ % 2 == 0, _ % 17 == 0, _ % 314 == 0, _ % 1017 == 0,
_ > 0, _ >= 0, _ < 0, _ <= 0,
_ > 50, _ > 500, _ > 5000,
_ < -20, _ < -200, _ < -2000,
_ == 0,
n => n > -40 && n < 40,
n => n > -80 && n < -10,
n => n > 110 && n < 150
)
def reverseMapFunctions = List(-_, n => n * n, _ + 1)
def sameElementsSeqs = List(
List[Int](),
List(1),
List(1, 2, 3, 4, 5, 6, 7, 8, 9),
Array.fill(150)(1).toSeq,
Array.fill(1000)(1).toSeq
)
def startEndSeqs = List(
Nil,
List(1),
List(1, 2, 3, 4, 5),
List(0, 1, 2, 3, 4, 5),
List(4, 5, 6, 7, 8, 9, 10),
List(4, 5, 6, 7, 8, 9, 0),
List(-4, -3, -2, -1)
)
}