Многочленный ввод Python [дубликат]

Поскольку люди, похоже, обращаются к этому вопросу, когда речь заходит об ошибках компоновщика, я собираюсь добавить это здесь.

Одной из возможных причин ошибок компоновщика с GCC 5.2.0 является то, что новая библиотека libstdc ++ ABI теперь выбран по умолчанию.

Если вы получаете ошибки компоновщика о неопределенных ссылках на символы, которые включают типы в пространстве имен std :: __ cxx11 или теге [abi: cxx11], то это, вероятно, указывает на то, что вы пытаетесь связать файлы объектов, которые были скомпилированы с различными значениями для макроса _GLIBCXX_USE_CXX11_ABI. Это обычно происходит при подключении к сторонней библиотеке, которая была скомпилирована с более старой версией GCC. Если сторонняя библиотека не может быть перестроена с новым ABI, вам нужно будет перекомпилировать свой код со старым ABI.

. Если вы вдруг получите ошибки компоновщика при переключении на GCC после 5.1.0 это было бы замечательно.

2
задан user2658538 20 December 2013 в 13:33
поделиться

3 ответа

вы можете использовать регулярные выражения,

import re

test = '-x^2+3x+2x^3-x'

for m in re.finditer( r'(-{0,1}\d*)x\^{0,1}(-{0,1}\d*)', test ):
    coef, expn = list( map( lambda x: x if x != '' and x != '-' else x + '1' ,
                            m.groups( ) ))
    print ( 'coef:{}, exp:{}'.format( coef, expn ))

вывод:

coef:-1, exp:2
coef:3, exp:1
coef:2, exp:3
coef:-1, exp:1
1
ответ дан behzad.nouri 23 August 2018 в 21:53
поделиться

Похоже, вы реализуете что-то, что уже существует, в python и других математических языках. См. Например:

http://www.gnu.org/software/octave/doc/interpreter/Solvers.html

http : //stat.ethz.ch/R-manual/R-devel/library/base/html/solve.html

0
ответ дан hdante 23 August 2018 в 21:53
поделиться

Ищите «рекурсивный парсер спуска». Это канонический метод анализа строк, в котором задействован некоторый приоритет оператора.

0
ответ дан Massimo Fuccillo 23 August 2018 в 21:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: