1. C++ / Говнокод #13191

    +17

    1. 1
    2. 2
    3. 3
    4. 4
    int a=0; 
    while (a<=1 && a>=0) { 
      a--; 
    }

    Я даже хз, что тут автор делает...

    kostoprav, 19 Июня 2013

    Комментарии (145)
  2. C++ / Говнокод #13190

    +18

    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
    std::tuple<std::vector<long double> , std::vector<std::vector<long double> > , std::vector<long double> >
    inline
    training(const std::size_t hidden_neurons,
             const long double hlr,
             const std::size_t epochs,
             const std::vector< long double > train_ou,
             const std::vector< std::vector< long double > >& train_in,
             volatile bool * reset)
    {
    
    
        auto train_inp = train_in;
        auto train_out = train_ou;
    //    std::cerr << "hidden_neurons: " << hidden_neurons << std::endl;
    //    std::cerr << "hlr: " << hlr << std::endl;
    //    std::cerr << "epochs: " << epochs << std::endl;
    //    std::cerr << "train_inp: " << train_inp << std::endl;
    //    std::cerr << "train_out: " << train_out << std::endl;
    
        const auto mu_inp = mean( train_inp );
        const auto sigma_inp = stand( train_inp );
        train_inp = ( train_inp - mu_inp[ 0 ] ) / sigma_inp[ 0 ];
        const auto mu_out = mean( train_out );
        const auto sigma_out = stand( train_out );
        train_out = ( train_out - mu_out ) / sigma_out;
        const auto patterns = size( train_inp ).first;
    
        std::cout << "patterns: " << patterns << std::endl;
        auto bias = ones( patterns );
        train_inp = merge( train_inp, bias );
        const auto inputs = size( train_inp ).second;
    
        std::vector< long double > err( epochs );
    
        auto weight_input_hidden = ( randn( inputs, hidden_neurons) - 0.5l ) / 10.0l;
        auto weight_hidden_output = ( randn( hidden_neurons ) - 0.5l ) / 10.0l;
    
        for( std::size_t i = 0; i < epochs; ++i ) {
            if ( *reset ) {
                break;
            }
            const auto alr = hlr;
            const auto blr = alr / 10.0;
            for( std::size_t j = 0; j < patterns; ++j ){
                const auto patnum = ( static_cast<std::size_t>( round( randd() * patterns + 0.5 ) ) - 1 ) % patterns;
                const auto this_pat = train_inp[ patnum ];
                const auto act = train_out[ patnum ];
                const auto hval = feval( []( const long double & v ){ return std::tanh( v ); }, this_pat * weight_input_hidden );
                const auto pred = hval * weight_hidden_output;
                const auto error = pred - act;
                const auto delta_HO = hval * error * blr;
                weight_hidden_output = weight_hidden_output - delta_HO;
                const auto m1 = weight_hidden_output * alr * error;
                const auto m2 = 1.0l - (hval^2);
                const auto m3 = dot_operator( m1, m2, std::multiplies< long double >());
                const auto m4 = vec_to_vecvec( m3 );
                const auto delta_IH = m4 * this_pat;
                weight_input_hidden = weight_input_hidden - trans( delta_IH );
            }
            const auto p1 = feval( []( const long double& v ){ return std::tanh( v ); }, train_inp * weight_input_hidden );
            const auto pred = weight_hidden_output * trans( p1 );
            const auto error = pred - train_out;
            const auto error_sq = error ^ 2;
            err[ i ] = std::sqrt( std::accumulate( error_sq.cbegin(), error_sq.cend(), 0.0, std::plus<long double> () ) );
            std::cerr << "err[ i ]: " << err[ i ] << ' ' << i <<  std::endl;
        }
        return std::move(std::make_tuple(weight_hidden_output, weight_input_hidden, err));
    }

    Велосипедостроение

    Abbath, 19 Июня 2013

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

    +18

    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
    #include "math.h"
    #include <iostream>
    
    void Resolve(
    	float a, float b, float c,     // коэффициенты уравнения
    	int& count, float x[2]  // число корней, сами корни
    	// если корней нет, то значения x[0] и x[1] не определены
    	// если корень один, то значение x[1] не определено
    	// если  корней бесконечно много, то вернуть INT_MAX
    	// предполагается, что a,b,c и корни по модулю не превосходят 1E10
    	)
    {
    	const float MAXFREV = 1e-10f;
    	if (a==0.0 && b==0.0 && c==0.0)
    	{
    		count = INT_MAX;
    	} else
    	{
    		count = 0;
    		float d = b*b-4.0f*a*c;
    		if (d==0.0f)
    		{
    			if (2.0f*abs(a)>abs(b)*MAXFREV) 
    				x[count++] = -b/(2.0f*a);
    		} else if (d>0.0f)
    		{
    			float num = -b - sqrt(d);
    			if (2.0f*abs(a)>abs(num)*MAXFREV)
    				x[count++] = num/(2.0f*a); // (-b-sqrt(d))/2a
    			if (abs(num)>2.0f*abs(c)*MAXFREV)
    				x[count++]=(2.0f*c)/num;
    		}
    	}
    }
    
    
    int main () 
    {
    	float x[2];
    	int count;
    	Resolve (0.0001f,2.000f,0.001f, count, x);
    	std::cout << "count= " << count;
    	if (count<=2)
    		for (int i=0; i<count; ++i)
    			std::cout << ", x[" << i << "]= " << x[i];
    	std::cout<<std::endl;
    	return 0;
    }

    Просто решение квадратного уравнения.
    На флоатах.
    Числа подобраны так, что классическая формула лажает, выдавая второй корень -0.000596 вместо -0.0005

    TarasB, 18 Июня 2013

    Комментарии (77)
  4. Python / Говнокод #13188

    −88

    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
    while ii<kol:
               a = random.random()
               z = str(a)
               L = len(z)
               i = 0
               while i <L:
                    if z[i]=="0":
                       s0 +=1
                   elif z[i]=="1":
                       s1 +=1
                   elif z[i]=="2":
                       s2 +=1
                   elif z[i]=="3":
                       s3 +=1
                   elif z[i]=="4":
                       s4 +=1
                   elif z[i]=="5":
                        s5 +=1
                   elif z[i]=="6":
                       s6 +=1
                   elif z[i]=="7":
                       s7 +=1
                   elif z[i]=="8":
                       s8 +=1
                   elif z[i]=="9":
                       s9 +=1
                   i+=1
            ii +=1

    массивы для питухов
    http://habrahabr.ru/post/183022/

    orion, 17 Июня 2013

    Комментарии (100)
  5. Си / Говнокод #13187

    +136

    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
    #include <stdio.h>
    #include <math.h>
    
    const double g = 10; // да, 10
    
    int main() {
        double v0; // начальная скорость снаряда в метрах в секунду
        double angle; // угол в градусах относительно плоскости земли
    
        scanf("%lf%lf", &v0, &angle);
    
        angle = angle / 180 * M_PI; // переводим градусы в радианы
    
        /*
            уравнения движения в нашем случае просты:
            x = v0 * t * cos(angle)
            y = v0 * t * sin(angle) - g * t * t / 2
    
            в момент удара о землю y будет равен 0 (по условию задачи)
            из второго уравнения выразим время:
            t = 2*v0*sin(angle)/g
    
            за это время снаряд улетит на v0 * t * cos(angle)
            x = 2 * v0 * v0 * cos(angle) * sin(angle) / g
    
            Формулу можно упростить до v0 * v0 * sin(2*angle) / g
        */
    
        double x = v0 * v0 * sin(2 * angle) / g;
    
        printf("x = %.0lf\n", x);
    
        return 0;
    }

    Референсный код для superhackkiller1997.

    Простейшая задачка о полете снаряда. Ветер и сопротивление воздуха не учитываем. Стрельбы производятся на равнине (т.е. высоту в момент выстрела и в момент попадания в землю считаем одинаковой).

    Входные данные: начальная скорость снаряда (в метрах в секунду), угол относительно плоскости земли (в градусах).
    g принимаем равным 10 м/с².

    Выходные данные: расстояние от пушки, на котором снаряд ударится о землю (в метрах, такой точности будет вполне достаточно).

    Примеры:
    v0 = 200, angle = 45 => x = 4000
    v0 = 200, angle = 30 => x = 3464
    v0 = 200, angle = 90 => x = 0

    Продемонстрируй нам, как бы ты решил эту несложную задачку со своим представлением чисел (не fixed и не float). На входе, как видишь, все числа целые, на выходе тоже.

    bormand, 17 Июня 2013

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

    +152

    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
    function Order(obj) {
      var frm = $(obj);
      var first_name = frm.find("input[name='first_name']").val();
      var last_name = frm.find("input[name='last_name']").val();
      var email = frm.find("input[name='email']").val();
      var phone = frm.find("input[name='phone']").val();
      var text = frm.find(".coment-form-textarea").val();
      var captcha = frm.find("input[name='captcha']").val();
    
      var valid = true;
      MsgErrorDestroy(frm, '#order-first_name', 'input[name="first_name"]');
      MsgErrorDestroy(frm, '#order-last_name', 'input[name="last_name"]');
      MsgErrorDestroy(frm, '#order-email', 'input[name="email"]');
      MsgErrorDestroy(frm, '#order-phone', 'input[name="phone"]');
      MsgErrorDestroy(frm, '#order-text', '.coment-form-textarea');
    
      if (first_name == '') {
        MsgError(frm, 'Введите ваше имя.', '#order-first_name', 'input[name="first_name"]');
        valid = false;
      }
      if (last_name == '') {
        MsgError(frm, 'Введите вашу фамилию.', '#order-last_name', 'input[name="last_name"]');
        valid = false;
      }
      if (!emailValid(email)) {
        MsgError(frm, 'Введите ваш email.', '#order-email', 'input[name="email"]');
        valid = false;
      }
      if (phone == '') {
        MsgError(frm, 'Введите ваш номер телефона.', '#order-phone', 'input[name="phone"]');
        valid = false;
      }
      if (text == '') {
        MsgError(frm, 'Введите ваше сообщение.', '#order-text', '.coment-form-textarea');
        valid = false;
      }
      if (captcha == '') {
        MsgError(frm, 'Введите капчу.', '#comment-capcha', 'input[name="captcha"]');
        valid = false;
      }
      if (valid == false) {
        return false;
      }
    }
    
    function MsgError(frm, msg, select_msg, select_input) {
      if (select_msg != 0) {frm.find(select_msg).html(msg);}
      if (select_input != 0) {frm.find(select_input).addClass('input-error');}
      if (select_msg != 0) {frm.find(select_msg).removeClass('hide');}
      //frm.find('#'+'profile-'+key).addClass('show');
    }
    function MsgErrorDestroy(frm, select_msg, select_input) {
      if (select_msg != 0) {frm.find(select_msg).html('');}
      if (select_input != 0) {frm.find(select_input).removeClass('input-error');}
      if (select_msg != 0) {frm.find(select_msg).removeClass('show');}
      //$('#'+'profile-'+key).addClass('hide');
    }

    Валидация какого-то там заказа. Автор вероятно не слышал про массивы и объекты.

    baldrs, 17 Июня 2013

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

    +134

    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
    while (true)
    {
     try
     {
      MapControlStatic.Remove(MapControlStatic.First(o => o.Value.thisControl == c).Key);
     }
     catch
     {
       break;
     }
    }
    
    while (true)
    {
     try
     {
      MapControlStatic.Remove(MapControlStatic.First(o => o.Value.Childs.Contains(c)).Key);
     }
     catch
     {
       break;
     }
    }

    taburetka, 17 Июня 2013

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

    +10

    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
    // проверка содержимого массива кликов
    for(;;)
    {
    	// Поиск нуля
    	for(; massiv[car_massiv] != 0; car_massiv += 3);
    	// Выход если достигнут конец массива
    	if(car_massiv == car_base - 1) break;
    	car_massiv++;
    	// Сравниваем записи в обоих массивах
    	for(car_cl = 0;; car_cl += 2, car_massiv += 3)
    	{
    		// Производим перебор в поисках НЕ пустой клетки (НЕ "1")
    		for(i = i0 + di, j = j0 + dj; board[i][j] == 1 || (i == ib && j == jb); i += di, j +=dj);
    		// Если не координаты срубленно шашки, то выход
    		if(i != i2) break;
    		if(j != j2) break;
    		// Производим перебор пустых клеток в поисках координат клика
    		for(i = i2 + di, j = j2 + dj; (board[i][j] == 1 || (i == ib && j == jb)) && !(i == i1 && j == j1); i += di, j += dj);
    		// Если НЕ координаты клика, то выход
    		if(i != i1) break;
    		if(j != j1) break;
    		// Координаты срубаемой (на следующем этапе) шашки
    		i3 = massiv[car_massiv + 4];
    		j3 = massiv[car_massiv + 5];
    		...
    		...
    	}
    }

    Знакомый писал шашки, для себя. Местами попроще, но это просто убило

    anu, 17 Июня 2013

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

    +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
    #include <stdio.h>
     
    typedef void(* file_handler_t)(FILE* fileHandle);
     
    void using_file(FILE* fileHandle, file_handler_t fileHandler/*a*/)
    {
        if(!fileHandle)
            return;
        fileHandler(fileHandle);
        fclose(fileHandle);
    }
     
    int main(void) {
        using_file(fopen("myfile.txt","w"),
            ({void body(FILE* fileHandle) {
                /*пишем в fileHandle;*/
            }; body;})//b
        );
            return 0;
    }

    Постю код в защиту курочки от нападок Тараса про автодестукторы. Уникальные виды куриц нужно оберегать, сохранять и защищать.
    Курочка об gnuцицизмы уже зашкварился так что будем стоять на своем до конца. Главное чтобы он свой не отстоял, а то потом не встанет.
    http://ideone.com/2zRuK0

    В позицию /*a*/ можно добавить параметр, деструктирующий объект должным образом. И соответственно оформить using_file как USING макросом, чтобы можно было деструктить объекты не только типа FILE* но и любых других. В макросе вполне при этом может понадобится гнутый typeof, но у нас и так зашквар, так что уже не важно. Так же для полной универсальности можно добавить параметр, определяющий неуспешность открытия объекта, чтобы вместо if(!fileHandle) был if(predicate(fileHandle)). Но конечно при этом лучше просто сделать 2 варианта макроса: обобщенный и с предикатом по умолчанию логическое отрицание.

    Вместо некрасивой позиции //b лучше завести макрос, эмитирующий нормальную красивую человеческую лямбду.

    LispGovno, 16 Июня 2013

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

    +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
    <table> 
                                <tr> 
                                    <td> 
                                        <span class="date"><? echo ''.(mysql_result(mysql_query("SELECT `data` FROM `money` WHERE `id`=1"),0));?></a></span>                                         
                                    </td> 
                                    <th> 
                                        <span class="Out"><? echo ''.(mysql_result(mysql_query("SELECT `money` FROM `money` WHERE `id`=1"),0));?></span> 
                                    </th> 
                                </tr>  
                                <tr><td class="wrap" colspan="2"><a href=""><? echo ''.(mysql_result(mysql_query("SELECT `text` FROM `money` WHERE `id`=1"),0));?></a></td></tr> 
                            </table> 
                        </div> 
                    </td> 
            </tr><tr class="alt"> 
                <td>                         
                        <div class="field">                             
                            <table> 
                                <tr> 
                                    <td> 
                                        <span class="date"><? echo ''.(mysql_result(mysql_query("SELECT `data` FROM `money` WHERE `id`=2"),0));?></span>                                         
                                    </td> 
                                    <th> 
                                        <span class='Out'><? echo ''.(mysql_result(mysql_query("SELECT `money` FROM `money` WHERE `id`=2"),0));?></span> 
                                    </th> 
                                </tr>  
                                <tr><td class="wrap" colspan="2"><a href=''><? echo ''.(mysql_result(mysql_query("SELECT `text` FROM `money` WHERE `id`=2"),0));?></a></td></tr> 
                            </table> 
                        </div> 
                    </td> 
            </tr><tr> 
                <td>                         
                        <div class="field">                             
                            <table> 
                                <tr> 
                                    <td> 
                                        <span class="date"><a href='' class='hl'><? echo ''.(mysql_result(mysql_query("SELECT `data` FROM `money` WHERE `id`=3"),0));?></a></span>                                         
                                    </td> 
                                    <th> 
                                        <span class='In'><? echo ''.(mysql_result(mysql_query("SELECT `money` FROM `money` WHERE `id`=3"),0));?></span> 
                                    </th> 
                                </tr>  
                                <tr><td class="wrap" colspan="2"><a href=''><? echo ''.(mysql_result(mysql_query("SELECT `text` FROM `money` WHERE `id`=3"),0));?></a></td></tr> 
                            </table> 
                        </div> 
                    </td> 
            </tr><tr class="alt"> 
                <td>                         
                        <div class="field">                             
                            <table> 
                                <tr> 
                                    <td> 
                                        <span class="date"><a href='' class='hl'><? echo ''.(mysql_result(mysql_query("SELECT `data` FROM `money` WHERE `id`=4"),0));?></a></span>                                         
                                    </td> 
                                    <th> 
                                        <span class='Out'><? echo ''.(mysql_result(mysql_query("SELECT `money` FROM `money` WHERE `id`=4"),0));?></span> 
                                    </th> 
                                </tr>  
                                <tr><td class="wrap" colspan="2"><a href=''><? echo ''.(mysql_result(mysql_query("SELECT `text` FROM `money` WHERE `id`=4"),0));?></a></td></tr> 
                            </table> 
                        </div> 
                    </td> 
            </tr><tr> 
                <td>                         
                        <div class="field">                             
                            <table> 
                                <tr> 
                                    <td> 
                                        <span class="date"><a href='' class='hl'><? echo ''.(mysql_result(mysql_query("SELECT `data` FROM `money` WHERE `id`=5"),0));?></a></span>                                         
                                    </td> 
                                    <th> 
                                        <span class='Out'><? echo ''.(mysql_result(mysql_query("SELECT `money` FROM `money` WHERE `id`=5"),0));?></span> 
                                    </th> 
                                </tr>  
                                <tr><td class="wrap" colspan="2"><a href=''><? echo ''.(mysql_result(mysql_query("SELECT `text` FROM `money` WHERE `id`=5"),0));?></a></td></tr> 
                            </table>

    vGhost, 16 Июня 2013

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