1. Список говнокодов пользователя vistefan

    Всего: 73

  2. Си / Говнокод #14224

    +135

    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
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    void permutate(int a[10], int n) {
        // God bless mr. Donald E. Knuth;
        // Tons of oil to English bell ringers!
    
        // WARNING: It's dangerous to go alone, take this^H read this shit
        int c[10], o[10], j, s, q;
        for (j = 1; j <= n; j++) {
            c[j] = 0;
            o[j] = 1;
        }
        while (1) {
            check(a, n);
            j = n;
            s = 0;
            while (1) {
                do {
                    q = c[j] + o[j];
                    if (q < 0) { o[j] = -o[j]; --j; }
                } while (q < 0);
                if (q == j) {
                    if (j == 1) return; else ++s;
                    o[j] = -o[j];
                    --j;
                    continue;
                }
                int t = a[j - c[j] + s];
                a[j - c[j] + s] = a[j - q + s];
                a[j - q + s] = t;
                c[j] = q;
                break;
            }
        }
    }

    Реализация алгоратма "простых изменений" по описанию из Кнута (т4. Комбинаторный поиск, генерация всех перестановок).
    Напрашивающиеся goto раздражают, было бы приятно увидеть менее пахучие реализации. Не смог нагуглить, забугорного названия этого алгоритма не знаю, а про "простые изменения" тинай вики молчит.

    vistefan, 13 Декабря 2013

    Комментарии (95)
  3. Куча / Говнокод #13631

    +125

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    int prev, next;
    // next should not be equal to prev;
    next = radnom(MAX);
    if (next = prev)
        next = random(MAX);

    Просто передаю концепцию на общеславянском.
    Будет интересно посчитать насколько всё-таки это говно уменьшает вероятность совпадения при разных MAX.

    vistefan, 21 Августа 2013

    Комментарии (33)
  4. JavaScript / Говнокод #13534

    +156

    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
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    // ==UserScript==
    // @name        GK_nickcolors
    // @namespace   GK
    // @description Highlighting usernames relying their ID's. (Oldfag detector).
    // @include     http://govnokod.ru/*
    // @include     http://www.govnokod.ru/*
    // @version     0
    // @grant       none
    // ==/UserScript==
    
    var re = /(\d+)$/;
    const TOP_BORDER = 8000;
    
    function getColor(href) {
      var res = re.exec(href);
      var id = parseInt(res[0]);
      var coeff = id / TOP_BORDER;
      var b = 40;
      var g = Math.floor(255 * coeff);
      var r = Math.floor(255 - g);
      return 'RGB(' + r + ',' + g + ',' + b + ')';
    }
    
    function nickColors() {
      $ = unsafeWindow.jQuery;
      $('p.author a:nth-child(2), strong.entry-author a').each(function() {
        this.style.color = getColor(this.href);
      });
    }
    
    document.onkeydown = function (event) {
      if (!document.getElementById) return;
      if (window.event) event = window.event;
      if (event.ctrlKey)
        if ((event.keyCode ? event.keyCode : event.which ? event.which : null) == 13)
          nickColors();
    }

    Скроллишь уютненький. Видишь - срач. И не поймёшь, кто прав, кто виноват. Клацаешь Ctrl+Enter - и вот оно, олдфаги краснеют, зеленки зеленеют.
    (Правда диссонанс из-за того, что крестик-то как раз-таки красный, а галочка - зелёная).
    Вдохновился http://govnokod.ru/13516#comment190221 тут.
    Заодно расквитайте за незнание JS без остатка.

    vistefan, 02 Августа 2013

    Комментарии (111)
  5. Куча / Говнокод #13477

    +124

    1. 1
    "(\{\{([#%$])([^:\}]+)(:([^\}]+))?\}\})"

    Регуляркоговно.
    Заменено на

    "(\{\{([#%$])(.+?)(:(.+))?\}\})"

    vistefan, 25 Июля 2013

    Комментарии (32)
  6. PHP / Говнокод #13296

    +143

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    function handle($handler) {
        //...
        ob_start();
        include("./handlers/$handler.php");
        $result = ob_get_contents();
        ob_end_clean();
        return $result;
    }

    Требуется результат работы внешнего скрипта вывести посреди работы внутреннего. Есть ли варианты без голимой буферизации выходного потока?

    vistefan, 03 Июля 2013

    Комментарии (26)
  7. Си / Говнокод #11776

    +114

    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
    #include <stdio.h>
    /* Программа выводит ASCII-коды введённых символов */
    int main()
    {
        int a[255];
        int i;
        for (i = 0; i < 256; i++) {
            a[i] = i;
        }
        int c;
        while ((c = getchar()) != EOF) {
            if (c != '\n')
                printf("%d\n", a[c]);
        }
        return 0;
    }

    vistefan, 15 Сентября 2012

    Комментарии (37)
  8. C# / Говнокод #11733

    +123

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    static void Main() {
        Random random = new Random();
        ...
        int n1 = notations[random.Next(max)];
        int n2 = notations[random.Next(max)]; // дублирование кода!
        ....
        //исправлено на
        int n1 = notations[random.Next(max)];
        int n2 = n1;
    }

    vistefan, 09 Сентября 2012

    Комментарии (86)
  9. PHP / Говнокод #11598

    +56

    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
    public function analyse($args) {
        $i = -1;
        $length = 0;
        $pictures = array();
    
        foreach ($args as $string) {
            switch (trim($string)) {
                case '{':
                    $i++;
                    $pictures[$i] = new element();
                    $length++;
                    break;
                case '}':
                   break;
               default:
                    if (preg_match('/^ {0,}([A-Za-z]{1,})\s{0,}:\s{0,}\'([\S\s]{0,})\';/iu', $string, $matches)) {
                        $pictures[$i]->setProperty($matches[1], $matches[2]);
                    }
                    break;
            }
        }
        return new container($pictures, $length);
    }

    Рукопашный парсинг Json-подобного синтаксиса.

    vistefan, 15 Августа 2012

    Комментарии (8)
  10. PHP / Говнокод #11446

    +75

    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
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    public function fromRimToDec($str) {
        $i = 1;
        $ii = 2;
        $iii = 3;
        $iv = 4;
        $v = 5;
        $vi = 6;
        $vii = 7;
        $viii = 8;
        $ix = 9;
        $x = 10;
        return $$str;
    }
    
    public function fromDecToRim($str) {
        $RimDigit = array(1 => 'i', 4 => 'iv', 5 => 'v', 9 => 'ix', 10 => 'x');
        $result = '';
        if ($str <= 3) {
            for ($i = 0; $i < $str; $i++) {
                $result = $result.$RimDigit[1];
            }
        } else if ($str > 5 && $str <= 8) {
            $result = $RimDigit[5];
            for ($i = 5; $i < $str; $i++) {
                $result = $result.$RimDigit[1];
            }
        } else {
            $result = $RimDigit[$str];
        }
        return $result;
    }

    Две феерически говёных взаимнообратных функции которые используются в супер функционале чьей-то самописной цмс для автоматического преобразования нумерованных списков с римскими\арабскими цифрами. (Да да, в этой цмс списки с римскими цифрами ограничены по длине десятью итемами, а обычные списки обрабатываются отдельно.) Вся алгебра непозиционных систем счисления меркнет в сравнении.

    vistefan, 19 Июля 2012

    Комментарии (9)
  11. PHP / Говнокод #11444

    +63

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    private function lowercase($s) {
        $chars_hi = utf8_encode('ABCDEFGHIJKLMNOPQRSTUVWXYZАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯЁ');
        $chars_lo = utf8_encode('abcdefghijklmnopqrstuvwxyzабвгдежзийклмнопрстуфхцчшщъыьэюяё');
        return strtr($s, $chars_hi, $chars_lo);
    }

    Картина маслом: Велосипедист бьётся лбом о локали.
    Сие говно выдаёт нечто из греческого алфавита вместо 'ё'.

    vistefan, 19 Июля 2012

    Комментарии (34)