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.78 tracks/javascript/exercises/protein-translation/example.js
trackler-2.2.1.77 tracks/javascript/exercises/protein-translation/example.js
trackler-2.2.1.76 tracks/javascript/exercises/protein-translation/example.js
trackler-2.2.1.75 tracks/javascript/exercises/protein-translation/example.js
trackler-2.2.1.74 tracks/javascript/exercises/protein-translation/example.js
trackler-2.2.1.73 tracks/javascript/exercises/protein-translation/example.js
trackler-2.2.1.72 tracks/javascript/exercises/protein-translation/example.js
trackler-2.2.1.71 tracks/javascript/exercises/protein-translation/example.js
trackler-2.2.1.70 tracks/javascript/exercises/protein-translation/example.js
trackler-2.2.1.69 tracks/javascript/exercises/protein-translation/example.js
trackler-2.2.1.68 tracks/javascript/exercises/protein-translation/example.js
trackler-2.2.1.67 tracks/javascript/exercises/protein-translation/example.js
trackler-2.2.1.66 tracks/javascript/exercises/protein-translation/example.js
trackler-2.2.1.65 tracks/javascript/exercises/protein-translation/example.js
trackler-2.2.1.64 tracks/javascript/exercises/protein-translation/example.js
trackler-2.2.1.63 tracks/javascript/exercises/protein-translation/example.js
trackler-2.2.1.62 tracks/javascript/exercises/protein-translation/example.js
trackler-2.2.1.61 tracks/javascript/exercises/protein-translation/example.js
trackler-2.2.1.60 tracks/javascript/exercises/protein-translation/example.js
trackler-2.2.1.59 tracks/javascript/exercises/protein-translation/example.js