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

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

    +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
    #include <string>
    #include <type_traits>
    #include <iostream>
    
    template<int N> struct tag {};
    
    template<typename T, int N>
    struct loophole_t
    {
        friend auto loophole(tag<N>) { return T{}; };
    };
    
    #define BA(c) auto loophole(tag< (c) >);
    #define Cb(c) BA(c) BA(c+1) BA(c+2) BA(c+3) BA(c+4)
    #define KA(c) Cb(c) Cb(c+5) Cb(c+10) Cb(c+15) Cb(c+20)
    #define ZDES(c) KA(c) KA(c+20) KA(c+40) KA(c+60) KA(c+80)
    #define BACbKAZDES ZDES(0) ZDES(80) ZDES(160) ZDES(240) ZDES(300)
    
    BACbKAZDES
    
    template<int I>
    struct wrp
    {
        int a;
    };
    int main(void)
    {
        sizeof(loophole_t<wrp<67>, 0>);
        sizeof(loophole_t<wrp<66>, 1>);
        sizeof(loophole_t<wrp<68>, 2>);
        sizeof(loophole_t<wrp<99>, 3>);
        sizeof(loophole_t<wrp<76>, 4>);
        sizeof(loophole_t<wrp<66>, 5>);
        sizeof(loophole_t<wrp<33>, 6>);
        sizeof(loophole_t<wrp<73>, 7>);
        sizeof(loophole_t<wrp<66>, 8>);
        sizeof(loophole_t<wrp<68>, 9>);
        sizeof(loophole_t<wrp<85>, 10>);
        sizeof(loophole_t<wrp<70>, 11>);
        sizeof(loophole_t<wrp<79>, 12>);
        sizeof(loophole_t<wrp<99>, 13>);
        sizeof(loophole_t<wrp<76>, 14>);
        sizeof(loophole_t<wrp<66>, 15>);
        sizeof(loophole_t<wrp<33>, 16>);
        sizeof(loophole_t<wrp<109>, 17>);
        sizeof(loophole_t<wrp<112>, 18>);
        sizeof(loophole_t<wrp<119>, 19>);
        sizeof(loophole_t<wrp<102>, 20>);
    
        std::string nactenbka;
    #define L(c, i) if(std::is_same< wrp< (c) >, decltype( loophole(tag< (i) >{}) )>::value) nactenbka.push_back((char)( c-1 ) );
    #define O(c, i) L(c, i) L(c+1, i) L(c+2, i) L(c+3, i) L(c+4, i)
    #define V(c, i) O(c, i) O(c+5, i) O(c+10,i) O(c+15,i) O(c+20,i)
    #define E(c, i) V(c, i) V(c+20,i) V(c+40,i) V(c+60,i) V(c+80,i)
    #define LOVE(c, i) E(c, i) V(c+80, i) V(c+100, i)
    
    #define FORE(i) LOVE(0, i)
    #define VER(i) FORE(i) FORE(i+1) FORE(i+2) FORE(i+3) FORE(i+4)
    #define FOREVER VER(0) VER(5) VER(10) VER(15) FORE(20)
        FOREVER
    
        std::cout << nactenbka << std::endl;
        return 0;
    
    }

    <3

    BACbKA, 04 Ноября 2021

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

    +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
    uint16_t Mnemonic::describeMnemonics(void) const
    {
    	uint16_t result = 0;
    	size_t i = 0;
    	for (auto&& m : mnemonics)
    		result += m.index() << i++ * 4;
    
    	return result;
    }
    ...
    switch(mnemonic.describeMnemonics())
    {
    	case constructDescription(REGISTER, REGISTER):
    	{
    ...
    	}
    	break;
    
    	case constructDescription(REGISTER, CONSTANT):
    	{
    ...
    	}
    	break;
    
    	case constructDescription(REGISTER, LABEL):
    	{
    ...
    	}
    	break;
    
    	case constructDescription(REGISTER, INDIRECT_ADDRESS):
    	{
    ...
    	}
    	break;
    
    	case constructDescription(INDIRECT_ADDRESS, REGISTER):
    	{
    ...
    	}
    	break;
    
    	default:
    		break;
    
    }

    спасибо папочка за паттерн матчинг

    digitalEugene, 01 Ноября 2021

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

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    private List<OutputData> AddSomeSpecialStateToFoo(
                List<OutputData> foos,
                IDictionary<Guid, SomeSpecialState> fooStates)
            {
                foreach(var foo in foos)
                {
                    foo .State = fooStates.FirstOrDefault(x => x.Key == cam.FooId).Value;
                }
    
                return foos;
            }

    Митируем листы и юзаем словарь правильно.

    LozorcevDiyosha, 29 Октября 2021

    Комментарии (9)
  5. JavaScript / Говнокод #27763

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    let textarea = document.querySelector('textarea')
    let list = document.querySelector('ol')
    let newTask = document.createElement('li')
    newTask.innerText = textarea.value
    
    function submitTask() {
        list.appendChild(newTask)
    }

    При попытке добавлять новый HTML элемент функция добавления срабатывает только один раз, к тому же для добавления используется не то значение которое я ввожу в текстовое поле, а только дефолтное. Так как я перепробовал уже массу вариантов и с инпутом, и с событием нажатия Enter, какие-то варианты, которые уже забыл, я подозреваю, что проблема, вероятно, в appendChild, но не уверен, и не понимаю её.

    shuric, 22 Октября 2021

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

    0

    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
    class XFoo {
        pin: number;
        buf: number[];
    
        constructor(k: number, l: number) {
            this.pin = k - l;
        }
    
        setPin(p: number) {
            this.pin = p;
        }
    
        getPin() {
            return this.pin;
        }
    
        init() {
            this.buf = [1, 2];
        }
    
        toString() {
            return `Foo${this.getPin()}`;
        }
    }
    
    function main() {
        let f = new XFoo(44, 2);
        let s = "" + f;
        print(s);
    }

    я вам тут хрень принес.. новая фича :)

    ASD_77, 19 Июля 2021

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

    −1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    const gearIcon = new Vivus(
      'gears',
      {
        type: 'delayed',
        duration: 200
      }
    );

    martazov, 29 Июня 2021

    Комментарии (9)
  8. JavaScript / Говнокод #27461

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    function main() {
        const trees = [ [1, "redwood"], [2, "bay"], [3, "cedar"], [4, "oak"], [5, "maple"] ];
    
        for (const [k, v] of trees)
        {
    	print (k, v);
        }
    
        print("done.");
    }

    пока с вами тут трепался - наклипал новую конструкцию

    результат работы

    1 redwood
    2 bay
    3 cedar
    4 oak
    5 maple
    done.

    ASD_77, 07 Июня 2021

    Комментарии (9)
  9. PHP / Говнокод #27422

    +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
    <?php
    
    function syoma_verify_spam($comment_post_ID) {
        // NOTE: На telegram этот метод не вызывается
    
        $content = trim($_POST['comment']);
        if (preg_match('#<a href=#', $content) && !preg_match('#\[code#', $content)) {
            die('Ня, пока.');
        }
        $content = strip_tags(apply_filters('gk_content', $content));
        $content = strtr($content, array(
            'A' => 'А',
            'a' => 'а',
            'B' => 'В',
            'E' => 'Е',
            'e' => 'е',
            '3' => 'З',
            'K' => 'К',
            'k' => 'к',
            'M' => 'М',
            'H' => 'Н',
            'O' => 'О',
            'o' => 'о',
            'P' => 'Р',
            'p' => 'р',
            'C' => 'С',
            'c' => 'с',
            'T' => 'Т',
            'Y' => 'У',
            'y' => 'у',
            'X' => 'Х',
            'x' => 'х',
            'b' => 'ь',
        ));
        $content = mb_strtolower($content);
        if (preg_match('#русня|хуйло|ватник|ватный|пидораш|пидорах#', $content)) {
            die('Рус-ня, пока.');
        }
    }

    Угадайте, почему фильтрация <a href не в конце функции?

    3_dar, 12 Мая 2021

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

    0

    1. 1
    2. 2
    3. 3
    Нужно реализовать thread-safe set.
    На сколько нормально разбить сет на N бакетов (по хешу, условно, 10000 штук),
    тогда при добавлении или удалении элемента делать лок соответствующего бакета

    Но будет хуево, когда пойдут запросы по одному ключу в нескольких тредах.
    Есть решение лучше?

    3_dar, 12 Мая 2021

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

    +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
    .ALIAS HALT 10h
    .ALIAS VBI   0h
    .ALIAS VPUSCRADDR 3000h
    .ALIAS VPUATRADDR 3002h
    .ALIAS VPUCTRL 3004h
    .ALIAS VPUCTRL_WH 3005h
    .ALIAS VPUCTRL_F 3006h
    .ALIAS VPUCTRL_VBI 0
    .ALIAS VPUCTRL_ACT 1
    .ALIAS VPUCTRL_TICK 2
    
    .ALIAS W 10
    .ALIAS H 5
    
    .ALIAS I   %BL
    .ALIAS PTR %C
    
    .ORG 2000h SCR:
    .ORG 2100h ATR:
    
    .ORG #VBI
    DD @VBI
    
    .ORG 30h
    DATA:
    
    .ORG 40h
    STATE:
    	X: DB 0
    	
    .ORG 80h
    _START:
    	SET   %AL #VPUCTRL_VBI
    	SET   %AL #VPUCTRL_ACT
    	STORE %AL #VPUCTRL_F
    	MOV   %AL #H
    	SHL   %AL 4
    	OR    %AL #W
    
    	STORE %AL #VPUCTRL_WH
    	
    	MOV   %A @SCR
    	STORE %A #VPUSCRADDR
    	MOV   %A @ATR
    	STORE %A #VPUATRADDR
    	
    	LOAD  %AL #VPUCTRL_F
    	SET   %AL #VPUCTRL_TICK
    	STORE %AL #VPUCTRL_F
    	STORE %AL #VPUCTRL_F
    	LOOP:
    	JMP @LOOP
    
    VBI:
    	PUSH  %A
    	PUSH  %B
    	PUSH  %C
    	
    	LOAD  %AL @X
    	ADD   %AL 1
    	
    	CMP   %AL #W JNE @VBI_CONTINUE
    	XOR   %AL %AL     VBI_CONTINUE:
    	STORE %AL @X
    	
    	CMP   %AL 0  JNE @VBI_ELSE
    		MOV   #PTR @SCR
    		ADD   #PTR #W
    		SUB   #PTR 1
    		STORE #PTR %AL 
    		JMP @VBI_SKIP
    	
    	VBI_ELSE:
    		MOV   #PTR @SCR
    		ADD   #PTR %AL
    		SUB   #PTR 1
    		MOV   %BH 0
    		STORE #PTR %BH
    	VBI_SKIP:
    
    	MOV   #PTR @SCR
    	ADD   #PTR %AL
    	MOV   %BH  FFh
    	STORE #PTR %BH
    	
    	POP %C
    	POP %B
    	POP %A
    	RET

    похождения моей ебанутой вмки продолжаются.
    bormand сказало что писать подставным прерыванием в консольку это читерство. реализовал видеовывод. теперь нормально? (слегка криво, и на
    атрибуты вмке похуй, как и мне.)

    вопреки моим огромным сомнениям, выдает 600 фпс даже на моей скромной конфигурации.

    https://imgur.com/fdLlQvx

    digitalEugene, 11 Мая 2021

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