groupes de tri par carte et accumuler dans le schéma
-
08-10-2019 - |
Question
Je suis en train d'utiliser « la carte » et « accumuler » fonctions système de tri quantité inconnue de la liste dans une liste que le premier aura toutes les premières places des listes de Olds et ainsi de suite.
(1 2 3.. ) (4 5 6..) (7 8 9..)...
à cette liste:
(1 4 7) (2 5 8) (3 6 9).
J'écrivais ceci:
(accumulate (lambda (x y) (if (null? y) x (map cons x y))) null '((1 2 3) (4 5 6) (7 8 9) (9 10 11) (12 13 14)))
et il continue à me donner le point ennuyeux à la fin ...
((1 4 7 9 . 12) (2 5 8 10 . 13) (3 6 9 11 . 14)).
ce seemes être le problème? merci!
La solution
Essayez ceci:
(if (null? y)
(map list x)
(map cons x y))
Autres conseils
(define (accumulate x . rest)
(append (list x) rest))
> (map accumulate '(1 2 3) '(4 5 6) '(7 8 9))
=> ((1 4 7) (2 5 8) (3 6 9))
> (map accumulate '(1 2 3 4) '(5 6 7 8) '(9 10 11 12) '(13 14 15 16))
=> ((1 5 9 13) (2 6 10 14) (3 7 11 15) (4 8 12 16))
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow