es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , ,

Answer

  1. Avatar for 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:

    (define lst '((b a c) (e d) (f h g) (d e) (k l i j) (n m) (o)))
    
    (define (sort-sublists lst)
      (define (cmp a b) (string<? (first a) (first b)))
      (map (lambda (sublst) (sort sublst cmp)) lst))
    
    (display (sort-sublists lst)) ; ((a b c) (d e) (f g h) (d e) (i j k l) (m n) (o))
    

    Este código define una función sort-sublists que toma una lista de sublistas y aplica la función sort 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 usando display. Esto debería generar la lista ordenada ((a b c) (d e) (f g h) (d e) (i j k l) (m n) (o)).

Comments are closed.