diff --git a/demo.txt b/demo.txt new file mode 100644 index 00000000..ce013625 --- /dev/null +++ b/demo.txt @@ -0,0 +1 @@ +hello diff --git a/package.json b/package.json index 04d6b866..7838202a 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "test": "jasmine-node --verbose specs" }, "dependencies": { - "jasmine-node": "1.14.5" + "jasmine-node": "1.14.5", + "lodash": "^4.14.0" } -} \ No newline at end of file +} diff --git a/practices/superposition_operation/collection_operation/letter_mapping_1.js b/practices/superposition_operation/collection_operation/letter_mapping_1.js index 2a2dba26..3f5138d8 100644 --- a/practices/superposition_operation/collection_operation/letter_mapping_1.js +++ b/practices/superposition_operation/collection_operation/letter_mapping_1.js @@ -1,8 +1,14 @@ 'use strict'; -function even_to_letter(collection) { +let _ = require('lodash'); - //在这里写入代码 +function even_to_letter(collection) { + let diff = 'a'.charCodeAt(0) - 1; + return _(collection) + .filter(x => x%2===0) + .map(x => x + diff) + .map(x => String.fromCharCode(x)) + .value(); } module.exports = even_to_letter; diff --git a/practices/superposition_operation/collection_operation/letter_mapping_2.js b/practices/superposition_operation/collection_operation/letter_mapping_2.js index 20970ced..19eccddc 100644 --- a/practices/superposition_operation/collection_operation/letter_mapping_2.js +++ b/practices/superposition_operation/collection_operation/letter_mapping_2.js @@ -1,8 +1,14 @@ 'use strict'; -function average_to_letter(collection) { +let _ = require('lodash'); - //在这里写入代码 +function average_to_letter(collection) { + let diff = 'a'.charCodeAt(0) - 1; + let average = _.chain(collection) + .mean() + .ceil() + .value(); + return String.fromCharCode(average + diff); } module.exports = average_to_letter; diff --git a/practices/superposition_operation/collection_operation/practice_1.js b/practices/superposition_operation/collection_operation/practice_1.js index 6ecb445a..a390a29e 100644 --- a/practices/superposition_operation/collection_operation/practice_1.js +++ b/practices/superposition_operation/collection_operation/practice_1.js @@ -1,8 +1,9 @@ 'use strict'; -function hybrid_operation(collection) { +let _ = require('lodash'); - //在这里写入代码 +function hybrid_operation(collection) { + return _(collection).map(x => x*3+2).sum(); } module.exports = hybrid_operation; diff --git a/practices/superposition_operation/collection_operation/practice_2.js b/practices/superposition_operation/collection_operation/practice_2.js index f8e2dd6e..21dbe213 100644 --- a/practices/superposition_operation/collection_operation/practice_2.js +++ b/practices/superposition_operation/collection_operation/practice_2.js @@ -1,8 +1,12 @@ 'use strict'; -function hybrid_operation_to_uneven(collection) { +let _ = require('lodash'); - //在这里写入代码 +function hybrid_operation_to_uneven(collection) { + return _(collection) + .filter(x => x%2==1) + .map(x => x*3+2) + .value(); } module.exports = hybrid_operation_to_uneven; diff --git a/practices/superposition_operation/collection_operation/practice_3.js b/practices/superposition_operation/collection_operation/practice_3.js index f8e2dd6e..31f31536 100644 --- a/practices/superposition_operation/collection_operation/practice_3.js +++ b/practices/superposition_operation/collection_operation/practice_3.js @@ -1,7 +1,12 @@ 'use strict'; -function hybrid_operation_to_uneven(collection) { +let _ = require('lodash'); +function hybrid_operation_to_uneven(collection) { + return _(collection) + .filter(x => x%2===1) + .map(x => x*3+5) + .sum(); //在这里写入代码 } diff --git a/practices/superposition_operation/interval_operation/amount_even.js b/practices/superposition_operation/interval_operation/amount_even.js index 9f35f5a4..ae5be8d7 100644 --- a/practices/superposition_operation/interval_operation/amount_even.js +++ b/practices/superposition_operation/interval_operation/amount_even.js @@ -1,7 +1,11 @@ 'use strict'; -function amount_even(collection) { +let _ = require('lodash'); +function amount_even(collection) { + return _(collection) + .filter(x => x%2===0) + .sum(); //在这里写入代码 } diff --git a/practices/superposition_operation/interval_operation/average_uneven.js b/practices/superposition_operation/interval_operation/average_uneven.js index 48cacdd9..a19f6917 100644 --- a/practices/superposition_operation/interval_operation/average_uneven.js +++ b/practices/superposition_operation/interval_operation/average_uneven.js @@ -1,8 +1,11 @@ 'use strict'; -function average_uneven(collection) { +let _ = require('lodash'); - //在这里写入代码 +function average_uneven(collection) { + return _(collection) + .filter(x=>x%2===1) + .mean(); } module.exports = average_uneven; diff --git a/practices/superposition_operation/interval_operation/median_to_letter.js b/practices/superposition_operation/interval_operation/median_to_letter.js index 922d214a..428d7ef3 100644 --- a/practices/superposition_operation/interval_operation/median_to_letter.js +++ b/practices/superposition_operation/interval_operation/median_to_letter.js @@ -1,8 +1,24 @@ 'use strict'; -function median_to_letter(collection) { +let _ = require('lodash'); + +function _toCharNumber(charCode) { + // TODO + return 0; +} - //在这里写入代码 +function median_to_letter(collection) { + let median = _.chain(collection) + .sortBy() + .filter((item, index, all) => { + if(all.length%2===1) { + return index === (all.length-1)/2; + } else { + let expected = [all.length/2, all.length/2+1] + return expected.includes(index); + } + }); + return _toCharNumber(median); } module.exports = median_to_letter; diff --git a/specs/superposition_operation/collection_operation/letter_mapping_1_spec.js b/specs/superposition_operation/collection_operation/letter_mapping_1_spec.js index d662bd9f..1fa2ddeb 100644 --- a/specs/superposition_operation/collection_operation/letter_mapping_1_spec.js +++ b/specs/superposition_operation/collection_operation/letter_mapping_1_spec.js @@ -2,7 +2,7 @@ var even_to_letter = require("../../../practices/superposition_operation/collection_operation/letter_mapping_1.js"); -describe('even_to_letter', function() { +ddescribe('even_to_letter', function() { var collection = [1,2,3,4,5,6,7,8,9,10]; diff --git a/specs/superposition_operation/collection_operation/letter_mapping_2_spec.js b/specs/superposition_operation/collection_operation/letter_mapping_2_spec.js index 2cc0eb58..2044be67 100644 --- a/specs/superposition_operation/collection_operation/letter_mapping_2_spec.js +++ b/specs/superposition_operation/collection_operation/letter_mapping_2_spec.js @@ -2,7 +2,7 @@ var average_to_letter = require("../../../practices/superposition_operation/collection_operation/letter_mapping_2.js"); -describe('average_to_letter', function() { +ddescribe('average_to_letter', function() { var collection = [1,2,3,4,5,6,7,8,9,10]; diff --git a/specs/superposition_operation/collection_operation/practice_1_spec.js b/specs/superposition_operation/collection_operation/practice_1_spec.js index f59196e4..43b8b9b5 100644 --- a/specs/superposition_operation/collection_operation/practice_1_spec.js +++ b/specs/superposition_operation/collection_operation/practice_1_spec.js @@ -2,7 +2,7 @@ var hybrid_operation = require("../../../practices/superposition_operation/collection_operation/practice_1.js"); -describe('hybrid_operation', function() { +ddescribe('hybrid_operation', function() { var collection = [1,5,7,11,35,67]; diff --git a/specs/superposition_operation/collection_operation/practice_2_spec.js b/specs/superposition_operation/collection_operation/practice_2_spec.js index ccbd8ae3..18f20712 100644 --- a/specs/superposition_operation/collection_operation/practice_2_spec.js +++ b/specs/superposition_operation/collection_operation/practice_2_spec.js @@ -2,7 +2,7 @@ var hybrid_operation_to_uneven = require("../../../practices/superposition_operation/collection_operation/practice_2.js"); -describe('hybrid_operation_to_uneven', function() { +ddescribe('hybrid_operation_to_uneven', function() { var collection = [1,5,7,12,11,35,54,67,70]; diff --git a/specs/superposition_operation/collection_operation/practice_3_spec.js b/specs/superposition_operation/collection_operation/practice_3_spec.js index a9e91a26..4056ff09 100644 --- a/specs/superposition_operation/collection_operation/practice_3_spec.js +++ b/specs/superposition_operation/collection_operation/practice_3_spec.js @@ -2,7 +2,7 @@ var hybrid_operation_to_uneven = require("../../../practices/superposition_operation/collection_operation/practice_3.js"); -describe('hybrid_operation_to_uneven', function() { +ddescribe('hybrid_operation_to_uneven', function() { var collection = [1,5,7,12,11,35,54,67,70]; diff --git a/specs/superposition_operation/interval_operation/amount_even_spec.js b/specs/superposition_operation/interval_operation/amount_even_spec.js index aa15c48c..b772a536 100644 --- a/specs/superposition_operation/interval_operation/amount_even_spec.js +++ b/specs/superposition_operation/interval_operation/amount_even_spec.js @@ -2,7 +2,7 @@ var amount_even = require("../../../practices/superposition_operation/interval_operation/amount_even.js"); -describe('amount_even', function() { +ddescribe('amount_even', function() { var collection = [1,2,3,4,5,6,7,8,9,10]; diff --git a/specs/superposition_operation/interval_operation/average_uneven_spec.js b/specs/superposition_operation/interval_operation/average_uneven_spec.js index 3db01a78..9330e059 100644 --- a/specs/superposition_operation/interval_operation/average_uneven_spec.js +++ b/specs/superposition_operation/interval_operation/average_uneven_spec.js @@ -2,7 +2,7 @@ var average_uneven = require("../../../practices/superposition_operation/interval_operation/average_uneven.js"); -describe('average_uneven', function() { +ddescribe('average_uneven', function() { var collection = [1,2,3,4,5,6,7,8,9,10]; diff --git a/specs/superposition_operation/interval_operation/median_to_letter_spec.js b/specs/superposition_operation/interval_operation/median_to_letter_spec.js index b58fffaf..673546ab 100644 --- a/specs/superposition_operation/interval_operation/median_to_letter_spec.js +++ b/specs/superposition_operation/interval_operation/median_to_letter_spec.js @@ -1,8 +1,8 @@ 'use strict'; -var median_to_letter = require("../../../practices/superposition_operation/interval_operation/average_uneven.js"); +var median_to_letter = require("../../../practices/superposition_operation/interval_operation/median_to_letter.js"); -describe('median_to_letter', function() { +ddescribe('median_to_letter', function() { var collection = [20,21,22,23,24,25,26,27,28,29, 30,31,32,33,34,35,36,37,38,39,