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

    В номинации:
    За время:
  2. Куча / Говнокод #15738

    +125

    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
    % -*- mode: Prolog -*-
    
    :- module e9.
    :- interface.
    :- import_module io.
    :- pred main(io::di, io::uo) is cc_multi.
    
    :- implementation.
    :- import_module int, float, list, string, math.
    
    :- func root(int) = int.
    root(Number) = floor_to_int(sqrt(float(Number))).
    
    :- func squares_under(int, int) = list(int).
    squares_under(From, To) = Result:-
        (Square = From * From,
         (if Square =< To
         then Result = [Square | squares_under(From + 1, To)]
         else Result = [])).
    
    :- pred list_to_disjunction(list(int)::in, int::out) is nondet.
    list_to_disjunction([Head | Tail], Result):-
        (Result = Head; list_to_disjunction(Tail, Result)).
    
    :- pred summands_of(list(int)::in, int::in, { int, int, int }::out) is cc_nondet.
    summands_of(Squares, Sum, { A, B, C }):-
        list_to_disjunction(Squares, As),
        list_to_disjunction(Squares, Bs),
        list_to_disjunction(Squares, Cs),
        As < Bs, Bs < Cs,
        As + Bs = Cs,
        root(As) + root(Bs) + root(Cs) = Sum,
        A = As, B = Bs, C = Cs.
    
    main(!IO):-
        Sum = 1000,
        Squares = squares_under(1, Sum * Sum),
        (if summands_of(Squares, Sum, { A, B, C })
        then io.format("Answer: A = %d, B = %d, C = %d\n", [i(A), i(B), i(C)], !IO)
        else io.format("No solutions\n", [], !IO)).

    Давно как-то мы не вспоминали Прожект Ойлер.
    Язык: Меркури,
    Эффективность решения: наверное, полный пиздец.

    Для тех, кому нечем заняться: http://joyreactor.com/post/954661

    wvxvw, 12 Апреля 2014

    Комментарии (6)
  3. Куча / Говнокод #15733

    +129

    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
    <script>
    // Browser Window Size and Position
    // copyright Stephen Chapman, 3rd Jan 2005, 8th Dec 2005
    // you may copy these functions but please keep the copyright notice as well
    function pageWidth()
    { return window.innerWidth != null ? window.innerWidth : document.documentElement && document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body != null ? document.body.clientWidth : null; }
    function pageHeight()
    { return window.innerHeight != null ? window.innerHeight : document.documentElement && document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body != null ? document.body.clientHeight : null; }
    function posLeft()
    { return typeof window.pageXOffset != 'undefined' ? window.pageXOffset : document.documentElement && document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ? document.body.scrollLeft : 0; }
    function posTop()
    { return typeof window.pageYOffset != 'undefined' ? window.pageYOffset : document.documentElement && document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ? document.body.scrollTop : 0; }
    function posRight()
    { return posLeft() + pageWidth(); }
    function posBottom()
    { return posTop() + pageHeight(); }
    
    function SetWindowSize(s, h, w) {
        var wid = pageWidth();
        var hei = pageHeight();
        var n_wid = Math.round(wid * w);
        var n_hei = Math.round(hei * h);
        s.SetWidth(n_wid);
        s.SetHeight(n_hei);
    }
    function SetWindowW(s, w) {
        var wid = pageWidth();
        var n_wid = Math.round(wid * w);
        s.SetWidth(n_wid);
    }
    </script>
    <html>
    ...
                <td>
                    <dx:ASPxButton ID="AddCopyTemplate" runat="server" Text="Создать копию" 
                        AutoPostBack="False" 
                        CssFilePath="~/App_Themes/Office2010Black/{0}/styles.css" 
                        CssPostfix="Office2010Black" 
                        SpriteCssFilePath="~/App_Themes/Office2010Black/{0}/sprite.css" 
                        Wrap="True" >
                        <ClientSideEvents Click="function(s, e) {
    	AddCopyTemplate();
    }" Init="function(s, e) {
    	Get_Sizes_wid(s,1075);
    }" />
                    </dx:ASPxButton>
                </td>
                <td>
                    <dx:ASPxButton ID="AddTemplate" runat="server" Text="Создать" 
                        AutoPostBack="False" 
                        CssFilePath="~/App_Themes/Office2010Black/{0}/styles.css" 
                        CssPostfix="Office2010Black" 
                        SpriteCssFilePath="~/App_Themes/Office2010Black/{0}/sprite.css">
                        <ClientSideEvents Click="function(s, e) {
    	AddTemplateClick();
    }" Init="function(s, e) {
    	Get_Sizes_wid(s,1075);
    }" />
                    </dx:ASPxButton>
                </td>
    ...
    </html>

    я даже не знаю, в какой раздел это постить, но пусть будет тут.
    товарищ, пользовался горячелюбимыми контролами от DevExpress, которые работают херпойми как, но сейчас не об этом.
    в секции ClientSideEvents есть скрипты, которые выполняются на клиенте при старте, так вот он и поставил туда вызов функции, которая выставляет размеры для элементов.
    это одностраничное приложение на 1100 строк только одной размеки, где используется огромное количество различных элементов, панели, гриды, гнопки, модальные окна, и много всего прочего... и ни у одного из них не заданы вообще никакие размеры, все работает на этих JS функциях.
    эти волшебные цифры, которые передаются в функцию рассчитаны на его монитор, и как только они отрываются на другом мониторе с другим разрешением, то эти две кнопки занимают примерно 80% экрана.
    а самое главное, что модальные окна занимают примерно 80% высоты и ширины экрана, и сначала они рисуются по центру экрана, а потом увеличиваются функцией, из-за чего они уезжают за границы экрана

    Lokich, 11 Апреля 2014

    Комментарии (6)
  4. Java / Говнокод #15712

    +77

    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
    AddTextNode(ma_empNode.addChildElement('ORG_NAME', namespace, prefix),NewRegEx(
                                                                                    NewRegEx(
                                                                                    NewRegEx(
                                                                                    NewRegEx(
                                                                                    NewRegEx(
                                                                                    NewRegEx(
                                                                                    NewRegEx(
                                                                                    NewRegEx(
                                                                                    NewRegEx(
                                                                                    NewRegEx(
                                                                                    NewRegEx(
                                                                                    NewRegEx(
                                                                                    NewRegEx(
                                                                                    NewRegEx(
                                                                                    NewRegEx(
                                                                                    NewRegEx(
                                                                                    NewRegEx(
                                                                                    NewRegEx(
                                                                                    NewRegEx(
                                                                                    NewRegEx(
                                                                                    NewRegEx(
                                                                                    NewRegEx(' '+app.OrgName__c+' '
                                                                                    ,' ООО ',5)
                                                                                    ,' ООО.',5)
                                                                                    ,' ООО"',5)
                                                                                    ,' 000 ',5)
                                                                                    ,' 000.',5)
                                                                                    ,' 000"',5)
                                                                                    ,' OOO ',5)
                                                                                    ,' OOO.',5)
                                                                                    ,' OOO"',5)
                                                                                    ,' ЗАО ', 5)
                                                                                    ,' ЗАО.', 5)
                                                                                    ,' ЗАО"', 5)
                                                                                    ,' ОАО ', 5)
                                                                                    ,' ОАО.', 5)
                                                                                    ,' ОАО"', 5)
                                                                                    ,' ИП ', 4)
                                                                                    ,' ИП.', 4)
                                                                                    ,' ИП"', 4)
                                                                                    ,'Общество с ограниченной ответственностью', 37)
                                                                                    ,'Индивидуальный предприниматель', 28)
                                                                                    ,'Открытое акционерное общество', 27)
                                                                                    ,'Закрытое акционерное общество', 27)
                                                                                    .Replace('"', '')
                                                                                    .Replace('', '')
                                                                                    .Replace('«', '')
                                                                                    .Replace('»', ''));

    Проверял код одного нашего програймера. От первых же строк ушел в аут. Такое еще не видел.

    talisman1209, 09 Апреля 2014

    Комментарии (6)
  5. PHP / Говнокод #15684

    +142

    1. 1
    ХУЙ!

    Konardillo, 06 Апреля 2014

    Комментарии (6)
  6. Pascal / Говнокод #15658

    +133

    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
    procedure tproxythread.execute;
    var
      doc: IHtmlDocument2;
      temp,parsed:string;
      v:olevariant;
      i:integer;
    begin
      coinitialize(nil);
      try
        for i:=0 to links.count -1 do
        begin
          temp:=http.LoadContent(links[i]);
          Doc:=coHTMLDocument.Create as IHTMLDocument2;
          V:=VarArrayCreate([0,0], varVariant);
          V[0]:=temp;
          Doc.Write(PSafeArray(TVarData(v).VArray));
          reg.InputString:=doc.body.outerText;
          if reg.Exec then
          repeat
            parsed:= reg.Match [0];
            proxy.add(parsed);
          until not reg.ExecNext;
        end;
      finally
        couninitialize;
      end;
    end;

    Вы все еще парсите webbrowser-ом? Тогда мы идем к вам!..

    Stertor, 03 Апреля 2014

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

    +157

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    if (settings.bgType === 'pattern')
    {
        if (settings.bgPattern.pack === 'bg-dark') return App.Area.color.light;
        else return App.Area.color.dark;
    }
    else
    {
        return App.Area.color.invert;
        console.log('invert');
    }

    смотрю, что в консоли пусто, и думаю, почему не работает?

    Itareo, 31 Марта 2014

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

    +129

    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
    class WorkDBF
        {
            private OdbcConnection _connection = null;
            public DataTable Execute(string command)
            {
                DataTable dt = null;
                if (_connection != null)
                {
                    try
                    {
                        _connection.Open();
                        dt = new DataTable();
                        System.Data.Odbc.OdbcCommand oCmd = _connection.CreateCommand();
                        oCmd.CommandText = command;
                        dt.Load(oCmd.ExecuteReader());
                        _connection.Close();
                    }
                    catch (Exception e)
                    {
                        MessageBox.Show(e.Message);
                    }
                }
                return dt;
            }
            public DataTable GetAll(string dbpath)
            {
                return Execute("SELECT * FROM " + dbpath);
            }
            public WorkDBF()
            {
                this._connection = new System.Data.Odbc.OdbcConnection();
                _connection.ConnectionString = @"Driver={Microsoft dBase Driver (*.dbf)};" +
                    "SourceType=DBF;Exclusive=No;" +
                    "Collate=Machine;NULL=NO;DELETED=NO;" +
                    "BACKGROUNDFETCH=NO;";
            }
        }

    orozov, 17 Марта 2014

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

    +145

    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
    global _start
    
    section .text
    
    _start:
    
    	mov	eax, 0b10010100101100110111110110111110
    	;  эти битики будут выведены на печать
    	
    	mov	ecx, 0b00011000000110000001100000011000
    	; Четыре недозаполненных ascii кодов символов '0' или '1', в который из флага переноса заталкивается битик 0 или 1
    
    	%rep 8
    	mov	ebx, ecx
    	%rep    3
    		shr	eax, 1 ; Захавываем битик в флаг переноса
    		rcl	ebx, 1 ; Запихиваем из флага переноса в недозаполненные ascii коды
    		rol	ebx, 7 ; Проматываем на следующий кусок
    	%endrep
    	shr	eax, 1
    	rcl	ebx, 1 ; На последней стадии все то же самое, только проматывать уже не надо
    
    	push ebx ; Теперь все битики всунуты, пихнем содержимое регистра в стек
    	%endrep
    
    
        
    	mov	eax, 04h ; write()
    	mov	ebx, 01h ; stdout
    	mov	ecx, esp ; распечатаем из стека
    	mov	edx, 32  ; 32 символа
    	int	80h
    	
    	mov	eax, 01h ; exit()
    	xor	ebx, ebx ; errno
    	int	80h

    NASM Linux x86
    Суть - вывести содержимое регистра в двоичной системе счисления
    Можно было вместо этой мути использовать CMOVC ( Move if carry (CF=1) ) или еще что-нибудь такое придумать, есть же еще BT, BTS, глаза разбегаются
    ...вообще хрен его знает, какой-то упоротый этот x86 ассемблер, надо бы AVR осваивать, там регистров побольше

    j123123, 10 Марта 2014

    Комментарии (6)
  10. 1C / Говнокод #15364

    −171

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
    	
    	если ПараметрыСеанса.ТекущийПользователь.Наименование<>"Администратор" тогда
    		
    		Сообщить("Данная обработка доступна только для Администратора",СтатусСообщения.Важное);
    		
    		Отказ=Истина;
    		
    	конецесли;
    	
    КонецПроцедуры

    NBQ, 06 Марта 2014

    Комментарии (6)
  11. C# / Говнокод #15280

    +130

    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
    static void npcMove(string npcid, string posX, string posZ, string posY, int localsid)
            {
                byte[] opcode = { 0x4d, 0x00, 0x16, 0x23, 0x00 };
                byte[] npcid_in_bytes = new byte[4];
                npcid_in_bytes = Enumerable.Range(0, npcid.Length).Where(x => x % 2 == 0).Select(x => Convert.ToByte(npcid.Substring(x, 2), 16)).ToArray();
                Array.Reverse(npcid_in_bytes);
                byte[] posX_in_bytes = PackFloatStringArrayOfBytes(posX);
                byte[] posZ_in_bytes = PackFloatStringArrayOfBytes(posZ);
                byte[] posY_in_bytes = PackFloatStringArrayOfBytes(posY);
                byte[] unknown = { 0x00, 0x0f, 0x5c, 0x01, 0x01 };
                byte[] roleid_in_bytes = packint(16);
                byte[] localdsid_in_bytes = packint(localsid);
                byte[] buffer = opcode.Concat<byte>(npcid_in_bytes)
                    .Concat<byte>(posX_in_bytes).Concat<byte>(posZ_in_bytes).Concat<byte>(posY_in_bytes)
                    .Concat<byte>(unknown).Concat<byte>(roleid_in_bytes).Concat<byte>(localdsid_in_bytes).ToArray<byte>();
                buffer[1] = Convert.ToByte(buffer.Length - 2);
                Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                socket.Connect(localhost, GProviderPort);
                socket.Send(buffer);
                socket.Close();
            }

    VityaPW, 01 Марта 2014

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