参与了一下ThoughtWorks面试题:FizzBuzz

阅读: 评论:0

参与了一下ThoughtWorks面试题:FizzBuzz

参与了一下ThoughtWorks面试题:FizzBuzz

看到题目最开始设计思路时候就是奔着面向对象实现去的,可以支持多个特殊数,完事后搜了搜10行的实现方法,说实话,刚工作时候公司几个哥们一起搞的一个解题游戏时候用过那种思路,但实际产品中基本上没用过,比较偏门取巧,不易于代码在团队及后来人中流传百世,至于效率问题,我通常是搭好底子,不见兔子不撒鹰。

代码随手用Javascript写的,执行环境是NodeJS

入口文件:index.js

执行: ./index.js --sq 100 --sn 3,5,7 --sns Fizz,Buzz,Whizz

#!/usr/bin/env node
/*** Created by abbish on 5/3/14.**/var program = require('commander');var parseList = function(value) {return value.split(',');
};var parseInt = function(value) {return value - 0;
}program.version('0.0.1').option('--sq <sq>', 'Student qty', parseInt, 100).option('--sn <sn>', 'Special number comma separated (e.g 3,5,7)', parseList , [3, 5, 7]).option('--sns <sns>', 'Special number string comma separated (e.g Fizz,Buzz,Whizz)',parseList , ['Fizz', 'Buzz', 'Whizz']).parse(process.argv);var lib = require('./lib');lib.init(program.sn, program.sns);for (var i = 1; i <= program.sq; i++)
{var n = new lib.studentNumber(i);console.ho());
}


用到的lib文件:./lib/index.js

var specialNumberObjects = []; //特殊数对象集合//初始化基数对象
var init = function(spn, spnString) {for(var i = 0; i < spn.length; i++){specialNumberObjects.push(new specialNumber(spn[i], spnString[i]));}
};//特殊数对象
var specialNumber = function(number, string) {this.number = number;this.string = string;this.isM = function(number) {return (number % this.number == 0);};this.isI = function(number) {return (number + '').indexOf(this.number + '') > 0}
};//报数对象
var studentNumber = function(number) {this.number = hoString = '';ho = function() {for(var i = 0; i < specialNumberObjects.length; i++){//是否包含第一个特殊数if(i == 0 && specialNumberObjects[i].isI(this.number)){hoString = specialNumberObjects[i].string;break;}//检查倍数if(specialNumberObjects[i].isM(this.number)){hoString += specialNumberObjects[i].string;}}return hoString.length <= 0 ? this.number : hoString;};
};exports.specialNumber = specialNumber;
exports.studentNumber = studentNumber;
exports.init = init;


测试用例:st.js

/*** Created by abbish on 5/3/14.*/
var assert = require("assert");
var lib = require('../lib');var specialNumber = [3, 5, 7];
var specialNumberString = ['Fizz', 'Buzz', 'Whizz'];lib.init(specialNumber, specialNumberString);describe('Test', function() {it('should return 1 when the number is 1', function(){var number = new lib.studentNumber(1);assert.equal('1', ho());});it('should return Fizz when the number is 3', function(){var number = new lib.studentNumber(3);assert.equal('Fizz', ho());});it('should return Buzz when the number is 5', function(){var number = new lib.studentNumber(5);assert.equal('Buzz', ho());});it('should return Whizz when the number is 7', function(){var number = new lib.studentNumber(7);assert.equal('Whizz', ho());});it('should return Fizz when the number is 9', function(){var number = new lib.studentNumber(9);assert.equal('Fizz', ho());});it('should return Fizz when the number is 13', function(){var number = new lib.studentNumber(13);assert.equal('Fizz', ho());});it('should return FizzBuzz when the number is 15', function(){var number = new lib.studentNumber(15);assert.equal('FizzBuzz', ho());});it('should return FizzBuzz when the number is 15', function(){var number = new lib.studentNumber(15);assert.equal('FizzBuzz', ho());});it('should return 17 when the number is 17', function(){var number = new lib.studentNumber(17);assert.equal('17', ho());});it('should return Buzz when the number is 20', function(){var number = new lib.studentNumber(20);assert.equal('Buzz', ho());});it('should return Whizz when the number is 56', function(){var number = new lib.studentNumber(56);assert.equal('Whizz', ho());})it('should return Whizz when the number is 63', function(){var number = new lib.studentNumber(63);assert.equal('Fizz', ho());})
})


转载于:

本文发布于:2024-01-31 09:31:52,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170666471527550.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:TDD 实践
下一篇:FizzBuzzWhizz
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23