Блог пользователя slycelote

Автор slycelote, история, 9 лет назад, По-английски

I'm sure most of you know that all mainstream C++ compilers support inline assembly language. But did you know that you can actually embed Python in a similar way?

Here, for instance, I implemented gcd function in Python simply because it's easier and shorter. The rest of the code is in C++: 17084249. (By the way, kudos to Codeforces for correct highlighting of both Python and C++ parts!)

I'm not sure if it can be useful at all, but I thought that it's fun to share. Keep in mind it doesn't work in all compilers though!

  • Проголосовать: нравится
  • +530
  • Проголосовать: не нравится

»
9 лет назад, # |
  Проголосовать: нравится -59 Проголосовать: не нравится

Lol very nice, only figured it out when tried pasting code in and saw the large amount of whitespace. Goes to show how little I know about c++ that I actually thought this was possible.

»
9 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Which compiler do you use?

»
9 лет назад, # |
  Проголосовать: нравится +141 Проголосовать: не нравится

There are many blogs to teach a topic or a technique. And none of them is close to this one in terms of usefulness. Sir, you amazed me.

»
9 лет назад, # |
  Проголосовать: нравится +13 Проголосовать: не нравится

This is amazing, but how does c++ interpretate python objects?

What happens if you try to return python list or dictionary?

Can't check it on my own cause I don't have monitor atm :(

»
9 лет назад, # |
Rev. 2   Проголосовать: нравится +69 Проголосовать: не нравится

Cool post! BTW, this code with slight changes works in another compiler. 17088203

»
9 лет назад, # |
  Проголосовать: нравится -10 Проголосовать: не нравится

+1, Interesting. ;)

»
9 лет назад, # |
  Проголосовать: нравится -54 Проголосовать: не нравится

I wouldn't say that it's easier or shorter when we consider the template around the function itself, but I can see it having great application elsewhere — for example in bignum problems with not too tight time limits.

»
9 лет назад, # |
  Проголосовать: нравится -102 Проголосовать: не нравится

slycelote is trolling us. Just open his code in submissions list and scroll to the right)))

»
9 лет назад, # |
  Проголосовать: нравится +39 Проголосовать: не нравится

2 april mode on: It's possible

#include <iostream>
#include <string>
#define BOOST_PYTHON_STATIC_LIB
#pragma comment (lib, "python27.lib")
#include <boost/python.hpp>

using namespace std;
using namespace boost::python;

int main()
{
    Py_Initialize();
    try {
        object main_ns = import("__main__").attr("__dict__");
        cout << extract<char *>(eval("str(2 ** 1000)", main_ns));
    } catch (const error_already_set&) {
        PyErr_Print();
    }
}
»
9 лет назад, # |
  Проголосовать: нравится +35 Проголосовать: не нравится

Best April Fools Ever.

»
9 лет назад, # |
  Проголосовать: нравится +16 Проголосовать: не нравится

Luckily, I view the code on my cell-phone.