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

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

    +146

    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
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    97. 97
    public class Boruvka
    {
        // private representations
        /**
         * Array of edges, which form the MST of the graph
         */
        private Edge[] mst;
        /**
         * Edges not yet discarded and not yet in the MST
         */
        private Edge[] wannabes;
        /**
         * Each component's nearest neighbor with find component numbers as indices
         */
        private Edge[] neighbors;
        /**
         * Graph representation on which we are searching for MST
         */
        private Graph g;
        /**
         *
         */
        private UnionFind uf;
        // constructors and methods
        /**
         * constructor
         * @param G Graph
         */
        public Boruvka(Graph G) {
            this.g = G;
        }
        /**
         * Boruvka's algorithm
         *
         *
         * @return minimal spanning tree - edges that form it
         */
    
        public Edge[] BoruvkaMSTalg()
        {
            Edge hlpEdge = new Edge(g.getMaxWeight(), 0, 0);
            this.uf = new UnionFind(g.getCountVerteces());
            this.wannabes = new Edge[this.g.getCountEdges()];
    
             /**
             * Get all edges from the graph G to the array edges
             */
            for (int i=0; i < g.getCountEdges(); i++)
                this.wannabes[i] = g.getEdgeAt(i);
    
    
            this.neighbors = new Edge[this.g.getCountVerteces()];
            this.mst = new Edge[this.g.getCountVerteces()+1];
    
            /**
             * index, used to store those edges being saved for the next phase
             */
            int nxtPhase;
            int k=1;
    
            for (int i=this.g.getCountEdges(); i!=0; i=nxtPhase)
            {
                int l, m, n;
    
                for (int o=0; o<this.g.getCountVerteces(); o++)
                    this.neighbors[o] = hlpEdge;
    
                for (n=0, nxtPhase=0; n<i; n++) {
                    Edge e = this.wannabes[n];
                    l = this.uf.find(e.getSVIndex()-1);
                    m = this.uf.find(e.getDVIndex()-1);
    
                    if ( l==m )
                        continue;
                    if ( e.getWeight() < this.neighbors[l].getWeight() )
                        this.neighbors[l] = e;
                    if ( e.getWeight() < this.neighbors[m].getWeight() )
                        this.neighbors[m] = e;
    
                    this.wannabes[nxtPhase++] = e;
                }
    
                for (n=0; n<this.g.getCountVerteces(); n++)
                    if ( this.neighbors[n] != hlpEdge ) {
                        l = this.neighbors[n].getSVIndex();
                        m = this.neighbors[n].getDVIndex();
    
                        if ( !this.uf.find(l,m) ) {
                            this.uf.unite(l,m);
                            this.mst[k++] = this.neighbors[n];
                        }
                    }
            }
            System.out.println("MST by Boruvka successful");
            return this.mst;
        }
    }

    Кто шарит в графах, помогите разобраться с алгоритмом Борувки для нахождения минимального остова графа. Код писал по коду Седжевика подстраивая под свой граф, но видимо наделал кучу глупостей, потому что алгоритм никогда не выходит из цикла. Подскажите где я ошибок наделал и как бы их исправить, буду очень благодарен.

    NightCrime, 03 Марта 2011

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

    +142

    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
    /*!
     * \brief is Printable Character
     * \param c Character
     * \return true/false
     */
    static int isPrintableChar(char c)
    {
    	if ((c < 'A' || c > 'Z') && (c < 'a' || c > 'z')
    	    && (c < '0' || c > '9') && (c != ' ') && (c != '\'')
    	    && (c != '(') && (c != ')') && (c != '+') && (c != ',')
    	    && (c != '-') && (c != '.') && (c != '/') && (c != ':')
    	    && (c != '=') && (c != '?') && (c != '_') && (c != '\\')
    	    && (c != '@') && (c != '"') && (c != '%') && (c != '$')
    	    && (c != '&') && (c != '#') && (c != ';')
    	    //&& (c != 'В_')
    	    && (c != '<') && (c != '>') && (c != ']') && (c != '{')
    	    && (c != '}') && (c != '*') && (c != '^')) {
    		return 0;
    	} else {
    		return 1;
    	}
    }

    из открытого проекта chan_sccp
    даже не знаю почему не использовать стандартный макрос isprint
    #define isprint(c) ((c) >= ' ' && (c) <= '~')

    ddkprog, 03 Марта 2011

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

    +135

    1. 1
    <SCRIPT LANGUAGE=JavaScript src="../../../../../vstavka.txt"></script>

    http://www.helloworld.ru/texts/comp/lang/php/spravscript/stranica13.html что статьи говно что сайт.

    Vasiliy, 02 Марта 2011

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

    +115

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    RepaymentEvent e = DatabaseHelper.GetString("event_type", pReader) == "RBLE"
    	                ? new BadLoanRepaymentEvent {Id = DatabaseHelper.GetInt32("rpe_id", pReader)}
    	                : (DatabaseHelper.GetString("event_type", pReader) == "RRLE"
    	                       ? new RescheduledLoanRepaymentEvent {Id = DatabaseHelper.GetInt32("rpe_id", pReader)}
    	                       :(DatabaseHelper.GetString("event_type", pReader).StartsWith("P") 
                                    ? new PendingRepaymentEvent (DatabaseHelper.GetString("event_type", pReader)) {Id = DatabaseHelper.GetInt32("rpe_id", pReader)}
                                    : new RepaymentEvent {Id = DatabaseHelper.GetInt32("rpe_id", pReader)}));

    Вот такую "элегантную" строчку нашел сегодня коллега в коде нашего проекта :)
    Создаем событие пойди разбери какое :)

    _Ru55_, 02 Марта 2011

    Комментарии (9)
  6. JavaScript / Говнокод #5814

    +164

    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
    var s = setUpOmnitureVariable();
    s.pageName="LO-20110214-EE-VQP-203";
    s.server="www2.experts-exchange.com";
    s.channel="Web_Development/Web_Languages-Standards/PHP";
    s.pageType="";
    s.prop1=document.title;
    s.prop2="";
    s.prop3="";
    s.prop4="";
    s.prop5="";
    s.prop6="";
    s.prop7=""; // TODO THIS IS NO LONGER PROP 7, SHOULD BE BLOG AUTHOR
    s.prop8="";
    s.prop9="";
    s.prop10="";
    s.prop11="";
    s.prop12="";
    s.prop14="";
    s.prop15="50";
    s.prop16="";
    
    <...>
    
    s.prop27="";
    s.prop28="";
    
    <...>
    s.prop41="";
    s.prop42="";
    s.prop43="";
    s.prop44="";
    s.prop45="";
    s.prop46="";
    s.prop47="";
    s.prop48="";
    s.prop49="";
    s.prop50="";
    /* E-commerce Variables */
    s.campaign="";
    s.events="event4,event74";
    s.products="";
    s.state="";
    s.zip="";
    s.purchaseID="";
    s.eVar1=document.title;
    s.eVar2="";
    s.eVar3="AD #3 - Scroll, bullet, no steps";
    s.eVar4="";
    s.eVar5="";
    s.eVar6="Free Trial Guest";
    s.eVar7="";
    s.eVar8="";
    s.eVar9="";
    s.eVar10="";
    s.eVar14="";
    
    <...>
    s.eVar26="";
    s.eVar27="";
    s.eVar28="";
    s.eVar29="5AM";
    s.eVar30="Sunday";
    s.eVar31="77.243.99.37";
    s.eVar32="";
    s.eVar33="Web_Development/Web_Languages-Standards/PHP";
    s.eVar34="3";
    s.eVar35="20110214-EE-VQP-203-FREE-TRIAL";
    s.eVar36="Header AD";
    
    <...>
    
    s.eVar44="Accepted Solution";
    s.eVar45="EE_Level3 - 2";
    s.eVar46="";
    s.eVar47="";
    s.eVar48="";
    s.eVar49="rating9.6";

    Источник виден в коде. Неужели нельзя было массив сделать?! Или это такой странный вид обфускации?

    RaZeR, 27 Февраля 2011

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

    +164

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    $this->db->Query("DELETE FROM `u_proposal`
    				WHERE `id` = '%d' AND `user` = '%d'", $item, $this->user->id);
    $this->db->Query("DELETE FROM `p_options`
    				LEFT JOIN `u_proposal` ON `p_options`.`portfolio` = `u_proposal`.`id`
    				WHERE `p_options`.`portfolio` = '%d' AND `p_options`.`type` = 'project' AND `u_proposal`.`user` = '%d'", $item, $this->user->id);

    3 часа еб**ся не мог понять почему записи из p_options не удаляются ))

    Sulik78, 25 Февраля 2011

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

    +164

    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
    $zzz1="<table width=\"100%\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\" class=\"tsa\">";
    $zzz3="</table>";
            if($str==1){
                    $str=0;
            }
            for($lk=$str;$lk<$str+10;$lk++){
            $kod=$pv;
            $kod=$this->sql("SELECT name_saita, url_saita, opis FROM $this->sait WHERE id='{$kod[$lk][id]}'");
            $kod=$this->mb($kod);
            if($kod[0]['name_saita']==NULL){
                    break;
            }
    $zzz2=$zzz2."<tr>
       <td align=\"center\" width=\"20%\">{$kod[0][nov_saita]}</td>
       <td width=\"80%\" class=\"op\">{$kod[0][opis]}</td>
       </tr>";
    }
    $zzz=$zzz1.$zzz2.$zzz3;

    Классика жанра

    Uchkuma, 21 Февраля 2011

    Комментарии (9)
  9. SQL / Говнокод #5713

    −858

    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
    INSERT INTO actpr (userid,orgid,grupid,grupa, sum,abo_sum,;
    	req,atbilde,kods,time,requestid,pakalpojum);
    	value(Grozs .userid, Grozs .orgid,Grozs .grupid,Grozs .grupa,Grozs.sum ,0, ;
    	Grozs .req,Grozs .atbilde, Grozs .kods,;
    	this.time,this.requestId ,Grozs .pakalpojum)
    
    replace ;
    	tarifs WITH  Grozs .tarifs ,;
    	aid with Grozs .aid,;
    	param with Grozs .param,;
    	ip with this.ip,;
    	atlikum WITH konti.extra_sum - Grozs.sum ,;
    	abo_atlik WITH konti.abo_sum, ;
    	old_atlik WITH konti.old_sum ,;
    	sessionid  WITH this.sessionid,;
    	veids with Grozs .veids,;
    	stan_cena WITH Grozs .stan_cena,;
    	pvn WITH Grozs .pvn,;
    	next_sum WITH 0,;
    	next_atlik WITH konti.next_sum;
    	 IN  actpr

    Написано на FoxPro (!)
    Незнаю даже что написать...

    lurseg, 18 Февраля 2011

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

    +159

    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
    <?
    function strip_html_tags( $text )
    {
            $text = preg_replace(
                    array(
                            // Remove invisible content
                            '@<noindex[^>]*?>.*?</noindex>@siu',
                            '@<head[^>]*?>.*?</head>@siu',
                            '@<style[^>]*?>.*?</style>@siu',
                            '@<script[^>]*?.*?</script>@siu',
                            '@<object[^>]*?.*?</object>@siu',
                            '@<embed[^>]*?.*?</embed>@siu',
                            '@<applet[^>]*?.*?</applet>@siu',
                            '@<noframes[^>]*?.*?</noframes>@siu',
                            '@<noscript[^>]*?.*?</noscript>@siu',
                            '@<noembed[^>]*?.*?</noembed>@siu',
     
                            // Add line breaks before & after blocks
                            '@<((br)|(hr))@iu',
                            '@</?((address)|(blockquote)|(center)|(del))@iu',
                            '@</?((div)|(h[1-9])|(ins)|(isindex)|(p)|(pre))@iu',
                            '@</?((dir)|(dl)|(dt)|(dd)|(li)|(menu)|(ol)|(ul))@iu',
                            '@</?((table)|(th)|(td)|(caption))@iu',
                            '@</?((form)|(button)|(fieldset)|(legend)|(input))@iu',
                            '@</?((label)|(select)|(optgroup)|(option)|(textarea))@iu',
                            '@</?((frameset)|(frame)|(iframe))@iu',
                    ),
                    array(
                            ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
                            "\n\$0", "\n\$0", "\n\$0", "\n\$0", "\n\$0", "\n\$0",
                            "\n\$0", "\n\$0",
                    ),
                    $text );
     
            // Remove all remaining tags and comments and return.
            return strip_tags( $text );
    }

    qbasic, 13 Февраля 2011

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

    +160

    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
    <?php
    
    class UserSessionComponent extends Component {
    	//...
    	protected function loginByUserId($user_id, $is_autologin = false) {
    		$list = $this->_loadComponents($this->components, array('UserAuth'));
    		$userAuth = $list['UserAuth'];
    		$userAuth->startup($this->controller); # !!! WORKFLOW VIOLATION !!!
    		$method = $is_autologin ? 'autologin' : 'login';
    		if ($userAuth->$method($user_id)) {
    			return $this->controller->Session->read('User.data');
    		}
    	}
    	//...
    }
    
    class UserAuthComponent extends BaseMagicComponent {
    	protected $loginType = 'explicit';
    
    	//...
    
    	public function autologin($params = array()) {
    		$this->loginType = 'implicit';
    		return $this->_login($params);
    	}
    
    	public function login($params = array()) {
    		$this->loginType = 'explicit';
    		return $this->_login($params);
    	}
    
    	//...
    	protected function _login($params = array()) {
    		switch (true) {
    			case (is_array($params) && isset($params['user']) && isset($params['password'])):
    				$result = $this->loginByUserAndPassword($params['user'], $params['password']);
    				break;
    			case (is_numeric($params) && $params > 0):
    				$result = $this->loginUser($params);
    				break;
    			default:
    				if (empty($params)) {
    					$result = false;
    				} else {
    					$result = $this->loginUser($params);
    				}
    		}
    		// ...
    	}
    
    	// ...
    	public function loginUser($user) {
    		switch (true) {
    			case is_object($user):
    				if (isset($user->data)) {
    					$a_user = $user->data;
    				} else {
    					return false;
    				}
    				break;
    			case (is_numeric($user) && ($user > 0)):
    				if (!($a_user = $this->User->findById($user))) {
    					return false;
    				}
    				break;
    			case (is_array($user) && (isset($user['User']['id']))):
    				$a_user = $user;
    				break;
    			default:
    				return false;
    		}
    		// ...
    		CFL::using('log');
    		if (empty($GLOBALS['loginIsLogged'])) {
    			$loginLog = new cflLoginTrackingLogger();
    			if ($this->loginType == 'implicit') {
    				$loginLog->implicit_login(array('user_id' => $a_user['User']['id']));
    			} else {
    				$loginLog->explicit_login(array('user_id' => $a_user['User']['id']));
    			}
    			$GLOBALS['loginIsLogged'] = true;
    		}
    		// ...
    	}
    }

    Сорри за много-много кода, еле-еле вписался в лимит. Но пришлось запостить все. Логическая цепочка совершенно потрясающая (смотрим с самого верхнего метода и идем дальше к самому нижнему методу). Тут у нас кода просто по колено: сумасшедший пахлава-код, использование глобальной переменной флага, особое извращенное использование конструкции switch, фактическое дублирование этого самого switch в двух последних методах, нейминг переменных и методов...
    Казалось бы, как все это вообще могло быть написано? Но использование компонента с говорящим именем BaseMagic все ставит на свои места.

    quall, 09 Февраля 2011

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