Змея / Говнокод #20052 Ссылка на оригинал

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
$<
  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 g0cTb, (Updated )

Комментарии (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')},
                  {})
    Ответить

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

Помни, guest, за тобой могут следить!

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


    8