Я продолжаю изучать Racket, и теперь мне нужно отсортировать список, используя мою собственную функцию для сортировки списка.
Каждый элемент списка, который также является списком, должен быть передан в качестве параметра моей собственной функции, и функция будет возвращать реальное значение в диапазоне [0, 1].
В двух словах: у меня будет список списков, которые нужно отсортировать, используя функцию, которая имеет в качестве параметра список, и он будет возвращать реальное значение между [0, 1].
В Racket я нашел функцию sort :
(sort '(1 3 4 2) <)
Мне нужно что-то подобное, но вместо использования <
мне нужно использовать свою собственную функцию.
#lang racket
(define my-list '(1 2 3 4) '(5 7 3 1) '(9 4 1 8))
(define my-function
(lambda (lst)
(let ([result ; Do my own calculations ])
result))) ; Result is a real number between [0,1].
(define list-sorted (my-sort my-list my-function))
ПРИМЕЧАНИЕ : представьте себе my-function
как черный ящик со списком в качестве входа и действительным числом в качестве выхода.
Как я могу это сделать?
Я думал создать еще один список, my-list-real-values
со значениями действительных чисел для каждого элемента в my-list
в том же порядке, а затем использовать (sort my-list-real-values <)
для его сортировки, но я не знаю, как связать два списка, my-list-real-values
с my-list
, для сортировки my-list
при сортировке my-list-real-values
.
Возможно, я смогу использовать Хеш-таблицы , но я не знаю, является ли это функцией только Ракетки, или ее можно использовать и со Схемой.