Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.12.2016, 11:45
Интересующийся
Отправить личное сообщение для timecom Посмотреть профиль Найти все сообщения от timecom
 
Регистрация: 16.08.2015
Сообщений: 18

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

Буду благодарен возможным вариантам решения, а так-же подсказкам.
Заранее спасибо
Ответить с цитированием
  #2 (permalink)  
Старый 14.12.2016, 13:42
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

timecom, тебе кто задачку поставил?
Есть т.с. оригинальный текст?

Сообщение от timecom
Прошу помочь с решением задачи (сам не смог справиться, честно пытался).
Раздел "Работа" как раз для таких ситуаций.
Ответить с цитированием
  #3 (permalink)  
Старый 14.12.2016, 14:08
Аватар для Coriolan161
Профессор
Отправить личное сообщение для Coriolan161 Посмотреть профиль Найти все сообщения от Coriolan161
 
Регистрация: 21.11.2015
Сообщений: 440

timecom,
Братан))) Пиши
Ответить с цитированием
  #4 (permalink)  
Старый 14.12.2016, 14:18
Интересующийся
Отправить личное сообщение для timecom Посмотреть профиль Найти все сообщения от timecom
 
Регистрация: 16.08.2015
Сообщений: 18

Сообщение от ksa Посмотреть сообщение
timecom, тебе кто задачку поставил?
Есть т.с. оригинальный текст?


Раздел "Работа" как раз для таких ситуаций.
Задачку поставил себе сам с целью изучения языка.
Что Вас развеселило - не понятно.

Последний раз редактировалось timecom, 14.12.2016 в 14:23.
Ответить с цитированием
  #5 (permalink)  
Старый 14.12.2016, 14:20
Интересующийся
Отправить личное сообщение для timecom Посмотреть профиль Найти все сообщения от timecom
 
Регистрация: 16.08.2015
Сообщений: 18

Сообщение от Coriolan161 Посмотреть сообщение
timecom,
Братан))) Пиши
Ну для начала я Вам не братан.
Иногда лучше молчать - как раз про Вас.

---
Задача как по мне вполне интересная и занимательная получилась. Кто не хочет дать подсказку - не давайте. Кто хочет - буду благодарен.
Ответить с цитированием
  #6 (permalink)  
Старый 14.12.2016, 14:32
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109


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)
Ответить с цитированием
  #7 (permalink)  
Старый 14.12.2016, 14:41
Интересующийся
Отправить личное сообщение для timecom Посмотреть профиль Найти все сообщения от timecom
 
Регистрация: 16.08.2015
Сообщений: 18

Сообщение от рони Посмотреть сообщение

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)
Большое человеческое спасибо.
Ответить с цитированием
  #8 (permalink)  
Старый 14.12.2016, 14:48
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

Сообщение от timecom
Задачку поставил себе сам с целью изучения языка.
Ну как, изучил?
Или будут еще "занимательные" задачки?
Ответить с цитированием
  #9 (permalink)  
Старый 14.12.2016, 14:49
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Вариант
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);
Ответить с цитированием
  #10 (permalink)  
Старый 14.12.2016, 15:20
Интересующийся
Отправить личное сообщение для timecom Посмотреть профиль Найти все сообщения от timecom
 
Регистрация: 16.08.2015
Сообщений: 18

Сообщение от Dilettante_Pro Посмотреть сообщение
Вариант
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);
Спасибо). Примерно так я пытался делать, только через for.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа для знатока jQuery virtualbrest Работа 0 24.07.2013 16:05
Решение проблемы кодировок для AJAX и PHP без iconv (cp1251 в AJAX) Serge Ageyev AJAX и COMET 10 24.04.2013 20:48
Подскажите технологию для реализации. sektor-sumy Общие вопросы Javascript 3 11.04.2013 23:49
HTA-приложение для радио Pianorama Magneto Ваши сайты и скрипты 42 22.01.2012 08:34
Интересная задача для javascript bobri4 Общие вопросы Javascript 4 16.07.2011 13:08