Преобразование массивов. Задача не для слабонервных
Доброго времени суток уважаемые форумчане.
Прошу помочь с решением задачи (сам не смог справиться, честно пытался). Есть два массива с числами, пример: arrOne [0, 9, 10, 11, 12, 20, 28, 32, 33, 47, 65, 69] arrTwo [8, 14, 15, 16, 17, 18, 19, 31, 35, 36, 37, 58, 68, 73] Нужно преобразовать эти массивы так, чтобы: 1.Первое значение элемента первого массива было меньше значения первого элемента второго массива, второе значение элемента первого массива меньше значения второго элемента второго массива и так далее 2. Оставлять только максимально приближенные к значению, т.е. 0 ->8 = ok, 9-14,10-14,11-14 -> не ok, потому как есть 12 В идеале нужно массивы привести к виду: arrOne = [0, 12, 28, 33, 47, 65, 69]; arrTwo = [8, 14, 31, 35, 58, 68, 73]; Буду благодарен возможным вариантам решения, а так-же подсказкам. Заранее спасибо |
timecom, тебе кто задачку поставил? :D
Есть т.с. оригинальный текст? Цитата:
|
timecom,
Братан))) Пиши |
Цитата:
Что Вас развеселило - не понятно. |
Цитата:
Иногда лучше молчать - как раз про Вас. --- Задача как по мне вполне интересная и занимательная получилась. Кто не хочет дать подсказку - не давайте. Кто хочет - буду благодарен. |
:-?
var arrOne = [0, 9, 10, 11, 12, 20, 28, 32, 33, 47, 65, 69],
arrTwo = [8, 14, 15, 16, 17, 18, 19, 31, 35, 36, 37, 58, 68, 73];
function foo(e, f) {
var b = [],
d = [f[0]];
e.forEach(function(c,i) {
a = d.slice(-1)[0];
c > a && (arrTwo.some(function(b) {
return b > c && d.push(b)
}), c = e[i - 1], b.push(c))
});
b.push(e.slice(-1)[0]);
return {
one: b,
two: d
}
};
var res = foo(arrOne, arrTwo);
alert(res.one + '\n'+res.two)
|
Цитата:
|
Цитата:
Или будут еще "занимательные" задачки? |
Вариант
var arrOne = [0, 9, 10, 11, 12, 20, 28, 32, 33, 47, 65, 69],
arrTwo = [8, 14, 15, 16, 17, 18, 19, 31, 35, 36, 37, 58, 68, 73],
i = 0, j = 0;
while (i < arrOne.length) {
if(arrOne[i] < arrTwo[j]) {
while(arrOne[i + 1] < arrTwo[j]) { arrOne.splice(i, 1);}
i++; j++;
} else {
arrTwo.splice(j, 1);
}
}
alert(arrOne + '\n' + arrTwo);
|
Цитата:
|
| Часовой пояс GMT +3, время: 04:18. |