【问题标题】:Sort sublists(Racket)排序子列表(球拍)
【发布时间】:2022-01-20 07:42:36
【问题描述】:

排序子列表

((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))

在语言 Racket 中。我已经尝试了很多东西,但它不起作用。帮助解决问题 我是这样写的:

(define (order-by list order)
      (cond ((null? order) '())
        ((member (car order) list) (cons (car order) (order-by (removef (car order) list) order)))
        (#t (order-by list (cdr order)))))
       
  
(define (task list)
      (cond ((null? list) '())
            
                      (task (cdr list))))))
       
(print (task '((d a c) (q d) (f h g) (d e) (k l i j) (n m) (o))))

但它不起作用

【问题讨论】:

  • 查找mapsort

标签: list sorting racket


【解决方案1】:
(map (lambda (sublist) (sort sublist string<? #:key symbol->string)) 
     '((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))

在 Common Lisp 中,这等于:

(mapcar (lambda (sublist) (sort sublist #'string< :key #'string)) 
        '((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))

【讨论】:

    猜你喜欢
    • 2015-03-20
    • 1970-01-01
    • 2019-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多