向着6级跑出的第五步与第五步半
在文章任何区域双击击即可给文章添加【评注】!浮到评注点上可以查看详情。

Description:

For a given DNA genectic code represented by a string, count the number of times the letters A (adenine), C (cytosine), G (guanine) and T (thymine) appears and return and object.

All letters must be in uppercase.

For example:

var genCode = 'TCCAGAAAGGTAAGCCTCGCGTTGCGAAAATGTCAAGTTACCACATCCACACCACCTCGAGCAGCTTCTATAGCTAGCCAGCACAGAGACTCGCAGTCCCTCTACAAGCTTCCAATTGGAAGAGAGCTCGGGCCAAGCGTTTGTCGCCCCCCTCCCATTGAGATAAACCCGCATTCATTCAGGTACGAACGGATGCAGCTTGATTCTCCCCATGTAGTTAACTCGCTACATCCTATCAGCCTGAGGGTCCAAGTTGCTAGACCTACATTCACTCCTGCGCTCCTCATAAGCGACCTATCGACTAGTCTTGGCTTACACCTCAGAAGTGCGCTATTGGGCGGGTATTCAGTGGTTGCACGGCGCTTATGTGGGACGCGGTGTCTTAGAGGACAGAAGATGTACAGTCAATGGAGGGATCCTCCCGAGTCGCCATCTACCCATGCGTCTGAGATATGAAAGCAGCTACCAGCCTTTCAGCCACTCTGAAAGATTTCCGTCCTCTATCAAACGACCTGCCCCAGGCTTACTGTTACTAGTTCTTTGCAAATTAACTGTACTCATTTGGGAGAGTTCGCATGCGCCTCTCCATCATACTAGCGCAAAACCTGACATTCAAACGATTCCGCACCCAAAGCCGCGAATGTGTCCCCTTACATTTCGGAGAAAACCGGCTCGACTTGGCACCAAGAACTTTTATACGCTGGGTTGTGCCATGTCTTTATGTTTATCCTTTGGGCGGCAGGAGCGTCCTCACTGTTGCTCTGAAACAGTACATGCACATGTCTAGACGAACCTGAAGAACCCCTGAACACGCCATGCACCGCGCGTAAAGCCAGTTTCGACTGGTATATATAATGATGTTGTGAAACAAATCGGGAAGGCGCAGAAAAGAATGTGGTTGGACGAAGTCCATAACTGAAGGTTAGCGA';

getCountedNucleotides(genCode); // return {A: 238, C: 254, G: 212, T: 225}

菜鸟出招

function getCountedNucleotides(genCode){
  var as = 0;
  var cs = 0;
  var gs = 0;
  var ts = 0;
  for (var i in genCode) {
    switch (genCode[i]) {
      case 'A': as++; break;
      case 'C': cs++; break;
      case 'G': gs++; break;
      case 'T': ts++; break;
    }
  }
  return {A:as, C: cs, G: gs, T: ts};
}

偷师学艺

function getCountedNucleotides(genCode){
  var solution = {A:0, C:0, G:0, T:0};
  genCode.split('').forEach(function(e){solution[e]++});
  return solution;
}

关键字积累

  • split
  • forEach

菜鸟反思

这里我还是多用了4个变量,当时没有想到可以直接用对象的属性进行自增。

这篇作为7级题目感觉太水了,遂,追加一道题:

附加:第五步半

Description:

Santa is learning programming. And what could be the first program, he wants to write? Yes, the “Hello world!” of Christmas: “Ho Ho Ho!”. He wants to write a function ho(), which should have the following return values:

ho(); // should return "Ho!"
ho(ho()); // should return "Ho Ho!"
ho(ho(ho())); // should return "Ho Ho Ho!"

Unfortunately he couldn’t find any tutorial, which explains, how he could implement that. Can you help him?

Rules:

  • each call of ho() must add a “Ho” to the string
  • the “Ho“‘s must be separated by a space
  • at the end of the string, there must be an exclamation mark (!), without a space

菜鸟出招

function ho() {
  // TODO
  return 'Ho' + (arguments.length? (' ' + arguments[0]) :'!');
}

偷师学艺

function ho(ho) {
  return 'Ho' + (ho ? ' ' + ho : '!');
}

菜鸟反思

吼吼!!我以为题目不让用形参。

评论
发表评论
5年前
赞了此文章!
WRITTEN BY
BoltDoggy
A doggy named Bolt.
TA的新浪微博
PUBLISHED IN
My Code Wars 我的代码战争【休息一下】

这里讲述的是一个8级(kyu)菜鸟立志成为8段(dan)大神的故事。

他在代码战争中一次次遭遇挫败,而又在乱炖中获得高人指点。

遥想当年自高自大,而今终知天外有天。

坚持要走出一条自己的路,这是一条不归路。


Bolt 在写underscore.js源码分析专栏的时候发现了一个问题,就是看别人写的代码的时候自认为看懂了,但实际上有理解错误自己也不知道。

另外就是看了再牛逼的代码,自己写的时候,还是那些小套套。

于是 Bolt 开了一个新专栏:My Code Wars 我的代码战争。在同一需求下,菜鸟写的代码与大神有什么区别,是思维方式不同,还是什么原因导致的?

欢迎大家来新专栏提供意见和建议。

我的收藏