Lisp e Bhaskara

Uma das principais vantagens de Lisp em relação às outras linguagens de programação é a ótima relação funcionalidade vs. número de linhas.

Em menos de 35 linhas eu tenho um aplicativo simples capaz de resolver bhaskara e imprimir os resultados de maneira legível.

(defun delta (a b c)
  "Calculates the delta from a quadratic equation."
  (- (* b b) (* a c 4)))

(defun find-x (a b c)
  "Calculates x' and x\" from a quadratic equation."
  (let ((delta (delta a b c)))
    (list
      (/ (+ (- b) (sqrt delta)) (* 2 a))
      (/ (- (- b) (sqrt delta)) (* 2 a)))))

(defun find-vertix (a b c)
  "Calculates the maximum (or minimum) value y can reach in a quadratic equation."
  (let ((delta (delta a b c)))
    (list
      (/ (- b) (* 2 a))
      (/ (- delta) (* 4 a)))))

(defun bhaskara (a b c)
  "Calculates a quadratic equation"
  (let ((delta (delta a b c))
	(xs (find-x a b c))
	(vertix (find-vertix a b c)))
    (list
      :delta delta
      :x1 (first xs)
      :x2 (second xs)
      :Vx (first vertix)
      :Vy (second vertix))))

(defun say-results (a b c)
  (format t "~{~a:~10t~a~%~}~%" (bhaskara a b c)))

E os resultados saem como:

[1]> (say-results 1 -7 6)
DELTA:    25
X1:       6
X2:       1
VX:       7/2
VY:       -25/4

NIL

Edit: Quem gostou do programa, dê uma olhada na segunda parte.

Publicidade

Uma resposta para “Lisp e Bhaskara

  1. Pingback: Lisp e Bhaskara II « Aletéia

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

%d blogueiros gostam disto: