За последние 24 часа нас посетили 8500 программистов и 510 роботов. Сейчас ищут 188 программистов ...

Тестовое задание для курсов

Тема в разделе "Сделайте за меня", создана пользователем Batman8585, 12 дек 2018.

  1. Batman8585

    Batman8585 Новичок

    С нами с:
    12 дек 2018
    Сообщения:
    6
    Симпатии:
    0
    Необходимо написать код для ТЗ. буду благодарен тому кто сможет помочь. Есть непрерывная не сортированная последовательность чисел от X до N. Она содержится в массиве S. Из массива убрали один элемент. Как найти какой элемент убрали?
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    1.219
    Симпатии:
    244
    Адрес:
    Татарстан
    если под словом непрерывная подразумевается последовательность целых чисел,а числа X, X+1,X+2 ...N
    то делаешь цикл от X до N с шагом в +1, и проверяешь - есть ли это число в массиве,
    как только нашел число которого в массиве нет - стоп - выводим число, именного его и удалили
     
  3. Batman8585

    Batman8585 Новичок

    С нами с:
    12 дек 2018
    Сообщения:
    6
    Симпатии:
    0
    $S = [1,2,3,4,5,6,7];
    $X = [1,2,3,4,6,7];

    $result = array_values(array_diff($S, $X));

    print_r($result); // 5


    Похоже?
     
  4. Sail

    Sail Активный пользователь

    С нами с:
    1 ноя 2016
    Сообщения:
    890
    Симпатии:
    188
    @ADSoft, не проще ли просуммировать и сравнить с ожидаемой суммой?
    @Batman8585, Например, для интервала [3..9] ожидаемой будет (3+11)*4+7
     
  5. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    1.219
    Симпатии:
    244
    Адрес:
    Татарстан
    @Sail - верно, так проще разницу найти - это и будет искомое если не 0, только ожидаемая сума что-то у вас неверно записана))))
    там сумма арифм прогресси, (X+N)/2 * (N-X+1), для [3..9] будет (3+9)/2 * (9-3+1) = 12/2 * 7 = 42
    ну и опять при допущении что именно о что последовательность натур чисел, непрерывная итд
     
  6. Sail

    Sail Активный пользователь

    С нами с:
    1 ноя 2016
    Сообщения:
    890
    Симпатии:
    188
    @ADSoft, да, сначала хотел от 3 до 9, а после решил до 11 сделать, да забыл сам интервал поменять :oops: