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

    Всего: 4

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

    +90

    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
    function Vincenty(Lat1, Lon1, Lat2, Lon2: Extended): Extended;
    const  // Параметры эллипсоида:
    a = 6378245.0;
    f = 1 / 298.3;
    b = (1 - f) * a;
    EPS = 0.5E-30;
    var
    APARAM, BPARAM, CPARAM, OMEGA, TanU1, TanU2,
    Lambda, LambdaPrev, SinL, CosL, USQR, U1, U2,
    SinU1, CosU1, SinU2, CosU2, SinSQSigma, CosSigma,
    TanSigma, Sigma, SinAlpha, Cos2SigmaM, DSigma : Extended;
    begin
    lon1 := lon1 * (PI / 180); 
    lat1 := lat1 * (PI / 180);
    lon2 := lon2 * (PI / 180); 
    lat2 := lat2 * (PI / 180); //Пересчет значений координат в радианы
    
    TanU1 := (1 - f) * Tan(lat1); 
    TanU2 := (1 - f) * Tan(lat2);
    U1 := ArcTan(TanU1);  
    U2 := ArcTan(TanU2);
    SinCos(U1, SinU1, CosU1); 
    SinCos(U2, SinU2, CosU2);
    OMEGA := lon2 - lon1; 
    lambda := OMEGA;
    
    repeat //Начало цикла итерации
    
    LambdaPrev:= lambda;
    SinCos(lambda, SinL, CosL);
    SinSQSigma := (CosU2 * SinL * CosU2 * SinL) +
      (CosU1 * SinU2 - SinU1 * CosU2 * CosL) *
      (CosU1 * SinU2 - SinU1 * CosU2 * CosL);
    
    CosSigma := SinU1 * SinU2 + CosU1 * CosU2 * CosL;
    TanSigma:= Sqrt(SinSQSigma) / CosSigma;
    
    if TanSigma > 0  then Sigma := ArcTan(TanSigma)
      else Sigma := ArcTan(TanSigma) + Pi;
    
    if SinSQSigma = 0  then SinAlpha := 0
       else SinAlpha := CosU1 * CosU2 * SinL / Sqrt(SinSQSigma);
    
    if (Cos(ArcSin(SinAlpha)) * Cos(ArcSin(SinAlpha))) = 0  then Cos2SigmaM := 0
      else Cos2SigmaM:= CosSigma - (2 * SinU1 * SinU2 / (Cos(ArcSin(SinAlpha)) * Cos(ArcSin(SinAlpha))));
    
    CPARAM:= (f / 16) * Cos(ArcSin(SinAlpha)) * Cos(ArcSin(SinAlpha)) *
      (4 + f * (4 - 3 * Cos(ArcSin(SinAlpha)) * Cos(ArcSin(SinAlpha))));
    
    lambda := OMEGA + (1 - CPARAM) * f * SinAlpha * (ArcCos(CosSigma) +
      CPARAM * Sin(ArcCos(CosSigma)) * (Cos2SigmaM + CPARAM * CosSigma *
      (-1 + 2 * Cos2SigmaM * Cos2SigmaM)));
    
    until Abs(lambda - LambdaPrev) < EPS; // Конец цикла итерации
    
    USQR:= Cos(ArcSin(SinAlpha)) * Cos(ArcSin(SinAlpha)) *(a * a - b * b) / (b * b);
    APARAM := 1 + (USQR / 16384) * (4096 + USQR * (-768 + USQR * (320 - 175 * USQR)));
    
    BPARAM := (USQR / 1024) * (256 + USQR * (-128 + USQR * (74 - 47 * USQR)));
    DSigma := BPARAM * SQRT(SinSQSigma) * (Cos2SigmaM + BPARAM / 4 *
    (CosSigma * (-1 + 2 * Cos2SigmaM * Cos2SigmaM) - BPARAM / 6 * Cos2SigmaM *
    (-3 + 4 * SinSQSigma) * (-3 + 4 * Cos2SigmaM * Cos2SigmaM)));
    
    Result := b * APARAM * (Sigma - DSigma);
    end; 
    
    { ©Drkb::04255 }

    Алгоритм расчёта километража между двумя точками на земной поверхности методом Винсенти, найден в drkb3.0. Там же весь этот ГК уместился в одной строчке:

    distance=sqrt(pow((lon1 - lon2)*111*COS(lat2/57.295781), 2) + pow((lat1) - lat)*111, 2));

    , чудноо... :)

    Alegun, 09 Июня 2012

    Комментарии (17)
  3. Pascal / Говнокод #10066

    +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
    function Ns(ds: char; var vs: byte): boolean;
    begin
       case ds of
    'Q': vs:= 81;
    'W': vs:= 87;
    'E': vs:= 69;
    'R': vs:= 82;
    'T': vs:= 84;
    'Y': vs:= 89;
    'U': vs:= 85;
    'I': vs:= 73;
    'O': vs:= 79;
    'P': vs:= 80;
    'A': vs:= 65;
    'S': vs:= 83;
    'D': vs:= 68;
    'F': vs:= 70;
    'G': vs:= 71;
    'H': vs:= 72;
    'J': vs:= 74;
    'K': vs:= 75;
    'L': vs:= 76;
    'Z': vs:= 90;
    'X': vs:= 88;
    'C': vs:= 67;
    'V': vs:= 86;
    'B': vs:= 66;
    'N': vs:= 78;
    'M': vs:= 77;
    else vs:= 0;
      end;
     if vs = 0 then Result:= false else Result:= true;
     end;

    Определение кода виртуальных клавиш, вот что бывает, когда кто-то не знает матчасть, вся эта белиберда легко заменяется на :

    function Ns(ds: char; var vs: byte): boolean;
    begin
    case ds of
    'A'..'Z': vs:= byte(ds);
    else vs:= 0;
    end;
    if vs = 0 then Result:= false else Result:= true;
    end;

    И не лень же было клаву мучить!

    Alegun, 27 Апреля 2012

    Комментарии (14)
  4. Pascal / Говнокод #10064

    +72

    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
    98. 98
    99. 99
    const 
    zn1 = #60; { < }   
    zn2 = #62; { > } 
    
    function EnCrypt(ds: string): string;
      var 
    k,l,m: string; 
    i,b,g: integer; 
    t: char;
       function Lvs(ds: byte): string;
       begin
        case ds of 
       Byte(zn1): Result:= zn1+zn2;
       Byte(zn2): Result:= zn2+zn1;
             0: if Random(2)=0 then  Result:= zn1+zn1 
                 else Result:= zn2+zn2;
               else 
                 Result:= Chr(ds);end;
       end;
      begin
       if length(ds)=0 then Exit; 
       Randomize;  k:=''; m:='';  b:=1;
     for i:=1 to RandomRange(5,16) do 
      k:= k+Chr(RandomRange(1,256));
       for i:=1 to Length(ds) do  begin 
    g:= Byte(ds[i])xor Byte(k[b]);
       l:= Lvs(g); t:= k[b];
    if i<= Length(k) then m:= m+t+l else m:=m+l;
    Inc(b);
       if b>Length(k) then b:= 1; 
      end; 
    l:= Chr(Length(k))+m;
       for  i:=1 to Length(l) do begin 
    b:= Byte(l[I]) xor i;k:= Lvs(b);
       Result:= Result+k; 
    end;
      end;
    
     function DeCrypt(ds: string): string;
      var 
    k,c,l,n: string; 
    i,b,m: integer; 
    d: boolean;
       function Svl(ds: string; ts: integer): char;
       var t: byte;
       begin
        t:=Byte(ds[1]);
        if ds=zn1+zn2 then t:=Byte(zn1);
        if ds=zn2+zn1 then t:=Byte(zn2);
        if(ds=zn1+zn1) or (ds=zn2+zn2) then t:= 0;
       Result:=Chr(Byte(t xor ts));
       end;
      begin
       if length(ds)=0 then Exit;
     b:=1; i:=1; n:='';
       while i<=Length(ds) do begin c:= ds[i];
       if (ds[i]=zn1)or(ds[i]=zn2)then begin 
    c:=ds[i]+ds[i+1]; Inc(i); end;
       Inc(i);
     n:= n+Svl(c,b); 
    Inc(b); 
    end; c:=''; k:=''; b:=1; i:=1; 
    d:=false;
    m:=Byte(n[1]); 
    Delete(n,1,1);
       while i<=Length(n)do begin 
    if b<=m*2 then begin if d then begin 
    l:=n[i];
      if (n[i]=zn1) or (n[i]=zn2) then 
    begin 
        l:= n[i]+n[i+1]; Inc(i); 
    end;
       c:=c+l; 
    Inc(b);
    d:=false; 
    end else 
    begin 
    k:=k+n[i]; d:=true; Inc(b); 
    end;
       end else begin 
    l:= n[i]; 
    if (n[i]=zn1) or (n[i]=zn2) then 
    begin   l:= n[i]+n[i+1]; Inc(i); end;  
    c:=c+l; end;
     Inc(i); end;
       if length(c)=0 then Exit;
    i:=1;b:=1; 
    while i<=Length(c)do begin 
    l:=c[i];
       if (c[i] = zn1) or (c[i] = zn2) then 
    begin 
    l:= c[i] + c[i+1]; Inc(i); 
    end;
       Inc(i);
    Result:= Result + Svl(l, Byte(k[b]));
    Inc(b);
    if b>Length(k)then b:=1;
       end;
      end;

    В очень далёком 99м году была совершена попытка шифровать и дешифровать пароли пользователей простым ХОР-замесом. Тогда такой способ казался идеальным и оригинальным :) Но посмотрите, если руки не оттуда откуда надо растут, как же можно извратиться, чистый говнокод! До сих пор им пользуюсь, немного. Интересно, ктонить догадается, зачем здесь константные знаки используются?

    Alegun, 27 Апреля 2012

    Комментарии (7)
  5. Pascal / Говнокод #10057

    +95

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    function bth(ds: byte): string;
     const
     b: string = '0123456789ABCDEF';
    begin
    Result:= b[(ds shr 4) + 1] + b[(ds and $F) + 1];
    end;

    Некоторое время назад потребовалось конвертить Byte в Hex. Стандартных способов не нашёл, а ничего лучше такой говнокодки выдумать не получилось. Сейчас смотрю и разбирает смех - весёлые были времена!

    Alegun, 27 Апреля 2012

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