Anonym Posted July 24, 2006 at 05:12 PM Report #39995 Posted July 24, 2006 at 05:12 PM Boas, Eu estive a pensar como funciona a calculadora do google, e cheguei a isto: se no campo de texto tem "+" então, tudo que está antes do "+" + tudo o que está depois do "+" mas depois pensei, será a maquina do google tão complexa? Já que numa linha, se faz uns 20 cálculos ao mesmo tempo e depois ainda as regras da multiplicação, divisão (etc...) então pergunto o sistema do google funciona + - assim?
Rui Carlos Posted July 24, 2006 at 05:28 PM Report #39998 Posted July 24, 2006 at 05:28 PM está a perguntar como é que o Google faz o parsing de uma expressão numérica? não me parece que seja assim, normalmente usam-se gramática para fazer o parsing deste tipo de coisas (tal como para um compilador fazer o parsing de um programa). depois existem vários algoritmos (alguns um pouco complexo) que resolvem o problema de forma relativamente eficiente. caso queiras investigar um pouco mais sobre o assunto... o que é uma gramática: http://en.wikipedia.org/wiki/Context-free_grammar links para vários tipos de parsers: http://en.wikipedia.org/wiki/Parsing#Examples_of_parsers Rui Carlos Gonçalves
HecKel Posted July 24, 2006 at 08:26 PM Report #40049 Posted July 24, 2006 at 08:26 PM Já vi vários algoritmos na resolução de equações deste tipo e curiosamente vi sempre com base nas gramáticas tal como o Rui Carlos referiu, mas um que me deixou bastante intrigado foi um de operações infixas, cujos operadores aparecem antes dos elementos operandos... Sobre a tua pergunta em concreto..., vou tentar encontrar o programa em PROLOG que fiz numa aula prática que mostra bem como resolver equações destas 😛 Se não me esquecer depois coloco aqui 😛 abraços, HecKel Look Left Blog
Anonym Posted August 1, 2006 at 07:21 PM Author Report #41554 Posted August 1, 2006 at 07:21 PM eheh, tinha uma ideia completamente errada...
HecKel Posted August 1, 2006 at 07:29 PM Report #41556 Posted August 1, 2006 at 07:29 PM Ainda bem que reabres isto 😞 Tinha-me esquecido do que prometi... ? (isto é PROLOG) polinomio(N) :- number(N), !. polinomio(X) :- atom(X), !. polinomio(-P) :- !, polinomio(P). polinomio(P1+P2) :- !, polinomio(P1), polinomio(P2). polinomio(P1-P2) :- !, polinomio(P1), polinomio(P2). polinomio(P1*P2) :- !, polinomio(P1), polinomio(P2). polinomio(P/C) :- !, number(C), polinomio(P). polinomio(P^N) :- !, integer(N), N >= 0, polinomio(P). Apenas verifica se a expressão é um polimónio..., não faz o seu cálculo, mas acho que dá para ter uma ideia de como funciona... abraços, HecKel Look Left Blog
Anonym Posted August 1, 2006 at 10:49 PM Author Report #41603 Posted August 1, 2006 at 10:49 PM áh, entendido.... e isto dá pra emplemenar em linguagens server-side?
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now