1. Python / Говнокод #24658

    −4

    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
    stack = []
    
    def stdout(x):
        if x == "puts":
            print(stack.pop())
        else:
            raise Exception("иди нахуй")
    
    def stdin(x):
        global stack
        if x == "gets":
            stack.append(input())
        else:
            raise Exception("иди нахуй")
    
    math = {
        "add": lambda: stack.append(float(stack.pop()) + float(stack.pop())),
        "sub": lambda: stack.append((-float(stack.pop())) + float(stack.pop())),
        "mul": lambda: stack.append(float(stack.pop()) * float(stack.pop())),
        "div": lambda: stack.append(1 / float(stack.pop()) * float(stack.pop())),
    }
    
    def stack_commands(x):
        global stack
        if x == "swap":
            stack[-1], stack[-2] = stack[-2:]
        elif x == "drop":
            stack.pop()
        elif x == "dup":
            stack.append(stack[-1])
        else:
            raise Exception("иди нахуй")
    
    string = {
        "concat": lambda: stack.append(str(stack.pop()) + str(stack.pop()))
    }
    
    commands = {
        "comment": lambda x: x,
        "push": lambda x: stack.append(x),
        "stdout": stdout,
        "stdin": stdin,
        "math": lambda x: print(math[x]()),
        "stack": stack_commands,
        "string": lambda x: string[x]()
    }
    
    def do(x):
        if '@' not in x:
            raise Exception(x + " is not email.")
        a, b = x.split('@')
        b = b.split('.')[0]
        commands[b](a)
    
    def eval(s):
        for i in s.lower().split():
            do(i)
    
    eval("""
    [email protected]
    
    [email protected] [email protected]
    [email protected]
    [email protected] [email protected]
    [email protected]
    [email protected]
    [email protected]
    [email protected]
    [email protected] [email protected] [email protected]
    """)

    Запостил: 666_N33D135, 25 Августа 2018

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

    • Будь добр.
      Ответить
      • Из хуз комментарий не подхватился. Попробуем ещё раз.

        <?php
        $stack = Array();
        
        function stdout($x) {
            global $stack;
            if ($x == "puts"):
                print(array_pop($stack));
            else:
                die("иди нахуй");
            endif;
        }
        
        function stdin($x) {
            global $stack;
            if ($x == "gets"):
                array_push($stack, fgets(STDIN));
            else:
                die("иди нахуй");
            endif;
        }
        
        $math = Array(
            "add" => function()use(&$stack){ array_push($stack, floatval(array_pop($stack)) + floatval(array_pop($stack))); },
            "sub" => function()use(&$stack){ array_push($stack, (-floatval(array_pop($stack))) + floatval(array_pop($stack))); },
            "mul" => function()use(&$stack){ array_push($stack, floatval(array_pop($stack)) * floatval(array_pop($stack))); },
            "div" => function()use(&$stack){ array_push($stack, 1 / floatval(array_pop($stack)) * floatval(array_pop($stack))); }
        );
        
        function stack_commands($x) {
            global $stack;
            if ($x == "swap"):
                $last = count($stack) - 1;
                list($stack[$last], $stack[$last-1]) = array_slice($stack, $last-1);
            elseif ($x == "drop"):
                array_pop($stack);
            elseif ($x == "dup"):
                array_push($stack, end($stack));
            else:
                die("иди нахуй");
            endif;
        }
        
        $string = Array(
            "concat" => function()use(&$stack){ array_push($stack, strval(array_pop($stack)) . strval(array_pop($stack))); }
        );
        
        $commands = Array(
            "comment" => function($x){ return $x; },
            "push" => function($x)use(&$stack){ array_push($stack, $x); },
            "stdout" => function($x){ stdout($x); },
            "stdin" => function($x){ stdin($x); },
            "math" => function($x)use($math){ print($math[$x]()); },
            "stack" => function($x){ stack_commands($x); },
            "string" => function($x)use($string){ $string[$x](); }
        );
        Ответить
        • function _do($x) {
              global $commands;
              if (strpos($x, '@') === false):
                  die($x . " is not email.");
              endif;
              list($a, $b) = explode('@', $x);
              list($b,) = explode('.', $b);
              $commands[$b]($a);
          }
          
          function _eval($s) {
              foreach(preg_split('#[\s]+#', strtolower($s)) as $i):
                  _do($i);
              endforeach;
          }
          
          _eval(<<<END
          [email protected]
          
          [email protected] [email protected]
          [email protected]
          [email protected] [email protected]
          [email protected]
          [email protected]
          [email protected]
          [email protected]
          [email protected] [email protected] [email protected]
          END
          );


          P.S. Достали csrf verification error и SMTP Error: Could not connect to SMTP host.
          Ответить
          • Силою злых чар написанное здесь скрыто от глаз пользователей bormand@stock'а.
            Ответить
          • > csrf verification error
            Это поди клоудфларовский кеш?
            Ответить
          • > SMTP Error
            Блин, неужели в этом вашем "PHP" так сложно скинуть задачку по отправке письма какому-нибудь фоновому воркеру чтобы не делать это посреди запроса от юзера?
            Ответить
            • Я нечто подобное, но не связанное с отправкой электронного письма, решал так: выполнял через "file_get_contents" HTTP-запрос к другому скрипту в той же директории с определёнными POST-параметрами. В основном скрипте устанавливал тайм-аут запроса в одну секунду, в "фоновом" устанавливал лимит времени выполнения в минуту. Всё работает охуенно до сих пор. Поэтому я за "PHP".
              Ответить
            • Письма будут отправляться не риалтайм, это неприемлемо
              Ответить
              • Для риалтайма больше подойдут какие-нибудь push уведомления... А письма, имхо, лучше отправлять пореже, причём смёржив все накопившиеся комменты в одно письмо.
                Ответить
            • > так сложно скинуть задачку по отправке письма какому-нибудь фоновому воркеру

              Фоновый воркер может не завершиться за 30 секунд, значит, это невозможно.

              Согласно моей теории, PHP так популярен как раз потому, что прощает очень много ошибок и тупых решений, ведь всё начнётся с чистого листа на следующем запросе.

              Однако из-за этого похапешники не могут нормально шарить стейт и абьюзят пользовательские запросы для всякой херни вроде отправок емейлов, ведь так не нужно настраивать крон или настраивать очередь задач и поднимать отдельный процесс для обработки эвентов.
              Ответить
              • >>>"PHP <...> прощает очень много ошибок и тупых решений, ведь всё начнётся с чистого листа на следующем запросе"

                Лучше так, чем какая-то обоссанная "Java", созданная невесть, какими херами, будет мне указывать, как программировать и какого типа должна быть переменная.
                Ответить
                • показать все, что скрытоvanished
                  Ответить
                  • Щито
                    Ответить
                    • Видимо он о том, что при продолжительной работе JVM жрёт всю память, которую ей разрешили сожрать, чтобы пореже гонять GC?
                      Ответить
                      • Так это же мега-фича!

                        Сначала собираем нужное, ложим в survior, а потом куча мусора чистится одним махом: простым изменением указателя. То ли дело кресты.
                        gc по young-geny на самом деле очень часто работает. Раз в 0.5 секунды, а то и чаще.
                        Ответить
                  • >>>"Статическая типизация дисциплинирует"

                    Я сам себе не хозяин? Вообще, в любом язычке программирования типизация должна быть опциональной и назначаться где-то в начале кода программы.
                    Ответить
      • показать все, что скрытоvanished
        Ответить

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