Кресты / Говнокод #3401 Ссылка на оригинал

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
//sort rr
    unsigned int i = 0;
    unsigned int random = time(NULL);
    unsigned int nummx = rr->size();
    while (nummx > 0){
        unsigned long numsame=1;
        i = 0;
        for (unsigned int j = 1;j < nummx;++j)
            if ((*rr)[j].m_pref > (*rr)[i].m_pref){
                i = j;
                numsame = 1;
            }else if ((*rr)[j].m_pref == (*rr)[i].m_pref){
                ++numsame;
                random = random * 69069 + 1;
                if ((random / 2) < (2147483647 / numsame))
                    i = j;
            }
        swap((*rr)[i],(*rr)[--nummx]);
    }

Что делает код - достоверно неизвестно. Скорее всего, что-то сортирует и одновременно перемешивает.

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

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

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

        RTFM. Не, лучше так: RTFK (Read This Fucking Knuth).
        seed = ( 69069 * seed + 1) mod 2^32
        Ответить
        • >Такими темпами вы все фундаментальные алгоритмы, не доступные для понимания, в говнокод запишите.
          Нет. Такими темпами мы в говнокод запишем только говнокодные части этих фундаментальных либ. 🙂
          Ответить
              • Не смешно. Это банальная инициализация вектора с использованием линейного конгруэнтного метода алгоритма генерации псевдослучайных чисел. Сам алгоритм опубликован в 1951 году Лехмером из Гарварда. Параметры из кода для метода были впервые использованы Кнутом для архитектуры VAX, а затем и в GNU C. Этот же метод, только с другими параметрами, используется всеми си компиляторами.

                Указанный код, скорей всего, выдернут с dns_mxip qmail'а.
                Ответить
                • "инициализация вектора" Нифига. Перестановки вижу, а вот случайные числа там дальше ифа не идут. Так-то.
                  Ответить
                • Этож надо было так фундаментальный алгоритм обговнякать...
                  Ответить
                • Вообще говоря линейный конгруэнтный метод был предложен Д. Г. Лемером в 1949 году
                  Ответить
  • А это че? В пользу сортировки говорит замена последнего элемента неотсортированной части элементом с максимальным m_pref... А чо такое random и зачем?
    "сортирует и одновременно перемешивает" Поржал, спасибо 🙂
    Ответить
  • похоже на сортировку пузырьком по возрастанию поля m_pref, но с перемешиванием элементов имеющих равный m_pref.
    можно было просто выбрать какой-нибудь алгоритм неустойчивой сортировки...
    Ответить
      • вы правы... глянул в википедии... когда мы учили алгоритмы сортировки, этот алгоритм мы называли "быстрым" пузырьком...
        к стати он является нестабильным...
        Ответить
        • писец. я то думал, пушкофф знает алгоритмы сортировки. дико извиняюсь перед TarasB.
          Ответить
          • я названия не знаю... в универе нам под другими именами их давали...
            Ответить
            • ты в какой шараге учился? под другими именами им давали... в рот вам не давали?..
              Ответить
                  • зато у меня ЧСВ over9000 и вы ничего не можете с этим сделать...
                    Ответить
                    • Забавная история, что-бы вы не сказали - у вас всегда заминусованный комментарий.
                      У Bjarne_Stroustrup он всегда заплюсованный. Не находите закономерность?
                      Ответить
                      • здесь мало тех кто знает С++... в основном минусуют по религиознвм причинам... начни говорить всем что они не правы, и подтверждать это фактами, тебя тоже минусовать начнут...
                        Ответить
                        • >в основном минусуют по религиознвм причинам
                          Ну я на такие темы стараюсь не говорить, ибо бесполезно.
                          Ответить
                            • вот чуть ниже absolut низачто заминусовали... а ведь он прав...
                              Ответить
                              • ололо =))
                                absolut хорош только тем, что сплагиатил ник с названия известной марки водки
                                Ответить
                                • Только одно маленькое исключение - мой ник не ассоциируется с конкретной личностью.
                                  Ответить
                                  • Зато ассоциируется с конкретным продуктом!
                                    Ответить
                      • Чего вы хотели ... это же говнокод ... тут минусуют просто за то, что не смешно. Даже если это является истиной. Bjarne_Stroustrup хорош только тем, что сплагиатил имя известного человека.
                        Ответить
  • Велосипед. Столько разу уже реализовали нормальную сортировку. Пузырёк - говно.
    Ответить
    • Да, людей не знающих алгоритвом сортировки действительно стало очень много.
      И это печалит
      Ответить
      • Кстати, я его тоже наизусть не знаю и выводить в лом. Гуглить быстрее выходит.
        Ответить
        • Писец школота.
          Блин, точно. У вас в дельфи ведь игра Квейк делаються скачиванием компонента TQuake.
          Ответить
          • > Писец школота.

            Гордись тем, что ты знаешь наизусть алгоритм, который легко нагуглить, гордись и обзывай школотой всех, кто его не выучил, ведь ты теперь взрослый, ты только ведь что закончил школу.
            Короче, залогинься. Я хочу знать, как зовут тебя, тупого засранца, не способного на полезные мысли.
            Ответить
            • ты с пушкоффым одного поля ягода, но он хоть знает алгоритмы сортировки
              Ответить
              • Какого поля? Gamedev.ru? Тебя туда не пустили? Не ответил на вопросы при регистрации, поэтому такой злой, да?
                Ответить
                • >Не ответил на вопросы при регистрации
                  хааааа... когда я регался - их небыло. точно школота
                  Ответить
                • А чо там за вопросы при регистрации? Я там не регался ибо гугл знает все ответы, а такие форумы по-моему для дебилов, не знающих английский, но а всё же? Какой-то матан? Интеренсо.
                  Ответить
                    • у меня Волгателеком и страницы грузятся по полчаса при тарифе 4 мегабит, но попробую.
                      Ответить
                    • Вопрос "Что неправильно?" Ответ: "Каскадные игры" составлял школяр какой-то.
                      Ответить
                      • Что не является графическим редактором?
                        3D Studio MAX
                        OpenGL
                        Maya
                        Photoshop

                        Пиздец. Пиздец. Пиздец. Сделайте меня развидеть это!
                        Ответить
                        • Тут я хотя бы логику вижу.

                          Но вот то, что каскадные или многопользовательские игры могут быть "неправильно" - я тут логики не вижу. Это вообще как понять? )
                          Ответить
      • >И это печалит
        Нихрена. Я больше денег заработаю.
        Ответить
      • typedef int (*Petya)(void);
        
        struct Rr {
            Petya size;
        };
        Ответить
        • +1.

          косвенный вызов хункции вообще не плесплес
          Ответить
          • Именно поэтому я за сишечку, а кресты для питухов заедушных.
            Ответить
        • С другой стороны тогда (*rr)[i] не сработает. Можно ли сделать, чтобы этот код компилился в сишке?
          Ответить
            • rr не может быть и структурой (чтобы у неё было поле size), и указателем (чтобы был оператор []) одновременно.
              Ответить
              • а)) теперь я понял тебя

                а в крестах ты можыш переопределить какие угодно вжопураторы, да?
                Ответить
              • стоп! у нас же rr это УКАЗАТЕЛЬ на структуру

                struct hujukt *s;
                
                s->sosat();
                s[22];


                не?
                Ответить
                  • лучше твой пример переделать так

                    rr.foo();
                    ff[22];
                    Ответить
                • s->sosat() и s[22] работать будут, а вот (*s)[22] уже нет, потому что (*s) ≡ s[0] — это структура (с полем sosat), и к ней нельзя прилепить [22].
                  Ответить
                    • ебать тут знатоки сишечки собрались
                      в трех соснах запутались

                      пиздуйте на вордпрессе писать
                      Ответить
                  • а если s это указатель на указатель?
                    тогда (*s)[22] сработает.
                    Ответить
                    • А s->sosat() тогда как вызвать? Если s — это указатель на указатель, то (*s) будет указателем и у него не будет поля sosat.
                      Ответить
          • #include<stdio.h>
            
            typedef int (*Petya)(void);
            
            typedef union {
              Petya size;
              char data[255];
            } Rr;
            
            Rr *rr;
            
            int main() {
            
            rr->size();
            rr[5];
            
            }
            Ответить

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

Помни, guest, за тобой могут следить!

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


    8