За последние 24 часа нас посетили 18242 программиста и 1623 робота. Сейчас ищут 1748 программистов ...

Задачка на нахождение непрерывных интервалов

Тема в разделе "Прочее", создана пользователем artoodetoo, 9 май 2016.

Метки:
  1. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    @denis01, все пашет.
    --- Добавлено ---
    @runcore, я просто тупо на результат глянул, и не смотрел код норм, потом увидел рандом.
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Там в foreach функция next не двигает указатель для массива, точнее у foreach теперь свой указатель, раньше такого не было :)
     
    #27 denis01, 10 май 2016
    Последнее редактирование: 10 май 2016
  3. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    если это единственное к чему ты смог прикопаться, то я спокоен ))
    --- Добавлено ---
    прикольно
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.118
    Симпатии:
    1.245
    Адрес:
    там-сям
    Код (PHP):
    1. <?php
    2.  
    3. function streaks($in)
    4. {
    5.     $items = array_map('intval', explode(',', $in));
    6.     for ($i = 0, $out = []; list($k, $v) = each($items); $i++) {
    7.         if ($k == 0 || $v - 1 !== $last) {
    8.             $out[$i] = $first = $last = $v;
    9.         } else {
    10.             $out[--$i] = $first.'-'.($last = $v);
    11.         }
    12.     }
    13.     return implode(',', $out);
    14. }
    15.  
    16. echo streaks('1,3,4,5,6,7,8,10,12,16,17,20,21,22,23,24');
    edited: заменил цикл на for. выкинул одно условие,
    edited2: поправил ошибку добавив $first
     
  5. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    @artoodetoo, ты ждешь на входе строку, а не массив нужен?
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.118
    Симпатии:
    1.245
    Адрес:
    там-сям
    @mahmuzar, автор оригинального сообщения не уточнял что из себя представляет список. я считаю: пусть это будет на усмотрение исполнителя. лично я выбрал строку на входе и выходе.

    про выбор "16-17" или "16..17" — в оригинале через "-", но реально пофигу. а вот лишняя запятая в конце это BAD.
     
    #31 artoodetoo, 10 май 2016
    Последнее редактирование: 10 май 2016
  7. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    внимательнее. спор возник о том считать ли 16 и 17 диапазоном или отдельными числами? а не в о том Тире или Двоеточие.
    в самом задании подразумевается что должно стать диапазоном. Хотя по факту, трактовать можно и как просто отдельные элементы.
    --- Добавлено ---
    ИТОГ: интересного и нетривиального решения пока не увидел. Короткого однострочника там, или используя какието неочевидные или редкие элементы алгоритмов или самих ЯП. а хотелось бы. для саморазвития.
     
  8. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.118
    Симпатии:
    1.245
    Адрес:
    там-сям
    @runcore, надо было стараться ;) ну и никто не ограничен по срокам, вдруг кто-то ещё забредёт.

    сам формат темы мне кажется перспективным.