1. Список говнокодов пользователя AlCodel

    Всего: 3

  2. Pascal / Говнокод #23334

    −9

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    {получить I}
    function getSafeItoDBID(TEmployer e):Integer;
    begin
      if (e<>nil) and (e.getIdentificator()<>nil) and (e.getIdentificator().getID()<>nil) and (e.getIdentificator().getID().getID()<>nil)
        then result:= e.getIdentificator().getID().getID().getValue().i;
        else result:= 0;
    end;

    Получить без ERROR ID для записи в MySQL

    AlCodel, 07 Сентября 2017

    Комментарии (0)
  3. Java / Говнокод #21574

    −50

    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
    int getPositionV1(String xml,int row,int col)
    {
    	int p=0;
            for (int lineNum=1;lineNum!=row;lineNum++)
    	{
                p=xml.indexOf("\n\r",p)+eol.length();
                if (p==0) throw new RuntimeException ("XML do not contain row "+row);
            }
    	return p+col;
    }
    
    int getPositionV2(String xml, int row, int col)
    {
           int p0=0; int p1=xml.indexOf("\n",p0); int p2=xml.indexOf("\r",p0);
    	int p3=(p1!=-1 && p2!=-1)?xml.indexOf("\r\n",p0):-1;
           for (int lineNum=1;lineNum!=row;lineNum++){
                if (p1!=-1 && p1<p0) p1=xml.indexOf("\n",p0); if (p2!=-1 && p2<p0) p2=xml.indexOf("\r",p0);
                if (p3!=-1 && p3<p0) p3=xml.indexOf("\r\n",p0);
                String eol=""; if (p1!=-1 && p2!=-1 && p3!=-1){
                    if (p1<p2 && p1<p3) {eol="\n"; p0=p1;
    		}else if (p2<p1 && p2<p3) {eol="\r"; p0=p2;
                    }else if (p3<=p1 && p3<=p2) {eol="\r\n"; p0=p3;}
                }else if (p1!=-1 && p2!=-1){
                    if (p1<p2) { eol="\n"; p0=p1;} else if (p2<p1) {eol="\r"; p0=p2;}
                }else if (p1!=-1 && p3!=-1){
                    if (p1<p3) { eol="\n"; p0=p1;} else if (p3<=p1) {eol="\r\n"; p0=p3;}
                }else if (p2!=-1 && p3!=-1){
                    if (p2 < p3) {eol="\r"; p0=p2;} else if (p3<=p2) {eol="\r\n"; p0=p3;}
                }else if (p1!=-1){eol="\n"; p0=p1;} else if (p2!=-1) {eol="\r"; p0=p2;
                }else if (p3!=-1){eol="\r\n"; p0=p3;}
                p0+=eol.length(); if (p0<=0) throw new RuntimeException("XML do not contain row "+row);
    	}
        return p0+col-1;
    }

    Задача: дана строка (String), номер линии (строки) и столбца, где расположен символ; найти позицию этого символа в исходной строке.
    Первое решение: getPositionV1

    Но конец строки может быть любой, например \n,\r,\n\r, а ещё несколько подряд идущих строк.
    Задача: исправить, чтобы работало со всеми видами и сочетаниями переносов строк, и работало быстро.
    Второе решение: getPositionV2

    А достаточно было использовать регулярное выражение: Pattern.compile("\\R").matcher(xml)

    AlCodel, 26 Октября 2016

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

    −48

    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
    var a1=1,a2=5,a3=3,a4=4,a5=2
    	var b1, b2, b3, b4, b5, c1, c2, c3, c4, c5
    	/* заполнить переменные a,b,c... */
    	if ( a1 < a2 ) {
    	  a = a1;  a1 = a2;  a2 = a;
    	  b = b1;  b1 = b2;  b2 = b;
    	  c = c1;  c1 = c2;  c2 = c;
    	}
    	if ( a1 < a3 ) {
    	  a = a1;  a1 = a3;  a3 = a;
    	  b = b1;  b1 = b3;  b3 = b;
    	  c = c1;  c1 = c3;  c3 = c;
    	}
    	if ( a2 < a3 ) {
    	  a = a2;  a2 = a3;  a3 = a;
    	  b = b2;  b2 = b3;  b3 = b;
    	  c = c2;  c2 = c3;  c3 = c;
    	}
    	if ( a1 < a4 ) {
    	  a = a1;  a1 = a4;  a4 = a;
    	  b = b1;  b1 = b4;  b4 = b;
    	  c = c1;  c1 = c4;  c4 = c;
    	}
    	if ( a2 < a4 ) {
    	  a = a2;  a2 = a4;  a4 = a;
    	  b = b2;  b2 = b4;  b4 = b;
    	  c = c2;  c2 = c4;  c4 = c;
    	}
    	if ( a3 < a4 ) {
    	  a = a3;  a3 = a4;  a4 = a;
    	  b = b3;  b3 = b4;  b4 = b;
    	  c = c3;  c3 = c4;  c4 = c;
    	}
    	if ( a1 < a5 ) {
    	  a = a1;  a1 = a5;  a5 = a;
    	  b = b1;  b1 = b5;  b5 = b;
    	  c = c1;  c1 = c5;  c5 = c;
    	}
    	if ( a2 < a5 ) {
    	  a = a2;  a2 = a5;  a5 = a;
    	  b = b2;  b2 = b5;  b5 = b;
    	  c = c2;  c2 = c5;  c5 = c;
    	}
    	if ( a3 < a5 ) {
    	  a = a3;  a3 = a5;  a5 = a;
    	  b = b3;  b3 = b5;  b5 = b;
    	  c = c3;  c3 = c5;  c5 = c;
    	}
    	if ( a4 < a5 ) {
    	  a = a4;  a4 = a5;  a5 = a;
    	  b = b4;  b4 = b5;  b5 = b;
    	  c = c4;  c4 = c5;  c5 = c;
    	}
    	/* теперь a,b,c упорядочены по убыванию a */

    Сортировка 5 записей без массивов и структур в обратном порядке. Работает.

    AlCodel, 01 Июля 2016

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