Forum » Programiranje » Poenostavljanje algebričnega izraza
Poenostavljanje algebričnega izraza
Arto ::
Lep pozdrav!
Dobil sem neko nalogo, del katere je poenostavljanje enostavnih algebričnih izrazov. Izrazi so zapisani v obliki stringov.
Primer:
2*x+3*y-4*x-y
vrne:
-2*x+2*y
Jaz sem brez idej, kako se zadeve lotiti, čeprav se mi naloga ne zdi pretežka :P
Fino bi bilo, če mi lahko kakšen pristop samo opišete, saj bi kodo rad napisal sam.
Hvala, Arto
Dobil sem neko nalogo, del katere je poenostavljanje enostavnih algebričnih izrazov. Izrazi so zapisani v obliki stringov.
Primer:
2*x+3*y-4*x-y
vrne:
-2*x+2*y
Jaz sem brez idej, kako se zadeve lotiti, čeprav se mi naloga ne zdi pretežka :P
Fino bi bilo, če mi lahko kakšen pristop samo opišete, saj bi kodo rad napisal sam.
Hvala, Arto
- spremenil: Arto ()
salesky ::
Ali so izrazi vedno take oblike, da imaš samo x,y? Drugače pač to lahko narediš tako da:
prebereš prvi znak...če je "-" prebereš še naslednjo črko, če je ta številka preveriš če je naslednja tudi črka ali je že "*". Če je "*" si zapomneš naslednjo spremenljivko, da veš kam spada tista številka ki si si jo prej zapomnil in tako naprej za ostale.
Na koncu veš da imaš recimo v tvojem primeru(pazit moraš tudi če ni številke pred znakom, to pomeni da je 1):
2x
3y
-4x
-y
Tako potem na easy sešteješ ujemajoče številke in kar ostane izpišeš in dodaš potrebno spremenljivko.
Upam da si razumel :)) Mogoče malo nerazumno ampak nekaj je. ;)
prebereš prvi znak...če je "-" prebereš še naslednjo črko, če je ta številka preveriš če je naslednja tudi črka ali je že "*". Če je "*" si zapomneš naslednjo spremenljivko, da veš kam spada tista številka ki si si jo prej zapomnil in tako naprej za ostale.
Na koncu veš da imaš recimo v tvojem primeru(pazit moraš tudi če ni številke pred znakom, to pomeni da je 1):
2x
3y
-4x
-y
Tako potem na easy sešteješ ujemajoče številke in kar ostane izpišeš in dodaš potrebno spremenljivko.
Upam da si razumel :)) Mogoče malo nerazumno ampak nekaj je. ;)
Arto ::
Izrazi lahko vsebujejo kakršnekoli spremenljivke (tudi naprimer 4*z, ali 5*alfa). V bistvu je naloga primerjanje enakovrednosti izrazov. Se pravi, 3*x je ekvivalentno 2*x + x. Razmišljal sem, da bi bilo najenostavneje dva izraza najprej poenostaviti in nato primerjati stringe. Aha, potem nastopi še problem vrstnega reda členov.. no bom za začetek poizkusil samo poenostaviti člene :P
Ima še kdo kakšno idejo kako bi stvar izpeljal z regular expression-i, ker se mi zdi, da bi se jih dalo fino ponucat, samo ne vem kako, ker sem še začetnik v teh vodah in mi še fali programerski način razmišljanja
Ima še kdo kakšno idejo kako bi stvar izpeljal z regular expression-i, ker se mi zdi, da bi se jih dalo fino ponucat, samo ne vem kako, ker sem še začetnik v teh vodah in mi še fali programerski način razmišljanja
Senitel ::
Kako bi pa to peš naredil? Za vsako spremenljivko rabiš vedet kakšen faktor imaš spredej to je pa to. Narediš si en seznam v katerem hraniš spremenljivko in ta faktor, potem pa parsaš izraz. Če najdeš novo spremenljivko dodaš v seznam, če dobiš obstoječo spremenljivko spremeniš faktor. Potem moraš še samo pazit na konstantne člene in faktor 0 in to je to...
Arto ::
Ok, če prav razumem bi lahko nekako takole:
Ustvarim 2d tabelo
Grem prvič čez, zapišem vse spremenljivke v eno vrstico(upam da že obstaja kakšna isAlphaNumerc funkcija v javi), en plac pa še za tiste brez spremenljivke (konstante pač).
Grem drugič čez, zapišem in hkrati lahko tud že kar poračunam faktorje in jih dam v drugo vrstico, pod ustrezne spremenljivke.
Nekako jih zložim po vrstnem redu (mogoče po abecedi), da lahko potem stringa primerjam (string.equals(string2))
A bo nekako tako?
Ustvarim 2d tabelo
Grem prvič čez, zapišem vse spremenljivke v eno vrstico(upam da že obstaja kakšna isAlphaNumerc funkcija v javi), en plac pa še za tiste brez spremenljivke (konstante pač).
Grem drugič čez, zapišem in hkrati lahko tud že kar poračunam faktorje in jih dam v drugo vrstico, pod ustrezne spremenljivke.
Nekako jih zložim po vrstnem redu (mogoče po abecedi), da lahko potem stringa primerjam (string.equals(string2))
A bo nekako tako?
Loki ::
kaj pa, ce bi najprej izraze razbil na najbolj enostavne (sestevanje) in potem zmetal skupaj? vsaj ce bos imel primere tipa 3x=2x+x.
I left my wallet in El Segundo
Senitel ::
Ne rabiš 2D tabele, ne rabiš 2x se sprehajat... Rabiš povezan seznam/dinamičen 1D array. Vsak element ima dva podatka, spremenljivko in faktor. Come on... Kako bi pa to na pri matematiki na papirju naredil?
Arto ::
Ok trenutno sem prišel do tegale (vem da je najbrž zelo neoptimalno, ampak programirati sem začel šele zdaj na faksu):
izraz npr. -2*x+3*x*y-2*y+x-3y*x+x razdeli na tabelo razredov, k vsebujejo cifro in črke:
členi: {[-2,x],[3,xy],[-3,xy],[1,x]}
Sicer se mi malo sanja, kako naprej, ampak bi bil hvaležen, če bi mi kdo malce zbistril sliko
izraz npr. -2*x+3*x*y-2*y+x-3y*x+x razdeli na tabelo razredov, k vsebujejo cifro in črke:
členi: {[-2,x],[3,xy],[-3,xy],[1,x]}
Sicer se mi malo sanja, kako naprej, ampak bi bil hvaležen, če bi mi kdo malce zbistril sliko
Zgodovina sprememb…
- spremenil: Arto ()
WarpedGone ::
Večino dela si že naredu.
Zdej sam še sešteješ koeficiente pri vseh enakih drugih členih v razredih.
Se pravi vse x-e skup, vse xy-e skup. Kar dobiš je rezultat.
Maš lahko v izrazu tut oklepaje?
Zdej sam še sešteješ koeficiente pri vseh enakih drugih členih v razredih.
Se pravi vse x-e skup, vse xy-e skup. Kar dobiš je rezultat.
Maš lahko v izrazu tut oklepaje?
Zbogom in hvala za vse ribe
Arto ::
Ne, oklepajev ni.
Sem končal. Je blo še kar dost dela, čeprav pomoje zato, ker ne znam in je vse ful neoptimalno. Ampak dela, to je važno
Sem končal. Je blo še kar dost dela, čeprav pomoje zato, ker ne znam in je vse ful neoptimalno. Ampak dela, to je važno
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | MatematikaOddelek: Šola | 3405 (2185) | Math Freak |
» | razstaviti izrazOddelek: Šola | 2827 (2447) | Math Freak |
» | Matematika - pomoč (strani: 1 2 3 )Oddelek: Šola | 26748 (23323) | daisy22 |
» | dvojni integral, pomocOddelek: Loža | 1638 (1400) | Ktj |
» | Ena matematicnaOddelek: Šola | 1716 (1550) | rasta |