Torna indietro   Hardware Upgrade Forum > Software > Programmazione

WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà
Un mondo affollato e vivo, personaggi destinati a sparire a fine test e nessuno a inseguire l'oggetto giusto. Beta e stress test di World of Warcraft: Forever hanno fatto emergere un roleplay spontaneo, tra danze a Goldshire e code ordinate ai PNG
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA
In tre giorni a Las Vegas Oracle ha presentato agenti che eseguono il lavoro, l'alleanza con OpenAI e un cloud aperto agli acceleratori di tutti. Ma i clienti europei chiedono garanzie prima ancora delle funzionalità
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
Fino a 740 km WLTP con la batteria da 97,2 kWh, sospensioni che leggono la strada con una telecamera e un abitacolo da salotto parigino. La nuova DS N°7 raccoglie l'eredità della DS 7 e la porta, per la prima volta, nel mondo 100% elettrico. Ecco come è fatta, cosa offre e quanto costa.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 16-07-2006, 18:08   #1
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
[PHP] come si fa un parser?! + problema matematico

Allora sto realizzando un progetto per i cavoli miei dove voglio tracciare una funzione matematica passata.

Adesso però escono alcuni problemi:
1) come realizzo un parser fatto come dio comanda?

attualmente ho spezzato la stringa passata mettendo ogni carattere in un array e poi controllo tutte le possibili combinazioni che posso avere. Ma questa soluzione mi fa cacare e son sicuro che non è da fare. (attualmente mi basterebbe anche disegnare una funzione che è solo somma o sottrazioni di monomi)

2) come scompongo un polinomio di grado n? Ruffini? ma se questo non funziona? perchè quando dovrò implementare le frazioni mi trovo un pò di problemi a capire dove la funzione non può essere assegnata.

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 16-07-2006, 19:58   #2
The3DProgrammer
Senior Member
 
Iscritto dal: May 2000
Messaggi: 1459
Quote:
Originariamente inviato da Fenomeno85
Allora sto realizzando un progetto per i cavoli miei dove voglio tracciare una funzione matematica passata.

Adesso però escono alcuni problemi:
1) come realizzo un parser fatto come dio comanda?

attualmente ho spezzato la stringa passata mettendo ogni carattere in un array e poi controllo tutte le possibili combinazioni che posso avere. Ma questa soluzione mi fa cacare e son sicuro che non è da fare. (attualmente mi basterebbe anche disegnare una funzione che è solo somma o sottrazioni di monomi)

2) come scompongo un polinomio di grado n? Ruffini? ma se questo non funziona? perchè quando dovrò implementare le frazioni mi trovo un pò di problemi a capire dove la funzione non può essere assegnata.

~§~ Sempre E Solo Lei ~§~

ciao.

Allora, se vuoi realizzare un parser come dio comanda devi definire una grammatica che descriva la sintassi delle tue funzioni. Tale grammatica dovrà poi essere analizzata per effettuare un riconoscimento dei simboli che guidino la procedura di parsing (analisi FIRST/FOLLOWS). Una volta fatto questo dovrai scrivere un parser ricorsivo, in grado di riconoscere sintatticamente le espressioni (ovviamente questo presuppone che dovrai realizzare un modulo di analisi semantica, in grado ad es di riconoscere espressioni in input del tipo f(x)/0). Tutto questo nn è tanto semplice cmq, e presuppone la conoscenza di alcune nozioni di teoria dei linguaggi (grammatiche, espressioni regolari, etc). Per il secondo problema nn puoi usare ruffini perkè presuppone che tu conosca almeno un valore per cui il polinomio si annulla, ma è proprio quello che stai cercando per sapere quali valori non appartengono al dominio (ovviamente potresti fare delle valutazioni di prova del polinomio per 1, 2 etc ma il problema rimane cmq)...fammici ragionare un po vediamo se riesco ad aiutarti
The3DProgrammer è offline   Rispondi citando il messaggio o parte di esso
Old 16-07-2006, 20:14   #3
nightwolf
Member
 
Iscritto dal: Dec 2001
Messaggi: 264
Vedo che cominci bene l'estate

Per scomporre dovresti trovare le radici a1,a2...,an del polinomio in un certo intervallo controllando che la molteplicità di quelle rintracciabili nell'intervallo scelto coincida con il grado. Trovate tutte fai "coeff di grado massimo*(x-a1)*(x-a2)*..."

C'è il teorema di sturm che dovresti leggerti:

http://www.matematica.it/impedovo/articoli/L'algoritmo%20di%20Sturm.pdf

ciao ciao
nightwolf è offline   Rispondi citando il messaggio o parte di esso
Old 16-07-2006, 20:25   #4
The3DProgrammer
Senior Member
 
Iscritto dal: May 2000
Messaggi: 1459
Quote:
Originariamente inviato da nightwolf
Vedo che cominci bene l'estate

Per scomporre dovresti trovare le radici a1,a2...,an del polinomio in un certo intervallo controllando che la molteplicità di quelle rintracciabili nell'intervallo scelto coincida con il grado. Trovate tutte fai "coeff di grado massimo*(x-a1)*(x-a2)*..."

C'è il teorema di sturm che dovresti leggerti:

http://www.matematica.it/impedovo/articoli/L'algoritmo%20di%20Sturm.pdf

ciao ciao
cakkio è vero

c'era quel metodo per il calcolo degli zeri che, applicando ruffini a cascata, consentiva di "setacciare" l'asse reale alla ricerca delle radici (ah, analisi 1....).

