Джаваскриптеры и не только решают задачку:
Написать функцию, которая для заданного отсортированного массива чисел (все числа разные) выводит текстовую строку диапазонов:
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" ); }
Да, тут есть возможные улучшения - но неужели решение из поста кажется более понятным?
Слишком мало строчек и классов, не энтерпрайзно.
Ну да, согласен, надо как-то в духе Enterprise FizzBuzz писать.