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.70 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.69 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.68 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.67 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.66 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.65 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.64 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.63 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.62 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.61 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.60 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.59 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.58 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.57 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.56 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.55 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.54 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.53 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.52 tracks/scala/exercises/protein-translation/example.scala
trackler-2.2.1.51 tracks/scala/exercises/protein-translation/example.scala