130 lines
3.6 KiB
Scala
130 lines
3.6 KiB
Scala
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)
|
|
)
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|