Em 5 de agosto de 2010 11:45, Stephen Eilert <[email protected]> escreveu:
> > On Aug 5, 11:27 am, Alejandro Moraga <[email protected]> wrote: > > Estar nesse grupo realmente é desnecessário e perca de tempo. > > Realmente. Só faz sentido entrar em um grupo quando se possui um > conhecimento mínimo de interpretação de textos. > > Vamos parar de chorar e tentar resolver o problema proposto em Lisp? > Já que você pediu com jeitinho ;) (defun problemao-solver (listas &optional (recuo 0)) (when listas (let* ((lista1 (first listas)) (elemento1 (first lista1))) (loop repeat recuo do (format t " ")) (format t "~A~%" elemento1) (let ((listas-sem-elemento1 (remove elemento1 listas :key #'car :test #'string=)) (listas-com-elemento1 (mapcar #'cdr (remove elemento1 listas :key #'car :test #'string/=)))) (problemao-solver (remove nil listas-com-elemento1) (1+ recuo)) (problemao-solver listas-sem-elemento1 recuo))))) Parece que funciona: cl-user> (problemao-solver '(("Empresa de Teste" "Diretoria de teste" "UN de teste" "UR de teste") ("Empresa de Teste" "Diretoria de teste" "UN de teste" "UR de teste" "teste") ("Empresa de Teste" "Diretoria de teste" "UN de teste" "UR de teste 2") ("Empresa de Teste") ("Empresa de Teste" "Diretoria de teste") ("Empresa de Teste" "Diretoria de teste" "UN de teste") ("Empresa de Teste" "Diretoria de teste" "UN de teste" "UR de teste 2" "teste 2"))) Empresa de Teste Diretoria de teste UN de teste UR de teste teste UR de teste 2 teste 2 nil cl-user> É, Alex Queiroz, parece que Lisp é realmente baixo nível :P Eu não me preocupei com a eficiência: poderia ser feito um loop para coletar as LISTAS-COM-ELEMENTO-1 e as LISTAS-SEM-ELEMENTO-1 ao mesmo tempo, tem também o argumento opcional e esse algoritmo aloca memória sem medo (o último remove poderia ser substituído por delete por exemplo). Mas é rápido o bastante e resolve o problema sem problemas :) E, como eu disse, não precisa nem remover as listas repetidas pelo algoritmo anterior. -- You received this message because you are subscribed to the Google Groups "Lisp-br" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/lisp-br?hl=en.
