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

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

    +1

    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
    .org 22h
    dw @vbi
    
    .org 80h
    bpos: db 0h 0h
    vector: db 2h 1h
    
    process:
    	push %a
    	push %b
    	mov %a [@bpos] ; {h:x, l:y} ;
    	mov %b [@vector] ; {h:dx, l:dy} ;
    	add %ah %bh
    	add %al %bl
    	cmp %ah 11h
    	jng @.skip_xoverflow_handle
    	cmp %ah 14h
    	jg @.overflow_left
    	mov %ah 11h
    	jmp @.xoverflow_finally
    	.overflow_left:
    		mov %ah 0h
    	.xoverflow_finally:
    		neg %bh
    	.skip_xoverflow_handle:
    	cmp %al 5Ch
    	jng @.skip_yoverflow_handle
    	cmp %al 60h
    	jg @.overflow_up
    	mov %al 5Bh
    	jmp @.yoverflow_finally
    	.overflow_up:
    		mov %al 1h
    	.yoverflow_finally:
    		neg %bl
    	.skip_yoverflow_handle:
    	mov [@bpos] %a
    	mov [@vector] %b
    	pop %b
    	pop %a
    	ret
    	
    cls:
    	push %a
    	push %b
    	mov %a 3A98h
    	
    	.loop:
    		mov [%a + @T1] 0000h
    		sub %a 2h
    		jnz @.loop 
    	pop %b
    	pop %a
    	ret
    
    render:
    	push %a
    	push %b
    	push %c
    
    	mov %a [@bpos]  ; {h:x, l:y} ;
    	mov %b %al
    	mul %b 12h
    	add %b %ah
    	add %b @T1
    	
    	mov %c 8h
    	.loop:
    		movb [%b] FFh
    		add %b 12h
    		dec %c
    		jnz @.loop
    	
    	pop %c
    	pop %b
    	pop %a
    	ret	
    
    start:
    	mov %sp FFFFh
    	outb 20h 1h
    	outb 21h 16h
    	out  22h @T1
    	
    	mov %al 1h
    	int 10h
    	
    	.loop:
    		jmp @.loop
    
    vbi:
    	call @cls
    	call @render
    	call @process
    	ret
    
    .org 1000h
    T1:

    решил пойти по накатанному пути и добавил видеоконтроллер, пока только монохромная битовая карта 144x100, но большего и не надо
    сабж выводит на экран что отпрыгивает от стен, простое умножение компонента вектора на -1

    digitalEugene, 14 Февраля 2022

    Комментарии (71)
  3. JavaScript / Говнокод #27503

    +1

    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
    class C {
        _length: number;
    
        constructor() {
            this._length = 10;
        }
    
        get length() {
            return this._length;
        }
        set length(value: number) {
            this._length = value;
        }
    }
    
    function main() {
        const c = new C();
    
        print(c.length);
        c.length = 20;
        print(c.length);
    
        delete c;
    
        print("done.");
    }

    пока вы тут балаболили я тут наговнокодил "property" или "accessors"

    ASD_77, 07 Июля 2021

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

    +2

    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
    (set-logic UF)
    ; https://smtlib.cs.uiowa.edu/logics.shtml
    ; UF for the extension allowing free sort and function symbols 
    
    (set-option :produce-proofs true)
    
    (declare-sort M_list)
    
    (declare-fun m_node (M_list M_list) M_list)
    
    ; один хер какой порядок, можно переписать (a, b) на (b, a)
    (assert
      (forall ( (a M_list) (b M_list) )
        (=
          (m_node a b)
          (m_node b a)
        )
      )
    )
    
    ; если есть (a (b c)) то можно переписать на (с (a b))
    (assert
      (forall ( (a M_list) (b M_list) (c M_list) )
        (=
          (m_node a (m_node b c) )
          (m_node c (m_node a b) )
        )
      )
    )
    
    ; Можно создавать или удалять повторы, (a a) <=> a
    (assert
      (forall ( (a M_list))
        (=
          (m_node a a)
          a
        )
      )
    )
    
    
    ; Чтоб узнать, выводима ли такая-то хернь
    (declare-fun m_node_select (M_list M_list) Bool)
    
    
    (assert
      (forall ( (a M_list) (b M_list) )
        (m_node_select
          a (m_node a b)
        )
      )
    )
    
    ; проверяем, можно ли сконструировать (a a) из (c ((b d) a))
    (assert
      (not (forall ( (a M_list) (b M_list) (c M_list) (d M_list) )
        (m_node_select
          (m_node a a)
          (m_node c (m_node (m_node b d) a) )
        )
      ))
    )
    
    
    (check-sat)
    (get-proof)

    Вот вам немного гомоикон SMT-солвера. Эта вот хренотень сама доказывает, не то что какой-то там Coq.

    Понятно что по тем вот говноправилам можно чтоб всплыло 'a' и потом его удвоить "(a a) <=> a"
    потом через m_node_select вытащить этот дубликат

    j123123, 01 Марта 2021

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

    +2

    1. 1
    Оффтоп словаря терминов говнокода.

    Для всего, что хотели ответить на комментарий из http://govnokod.ru/26478.
    Поддержим чистоту расы словаря!

    1024--, 11 Марта 2020

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

    0

    1. 1
    Тестовый код для тестирования парсера.

    Не обращайте внимания.

    int i = 5;
    i += ++i + ++i;

    Именно поэтому я против «C++».
    def f():
    try:
    f()
    finally:
    f()
    f()

    Fatal Python error: Cannot recover from stack overflow.
    Current thread 0x00002288 (most recent call first):
    mov     bp, 0cf8h
    lea esi, IOForEEPROM-@7[esi]
    mov edi, 8000384ch
    mov dx, 0cfeh
    cli
    call esi
    mov di, 0058h
    dec edx ; and al,0fh
    mov word ptr (BooleanCalculateCode-@10)[esi], 0f24h
    call esi
    lea ebx, EnableEEPROMToWrite-@10[esi]
    mov eax, 0e5555h
    mov ecx, 0e2aaah
    call ebx
    mov byte ptr [eax], 60h
    push ecx
    loop $

    Какой скилл )))

    gost, 21 Января 2020

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

    +1

    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
    #include <cstdio>
    
    class tag;
    
    template<class>
    struct type { friend constexpr auto get(type); };
    
    template<class TKey, class TValue>
    struct set { friend constexpr auto get(TKey) { return TValue{}; } };
    
    void foo() {            // never called
      if constexpr(false) { // never true
        if (false) {        // never true
            constexpr auto call = [](auto value) { std::printf("called %d", value); };
            void(set<type<tag>, decltype(call)>{});
        }
      }
    }
    
    int main() {
      get(type<tag>{})(42); // prints called 42
    }

    https://twitter.com/krisjusiak/status/1186363017329594368
    Какой C++20 )))

    j123123, 21 Октября 2019

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

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    #include <stdio.h>
    
    struct Gost {
       int x = 42;    
    };
    
    
    int main () {
        Gost gst;
        printf("%d\n", gst); // 42
    }

    http://ideone.com/fB26cs

    Уб ли это?

    OCETuHCKuu_nemyx, 06 Октября 2019

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

    +2

    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
    // https://habr.com/ru/post/466985/
    
    // о каррировании в крестоговне
    
    // По сути это каррирующее говно просто складывает куда-то хуйню, а потом целиком ее в функцию призывает.
    // Ну т.е. на Си можно написать дрисню вида
    
    int shit(int a, int b, int c, int d)
    {
      return a*(b+c*d);
    }
    
    // И вот каррирование такой дрисни это как если б я сделал структуру
    struct shit_arguments
    {
       int a;
       int b;
       int c;
       int d;
    };
    
    // И потом бы с конца заполнял это говно
    struct shit_arguments;
    shit_arguments.d = 13;
    shit_arguments.c = 666;
    shit_arguments.b = 1488;
    shit_arguments.a = 42;
    // и при полном заполнении этого говна просто б вызвал функцию
    // подставив туда накопившееся говно
    int somecrap = shit(shit_arguments.a, shit_arguments.b, shit_arguments.c, shit_arguments.d);
    
    // именно так эта крестовая дрисня и работает, она не может произвести частичное вычисление
    // не может сделать функцию с частично вычисленной дрисней в ней на основе частично переданной хуйни
    
    // если я например в функцию shit захочу частично подставить аргументы b,c,d как 1,2,3 то у меня не получится функции вида
    int shit_b1_c2_d3(int a)
    {
      return a*(7); // 1+2*3 = 7
    }
    // Нихуя подобного не будет. А если нихуя подобного нет, нахуй это бесполезное дерьмо вообще надо?
    // В крестах никак нельзя на основе каких-то готовых функций сгенерить
    // видоизмененные функции с частично сделанными вычислениями
    // Никакой нормальной рефлексии нет, просто какие-то тупые кривые костыли к сишечке налепили
    // И это программисты?

    j123123, 15 Сентября 2019

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

    +2

    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
    public static void Init()
            {            
                LetterOrder = new Dictionary<char, int>
                              {
                                  {'A', 0},
                                  {'B', 1},
                                  {'C', 2},
                                  {'D', 3},
                                  {'E', 4},
                                  {'F', 5},
                                  {'G', 6},
                                  {'H', 7},
                                  {'I', 8},
                                  {'J', 9},
                                  {'K', 10},
                                  {'L', 11},
                                  {'M', 12},
                                  {'N', 13},
                                  {'O', 14},
                                  {'P', 15},
                                  {'Q', 16},
                                  {'R', 17},
                                  {'S', 18},
                                  {'T', 19},
                                  {'U', 20},
                                  {'V', 21},
                                  {'W', 22},
                                  {'X', 23},
                                  {'Y', 24},
                                  {'Z', 25},
                              };
            }

    C#-макака не умеющая, ни в char - 'A' ни в статические конструторы (и еще много чего: см. https://www.codingame.com/training/easy/encryptiondecryption-of-enigma-machine/solution?id=10246815)

    Lorip1971, 15 Февраля 2019

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

    +3

    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
    bool  Object::DeleteDouble(void* data)
        {
            Element* rc = Head;
            BANKCLIENT* asd = (BANKCLIENT*)rc->Data;
            int dbl;
            Element* rc1 = Head;
            BANKCLIENT* asd1 = (BANKCLIENT*)rc1->Data;
            while ((rc != NULL) && (rc->Data != data))
            {
                asd = (BANKCLIENT*)rc->Data;
                dbl = asd->NumScore;
                while ((rc1 != NULL) && (rc1->Data != data))
                {
                    asd1 = (BANKCLIENT*)rc1->Data;
                    if (dbl == asd1->NumScore)
                    {
                        std::cout << "Дублирующийся элемент удалён" << std::endl;
                        Delete(rc1);
                        goto flag;
                    }
                }
            }
        flag:
            system("pause");
            return rc;
        }

    Некая svetlana.kotik раскрывает секреты односвязных списков.

    Fluttie, 20 Мая 2016

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