Jump to content

Recommended Posts

Posted

Hello. I have a list of several points. I need to get two results.

1º-. Sumatori Xn * Yn+1

2º-. Sumatori Yn * Xn+1

 

Example:

 
(setq lista_puntos '((9.0 10.0)(12.0 11.0)(10.1 11.5)(11.3 13.0)(7.0 13.5)(9.4 12.2)))

1º-. Sumatori Xn * Yn+1

(9.0 x 11.0) + (12.0 x 11.5) + (10.1 x 13.0) + (11.3 x 13.5) + (7.0 x 12.2) = 606.25

 

2º-. Sumatori Yn * Xn+1

(10.0 x 12.0) + (11.0 x 10.1) + (11.5 x 11.3) + (13.0 x 7.0) + (13.5 x 9.4) = 578.95

 

Regards

Posted

There are probably a lot more elegant ways, but maybe:

 

[b][color=BLACK]([/color][/b]defun db_s1 [b][color=FUCHSIA]([/color][/b]l / tot[b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]setq tot 0[b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]> [b][color=MAROON]([/color][/b]length l[b][color=MAROON])[/color][/b] 1[b][color=NAVY])[/color][/b]
     [b][color=NAVY]([/color][/b]setq tot [b][color=MAROON]([/color][/b]+ tot [b][color=GREEN]([/color][/b]* [b][color=BLUE]([/color][/b]car [b][color=RED]([/color][/b]car l[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]cadr [b][color=RED]([/color][/b]cadr l[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
           l [b][color=MAROON]([/color][/b]cdr l[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
 tot[b][color=BLACK])[/color][/b]

[b][color=BLACK]([/color][/b]defun db_s2 [b][color=FUCHSIA]([/color][/b]l / tot[b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]setq tot 0[b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]> [b][color=MAROON]([/color][/b]length l[b][color=MAROON])[/color][/b] 1[b][color=NAVY])[/color][/b]
     [b][color=NAVY]([/color][/b]setq tot [b][color=MAROON]([/color][/b]+ tot [b][color=GREEN]([/color][/b]* [b][color=BLUE]([/color][/b]cadr [b][color=RED]([/color][/b]car l[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]car [b][color=RED]([/color][/b]cadr l[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
           l [b][color=MAROON]([/color][/b]cdr l[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
 tot[b][color=BLACK])[/color][/b]

[b][color=BLACK]([/color][/b]setq lst '[b][color=FUCHSIA]([/color][/b][b][color=NAVY]([/color][/b]9.0 10.0[b][color=NAVY])[/color][/b][b][color=NAVY]([/color][/b]12.0 11.0[b][color=NAVY])[/color][/b][b][color=NAVY]([/color][/b]10.1 11.5[b][color=NAVY])[/color][/b][b][color=NAVY]([/color][/b]11.3 13.0[b][color=NAVY])[/color][/b][b][color=NAVY]([/color][/b]7.0 13.5[b][color=NAVY])[/color][/b][b][color=NAVY]([/color][/b]9.4 12.2[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

[b][color=BLACK]([/color][/b]prin1 [b][color=FUCHSIA]([/color][/b]db_s1 lst[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]
[b][color=BLACK]([/color][/b]terpri[b][color=BLACK])[/color][/b]
[b][color=BLACK]([/color][/b]prin1 [b][color=FUCHSIA]([/color][/b]db_s2 lst[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 

 

-David

Posted
(defun f1 ( l ) (apply '+ (mapcar '(lambda ( a b ) (* (car a) (cadr b))) l (cdr l))))
(defun f2 ( l ) (apply '+ (mapcar '(lambda ( a b ) (* (cadr a) (car b))) l (cdr l))))

_$ (setq l '((9.0 10.0) (12.0 11.0) (10.1 11.5) (11.3 13.0) (7.0 13.5) (9.4 12.2)))
((9.0 10.0) (12.0 11.0) (10.1 11.5) (11.3 13.0) (7.0 13.5) (9.4 12.2))
_$ (f1 l)
606.25
_$ (f2 l)
578.95

Posted

The two solutions are very good. It's great. Thank you very much.

Regards.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...