Няшная / Говнокод #11347 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
int * lPtr=item;
int * lPtrEnd = item + count;

for (lPtr = item ; lPtr < lPtrEnd && *lPtr<fid ; lPtr+=4);
if( lPtr >= lPtrEnd ) lPtr=lPtrEnd-1; // last element
if(*lPtr != fid)
{
        if(--lPtr >=item)
        {   
                if(*lPtr!= fid)
                {   
                        if(--lPtr >=item)
                        {   
                                if(*lPtr!= fid)
                                {   
                                        if(--lPtr >=item)
                                        {   
                                                if(*lPtr!= fid)
                                                {   
                                                        break; // value not found
                                                }   
                                        } else break;
                                }   
                        }  else break;
                }   
        } else break;
}


if( lPtr > item)
{
        while ( *(lPtr-1) == fid && lPtr > item) lPtr--; // first ocurence of fid
}

Быстрый алгоритм поиска

Запостил: wtfcode wtfcode, (Updated )

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

  • > Быстрый алгоритм поиска
    "Быстрый" алгоритм поиска?
    Ответить
      • Ну да, слона точку с запятой то я и не заметил.

        UPD: обидно, что не скомпилится из-за бряков вне цикла.
        Ответить
        • Покончим с произволом компиляторов C! Пусть брякаются циклы, пусть брякаются свитчи, ифы, процедуры, траи и катчи, пусть брякаются просто вложенные блоки из скобочек, пусть брякаются сами бряки:
          break {
          break;
          };
          и наконец пусть брякается вся программа, одним большим глобальным бряком!
          Ответить
          • You see, young break. Those breaks don't care about break break. They just want to take your break and break their own break. The only break for this is to break.
            Ответить
            • А как тогда писать код типа:
              for (...) {
                  if (x == 5) {
                      /* немного кода */
                      break;
                  }
              }
              Ответить
                • Кстати прикольная идея.
                  break for for; // бряк из двух вложенных циклов for...
                  Ответить
                        • Нужно дать возможность именовать блоки { } и потом брейк или континуе на имя блока
                          Ответить
                          • Проще указывать глубину выхода. Что-то типа break(2); Беда будет в том случае, когда добавил (удалил) новый уровень вложенности, а бряки не проверил.
                            Ответить
                  • так и вижу мечту тараса
                    function f of x, y returning int
                    where
                      x is int,
                      y is int
                    begin function f of x, y returning int
                      loop for int i from 0 to N do
                      begin loop for int i from 0 to N
                        loop for int j from 0 to M do
                        begin loop for int j from 0 to M
                          ....
                          break loop for int j from 0 to M, loop for int i from 0 to N;   { выход из двух циклов!!! }
                          ....
                        end loop for int j from 0 to M;
                      end loop for int i from 0 to N;
                      f returning 100;
                    end function f of x, y returning int
                    where x is int, y is int;

                    зы исправил на отступы в 2 пробела
                    Ответить
                    • Это боян, есть старая шутка про ассемблер в стиле Ada:

                      move eax as integer to edx as integer at central processing unit
                      Ответить
              • Алгоритм который всегда завершается ещё вчера.
                Ответить
                • Есть вот в некоторых функциональных языках плейсхолдер _, обозначающий "не важно".
                  O(_)
                  К сожалению, кодеры пишущие с такой сложностью алгоритма, ещё не перевелись....
                  Ответить
                  • А в каких?
                    И кстати, пока есть возможность, хотел тут с функциональщиной познакомиться, какой для этого язык подойдёт?
                    Ответить
                      • А если универсальный язык нужен?

                        Плюс JavaScript вроде не мешает в императивном стиле писать.

                        UPD: Или это ответ на первый вопрос?
                        Ответить
                        • > Плюс JavaScript вроде не мешает в императивном стиле писать.
                          Но дает писать и в функциональном 😉 И даже тот же хаскель дает писать императивно...
                          Ответить
                          • Хм. Ладно, но вот если брать из этих языков, какой позволит без лишних криков "ЧтооооОо?" познать ФП?

                            - Scheme
                            - Scala
                            - Nemerle
                            - Haskell
                            Ответить
                            • В Scheme можно прочувствовать в основном базовые идеи. Минимум сахара и возможностей, всё прозрачно. В Haskell всё по хардкору: ленивые вычисления, алгебра типов, монады, сопоставление с образцом. В Scala многое из этого есть, но в ней куча фич и возможностей, которые к ФП имеют весьма посредственное отношение.
                              С Nemerle не работал, но подозреваю, что это аналог Scala под .NET с мощной системой метапрограммирвания, что, опять же, отвлекает нас от ФП.

                              В любом случае, начать со Scheme будет весьма полезно.
                              Ответить

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

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8