Преобразование массивов. Задача не для слабонервных
Доброго времени суток уважаемые форумчане.
Прошу помочь с решением задачи (сам не смог справиться, честно пытался). Есть два массива с числами, пример: 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, время: 00:07. |