1. C++ / Говнокод #19502

    0

    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
    unsigned int FileScanner::smartBruteForce(QByteArray &haystack, QByteArray &needle)
    {
        unsigned int count = 0;
        unsigned int dataSize = haystack.size();
        unsigned int needleSize = needle.size();
        unsigned int needleSizeCut = needleSize - 1;
        char* dp = haystack.data();
        char* np = needle.data();
        char lastNeedle = *(np + needleSize - 1);
    
        for(unsigned int i = 0; i < dataSize - needleSize + 1; i++)
        {
            if(*(dp + (i + needleSizeCut)) != lastNeedle) //This is smart technology ))))
                continue;
            unsigned int j;
            for(j = 0; j < needleSize; j++)
            {
                if(*(dp + (i + j)) != *(np + j))
                    break;
            }
            if(j == needleSize)
                count++;
        }
        return count;
    }

    Запостил: laMer007, 20 Февраля 2016

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

    • оттуда
      Ответить
    • Всякие KMP для лохов?
      Ответить
      • он не знает как его сделать и просит ему написать. хотя вроде программист, не знаю. очень удивило. и такая то смарт технология тут... осталось запатентовать
        Ответить
      • > KMP
        Да ему и до Бойера-Мура тут совсем немного осталось!
        Ответить
      • И квадратные скобки тоже.
        Ответить

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