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

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

    +157

    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
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    function &_static($name = null, $value = null, $unsetVal = false) {
      static $data = array();
      $null = null;
      if (is_array($name)) {
        $data = $name;
        return $null;
      }
      $state = 0;
      $args = array($name, $value, $unsetVal);
      while (count($args)) {
        $arg = array_shift($args);
        switch ($state) {
          case 0:
            if ($arg === null) {
              $state = 8;
            }
            elseif ($arg !== null) {
              $state = 1;
            }
            else {
              throw new \InvalidArgumentException();
            }
            break;
    
          case 1:
            if ($arg === null) {
              $state = 5;
            }
            elseif ($arg !== null) {
              $state = 2;
            }
            else {
              throw new \InvalidArgumentException();
            }
            break;
    
          case 2:
            if ($arg === true) {
              $data[$name] = $value; // $name, $value, true - overwrite saved value and return reference on it.
              return $data[$name];
            }
            elseif ($arg === false) {
              if (!array_key_exists($name, $data)) {
                $data[$name] = $value;
              }
              return $data[$name]; // $name, $value, false - save value if not exist, return reference on stored value.
            }
            else {
              throw new \InvalidArgumentException();
            }
    
          case 5:
            if ($arg === false) {
              if (!array_key_exists($name, $data)) {
                $data[$name] = $value; // $name, null, false, - initialize var if not exist, return reference on stored value.
              }
              return $data[$name];
            }
            elseif ($arg === true) {
              $data[$name] = $value; // $name, $value, true - overwrite saved value and return reference on it.
              return $data[$name]; // $name, null, true - overwrite saved value and return reference on it.
            }
            else {
              throw new \InvalidArgumentException();
            }
            break;
    
          case 8:
            if ($arg === null) {
              continue;
            }
            if ($arg === true) {
              $data = array(); // null, null, true - unset all
              break 2;
            }
            elseif ($arg === false) {
              return $data; // null, null, false - return all
            }
            else {
              throw new \InvalidArgumentException();
            }
    
          default:
            throw new \RuntimeException('Unknown state.');
        }
      }
      return $null;
    }

    Как сделать глобальные переменные своими руками?
    Как сделать ветвление когда под рукой не оказалось if, зато есть while и switch?

    sectus, 05 Декабря 2011

    Комментарии (33)
  3. Си / Говнокод #8692

    +106

    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
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    #include "stdafx.h"
    #include "math.h"
    #include "stdio.h"
    #include "conio.h"
     
    int main()
    { 
    int p;
    if (p==1 || p==21 || p==31 || p==41 || p==51 || p==61 || p==71 
    || p==81 || p==91   || p==101 || p==121 || p==131 || p==141 || p==151 
    || p==161 || p==171 || p==181 || p==191 || p==201 || p==221 || p==231 
    || p==241 || p==251 || p==261 || p==271 || p==281 || p==291 || p==301
    || p==321 || p==331 || p==341 || p==351 || p==361 || p==371 || p==381
    || p==391 || p==401 || p==421 || p==431 || p==451 || p==461 || p==471 
    || p==481 || p==491 || p==501 || p==521 || p==531 || p==541 || p==551 
    || p==561 || p==571 || p==581 || p==591 || p==601 || p==621 || p==631
    || p==641 || p==651 || p==661 || p==671 || p==681 || p==691 || p==701 
    || p==721 || p==731 || p==741 || p==751 || p==761 || p==771 || p==781 
    || p==791 || p==801 || p==821 || p==831 || p==841 || p==851 || p==861
    || p==871 || p==881 || p==891 || p==901 || p==921 || p==931 || p==941
    || p==951 || p==961 || p==971 || p==981 || p==991 )
    printf("Hruvna\n");
    else 
    {
    if (p>1 && p<5 || p>21 && p<25 || p>31 && p<35 
    || p>41 && p<45 || p>51 && p<55 || p>61 && p<65
    || p>71 && p<75 || p>81 && p<85 || p>91 && p<95
    ||p>101 && p<105 || p>121 && p<125 || p>131 && p<135
    ||p>141 && p<145 || p>151 && p<155 || p>161 && p<165
    ||p>171 && p<175 || p>181 && p<185 || p>191 && p<195
    ||p>201 && p<205 || p>211 && p<215 || p>221 && p<225
    ||p>231 && p<235 || p>241 && p<245 || p>251 && p<255
    ||p>261 && p<265 || p>271 && p<275 || p>281 && p<285
    ||p>291 && p<295 || p>301 && p<305 || p>311 && p<315
    ||p>321 && p<325 || p>331 && p<335 || p>341 && p<345
    ||p>351 && p<355 || p>361 && p<365 || p>371 && p<375
    ||p>381 && p<385 || p>391 && p<395 || p>401 && p<405
    ||p>411 && p<415 || p>421 && p<425 || p>431 && p<435
    ||p>441 && p<445 || p>451 && p<455 || p>461 && p<465
    ||p>471 && p<475 || p>481 && p<485 || p>491 && p<495
    ||p>501 && p<505 || p>511 && p<515 || p>521 && p<525
    ||p>531 && p<535 || p>541 && p<545 || p>551 && p<555
    ||p>561 && p<565 || p>571 && p<575 || p>581 && p<585
    ||p>591 && p<595 || p>601 && p<605 || p>611 && p<615
    ||p>621 && p<625 || p>631 && p<635 || p>641 && p<645
    ||p>651 && p<655 || p>661 && p<665 || p>671 && p<675
    ||p>681 && p<685 || p>691 && p<695 || p>701 && p<705
    ||p>711 && p<715 || p>721 && p<725 || p>731 && p<735
    ||p>741 && p<745 || p>741 && p<745 || p>751 && p<755
    ||p>761 && p<765 || p>771 && p<775 || p>781 && p<785
    ||p>791 && p<795 || p>801 && p<805 || p>811 && p<815
    ||p>821 && p<825 || p>831 && p<835 || p>841 && p<845
    ||p>851 && p<855 || p>861 && p<865 || p>871 && p<875
    ||p>881 && p<885 || p>891 && p<895 || p>901 && p<905
    ||p>911 && p<915 || p>921 && p<925 || p>931 && p<935
    ||p>941 && p<945 || p>951 && p<955 || p>961 && p<965
    ||p>971 && p<975 || p>981 && p<985 || p>991 && p<995)
    printf("Hryvni\n");
    }
     
    if (p>1000)
    printf("Error\n");
    else 
    printf("Hryven\n");
    getch();
    return 0;
    }

    Цитата автора: "Дано натуральное число s (s <= 1000), определяющий денежную сумму (в гривнах). Дать для этого числа название «гривна», «гривны» или «гривен». Составил программу а она не работает" Оригинал здесь: http://www.cyberforum.ru/cpp-beginners/thread258801.html?uri=/cpp-beginners/thread258801.html

    Fenom, 30 Ноября 2011

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

    −125

    1. 1
    2. 2
    3. 3
    4. 4
    {  
       (cd "$DIR"; ls -1);
       {  xml2 < $XML | grep '/list/files/@path=' | cut -d = -f 2 | cut -d / -f 2 | sort | uniq; }   
    } | sort | uniq --count | grep '^ *1' | awk '{print $2}' | (cd "$DIR"; xargs --no-run-if-empty rm -v)

    Удаляет из "$DIR" всё, что не описано в files.xml.

    x28cnp, 10 Ноября 2011

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

    +146

    1. 1
    2. 2
    3. 3
    4. 4
    void swap(word& w)
    {
         w=w<<8|w>>8;
    };

    И так, стартует конкурс "самый красивый swap". Жду ваши варианты. Призов не будет, так чисто пожрать.

    ohlol, 18 Октября 2011

    Комментарии (33)
  6. C++ / Говнокод #7681

    +162

    1. 1
    2. 2
    3. 3
    #define      my__type    ((pair<LPVOID, CheckButton_Thread*>*)pvPararn)
    
    my__type -> second -> function( my__type -> first);

    http://www.gamedev.ru/code/forum/?id=151690#m11

    >О ужас, но у меня получилось! :)
    Сказал автор темы и выдал результат труда.

    CPPGovno, 28 Августа 2011

    Комментарии (33)
  7. C++ / Говнокод #7550

    +184

    1. 1
    enum Bool {True = 0, False = (!True)};

    Автор: Константин с trinity-core.ru

    chaoswithin, 15 Августа 2011

    Комментарии (33)
  8. Python / Говнокод #7545

    −89

    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
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    #weather.pyw
    
    from urllib import request
    from tkinter import *
    import tkinter
    import threading
    from threading import *
    import time
    
    i = 0
    active = True
    
    def timerTick( toSleep ):
      global active
      while active:
        refreshCall(0)
        time.sleep(toSleep)
    
    
    def refreshCall(event):
      t = Thread(target = refresh)
      t.start()
    
    def refresh(*event):
      global i
      ref['text'] = str(i)
      i+=1
      r = request
      page = str(r.urlopen('http://realmeteo.ru/moscow/1/current/').read())
      temperature = page.split('</tr><tr id="num_data"><td>')[1].split(' ')[0]
      pressure = page.split('                    </td><td>')[1].split(' ')[0]
      wind = page.split('<tr id="num_data"><td></td><td>')[1].split(' ')[0]
      dest = page.split('<param name="movie" value="/.swf/wind_dir/')[1].split('.swf')[0]
      destination = ''
      for c in dest:
        if c is dest[-1]:
          destination += {'N':'Север','S':'Юг','W':'Запад','E':'Восток'}[c]
        else:
          destination += {'N':'Северо-','S':'Юго-','W':'Западо-','E':'Востоко-'}[c]
      #print( temperature, pressure, wind, destination )
      l1['text'] = 'Температура: '+temperature
      l2['text'] = 'Давление   : '+pressure
      l3['text'] = 'Сила ветра : '+wind
      l4['text'] = 'Направление: '+destination
    
    r = request
    page = str(r.urlopen('http://realmeteo.ru/moscow/1/current/').read())
    temperature = page.split('</tr><tr id="num_data"><td>')[1].split(' ')[0]
    pressure = page.split('                    </td><td>')[1].split(' ')[0]
    wind = page.split('<tr id="num_data"><td></td><td>')[1].split(' ')[0]
    dest = page.split('<param name="movie" value="/.swf/wind_dir/')[1].split('.swf')[0]
    destination = ''
    for c in dest:
      if c is dest[-1]:
        destination += {'N':'Север','S':'Юг','W':'Запад','E':'Восток'}[c]
      else:
        destination += {'N':'Северо-','S':'Юго-','W':'Западо-','E':'Востоко-'}[c]
    
    
    form = tkinter.Tk()
    l1 = Label(form,text='Температура: '+temperature,justify='left'); l1.pack()
    l2 = Label(form,text='Давление   : '+pressure,justify='left'); l2.pack()
    l3 = Label(form,text='Сила ветра : '+wind,justify='left'); l3.pack()
    l4 = Label(form,text='Направление: '+destination,justify='left'); l4.pack()
    ref = Button(form, text = 'Обновить'); ref.pack()
    
    ref.bind('<Button-1>',refreshCall)
    
    timerThread = Thread(target = timerTick, args=(5,))
    
    timerThread.start()
    
    form.mainloop()
    
    active = False

    Угадайте, с какого языка пересел автор. (не пэхапэ)

    Fai, 15 Августа 2011

    Комментарии (33)
  9. Куча / Говнокод #7535

    +147

    1. 1
    2. 2
    3. 3
    4. 4
    Не думаю что все оценят т.к. далеко не настоящий говнокод, а исскуственый из разряда "китайскио/индусский".
    Да и вообще не код а идея!
    Суть в следущем.
    Из едениц и любых операторов нужно составить как можно боле короткое выражени, дающее в результате 17.

    Вот маё:
    (1+1<<1+1)+1
    :D

    Fai, 12 Августа 2011

    Комментарии (33)
  10. C# / Говнокод #7518

    +139

    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
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    private int GetMaxDayValue(int month, int year)
        {
            int value = 0;
            switch (month)
            {
                case 1:
                    value = 31;
                    break;
                case 2:
                    switch (year)
                    {
                        case 2008:
                            value = 29;
                            break;
                        case 2009:
                            value = 28;
                            break;
                        case 2010:
                            value = 28;
                            break;
                        case 2011:
                            value = 28;
                            break;
                        case 2012:
                            value = 29;
                            break;
                        case 2013:
                            value = 28;
                            break;
                        case 2014:
                            value = 28;
                            break;
                        case 2015:
                            value = 28;
                            break;
                        case 2016:
                            value = 29;
                            break;
                    }
    
                    break;
                case 3:
                    value = 31;
                    break;
                case 4:
                    value = 30;
                    break;
                case 5:
                    value = 31;
                    break;
                case 6:
                    value = 30;
                    break;
                case 7:
                    value = 31;
                    break;
                case 8:
                    value = 31;
                    break;
                case 9:
                    value = 30;
                    break;
                case 10:
                    value = 31;
                    break;
                case 11:
                    value = 30;
                    break;
                case 12:
                    value = 31;
                    break;
            }
            return value;
        }

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

    TasmX, 11 Августа 2011

    Комментарии (33)
  11. SQL / Говнокод #7403

    −850

    1. 1
    2. 2
    3. 3
    4. 4
    SELECT u.*, (SELECT count(*) FROM `projects` WHERE `autor`=u.`id`) as sum
    FROM `users` as u 
    WHERE `sum`>0
    ORDER BY `sum` DESC

    #1054 - Unknown column 'sum' in 'where clause'

    newpdv, 31 Июля 2011

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