Frequency Number

作者: TW_1024_周杨涵 | 来源:发表于2017-05-19 23:09 被阅读5次

    GIT

    什么是GIT

    Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
    Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
    Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeeper,后者之前一直是 Linux 内核开发人员在全球使用的主要源代码工具。开放源码社区中的有些人觉得BitKeeper 的许可证并不适合开放源码社区的工作,因此 Torvalds 决定着手研究许可证更为灵活的版本控制系统。尽管最初 Git 的开发是为了辅助 Linux 内核开发的过程,但是我们已经发现在很多其他自由软件项目中也使用了 Git。例如 很多 Freedesktop 的项目迁移到了 Git 上。

    GIT安装

    设置用户名和邮箱.png

    Nodejs

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
    Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。
    Node.js 的包管理器 npm,是全球最大的开源库生态系统。

    环境搭建

    _GWF49GZ6DI$F%Y@DVI4{9D.png

    TDD编程

    Frequency Number需求

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

    example
    input
    ```“it was the age of wisdom it was the age of foolishness it is”outputit 3
    was 2
    the 2
    age 2
    of 2
    wisdom 1
    foolishness 1
    is 1`

    主要代码

    Frequency Number.js

    var main= require('../../test.js');
    
    describe("Word Frequency",function(){
        it("return empty string given empty string",function(){
            var result = main('');
            expect(result).toEqual('');
        });
        it("return string given one word",function(){
            var result = main('he');
            expect(result).toEqual('he 1');
        });
        it("return string given two different words",function(){
            var result = main('he is');
            expect(result).toEqual('he 1\r\nis 1');
        });
        it("return string given duplicated words",function(){
            var result = main('he he is');
            expect(result).toEqual('he 2\r\nis 1');
        });
        it("return string given words splited by multiple space",function(){
            var result = main('he    is');
            expect(result).toEqual('he 1\r\nis 1')
        });
        it("a test",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')
        });
    

    test.js

    sdavar formatWordAndCount = function (words, count){
        return words + ' ' + 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 (groupWords) {
        groupWords .sort((x, y) => y.count - x.count);
    }
    
    var format = function (groupWords) {
        return groupWords.map((e) => formatWordAndCount(e.word, e.count)).join('\r\n');
    }
    function main(words){
        if(words !== ''){
            let wordArray = split(words);
            let  groupWords = group(wordArray);
            sort(groupWords);
            return format(groupWords);
        }
        return '';
    }
    module.exports = main;```
    

    相关文章

      网友评论

        本文标题:Frequency Number

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