1. Java / Говнокод #4114

    +84

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    for (int hasFirstPass = 0; hasFirstPass <= 1; ++hasFirstPass) {
                    for (int firstPassOffsetLeft = 0; firstPassOffsetLeft <= hasFirstPass; ++firstPassOffsetLeft) {
                        for (int firstPassOffsetRight = 0; firstPassOffsetRight <= hasFirstPass; ++firstPassOffsetRight) {
                            for (int firstPassOffsetTop = 0; firstPassOffsetTop <= hasFirstPass * 2; ++firstPassOffsetTop) {
                                for (int firstPassOffsetBottom = 0; firstPassOffsetBottom <= hasFirstPass * 2; ++firstPassOffsetBottom) {
                                    for (int hasSecondPass = 0; hasSecondPass <= 1; ++hasSecondPass) {
                                        for (int secondPassOffsetLeft = 0; secondPassOffsetLeft <= hasSecondPass * 2; ++secondPassOffsetLeft) {
                                            for (int secondPassOffsetRight = 0; secondPassOffsetRight <= hasSecondPass * 2; ++secondPassOffsetRight) {
                                                for (int secondPassOffsetTop =
                                                        0; secondPassOffsetTop <= hasSecondPass; ++secondPassOffsetTop) {
                                                    for (int secondPassOffsetBottom =
                                                            0; secondPassOffsetBottom <= hasSecondPass; ++secondPassOffsetBottom) {
    
                                                        // ... some processing code
                                                        
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }

    Есть некоторая обработка прямоугольника, проводящаяся в два этапа. Причём на первом этапе отступ от правого и левого края может быть не более 1, от верхнего и нижнего не более 2. На втором этапе наоборот. Каждый из этапов может отсутствовать, в таком случае естественно перебирать варианты отступа для этого этапа не нужно.

    Этот код перебирает все возможные варианты такой обработки.

    Запостил: burdakovd, 27 Августа 2010

    Комментарии (36) RSS

    • Задам немного необычный вопрос : где тут Java? ;)
      Ответить
      • Вообще да, синтаксически по этому фрагменту язык не определить.
        Может быть Java тут в длинных именах переменных?)
        Ах да, и в египетских скобочках
        Ответить
        • ну вероятно код вырвали из проекта на джаве
          Ответить
          • спасибо, Кэп.
            Только вот автор, постом выше сам не знает почему Java.
            Ответить
            • по-моему знает и пишет он о другом
              >>Вообще да, синтаксически по этому фрагменту язык не определить.

              и вообще что за глупая придирка - он что должен был в C++ его запостить чтоле? ))
              Ответить
              • > он что должен был в C++ его запостить чтоле?
                Нет, в С# :))
                Вообще-то, было бы неплохо иметь возможность в таких случаях отмечать код, как подходящий для нескольких языков.
                P.S. Хотя публикатор может и не знать об этом :)
                Ответить
                • >>иметь возможность в таких случаях отмечать код, как подходящий для нескольких языков.

                  ну это называется теги - на реформал и к страйкеру.
                  и да - мысль здравая, позволит избавится от срачей и не раздувать количество разделов.

                  хотя мне и так хорошо ))
                  Ответить
        • да, скобка на строке -- явный признак джавы. Но это еще может быть J#.
          Ответить
          • Всего лишь стиль форматирования - не более того.
            Ответить
            • а я бы понаблюдал за срачем тех, кто пишет
              for ( int i = 0; i < n; i++ ) {
                      /* statements */

              с теми кто пишет
              for ( int i = 0; i < n; i++ ) 
              {
                      /* statements */

              искренне ваш, Лемюэль Гулливер
              Ответить
              • Я пишу скобку на новой строке только в сях и C#. )
                Ответить
                • Я предпочитаю не париться над форматированием, а предоставить это дело эклипсу. (действия при сохранении)

                  А у него там по умолчанию sun coding conventions вроде.
                  Ответить
                  • В силу определнных причин я пишу в IDEA, а там это настраивается)
                    Ответить
                    • Не, ну в эклипсе тоже настраивается если вдруг надо, но зачем менять что-то если и так нормально. Достаточно только пару параметров поменять чтоб checkstyle не ворчал и всё=)
                      Ответить
              • for ( int i = 0; i < n; i++ ) {
                /* statements */
                }
                
                for ( int i = 0; i < n; i++ ) 
                {
                        /* statements */
                }


                простите, а в чем здесь срач?
                Ответить
                • http://www.freesoftwaremagazine.com/columns/top_4_internet_flame_wars_+around_free_software

                  Скролль вниз до «Indent styles: Kernighan & Ritchie vs. ANSI/BSD/Allman»

                  koodeer, вот там и тебе ответ. А в педивикии преуменьшают популярность тру стиля без \n перед {
                  Ответить
                  • и всё же все пишут
                    foreach($list as $item) :
                        echo $item;
                    endforeach;

                    а не
                    foreach($list as $item)
                    :
                        echo $item;
                    endforeach;
                    Ответить
                    • это ж пехепе, да еще с бейсиковой нотацией, тут и без холиваров понятно, что дурно
                      Ответить
              • А почему только эти два варианта? Их больше:
                http://ru.wikipedia.org/wiki/%D0%A1%D1%82%D0%B8%D0%BB%D1%8C_%D0%BE%D1%82%D1%81%D1%82%D1%83%D0%BF%D0%BE%D0%B2
                Ответить
              • где здесь постинкримент, bugmenot?
                Ответить
            • Обычно так пишут джависты
              Ответить
              • Я так пишу в перле, в джаваскриптах, редко когда приходится в пехапах.. На сишарпе не так, потому что студия настаивает, чтоб скобка на следующей строке было - может, конечно, там как-то настраивается, но мне лень искать, так скобки будут стоять, значит, так, не принципиально особо
                Ответить
                • в студии настраивается, а resharper даже форматирует.
                  просто у микрософта принято писать на другой строке (по мотивам сей)
                  Ответить
          • а вообще без скобок - это питон
            Ответить
            • без скобок - это когда прикус нормальный
              Ответить
            • Зато там или четыре пробела или таб, каждая иде по разному ставит
              Ответить
              • кошмар
                Ответить
              • ну IDE можно настроить, а http://www.python.org/dev/peps/pep-0008/ конкретно рекомендует 4 пробела
                Ответить
                • Ну, вроде есть рекомендация со скобочкой тоже.. Про то что рекомендуют знаю, сам использую их
                  Ответить
    • этоже похапе ))))))) где еще можно ТАК нагкодить ))))
      Ответить
      • говнокодить можно где угодно.
        Просто в ПХП это делать принято
        Ответить
    • это очень наглядный пример наглядной лимитированой рекурсии, мать её так...
      Ответить

    Добавить комментарий