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.139 tracks/javascript/exercises/protein-translation/example.js
trackler-2.2.1.138 tracks/javascript/exercises/protein-translation/example.js
trackler-2.2.1.137 tracks/javascript/exercises/protein-translation/example.js
trackler-2.2.1.136 tracks/javascript/exercises/protein-translation/example.js
trackler-2.2.1.135 tracks/javascript/exercises/protein-translation/example.js
trackler-2.2.1.134 tracks/javascript/exercises/protein-translation/example.js
trackler-2.2.1.133 tracks/javascript/exercises/protein-translation/example.js
trackler-2.2.1.132 tracks/javascript/exercises/protein-translation/example.js
trackler-2.2.1.131 tracks/javascript/exercises/protein-translation/example.js
trackler-2.2.1.130 tracks/javascript/exercises/protein-translation/example.js
trackler-2.2.1.129 tracks/javascript/exercises/protein-translation/example.js
trackler-2.2.1.128 tracks/javascript/exercises/protein-translation/example.js
trackler-2.2.1.127 tracks/javascript/exercises/protein-translation/example.js
trackler-2.2.1.126 tracks/javascript/exercises/protein-translation/example.js
trackler-2.2.1.125 tracks/javascript/exercises/protein-translation/example.js
trackler-2.2.1.124 tracks/javascript/exercises/protein-translation/example.js
trackler-2.2.1.123 tracks/javascript/exercises/protein-translation/example.js
trackler-2.2.1.122 tracks/javascript/exercises/protein-translation/example.js
trackler-2.2.1.121 tracks/javascript/exercises/protein-translation/example.js
trackler-2.2.1.120 tracks/javascript/exercises/protein-translation/example.js