Сообщение от Gvozd
|
Сделать из группы вложенных циклов, или из группы подряд идущих циклов, один единственный - вполне решаемая задача
|
Как Вы собрались объединять, например, это?
var arr = [3,4,5,6,7,8,9,0,1 /* and so on */], s = 0;
for(var i =0, length = arr.length; i < length; ++i){ // предварительные вычисления
s += arr[i];
}
for(var i = 0, length = arr.length; i < length; ++i){ // самое то.
arr[i] = (arr[i] / s * 100).toFixed(2) + '%';
}
alert([s, arr].join('\n'));
Сомневаюсь, что КМП можно записать одним циклом.
P.S. Грязные "хаки" вида
function indexOf(haystack, needle){
var n = haystack.length,
m = needle.length;
var i = 0, j = 0, offset = 0;
for(var k = 0, length = n * m; k < length; ++k){
i = k / m | 0;
j = k % m;
if(haystack[i + offset] != needle[j]){
offset = 0;
k += m - j - 1;
} else {
++offset;
if(j == m - 1) return i;
}
}
return -1;
}
var s1 = 'aababaO_o',
l1 = 'abaO', l2 = 'abac', l3 = 'aa', l4 = 'O_o';
alert( [
[indexOf(s1, l1), s1.indexOf(l1)],
[indexOf(s1, l2), s1.indexOf(l2)],
[indexOf(s1, l3), s1.indexOf(l3)],
[indexOf(s1, l4), s1.indexOf(l4)],
[indexOf(s1, 'a'), s1.indexOf('a')]
].join('\n') );
не рассматриваем.