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

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

    −8

    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
    .MODEL small ;отводим под стек и под данные по 64Кб код занимает 1 сегмент, данные и стек обьеденены в одну группу
    .STACK 100h ;отмечаем начало сегмента стека
    .DATA ;отмечаем начало сегмента данных
     
    _STDOUT_ equ 1 ; из синтаксического описания видно, что с помощью equ идентификатору 
    ;можно ставить в соответствие как числовые выражения, так и текстовые строки, 
        ;а псевдооператор “=” может использоваться только с числовыми выражениями;
    vivod db 0Dh, 0Ah, '$' ; $-кон. стр.
     
    String db 82 dup(?); выделение памяти для строки 
    PosLen db 14 dup(?); выделение памяти для строки (числа)
    Pos dw ? ; память для первого числа
    Len dw ? ; для второго
     
    .CODE ;отмечаем начало сегмента кодов
    preob proc ; процедура преобразования из строки в число
    xor ax, ax
    mov bx, ax
    mov cx, 10 ; для реализации цикла
    _repeat:
    mov bl, [si] ; помещаем в bl символ строки
    inc si ; в si переходим к ячейке следующего символа
    sub bl, '0'; преобразуем ASCII код в число
    jb _break ; если SF = 1 то выходим из процедуры(указывает, что между числами стоит пробел, числовой код пробела меньше числового кода нуля)
    cmp bl, 9 ; сравниваем, если число больше 9 - то это символ - идём на выход
    ja _break
    mul cx
    add ax, bx ;прибавляет в регистр ax нужное число
    jmp _repeat
    _break:
    ret ; возврат в в главный код
    preob endp
     
    main PROC
    ;инициализация сегментного регистра ds адресом сегмента данных
    mov ax, @data
    mov ds, ax
     
    ;ввод строки
    mov [String], byte ptr 80
    mov ah, 0Ah
    lea dx, [String]
    int 21h
     
    ;ввод строки чисел
    mov al,10 ; перенос строки
    int 29h ; быстрый вывод символов на экр(экон байт)
    mov [PosLen], byte ptr 14
    mov ah, 0Ah
     
    lea dx, [PosLen]
    int 21h
     
    ;преобразование строки в первое число
    lea si, [PosLen+2]
    call preob
    mov [Pos], ax
    call preob
    mov [Len], ax
     
    mov al,10 ; перенос строки
    int 29h ; быстрый вывод символов на экр(экон байт)
    mov ah, 40h ;номер функции помещается в ah
    mov bx, _STDOUT_ ;в bx хранится дескриптор стандартного выходного потока
    mov cx, [Len] ; кол-во выводимых символов
    lea dx, [String+1] ; адрес буфера вывода
    add dx, [Pos] ; берем 1 сим. и добавляем число, чтобы перейти к нужному нам символу
    int 21h 
     
    ;завершение программы
    xor ax,ax
    int 16h
    mov ax,4c00h
    int 21h
    MAIN ENDP
    END MAIN

    Помогите разобраться в коде, понять логику
    Задание: Ввести с клавиатуры строку и строку из двух чисел. Первое число ука- зывает начало подстроки для ввода на экран, второе количество символов из пер- вой строки, которое необходимо вывести на экран.

    tuple, 20 Декабря 2021

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

    −5

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    Привет петухи.
    Страйкер, зацени (не фишинг):
    http://govnokod.xyz
    
    Кто желает присоединиться, или просто обосрать, вот сорцы https://github.com/guestinho/govnokod-wordpress
    Кроме повторения функционала самого говнокода, есть говносток.
    Также как у борманда, можно добавлять в игнор (нужно зарегистрироваться, список хранится в базе).
    Счетчик непрочитанных рабочий.
    Все ники с govnokod.ru зарезервированы. Но свой ник (если вы имеете к нему доступ) можно подтвердить при регистрации, путем постинга специального коммента. Мыло не обязано быть таким же.

    g0_1494089681773, 28 Марта 2018

    Комментарии (200)
  4. Си / Говнокод #27835

    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
    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
    // https://github.com/microsoft/Windows-driver-samples/blob/d3ec258921cfcef7b053b5a2c866330d43dd3f03/filesys/fastfat/dumpsup.c#L35
    
    #define DumpLabel(Label,Width) {                                          \
        size_t i, LastPeriod=0;                                                \
        CHAR _Str[20];                                                        \
        for(i=0;i<2;i++) { _Str[i] = UCHAR_SP;}                               \
        for(i=0;i<strlen(#Label);i++) {if (#Label[i] == '.') LastPeriod = i;} \
        strncpy(&_Str[2],&#Label[LastPeriod],Width);                          \
        for(i=strlen(_Str);i<Width;i++) {_Str[i] = UCHAR_SP;}                 \
        _Str[Width] = '\0';                                                   \
        DbgPrint("%s", _Str);                                                  \
    }
    
    #define DumpField(Field) {                                         \
        if ((FatDumpCurrentColumn + 18 + 9 + 9) > 80) {DumpNewLine();} \
        FatDumpCurrentColumn += 18 + 9 + 9;                            \
        DumpLabel(Field,18);                                           \
        DbgPrint(":%p", Ptr->Field);                                  \
        DbgPrint("         ");                                          \
    }
    
    #define DumpListEntry(Links) {                                     \
        if ((FatDumpCurrentColumn + 18 + 9 + 9) > 80) {DumpNewLine();} \
        FatDumpCurrentColumn += 18 + 9 + 9;                            \
        DumpLabel(Links,18);                                           \
        DbgPrint(":%p", Ptr->Links.Flink);                            \
        DbgPrint(":%p", Ptr->Links.Blink);                            \
    }
    
    #define DumpName(Field,Width) {                                    \
        ULONG i;                                                       \
        CHAR _String[256];                                             \
        if ((FatDumpCurrentColumn + 18 + Width) > 80) {DumpNewLine();} \
        FatDumpCurrentColumn += 18 + Width;                            \
        DumpLabel(Field,18);                                           \
        for(i=0;i<Width;i++) {_String[i] = (CHAR)Ptr->Field[i];}             \
        _String[Width] = '\0';                                         \
        DbgPrint("%s", _String);                                        \
    }
    
    #define TestForNull(Name) {                                 \
        if (Ptr == NULL) {                                      \
            DbgPrint("%s - Cannot dump a NULL pointer\n", Name); \
            return;                                             \
        }                                                       \
    }

    Макроговно от мекомягких для отладки файловой системы FAT

    j123123, 22 Ноября 2021

    Комментарии (199)
  5. Perl / Говнокод #4478

    −118

    1. 1
    return (($publish && $filename ne '--') ? 1 : 0);

    Особенно умиляют скобочки

    krushi, 29 Октября 2010

    Комментарии (199)
  6. Python / Говнокод #26459

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    import nacl
    from nacl.signing import VerifyKey
    from nacl.encoding import HexEncoder
    
    
    v = VerifyKey('c328dd78deb171f38ed6a6d7ff6f55a2f84fa75f1aca4d544beec00c6c882dbe', encoder=HexEncoder)
    v.verify('ed23a4dab9aea504c74df88818e665cacbc98a258214d48b0be5491b7fae47b1ded7bba07be43286c60fa5e570fa4d2be12afc5a307be0703a9303402873a60761646d696e4067636f64652e7370616365', encoder=HexEncoder)
    # b'[email protected]'

    gost, 29 Февраля 2020

    Комментарии (198)
  7. Си / Говнокод #26027

    +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
    #include <stdio.h>
    #include <inttypes.h>
    #include <string.h>
    
    // endian dependend
    #define PUT3(a,b,c) (((uint64_t)a<<8*0) | ((uint64_t)b<<8*1) | ((uint64_t)c<<8*2))
    
    void testswitch(uint64_t x)
    {
      switch (x) 
      { 
        case PUT3('a','b','c'): printf("abc\n"); 
          break; 
        case PUT3('d','e','f'): printf("def\n"); 
          break; 
        case PUT3('g','h','i'): printf("ghi\n"); 
          break; 
        default: printf("Choice other than abc, def and ghi\n"); 
          break;   
       }
    }
    
    int main() 
    { 
       uint64_t x = 0;
       char a[] = "abc";
       memcpy(&x, a, sizeof(a)-1);
       testswitch(x);
    
       char b[] = "def";
       memcpy(&x, b, sizeof(a)-1);
       testswitch(x);
    
       char c[] = "ghi";
       memcpy(&x, c, sizeof(a)-1);
       testswitch(x);
       return 0; 
    }

    switch для строк!

    Перечитывал несвежие говнокоды, где я выкладывал творчество вконтактоолимпиадников https://govnokod.ru/23170#comment388376

    j123123, 12 Ноября 2019

    Комментарии (198)
  8. Swift / Говнокод #25197

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    scheduler.queue.async { [weak self] in
                guard let weakself = self else {
                    return
                }
                
                let locations = weakself.interactor

    kyzmitch, 16 Декабря 2018

    Комментарии (198)
  9. Java / Говнокод #23761

    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
    import java.util.Scanner;
    public class MasInd {
        public static void main (String[] args) {
            Scanner sc = new Scanner(System.in);
            System.out.println("Введите массу тела в килограммах");
            double m = sc.nextDouble();
            System.out.println("Введите рост в метрах");
            double r = sc.nextDouble();
            double i = m/(r*r);
            System.out.println("Индекс массы тела = " + i);
            if (i>=18.5 & i<25) {
                System.out.println("Норма");
            }
            if (i>=25 & i<30) {
                System.out.println("Предожирение");
            }
            if (i>=30) {
                System.out.println("Ожирение");
            }
            if (i<18.5) {
                System.out.println("Дефицит массы тела");
            }
        }
    }

    Определитель индекса массы тела.
    У меня, кстати, индекс - 22.47 (норма).

    SewerSurfer, 13 Февраля 2018

    Комментарии (198)
  10. Python / Говнокод #18267

    −267

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    import execjs
    
    js = '{"1": "2", "3": [4,5]}'
    
    default = execjs.get()
    print default.eval(js)

    Раз уже астрологи объявили неделю ебанутого парсенья json.

    3_14dar, 02 Июня 2015

    Комментарии (198)
  11. Куча / Говнокод #16162

    +89

    1. 1
    (1 until n) flatMap (i => (1 until i) filter (j => isPrime(i+j)) map (j => (i, j)))

    Скала говна.

    LispGovno, 13 Июня 2014

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