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.110 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.109 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.108 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.107 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.106 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.105 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.104 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.103 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.102 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.101 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.100 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.99 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.98 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.97 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.96 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.95 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.94 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.93 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.92 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.91 tracks/scala/exercises/protein-translation/example.scala