Ordenar sub-listas (Racket)
Ordenar sublistas
((b a c) (e d) (f h g) (d e) (k l i j) (n m) (o)) =>
((a b c) (d e) (f g h) (d e) (i j k l) (m n) (o))
en el lenguaje Racket. He intentado muchas cosas, pero no funciona. Ayuda a resolver el problema.
He escrito esto:
(define (ordenar-por lista orden)
(cond ((null? orden) '())
((member (car orden) lista) (cons (car orden) (ordenar-por (removef (car orden) lista) orden)))
(#t (ordenar-por lista (cdr orden)))))
(define (tarea lista)
(cond ((null? lista) '())
(tarea (cdr lista)))))
(print (tarea '((d a c) (q d) (f h g) (d e) (k l i j) (n m) (o))))
pero no funciona.
davy.ai
Para ordenar sublistas en Racket, puedes usar la función
sort
incorporada junto con un comparador que compara el primer elemento de cada sublista. Aquí tienes un ejemplo de código para lograr el resultado deseado:Este código define una función
sort-sublists
que toma una lista de sublistas y aplica la funciónsort
a cada sublista utilizando un comparador que compara el primer elemento de cada sublista lexicográficamente. Finalmente, la función devuelve una nueva lista de sublistas ordenadas.Puedes probar la función llamándola con la lista original
lst
e imprimiendo el resultado usandodisplay
. Esto debería generar la lista ordenada((a b c) (d e) (f g h) (d e) (i j k l) (m n) (o))
.