Sha256: 2ae01c4e9ac538479caca3ecb36fabdbaaa8fcb292e6267ee4e8d6e35e54f5fc

Contents?: true

Size: 1.04 KB

Versions: 68

Compression:

Stored size: 1.04 KB

Contents

import scala.annotation.tailrec

object ProteinTranslation {

  private val translations = Map(
    "AUG" -> "Methionine",
    "UUU" -> "Phenylalanine",
    "UUC" -> "Phenylalanine",
    "UUA" -> "Leucine",
    "UUG" -> "Leucine",
    "UCU" -> "Serine",
    "UCC" -> "Serine",
    "UCA" -> "Serine",
    "UCG" -> "Serine",
    "UAU" -> "Tyrosine",
    "UAC" -> "Tyrosine",
    "UGU" -> "Cysteine",
    "UGC" -> "Cysteine",
    "UGG" -> "Tryptophan",
    "UAA" -> "STOP",
    "UAG" -> "STOP",
    "UGA" -> "STOP")

  /**
    * Note that this solution ignores invalid Codons.
    */
  def proteins(input: String): Seq[String] = {
    @tailrec
    def proteins_internal(acc: Seq[String], strs: Seq[String]): Seq[String] = {
      strs match {
        case x::xs => translations get x match {
          case Some(codon) => if ("STOP".equals(codon)) acc.reverse else proteins_internal(codon +: acc, xs)
          case _ => proteins_internal(acc, xs)
        }
        case _ => acc.reverse
      }
    }

    proteins_internal(Seq(), input.grouped(3).toList)
  }
}

Version data entries

68 entries across 68 versions & 1 rubygems

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