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

    −63

    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
    $<
      sqrt = $\ x, eps:
        $<
          square = $\ x: x * x,
          mean = $\ x, y: 0.5 * (x + y)
          :
          $<
            good_enough = $\ y: abs(square(y) - x) < eps
            :
            $<
              myiter = $@ self, l, r:
                          mean(l, r) 
                          if good_enough(mean(l, r))
                          else (self(self, mean(l, r), r)
                                if square(mean(l, r)) < x
                                else self(self, l, mean(l, r))
                               )
                       @$
              :
              myiter(0, max(x, 1))
            >$
          >$
        >$
      :
      ${
        sys.stdout.write('test\n')
        $>>
        sys.stdout.write(str(sqrt(pycan.load('mymodule.py')(float(raw_input('vvedite chislo: '))), 0.000001)) + '\n')
      }$
    >$

    Раз уж зашла речь о препроцессорах, откопал свое старое говно. Не помню точно, что там происходит, но если в общих чертах, то после серии replace'ов этот код превращается в вызов одной большой лямбды на питоне.

    Запостил: g0cTb, 21 Мая 2016

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

    • показать все, что скрытоТащемто интерпритатор например:
      def interpret(s):
        return eval(s.replace('$<', '(lambda ')
                     .replace('>$', ')()')
                     .replace('$@', '(lambda f: (lambda *a, **b: f(f, *a, **b)))(lambda ')
                     .replace('@$', ')')
                     .replace('$\\', ' lambda ')
                     .replace('λ', ' lambda ')
                     .replace('${', '(lambda _ = ')
                     .replace('}$', ')()')
                     .replace('$>>', ' : ')
                     .replace('$import', '__import__')
                     .replace('$eval', ' pycan.interpret '),
                    {'sys': __import__('sys'), 'pycan': __import__('pycan')},
                    {})
      Ответить

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