UNPKG

mathball

Version:

A JavaScript library for Competitive Programming

43 lines (36 loc) 1.06 kB
'use strict'; 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); } } /* String Permutation * Function: getAllPerm() */ var validate = require('../validation/string'); function getAllPerm(str) { var letters = str.split(''), results = [[letters.shift()]]; var _loop = function _loop() { var currLetter = letters.shift(); var tmpResults = []; results.forEach(function (result) { var rIdx = 0; while (rIdx <= result.length) { var tmp = [].concat(_toConsumableArray(result)); tmp.splice(rIdx, 0, currLetter); tmpResults.push(tmp); rIdx++; } }); results = tmpResults; }; while (letters.length) { _loop(); } return results.map(function (letterArray) { return letterArray.join(''); }).filter(function (el, idx, self) { return self.indexOf(el) === idx; }).sort(); } exports.permutation = function (str) { validate(str, 'permutation'); return getAllPerm(str); };