Кресты / Говнокод #23359 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
#include <iostream>
#include <stdio.h>
using namespace std;

#define MY_LIFE 3

#define SOUL(MY) (0xFFFF & MY)
#define BODY(MY) (MY>>0x10)

enum emotion {
    neutral,
    upbeat,
    sleepy, tired, pessimistic, betrayed, mad, afraid, down, left_behind
};

const char bormand[] = "x!( \"@\"!, #(&!$ $\\&!$ %('!$ &T&!  'T& $ !, %0&!$ $X&!$ #$&!$ )$& $ ";

const int p_x = 15;
const int p_y = 10;

unsigned int podushka[p_x * p_y];

unsigned int embrace(const char* a, int i) {
    unsigned int x = 0;
    for(int j = 0; j<3; ++j)
        x += (a[i+j]-0x20)<<(j*6);
    return x;
}

void make_love(int x, int y) {
    unsigned int my = podushka[x + p_x*y];
    int my_soul = SOUL(my);
    if (my_soul >= sizeof(bormand) - 3)
        return;
    int my_happiness = embrace(bormand, my_soul);
    int dx = 0;
    int dy = 0;
    switch(my_happiness & 0xFF) {
        case upbeat:
            podushka[x + y*p_x] = my_soul + MY_LIFE + ((my_happiness & 0xFFFF00)<<8);
            break;
        case sleepy:
            dx = -1; goto sleep;
        case tired:
            dx = -1; dy = -1; goto sleep;
        case left_behind:
            dx = -1; dy = 1; goto sleep;
        case mad:
            dx = 1; goto sleep;
        case betrayed:
            dx = 1; dy = -1; goto sleep;
        case afraid:
            dx = 1; dy = 1; goto sleep;
        case pessimistic:
            dy = -1; goto sleep;
        case down:
            dy = 1; goto sleep;
      sleep:podushka[(x+dx)%p_x + (y+dy)%p_y*p_x] = BODY(my) ? my - 0x10000 : my_soul + MY_LIFE;
            podushka[x + p_x*y] = my_happiness>>8;
            break;
        default:
            return;
    }
}

int main(int argc, const char * argv[]) {
    //cout<<"Bormand: \"" << bormand << "\"\n";
    podushka[8+p_x*9] = 1;
    // Test
    //print2();
    for (int t = 0; t<20; ++t) {
        for (int i = 0; i<p_x*p_y; ++i)
            make_love(i%p_x, i/p_x);
        //cout << "step: "<<t<<endl;
        //print2();
    }
    for (int j = 0; j<p_y; ++j) {
        for (int i = 0; i<p_x; ++i) {
            auto c = podushka[i+p_x*j];
            putchar((c>0x20 && c <0x7e)?(char)c:' ');
        }
        cout<<endl;
    }
    return 0;
}

https://ideone.com/NSbHSX
bormand
my love

Запостил: PodushkaBormanda PodushkaBormanda, (Updated )

Комментарии (11) RSS

  • > // Test
    > //print2();
    Как-то раз я тоже забыл выпилить дебаги, да так удачно, что коллеги по git blame вычислили, что я недавно смотрел коносубу T___~
    Ответить
  • <?php
    define('MY_LIFE', 3);
    
    function SOUL($MY) {return 0xFFFF & $MY;}
    function BODY($MY) {return $MY>>0x10;}
    
    class emotion {
        const neutral  = 0; const upbeat = 1; const sleepy = 2; const tired = 3; const pessimistic = 4; 
        const betrayed = 5; const mad    = 6; const afraid = 7; const down  = 8; const left_behind = 9;
    };
    
    define('bormand', 'x!( "@"!, #(&!$ $\&!$ %(\'!$ &T&!  \'T& $ !, %0&!$ $X&!$ #$&!$ )$& $ ');
    
    define('p_x', 15);
    define('p_y', 10);
    
    $podushka = array_fill(0, p_x*p_y, 0);
    
    function embrace($a, $i) {
        $x = 0;
        for($j = 0; $j<3; ++$j)
            $x += (ord($a[$i+$j])-0x20)<<($j*6);
        return $x;
    }
    
    function make_love($x, $y) {
        global $podushka;
        $my = $podushka[$x + p_x*$y];
        $my_soul = SOUL($my);
        if ($my_soul >= strlen(bormand) - 3)
            return;
        $my_happiness = embrace(bormand, $my_soul);
        $dx = 0;
        $dy = 0;
        switch($my_happiness & 0xFF) {
            case emotion::upbeat:
                $podushka[$x + $y*p_x] = $my_soul + MY_LIFE + (($my_happiness & 0xFFFF00)<<8);
                break;
            case emotion::sleepy:
                $dx = -1; goto sleep;
            case emotion::tired:
                $dx = -1; $dy = -1; goto sleep;
            case emotion::left_behind:
                $dx = -1; $dy = 1; goto sleep;
            case emotion::mad:
                $dx = 1; goto sleep;
            case emotion::betrayed:
                $dx = 1; $dy = -1; goto sleep;
            case emotion::afraid:
                $dx = 1; $dy = 1; goto sleep;
            case emotion::pessimistic:
                $dy = -1; goto sleep;
            case emotion::down:
                $dy = 1; goto sleep;
                break;
            default:
                return;
            sleep:
                $podushka[($x+$dx)%p_x + ($y+$dy)%p_y*p_x] = BODY($my) ? $my - 0x10000 : $my_soul + MY_LIFE;
                $podushka[$x + p_x*$y] = $my_happiness>>8;
        }
    }
    
    $podushka[8+p_x*9] = 1;
    for ($t = 0; $t<20; ++$t) {
        for ($i = 0; $i<p_x*p_y; ++$i) {
            make_love($i%p_x, floor($i/p_x));
        }
    }
    for ($j = 0; $j<p_y; ++$j) {
        for ($i = 0; $i<p_x; ++$i) {
            $c = $podushka[$i+p_x*$j];
            echo(($c>0x20 && $c<0x7e)?chr($c):' ');
        }
        echo PHP_EOL;
    }
    
    return 0;


    https://ideone.com/04SKZv
    Ответить

Добавить комментарий

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8