Представитель Шуры Люберецкого в ЖЖ (brat_luber) wrote,
Представитель Шуры Люберецкого в ЖЖ
brat_luber

Category:

Боже, какой ужас

Джаваскриптеры и не только решают задачку:

Написать функцию, которая для заданного отсортированного массива чисел (все числа разные) выводит текстовую строку диапазонов:

getRanges([0, 1, 2, 3, 4, 7, 8, 10]); // 0-4,7-8,10
getRanges([4, 7, 10]); // 4,7,10
getRanges([2, 3, 8, 9]); // 2-3,8-9

Кто-то создает на каждый чих по объекту, кто-то собирается писать “с помощью гугла и Stackoverflow”, обсуждают читаемость простынки в несколько десятков строк с нетривиальной логикой… Ребята! Неужели приведенное на хабре решение более “читаемо”, чем такое (простите, но это будет plain old C), написанное за десять минут?

void printRanges( int *arr, int len ) {
    int start = arr[0];
    int prev = arr[0];
    int printed = 0;
    int i;
    for ( i = 1; i < len + 1; i++ ) {
        if ( i == len || arr[i] != prev + 1 ) {
            if ( printed ) {
                printf( "," );
            }
            if ( start == prev ) {
                printf( "%i", start );
            } else {
                printf( "%i-%i", start, prev );
            }
            printed = 1;
            if ( i < len ) {
                start = arr[i];
            }
        }
        if ( i < len ) {
            prev = arr[i];
        }
    }
    printf( "\r\n" );
}

Да, тут есть возможные улучшения - но неужели решение из поста кажется более понятным?

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Subscribe

  • Про намеофраша

    На известной интернет-голосовалке произошел крупный редизайн. Как водится, сцыкливые организаторы не удалили Ленина и Сталина из списка, а просто…

  • Про отцов-основателей, или почему отличаются ЖЖ, форумы и НоНейМ

    В продолжение и развитие предыдущего большого поста, точнее, его "интернетовской" части. Начну на этот раз с околопсихологической байки. Британские…

  • Про футбол

    Смотреть по телевизору футбол в 16:9 - в корне отличается от просмотра того же футбола в обычном формате 4:3.

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments