Sha256: 9f8ce3586d6d8b1a335e29372d19a18691724cc8c9e6d03a71162e16554bf33a

Contents?: true

Size: 647 Bytes

Versions: 203

Compression:

Stored size: 647 Bytes

Contents

object SecretHandshake {
  private val reverseGestures = 16
  private def gestures = List((1, "wink"), (2, "double blink"),
    (4, "close your eyes"), (8, "jump"))

  def handshake(s: String): List[String] = {
    def isValid = s.count(c => c != '0' && c != '1') == 0

    if (!isValid) List()
    else handshake(Integer.parseInt(s, 2))
  }

  def handshake(n: Int): List[String] = {
    val result = gestures.filter {case (cmd, gesture) => (cmd & n) != 0} map
      {case (_, gesture) => gesture}
    if (shouldReverse(n)) result.reverse
    else result
  }

  private def shouldReverse(n: Int): Boolean = {
    (n & reverseGestures) != 0
  }
}

Version data entries

203 entries across 203 versions & 1 rubygems

Version Path
trackler-2.1.0.48 tracks/scala/exercises/secret-handshake/example.scala
trackler-2.1.0.47 tracks/scala/exercises/secret-handshake/example.scala
trackler-2.1.0.46 tracks/scala/exercises/secret-handshake/example.scala
trackler-2.1.0.45 tracks/scala/exercises/secret-handshake/example.scala
trackler-2.1.0.44 tracks/scala/exercises/secret-handshake/example.scala
trackler-2.1.0.43 tracks/scala/exercises/secret-handshake/example.scala
trackler-2.1.0.42 tracks/scala/exercises/secret-handshake/example.scala
trackler-2.1.0.41 tracks/scala/exercises/secret-handshake/example.scala
trackler-2.1.0.40 tracks/scala/exercises/secret-handshake/example.scala
trackler-2.1.0.39 tracks/scala/exercises/secret-handshake/example.scala
trackler-2.1.0.38 tracks/scala/exercises/secret-handshake/example.scala
trackler-2.1.0.37 tracks/scala/exercises/secret-handshake/example.scala
trackler-2.1.0.36 tracks/scala/exercises/secret-handshake/example.scala
trackler-2.1.0.34 tracks/scala/exercises/secret-handshake/example.scala
trackler-2.1.0.33 tracks/scala/exercises/secret-handshake/example.scala
trackler-2.1.0.32 tracks/scala/exercises/secret-handshake/example.scala
trackler-2.1.0.31 tracks/scala/exercises/secret-handshake/example.scala
trackler-2.1.0.30 tracks/scala/exercises/secret-handshake/example.scala
trackler-2.1.0.29 tracks/scala/exercises/secret-handshake/example.scala
trackler-2.1.0.28 tracks/scala/exercises/secret-handshake/example.scala