Skip to content

Instantly share code, notes, and snippets.

@avdotion
Created July 17, 2018 11:17
Show Gist options
  • Save avdotion/83e7a4b0fc403324bd51a3ce62c11fe7 to your computer and use it in GitHub Desktop.
Save avdotion/83e7a4b0fc403324bd51a3ce62c11fe7 to your computer and use it in GitHub Desktop.
Reading Coefs in Polynom (str to dict)
class Polynom:
def __init__(self, s):
self.coefs = self.reborn(s)
def reborn(self, source):
result = list()
coefs = dict()
source = source.split('+')
for item in source:
buffer = []
for char in item:
if char == '-':
if len(buffer):
result.append(buffer)
buffer = ['-']
else:
buffer.append(char)
if len(buffer):
result.append(buffer)
for item in result:
wasX = False
buffer = []
isNowBase = True
isNowPower = False
base = 0
power = 0
for char in item:
if char == 'x':
wasX = True
elif char == '^':
isNowPower = True
isNowBase = False
if len(buffer):
base = int(''.join(buffer))
buffer = list()
elif isNowBase:
if char.isdigit() or char == '-':
buffer.append(char)
elif isNowPower:
if char.isdigit():
buffer.append(char)
if len(buffer) and isNowPower:
power += int(''.join(buffer))
elif len(buffer) and isNowBase:
base = int(''.join(buffer))
if wasX:
if power == 0:
power = 1
else:
power = 0
coefs[power] = base
return coefs
def __str__(self):
return str(self.coefs)
a = Polynom('123x^12+456x^13+789')
print(a)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment