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

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

    +11

    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
    #define EDGE_EDGE_TEST(V0,U0,U1)                      \
    	Bx=U0[i0]-U1[i0];                                   \
    	By=U0[i1]-U1[i1];                                   \
    	Cx=V0[i0]-U0[i0];                                   \
    	Cy=V0[i1]-U0[i1];                                   \
    	f=Ay*Bx-Ax*By;                                      \
    	d=By*Cx-Bx*Cy;                                      \
    	if((f>0 && d>=0 && d<=f) || (f<0 && d<=0 && d>=f))  \
    {                                                   \
    	e=Ax*Cy-Ay*Cx;                                    \
    	if(f>0)                                           \
    {                                                 \
    	if(e>=0 && e<=f) return 1;                      \
    	}                                                 \
    	else                                              \
    {                                                 \
    	if(e<=0 && e>=f) return 1;                      \
    	}                                                 \
    	}
    
    #define POINT_IN_TRI(V0,U0,U1,U2)           \
    {                                           \
    	double a,b,c,d0,d1,d2;                     \
    	/* is T1 completly inside T2? */          \
    	/* check if V0 is inside tri(U0,U1,U2) */ \
    	a=U1[i1]-U0[i1];                          \
    	b=-(U1[i0]-U0[i0]);                       \
    	c=-a*U0[i0]-b*U0[i1];                     \
    	d0=a*V0[i0]+b*V0[i1]+c;                   \
    	\
    	a=U2[i1]-U1[i1];                          \
    	b=-(U2[i0]-U1[i0]);                       \
    	c=-a*U1[i0]-b*U1[i1];                     \
    	d1=a*V0[i0]+b*V0[i1]+c;                   \
    	\
    	a=U0[i1]-U2[i1];                          \
    	b=-(U0[i0]-U2[i0]);                       \
    	c=-a*U2[i0]-b*U2[i1];                     \
    	d2=a*V0[i0]+b*V0[i1]+c;                   \
    	if(d0*d1>0.0)                             \
    {                                         \
    	if(d0*d2>0.0) return 1;                 \
    	}                                         \
    	}
    
    #define NEWCOMPUTE_INTERVALS(VV0,VV1,VV2,D0,D1,D2,D0D1,D0D2,A,B,C,X0,X1) \
    { \
    	if(D0D1>0.0f) \
    { \
    	/* here we know that D0D2<=0.0 */ \
    	/* that is D0, D1 are on the same side, D2 on the other or on the plane */ \
    	A=VV2; B=(VV0-VV2)*D2; C=(VV1-VV2)*D2; X0=D2-D0; X1=D2-D1; \
    	} \
    	else if(D0D2>0.0f)\
    { \
    	/* here we know that d0d1<=0.0 */ \
    	A=VV1; B=(VV0-VV1)*D1; C=(VV2-VV1)*D1; X0=D1-D0; X1=D1-D2; \
    	} \
    	else if(D1*D2>0.0f || D0!=0.0f) \
    { \
    	/* here we know that d0d1<=0.0 or that D0!=0.0 */ \
    	A=VV0; B=(VV1-VV0)*D0; C=(VV2-VV0)*D0; X0=D0-D1; X1=D0-D2; \
    	} \
    	else if(D1!=0.0f) \
    { \
    	A=VV1; B=(VV0-VV1)*D1; C=(VV2-VV1)*D1; X0=D1-D0; X1=D1-D2; \
    	} \
    	else if(D2!=0.0f) \
    { \
    	A=VV2; B=(VV0-VV2)*D2; C=(VV1-VV2)*D2; X0=D2-D0; X1=D2-D1; \
    	} \
    	else \
    { \
    	/* triangles are coplanar */ \
    	return coplanar_tri_tri(N1,V0,V1,V2,U0,U1,U2); \
    	} \
    	}

    Макросы макросики. Inline? Нет, не слышал.

    Abbath, 25 Января 2014

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

    −83

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    setRegState :: RegisterStates -> M_Register -> Word8 -> RegisterStates
    setRegState rs r n =
      let (a, b, c, d, e, f, h, l, pc, sp) = rs in
      case r of
        M_A -> (n, b, c, d, e, f, h, l, pc, sp)
        M_B -> (a, n, c, d, e, f, h, l, pc, sp)
        M_C -> (a, b, n, d, e, f, h, l, pc, sp)
        M_D -> (a, b, c, n, e, f, h, l, pc, sp)
        M_E -> (a, b, c, d, n, f, h, l, pc, sp)
        M_F -> (a, b, c, d, e, n.&.0xF0, h, l, pc, sp)
        M_H -> (a, b, c, d, e, f, n, l, pc, sp)
        M_L -> (a, b, c, d, e, f, h, n, pc, sp)

    Haskell has no boilerplate.
    Из исходников заброшенного эмулятора GameBoy (https://github.com/bitc/omegagb/)

    Yuuri, 10 Января 2014

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

    +126

    1. 1
    Пони тред!

    Поняшки!

    kegdan, 10 Января 2014

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

    +16

    1. 1
    2. 2
    const TReferenceToConstantStringSlice TFileTransfer::Beginer="<HTML><HEAD><FONT SIZE=6><A HREF='/'>Конфиденциально</A></FONT SIZE></HEAD><BODY><BR>";
    const TReferenceToConstantStringSlice TFileTransfer::Ender="</BODY></HTML>";

    Конфиденциально - это я сейчас стер.

    laMer007, 20 Ноября 2013

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

    +115

    1. 1
    2. 2
    3. 3
    #define TEN    10
    #define TEEN   100
    #define TEEEN  1000

    glook, 15 Ноября 2013

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

    +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
    foreach ($item as $prop) {
                if ($prop['tag']==$this->props[0]){
                    $new_item['sku']=(int)$prop['value'];
                } else {
                    if ($prop['tag'] == $this->props[1]) {
                        $new_item['name']=$prop['value'];
                    } else {
                        if ($prop['tag'] == $this->props[2]) {
                            $new_item['price']=(float)$prop['value'];
                        } else {
                            if ($prop['tag'] == $this->props[3]) {
                                $new_item['is_spec']=(float)$prop['value'];
                            } else {
                                if ($prop['tag'] == $this->props[4]) {
                                    $new_item['spec_price']=(float)$prop['value'];
                                } else {
                                    if ($prop['tag'] == $this->props[5]) {
                                        $new_item['old']=(float)$prop['value'];
                                    }
                                }
                            }
                        }
                    }
                }
            }

    XML бессмысленный и беспощадный

    madfriend, 02 Октября 2013

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

    +151

    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
    class A {
        public function getUser() {
            .....
        }
        public function init() {
            ......
        }
    }
    
    class B extends A {
        ........
        // close some parent methods from outside
        public function getUser () {}
        public function init () {}
    }

    труЪ ООП: Инкапсуляция посредством полиморфизма!

    ragnar, 02 Октября 2013

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

    +107

    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
    public class Visit 
    {
    	public DateTime Start {get; set;}
    	public DateTime Finish {get; set;}
    }
    
    public bool IsConflict(Visit a, Visit b)
    {
    	var s = GetArray(a);
    	var s2 = GetArray(b);
    	return Compare(s,s2);
    }
    
    private List<string> GetArray(Visit visit)
    {
    	var list = new List<string>();
    	while (visit.Start < visit.Finish)
    	{ 
    	  list.Add(visit.Finish.ToString()); // в строках!
    	  visit.Finish -= TimeSpan.FromMinutes(1); // по 1й минуте!!!
    	}
    	return list;
    }
    private bool Compare(List<string> list1, List<string> list2)
    {
    
    	foreach (var s in list1)
    	{
    		if (list2.Any(x => x == s))
    		{
    			return false;
    		}
    	}
    	return true;
    }

    Основная здесь функция, предназначенная для вызова, - IsConflict(Visit a, Visit b)
    Она должна проверять, пересекаются ли меджу собой два промежутка времени.
    Вот такая проверка со сложностью O(n*n) , где n - кол-во минут в промежутках времени.

    kasitan, 18 Сентября 2013

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

    +154

    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
    /* Формируемый запрос через Ajax */
    function MakeSearchQuery() {
        searchQuery = "";
    
        if (SearchDataQuery.CityFrom != "") {
            searchQuery = "CityFrom=" + SearchDataQuery.CityFrom;
    
            if (SearchDataQuery.Country != "") {
                searchQuery += "&Country=" + SearchDataQuery.Country;
    
                if (SearchDataQuery.Station != "" && SearchDataQuery.Station != "&Station=") {
                    searchQuery += "&Station=" + SearchDataQuery.Station;
                }
                if (SearchDataQuery.Date != "" && SearchDataQuery.Date != "&Date=") {
                    searchQuery += "&Date=" + SearchDataQuery.Date;
                }
            }
        }
    }

    Формируемый Ajax запрос

    sladkijBubaleh, 04 Сентября 2013

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

    +121

    1. 1
    2. 2
    Держу - верчу вот, в руках сидюк. На обложке надпись: "Программирование для школькиков и студентов". 
    Вроде бы пустяк, но с недавних пор эта фраза для меня звучит весьма кощунственно.

    Stertor, 03 Сентября 2013

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