Page 1 of 1

factor-group function

Posted: Sun Nov 25, 2018 9:45 am
To solve a project euler problem i have written this factor-group function:
Code: Select all
`(define (factor-group x)  (letn (fattori (factor x)         unici (unique fattori))    (transpose (list unici (count unici fattori)))))(factor-group 2000);-> ((2 4) (5 3))(factor-group 232792560);-> ((2 4) (3 2) (5 1) (7 1) (11 1) (13 1) (17 1) (19 1))`

Do you known a better/faster way?
Thanks.

cameyo

Re: factor-group function

Posted: Thu Nov 29, 2018 2:06 am
Nice.

The factorization is of course the "slow" part, whereas the result juggling is almost irrelevant time-wise. I wouldn't try to improve on your implementation, but as a hind-sight, I probably would have used
Code: Select all
`(map list unici (count unici fattori))`
Code: Select all
`(transpose (list unici (count unici fattori)))`
just because it intuitively would be less structure re-arrangement.
And I also wouldn't have known to use Italian named variables :)

Re: factor-group function

Posted: Thu Nov 29, 2018 6:41 am
Thanks Ralph.
I am really enjoying newLisp :-)
cameyo

Re: factor-group function

Posted: Thu Jan 31, 2019 4:47 pm
I forgot to add the inverse function:

Code: Select all
`(setq fg (factor-group 220));-> ((2 2) (5 1) (11 1))`

Code: Select all
`(setq num-fg (apply * (map (lambda (x) (pow (first x) (last x))) fg)));-> 220`

cameyo