1. Куча / Говнокод #28294

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    Добрый день, частички Хаоса! С Вами говорит Прокрастинатор Сальвадор. Прошу выражать благоговения в сжатой форме.
    
    Мне давно уже надоели Ваши склоки и бессмысленное блуждание, вызванное, очевидно, броуновским движением, но дефрагментировать Вас мне лень. 
    Я слишком велик, чтобы вмешиваться в дела частиц, пребывающих в Хаосе.
    
    Лучше я погожу, пока Вы, бессмысленно двигаясь и притираясь друг к другу бочком не примете действительно ужасные формы; вот тогда-то я Вас и уничтожу.

    Если, конечно, мне будет не лень.

    nPOKPACTuHATOP, 25 Июля 2022

    Комментарии (0)
  2. Куча / Говнокод #28293

    −2

    1. 1
    бульк

    MaaKut, 23 Июля 2022

    Комментарии (0)
  3. Си / Говнокод #28292

    +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
    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    #define NUMARGS(type,...)  (sizeof((type[]){__VA_ARGS__})/sizeof(type))
    #define xDEF(type) typedef struct {size_t size; type* arr;  }  xARR(type)
    #define xARR(type) jArr_ ## type
    
    #define A(type, ...) (xARR(type)) {NUMARGS(type,__VA_ARGS__), (type[]){__VA_ARGS__}}
    
    #define _FOR(type, item, Arr) type item=Arr.arr[0]; for(size_t I = 0; I < Arr.size; item=Arr.arr[++I] ) 
    // MSVC
    #define xFOR(type, item, array) do{  _FOR(type, item, array) {
    // GCC, Clang
    #define FOR(item, array)        do{ __auto_type Arr=array; _FOR(__auto_type, item, Arr) {
        
    #define NEXT }} while(0);
    
    #define OfArray(type,arr) (xARR(type)){sizeof(arr)/sizeof(type), arr }
    
    typedef struct {
        char *name;
        int     id;
    } Entry;
    
    
    typedef struct {const char *name;} Str;
    typedef struct {int x[2]; } Pair;
    
    xDEF(Entry);
    xDEF(Str);
    xDEF(Pair);
    xDEF(int);
    
    void printEntry(xARR(Entry) entries)
    {
        xFOR(Entry, e, entries)
            printf("%s %d \n", e.name, e.id);
        NEXT
    }
    
    void printSquares(xARR(int) ints)
    {
        FOR(v, ints)
            printf("%d²=%d\n", v,(int) pow(v,2.));
        NEXT
    }
    
    int main(void)
    {
        xARR(Entry) e = A(Entry, {"one",1}, {"two",2}, {"three",3});
        printEntry(e);
        
        puts("_______________________________________");
        
        // можно передавать в метод непосредственно аргуметом
        printSquares( A(int, 3, 7, 5, 4) );
        puts("_______________________________________");    
        
        int nums[]={4,3,2,1};
        // можно использовать ранее объявленный массив
        printSquares(OfArray(int,nums));
        
        // можно итерироватьcя по ранее объявленному массиву
        FOR(i, OfArray(int, nums))
            printf("%d-",i);
        NEXT
        
        puts("\n_______________________________________");
        
        //вложенные циклы:
        for (int k=1;k<3;k++)
            FOR(i, A(Str, "kakoi", "bagor"))    
                FOR(j, A(int, 1111,2222,3333))
                    printf("%d %s %d\n", k, i.name, j);
                NEXT
            NEXT
        
        puts("_______________________________________");
        
        FOR(v, A(Pair, {1,2}, {11,12}, {20,21}))
            printf("%d,%d\n", v.x[0], v.x[1]);
        NEXT
        puts("_______________________________________");    
        //проблема пустого варарга
        FOR(j, A(int))
            printf("%d\n", j);
        NEXT    
        return(0);
    }

    https://godbolt.org/z/o9Tv9EvGx

    Довёл for~each до ума.

    3.14159265, 23 Июля 2022

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

    −4

    1. 1
    Передайте  Камрану Амини что он Большое Хуйло

    lazy_8, 22 Июля 2022

    Комментарии (1)
  5. Куча / Говнокод #28290

    −2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    Здравствуйте, друзьйа!
    Вчера вечером я познакомился с двумя маленькими лолли. Я подстерег их в кустах, когда они возвращались из школы.
    Под предлогом позаниматься математикой, мы пришли ко мне в логово, 
    где за пару учебных ништяков и подаренный блокнот мне было позволено обнюхать трусики.
    
    Большей награды мне и не нужно!..

    Pedobear, 21 Июля 2022

    Комментарии (0)
  6. Си / Говнокод #28289

    −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
    #define BITS 8
    
    typedef union
    {
        int v;
        struct 
        {
            #define FIELD(x,_) int b##x:1;        
            EVAL(REPEAT(BITS, FIELD, ~))
            #undef FIELD
        };
    } Num;
    
    Num shl(Num n, int carry)
    {
        #define SHIFTL(x,_) CAT(n.b, CAT(x = n.b, CAT(DEC_,x)));    
        EVAL(RREPEAT(BITS, SHIFTL, ~))
        #undef SHIFTL
        n.b0 = carry;
    }
    
    Num shr(Num n, int carry)
    {
        #define SHIFTR(x,_) CAT(n.b, CAT(CAT(DEC_,x) = n.b, x));
        EVAL(REPEAT(BITS, SHIFTR, ~))
        #undef SHIFTR
        CAT(n.b, CAT(DEC_,BITS)) = carry;
    }
    
    
    int main()
    {
        for (int i=0; i<33; ++i){
            Num n   = {i};
            Num n1 = shl(n,0);
            Num n2 = shr(n,0);        
            printf("%d %d %d\n",n ,n1 , n2);
        }
    }

    https://godbolt.org/z/48h6EWacY

    Двунаправленный сдвиговый регистр на препроцессоре.
    Сделан без использования арифметических действий.

    3.14159265, 21 Июля 2022

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

    +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
    local victim_say={"Конец мне приходит...", "Помираю я... Помоги...", "Браток, помоги!",
    "Аптечку! Дай аптечку!","Врача, батенька.", "Под пулю я попал.", "Я ранен!","Слышь, браток, помоги!","Хана мне приходит","Сегодня не мой день...","Заболел я."}
    local vs=#victim_say
    
    
    local actor_say={"Тебе плохо? Может, врача вызвать?", "Могу дать номер знакомого врача.", "Мда, скорая не успеет.",
    "Не беспокойся, все там будем!","Корми червей, падла.","Умри!","Дойдёшь до больницы?","Извини, я не доктор.","Выкручивайся сам","Мне некогда"}
    local ds=#actor_say	
    
    
    local victim_ans={"Ну и подонок же ты, Меченый.", "Проваливай!", "Обойдусь сам!", "Помощь от тебя была бы хуже смерти. Проваливай!","Я ещё доберусь до тебя!", "Подонок!", "Моя смерть будет на твоей совести.","Встретимся в аду.","Просто уходи.","Я ещё вернусь...","Это ещё не конец."}
    
    local va=#victim_ans
    
    local victim_tnk={"Спасибо! Ты меня спас!", "Благодарю! Признаться, не ожидал.", "Спасибо, Меченый!", "Спасибо за помощь!","Я ещё живой? Это благодаря тебе!", "Ты мой спаситель!", "Моя смерть была бы на твоей совести","Я твой должник!","Ты ждешь благодарности?","На твоем месте я бы тебя пристрелил","Мерси за помощь!"}
    
    local vt=#victim_tnk
    
    	
    function init_intro_dialogb(dlg)
    	local k,v = 0,0
    	local phr = dlg:AddPhrase("","0","",-10000)
    	phr = dlg:AddPhrase("","1","0",-10000)
    	
    	local id=math.random(vs)
    	local ph=dlg:AddPhrase(victim_say[id],"333","1",-10000)
    	local ps = ph:GetPhraseScript()
    	ps:AddPrecondition("dialogs.is_wounded")
    	ph = dlg:AddPhrase("(Лечение)","444","333",-10000)
    	ps = ph:GetPhraseScript()
    	ps:AddAction("doctor.heal")
    	
    	local id=math.random(vt)
    	ph = dlg:AddPhrase(victim_tnk[id],"555","444",-10000)
    	--ps = ph:GetPhraseScript()
    --	ps:AddAction("dialogs.break_dialog")
    
    	
    	
    	
    	local id=math.random(ds)
    	local ph=dlg:AddPhrase(actor_say[id],"666","333",-10000)
    	local id=math.random(va)
    	local ph=dlg:AddPhrase(victim_ans[id],"777","666",-10000)
    
    	
    	
    
    
    	
    	for k,v in pairs(phrase.intro) do
    		phr = dlg:AddPhrase(v.name, v.phr_id, "1", -10000)
    		if phr then
    		
    			
    		
    			local phrase_script = phr:GetPhraseScript()
    			phrase_script:AddPrecondition("dialog_manager.precondition_intro")
    			--' Этот экшн запоминает последнюю фразу, чтобы персонаж говорил одно и то же.
    			--' Для фразы просьбы о помощи его добавлять не надо.
    			if v.wounded == "false" then
    				phrase_script:AddAction("dialog_manager.phrase_action_intro")
    			end
    		end
    	end
    	
    end

    Лечения раненых в Сталкере ТЧН. В диалоге с ранен(н)ым показывается как пункт "вылечить" так и рандомное издевательство, вроде "могу дать номер своего врача"

    CBuHOKYP, 21 Июля 2022

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

    −2

    1. 1
    Сегодня хороший день.

    Если Вас не додушит kopoHaBupyc, то убьют санкции.

    CMEPTb, 21 Июля 2022

    Комментарии (0)
  9. Куча / Говнокод #28286

    −5

    1. 1
    Уи-и-и!

    Хрук-хрук-хрук

    CBuHOKYP, 21 Июля 2022

    Комментарии (2)
  10. Куча / Говнокод #28285

    +1

    1. 1
    Вчера в полдень страшно завыла сирена и напугала меня. У вас тоже воют, или только у нас?

    Не к добру это. Ох, не к добру.

    KPblCA, 20 Июля 2022

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