TTD-基础编程练习-FrequencyNumber

作者: TW_BBK_王英杰 | 来源:发表于2017-04-21 16:20 被阅读37次

练习题目需求:

我想要一个nodejs小程序,
它可以帮我处理一段字符串信息,这段字符串信息是由英文单词组成,每两个单词之间有空格,
处理结果也为一段字符串,这个字符串应该每行只显示一个单词和它的数量,并且按出现频率倒序排列

Example

input:

“it was the age of wisdom it was the age of foolishness it is”

output

it 3
was 2
the 2
age 2
of 2
wisdom 1
foolishness 1
is 1

Tasking 流程图

流程图

代码:

main.js

var format = function (word,count){
return word +" "+ count;
};
var group = function(wordArray){
return wordArray.reduce((array,word) => {
let entry = array.find((e) =>e.word ===word);
if(entry){
entry.count++;
}else{
array.push({word:word,count:1});
}
return array;
},[]);
};
var split = function(words){
return words.split(/\s+/);
};
var sort = function(groupedWords){
groupedWords.sort((s,y)=>y.count - x.count);
};
function main(words){
if(words!== ''){
let wordArray = words.split(/\s+/);
let groupedWords = group(wordArray);
groupedWords.sort((x,y) =>y.count -x.count);
return groupedWords.map((e) => format(e.word,e.count)).join('\r\n');
}
return '';
}
module.exports = main;

Frequency NumberSpec.js

var main = require("./main.js");
describe("Word Frequency",function(){
it("returns empty string given empty string",function(){
var result = main('');

    expect(result).toEqual('');
});
it("returns string given one word",function(){
    var result = main('he');
    expect(result).toEqual('he 1');
});
 it("returns string given two different words",function(){
    var result = main('he is');
    expect(result).toEqual('he 1\r\nis 1');
});
it("returns string given duplicated words",function(){
    var result = main('he is he');
    expect(result).toEqual('he 2\r\nis 1');
});
it("returns string given duplicated words need to be sorted",function(){
    var result = main('he is is');
    expect(result).toEqual('is 2\r\nhe 1');
});
it("returns string given words splited by multiple spaces",function(){
    var result = main('he       is');
    expect(result).toEqual('he 1\r\nis 1');
});
it("returns string given words splited by multiple spaces",function(){
    var result = main('it was the age of wisdom it was the age of foolishness it is');
    expect(result).toEqual('it 3\r\nwas 2\r\nthe 2\r\nage 2\r\nof 2\r\nwisdom 1\r\nfoolishness 1\r\nis 1');
});

});

GIT 截图

1.png

jasmint截图

2.png

个人总结

有难度,第一是安装git和nodejs,熟悉git和npm的各种操作指令,再有就是JS的语法,完成题目功能的逻辑反倒是比较好想,先传入字符串,开始按照空格分割,然后计数,排序再输出,意外经朋友提醒看到了教练在B站直播的视频,其中就有关于这个题目的讲解,认真看了,再写代码感觉轻松多了,关于TDD模式的编程也理解得更深深刻,还需要继续努力。

相关文章

  • TTD-基础编程练习-FrequencyNumber

    练习题目需求: 我想要一个nodejs小程序,它可以帮我处理一段字符串信息,这段字符串信息是由英文单词组成,每两个...

  • java基础编程练习之谁拿了最多奖学金

    java基础编程练习之谁拿了最多奖学金

  • 编程基础练习

    相关技术 Git 基础:Git 安装及常用命令介绍TDD:深度解读 - TDD(测试驱动开发)—— Seaborn...

  • 第三次任务总结

    任务内容—Javascript 编程入门 1.Javascript代码个人练习 a.Javascript 基础练习...

  • FrequencyNumber作业

    一、知识铺垫 1.TDD 简介:TDD是测试驱动开发(Test-Driven Development)的英文简称,...

  • JavaScript基础编程练习

    一、js的基本类型 1.为抵抗洪水,战士连续作战89个小时,编辑计算共多少天零多少小时? vardays=pars...

  • 第五周学习总结

    本周已看了python基础知识的相关视频和PDF,练习了几道编程题,做编程题很没思路。

  • 编程基础练习4-20

    1.git 学习 什么是git? Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目...

  • Java基础编程练习题

    1.指数计算问题 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔...

  • 001-JavaScript基础编程练习

    一、js的基本类型 为抵抗洪水,战士连续作战89个小时,编辑计算共多少天零多少小时? 小明要到美国旅游,可是那里的...

网友评论

    本文标题:TTD-基础编程练习-FrequencyNumber

    本文链接:https://www.haomeiwen.com/subject/cbbdzttx.html