L'algoritmo di sturm è veramente molto interessante, nn lo conoscevo, grazie wolf
The3DProgrammer è offline   Rispondi citando il messaggio o parte di esso
Old 16-07-2006, 20:27   #5
The3DProgrammer
Senior Member
 
Iscritto dal: May 2000
Messaggi: 1459
ora che ci penso xò potresti avere anche dei problemi di rappresentazione delle radici reali....
The3DProgrammer è offline   Rispondi citando il messaggio o parte di esso
Old 16-07-2006, 20:33   #6
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
Quote:
Originariamente inviato da nightwolf
Vedo che cominci bene l'estate

Per scomporre dovresti trovare le radici a1,a2...,an del polinomio in un certo intervallo controllando che la molteplicità di quelle rintracciabili nell'intervallo scelto coincida con il grado. Trovate tutte fai "coeff di grado massimo*(x-a1)*(x-a2)*..."

C'è il teorema di sturm che dovresti leggerti:

http://www.matematica.it/impedovo/articoli/L'algoritmo%20di%20Sturm.pdf

ciao ciao
si tranquilla la inizio ... alla fine nel tempo che ho libero se non esco con gli amici o leggo i vari libri di patricia cornwell o mi metto a programmare un pò

intanto leggo questo teorema grazie

ps: ma economia te sai dove la butta fuori che non la trovo?

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2006, 10:14   #7
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
un up per come si fa un parser

intanto sto studiando come buttare il teorema di sturn ma da quanto sto anche vedendo mi da una poca precisione ... e per esempio scartare un intervallo di 1 mi sembra troppo.

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2006, 11:42   #8
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Quote:
Originariamente inviato da Fenomeno85
un up per come si fa un parser

intanto sto studiando come buttare il teorema di sturn ma da quanto sto anche vedendo mi da una poca precisione ... e per esempio scartare un intervallo di 1 mi sembra troppo.

~§~ Sempre E Solo Lei ~§~
Ciao
a proposito del parser: non si tratta di un programma difficile (a breve, spero, postero' un parser piuttosto "particolare"), c'e' tanta teoria e puoi trovare la cose gia' fatte in Internet.
Mi chiedevo solo una cosa: ti serve veramente? Magari ti serve per esercizio, ma... non sono esperto di php, ma so che e' interpretato, per cui potresti mettere la funzione che ti serve in un file e poi eseguirla.
Perdonami se magari ho detto una castroneria, ma il vantaggio dei linguaggi interpretati e' appunto la possibilita' di fare certi giochetti....
Nel caso invece voglia implementare un parser da te... beh, ricorda che la grammatica e' gia' ben definita, non ti serve fare questo passaggio.
Ci sono almeno due tecniche piuttosto "pratiche" per passare poi dalla teoria all'implementazione: ti consiglio la discesa ricorsiva.

Per quanto riguarda la scelta degli intervalli, ... non e' un reato chiedere all'utente. Casomai cerca di trappare i suoi errori

High Flying
Sottovento
__________________
In God we trust; all others bring data
sottovento è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2006, 11:53   #9
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
no il problema è che io ho x^2 + 23*x^4 per esempio e devo controllare che quella sia corretta

praticamente io devo avere solo K1*x^n1 + k2*x^n2 + ... + Kn

dove nx>=0 mentre Kx per ogni R.


la scelta degli intervalli la lascio all'utente ... dato che non è un programma e io alla fine butto fuori una immagine png non posso dire sali allarga o altro

comunque sui dati del range ho già fatto tutti i vari controlli

Il problema è che vorrei avere anche divisioni di polinomi e questo è un grosso problema, dato che io devo sapere dove non andare.

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2006, 14:48   #10
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
ma dove sbaglio

[code]
<?php

$string = "+23*x^5";

if (ereg("(\+\d+\*x\^\d+)",$string,$regs)) echo "ok";
else echo "no";


?>
[\code]

accidenti eppure mi sembra giusta non so quante miliardi di prove che ho fatto

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2006, 17:08   #11
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
gente ce l'ho fatta ma ho lasciato stare le espressioni regolari almeno so dove ci sono i problemi e segnalo all'utente l'errore.

http://fenomeno85.altervista.org/hannibal/prova.php

che ve ne pare?

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2006, 17:42   #12
shinya
Senior Member
 
L'Avatar di shinya
 
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
Copio e incollo l'esempio che metti sotto "Esempi di funzioni accettate" e mi dice Formula sbagliata: flag^2+3
shinya è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2006, 18:58   #13
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
grazie mille, sistemato il bug

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà WoW Forever: la beta è stato uno dei mome...
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA Oracle AI World 2026: in Europa prima la sovrani...
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort DS N°7 E-Tense: il SUV premium made in Melfi...
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più Recensione Samsung Galaxy Tab S12 Ultra: non chi...
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura) Hyundai IONIQ 5 N, l'elettrica che finge di esse...
Musk non riesce a fermare la causa: le t...
Grafene al posto del silicio per le cell...
F-Stop, il prequel cancellato di Portal ...
Il razzo spaziale New Glenn di Blue Orig...
La Cina si prepara al primo lancio orbit...
Sale LAN, la Manovra 2027 introduce una ...
11 prezzi imperdibili in Amazon: non sol...
Giù i prezzi di Xiaomi 17T e Xiao...
Una tassa di 5,5 centesimi su ogni gigab...
Vuoi clonare un videogioco con l'IA? Cla...
Furto da 6,3 miliardi di dollari, Binanc...
Gli USA dipendono dai robot stranieri: T...
Volkswagen non ha più soldi per l...
Telescopio spaziale Hubble: la NASA cerc...
Più sottile e potente: le nuove i...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 03:07.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v