Пользователь
// validation Article.path('title').validate(function (v) { return !!v && v.length > 5 && v.length < 70; });
Благодаря таким рассуждениям и опущенным рукам можно сильно застрять на месте и уже по-настоящему начать растрачивать свой ценнейший ресурс — талант.
// Приветствуются конструктивные замечания по коду function problem2(input) { var openIndex = input.indexOf('{'); if (openIndex === -1) return [input]; var result = ['']; while (openIndex !== -1) { var firstPart = input.substring(0, openIndex); var parts = []; var openCount = 0; for (var i = openIndex + 1, length = input.length; i < length; ++i) { if (input[i] === '{') ++openCount; else if (input[i] === '}') { --openCount; if (openCount < 0) { parts.push(input.substring(openIndex + 1, i)); input = input.slice(i + 1); break; } } else if (openCount === 0 && input[i] === '|') { parts.push(input.substring(openIndex + 1, i)); openIndex = i; } } var newResult = []; parts.forEach(function (part) { problem2(part).forEach(function (partResult) { result.forEach(function (resultItem) { newResult.push(resultItem + firstPart + partResult); }); }); }); result = newResult; openIndex = input.indexOf('{'); } if (input.length > 0) { result.forEach(function (element, index, array) { array[index] = element + input; }); } return result; }
Первое правило работает не только в написании кода.
Респект за планы в issue tracker`е.
Ради интереса сравнил производительность: jsfiddle.net/EzwkA/
И часто в ваших проектах приходится писать такие алгоритмы?