1. Лучший говнокод

    В номинации:
    За время:
  2. PHP / Говнокод #4207

    +161

    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
    38. 38
    39. 39
    function ss ($id){ // получить дату рождения по ИНН для украины
    
    $result = array();
    
        //sex
        $result['sex'] = (substr($id,8,1) % 2) ? 'M' : 'F';
    
        //birthdate
        $days = substr($id,0,5);
        $year = 1900; $day = 01; $month = 01;
        while ($days > 0)
            {
            $daysInYear = (checkdate (02, 29, $year)) ? 366 : 365;
            if ($days > $daysInYear)
                {
                $days -= $daysInYear;
                $year ++;
                }
            else{
                for ($daysInMonth = 31; !checkdate($month, $daysInMonth, $year); $daysInMonth–) ;
                if ($days > $daysInMonth)
                    {
                    $days -= $daysInMonth;
                    $month ++;
                    }
                else{
                    $day = $days;
                    $days = 0;
                    }
                }
            }
        $result['year'] = $year;
        $result['month'] = $month;
        $result['day'] = $day;
    
        return $result;
    }
    
    обходить каждый день начиная с 1900 это сила

    быстрее было бы

    $inn = '2322222222';
    $inn = substr($inn,0,5);
    $normal_date = date("d.m.Y", strtotime('01/01/1900 + ' . $inn . ' days - 1 days'));

    ggggg, 09 Сентября 2010

    Комментарии (55)
  3. C++ / Говнокод #3538

    +163

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    switch(c=getchar()){
        case '1': l+1; break;
        case '2': l+2; break;
        case '3': printf("\n Spisok:");l.print_all(); break;
        case '4': l-5; break;
    }

    кто угадает куда девается результат сложения и зачем оно надо пусть возьмет с полки пирожок

    tony, 22 Июня 2010

    Комментарии (55)
  4. Pascal / Говнокод #3450

    +112

    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
    procedure TForm1.btn_enterClick(Sender: TObject);
    begin
      //blalbla
      if someInput.text='0' then
      begin
        //blabla
      end;
      if someInput.text='0.0' then
      begin
        //blabla
      end;
      if someInput.text='0.00' then
      begin
        //blabla
      end;
      //blalbla
    end;

    Мне когда-то одногруппник показал такой код.
    - А если там будет '0.0000'? - спросил я
    - Этот случай я не прорабатывал, люди так вводить не будут

    J0hnny, 10 Июня 2010

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

    +142

    1. 1
    2. 2
    Страйкер, даешь неделю отдыха гостям!
    А то они тут совсем из сил выбились… http://govnokod.ru/3410

    mrbig66, 08 Июня 2010

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

    +179

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    if (empty($_GET["page"])) {
            $page_get = 1;
        } else {
            $page_get = "$_GET[page]";
            $page_get = trim($page_get);
            $page_get = stripslashes($page_get);
            $page_get = htmlspecialchars($page_get);
            $page_get = intval($page_get);
            $page_get = "$page_get";
        }

    WAP-ENGINE
    хакеры не пройдут )

    lugaro, 22 Апреля 2010

    Комментарии (55)
  7. Assembler / Говнокод #970

    +253.5

    1. 1
    0871    jmp 0x0871

    Прислали после дизассемблирования:))

    guest, 28 Апреля 2009

    Комментарии (55)
  8. VisualBasic / Говнокод #422

    −512

    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
    Public Function MakeShort(Parametr As String) As String
    Dim temp As String
        
    Dim f1index As Integer
    Dim Lastindex As Integer
        
    If (Parametr <> "") Then
    temp = Strings.Replace(Parametr, "\", " ")
    temp = Strings.Replace(temp, "/", " ")
    temp = Strings.Replace(temp, ":", " ")
    temp = Strings.Replace(temp, "*", " ")
    temp = Strings.Replace(temp, "?", " ")
    temp = Strings.Replace(temp, "<", " ")
    temp = Strings.Replace(temp, ">", " ")
    temp = Strings.Replace(temp, "|", " ")
        
        
        f1index = Strings.InStr(temp, Strings.Chr(34))
        Lastindex = Strings.InStrRev(temp, Strings.Chr(34))
        
        temp = Strings.Mid(temp, f1index, Lastindex)
        
        MakeShort = Strings.Replace(temp, Strings.Chr(34), "")
    Else
        MakeShort = ""
    End If
    End Function

    Что то типа парсера... или точнее готовится так из строки имя файла

    guest, 19 Января 2009

    Комментарии (55)
  9. C++ / Говнокод #28

    +22

    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
    typedef struct tagRECT{
        LONG    left;
        LONG    top;
        LONG    right;
        LONG    bottom;
    } RECT, *PRECT, NEAR *NPRECT, FAR *LPRECT;
    
    typedef const RECT FAR* LPCRECT;
    
    typedef struct _RECTL{
        LONG    left;
        LONG    top;
        LONG    right;
        LONG    bottom;
    } RECTL, *PRECTL, *LPRECTL;
    
    typedef const RECTL FAR* LPCRECTL;

    Вот так тайпдефятся абсолютно одинаковые структуры в windef.h

    guest, 28 Ноября 2008

    Комментарии (55)
  10. JavaScript / Говнокод #28792

    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
    const ttfMeta = require('ttfmeta');
    const fs = require('fs');
    
    let oldName = process.argv[2];
    
    ttfMeta.ttfInfo(oldName, (err, result) => {
      if (err) {
        console.log('error', err)
      } else {
        let newName = result.tables.name[6];
    
        if(newName.charCodeAt(0) === 0) {
            let buf = new ArrayBuffer(newName.length);
            let bufView = new Uint16Array(buf);
            for (let i = 0, strLen = newName.length / 2; i < strLen; i++) {
              bufView[i] = (newName.charCodeAt(2 * i) << 8) + newName.charCodeAt(2 * i + 1);
            }
            newName = String.fromCharCode.apply(null, bufView);
        }
        
        newName = 'renamed/' + newName + '.ttf';
        fs.createReadStream(oldName).pipe(fs.createWriteStream(newName));
      }
    });

    Дано: 100500 ttf-файлов с рандомными именами файла (цифры, гуиды, что угодно, но только не название шрифта).
    Требуется: переименовать файлы так, чтобы название хоть как-то было похоже на имя шрифта.
    Решение: есть 100500 библиотек на сишке для вытаскивания метушни из ttf-файлов, но мы же извращенцы, поэтому напишем на скриптушне.

    Багор: пакет «ttfmeta» из «npm» иногда возвращает нормальные текстовые строки, а иногда хуйню (детектируемую условием newName.charCodeAt(0) === 0), когда пара соседних «символов» — это на самом деле половинки кодпоинта из кодировки utf16be. «Нода» умеет только в toString('utf16le'), а кодировку с большим индейцем ('utf16be') не знает.

    Izumka, 05 Июня 2023

    Комментарии (54)
  11. C++ / Говнокод #28119

    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
    // https://github.com/gcc-mirror/gcc/blob/ec03862f809e544a9b7d28067e51597dc92a0244/libstdc%2B%2B-v3/include/bits/forward_list.tcc#L391-L411
    
      template<typename _Tp, typename _Alloc>
        bool
        operator==(const forward_list<_Tp, _Alloc>& __lx,
    	       const forward_list<_Tp, _Alloc>& __ly)
        {
          //  We don't have size() so we need to walk through both lists
          //  making sure both iterators are valid.
          auto __ix = __lx.cbegin();
          auto __iy = __ly.cbegin();
          while (__ix != __lx.cend() && __iy != __ly.cend())
    	{
    	  if (!(*__ix == *__iy))
    	    return false;
    	  ++__ix;
    	  ++__iy;
    	}
          if (__ix == __lx.cend() && __iy == __ly.cend())
    	return true;
          else
    	return false;
        }

    из стандартной библиотеки крестоговна от GCC

    j123123, 13 Апреля 2022

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