Sha256: 63167bdf173ac50d1b37ca0a2410b7ee767f31da34ad86ef3cdf86c1ae05e7ee

Contents?: true

Size: 564 Bytes

Versions: 300

Compression:

Stored size: 564 Bytes

Contents

import scala.annotation.tailrec

object Strain {
  def keep[A](seq: Seq[A], func: A => Boolean): Seq[A] =
    recurse(seq, func, List()).reverse

  def discard[A](seq: Seq[A], func: A => Boolean): Seq[A] = {
    val notFunc: A => Boolean = a => !func(a)
    recurse(seq, notFunc, List()).reverse
  }

  @tailrec
  private def recurse[A](seq: Seq[A], func: A => Boolean, acc: Seq[A]): Seq[A] =
    seq match {
      case Nil => acc
      case x::xs =>
        if (func(x))
          recurse(xs, func, x +: acc)
        else
          recurse(xs, func, acc)
    }
}

Version data entries

300 entries across 300 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/scala/exercises/strain/example.scala
trackler-2.2.1.179 tracks/scala/exercises/strain/example.scala
trackler-2.2.1.178 tracks/scala/exercises/strain/example.scala
trackler-2.2.1.177 tracks/scala/exercises/strain/example.scala
trackler-2.2.1.176 tracks/scala/exercises/strain/example.scala
trackler-2.2.1.175 tracks/scala/exercises/strain/example.scala
trackler-2.2.1.174 tracks/scala/exercises/strain/example.scala
trackler-2.2.1.173 tracks/scala/exercises/strain/example.scala
trackler-2.2.1.172 tracks/scala/exercises/strain/example.scala
trackler-2.2.1.171 tracks/scala/exercises/strain/example.scala
trackler-2.2.1.170 tracks/scala/exercises/strain/example.scala
trackler-2.2.1.169 tracks/scala/exercises/strain/example.scala
trackler-2.2.1.167 tracks/scala/exercises/strain/example.scala
trackler-2.2.1.166 tracks/scala/exercises/strain/example.scala
trackler-2.2.1.165 tracks/scala/exercises/strain/example.scala
trackler-2.2.1.164 tracks/scala/exercises/strain/example.scala
trackler-2.2.1.163 tracks/scala/exercises/strain/example.scala
trackler-2.2.1.162 tracks/scala/exercises/strain/example.scala
trackler-2.2.1.161 tracks/scala/exercises/strain/example.scala
trackler-2.2.1.160 tracks/scala/exercises/strain/example.scala