Sha256: 5d0825e271a351441e31125904c45bc88f24d986f2be567e480e2f99dad3562c

Contents?: true

Size: 1000 Bytes

Versions: 132

Compression:

Stored size: 1000 Bytes

Contents

'use strict';

module.exports = translate;

function translate(rnaStrand) {
  var proteins = [];

  if (rnaStrand) {
    for (var i = 0; i < rnaStrand.length; i += 3) {
      var protein = getProtein(rnaStrand.substring(i, i + 3));

      if (protein) {
        if (protein === 'STOP') {
          break;
        }

        if (protein === 'INVALID') {
          throw new Error('Invalid codon');
        }

        proteins.push(protein);
      }
    }
  }

  return proteins;
}

function getProtein(codon) {
  switch (codon) {
  case 'AUG':
    return 'Methionine';

  case 'UUU':
  case 'UUC':
    return 'Phenylalanine';

  case 'UUA':
  case 'UUG':
    return 'Leucine';

  case 'UCU':
  case 'UCC':
  case 'UCA':
  case 'UCG':
    return 'Serine';

  case 'UAU':
  case 'UAC':
    return 'Tyrosine';

  case 'UGU':
  case 'UGC':
    return 'Cysteine';

  case 'UGG':
    return 'Tryptophan';

  case 'UAA':
  case 'UAG':
  case 'UGA':
    return 'STOP';

  default:
    return 'INVALID';
  }
}

Version data entries

132 entries across 132 versions & 1 rubygems

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