Sha256: 1f331ec904d634c22e69d80e7c577a8e4cc36dea9faa022c58ee44e3f7a3643d

Contents?: true

Size: 1.04 KB

Versions: 160

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 translate(input: String): Seq[String] = {
    @tailrec
    def translate_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 translate_internal(codon +: acc, xs)
          case _ => translate_internal(acc, xs)
        }
        case _ => acc.reverse
      }
    }

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

Version data entries

160 entries across 160 versions & 1 rubygems

Version Path
trackler-2.2.1.30 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.29 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.28 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.27 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.26 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.25 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.24 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.23 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.22 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.21 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.20 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.19 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.18 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.17 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.16 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.15 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.14 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.13 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.12 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.11 tracks/scala/exercises/protein-translation/example.scala