对颜色列表进行排序。
如果两种颜色的红色值相同,那么绿色值较小的值将在排序中首先出现。如果两种颜色具有相同的红色和绿色值,则具有较小蓝色值的颜色将在排序中首先出现。
示例:让颜色列表为
((72 75 0) (0 0 10) (255 255 255) (0 10 10) (0 10 8)(50 100 255))
然后程序将返回
((0 0 10) (0 10 8) (0 10 10) (50 100 255) (72 75 0) (255 255 255))
答案 0 :(得分:2)
您应该编写一个自定义比较器进行排序:
(define color-comparator
(lambda (c1 c2)
(cond
((not (= (car c1) (car c2))) (< (car c1) (car c2))) ; red
((not (= (cadr c1) (cadr c2))) (< (cadr c1) (cadr c2))) ; green
(else (< (caddr c1) (caddr c2)))))) ; blue
然后您可以将此功能传递给sort
程序。
狡诈:
(sort
'((72 75 0) (0 0 10) (255 255 255) (0 10 10) (0 10 8)(50 100 255))
color-comparator)
Chez Scheme:
(sort
color-comparator
'((72 75 0) (0 0 10) (255 255 255) (0 10 10) (0 10 8)(50 100 255)))