littelbit-brain-games
Version:
hexlet brain-games
60 lines (46 loc) • 1.71 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _hexletPairs = require('hexlet-pairs');
var _gameFlow = require('../gameFlow');
var _gameFlow2 = _interopRequireDefault(_gameFlow);
var _utils = require('../utils');
var _utils2 = _interopRequireDefault(_utils);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
var rule = 'Balance the given number.';
var rebuildArrNum = function rebuildArrNum(arr) {
var max = arr[0];
var min = arr[0];
for (var i = 1; i < arr.length; i += 1) {
if (max < arr[i]) {
max = arr[i];
}
if (arr[i] < min) {
min = arr[i];
}
}
var newArr = [].slice.call(arr);
newArr.splice(arr.indexOf(max), 1, arr[arr.indexOf(max)] - 1);
newArr.splice(arr.indexOf(min), 1, arr[arr.indexOf(min)] + 1);
return newArr;
};
var isDiffMoreOne = function isDiffMoreOne(arr) {
return Math.max.apply(Math, _toConsumableArray(arr)) - Math.min.apply(Math, _toConsumableArray(arr)) > 1;
};
var getBalance = function getBalance(num) {
var arrNum = num.toString().split('').map(Number);
while (isDiffMoreOne(arrNum)) {
arrNum = rebuildArrNum(arrNum);
}
return arrNum.sort().join('');
};
var getGameData = function getGameData() {
var question = (0, _utils2.default)(1, 10000);
var rightAnswer = getBalance(question);
return (0, _hexletPairs.cons)(question, rightAnswer);
};
exports.default = function () {
return (0, _gameFlow2.default)(rule, getGameData);
};