1
我有一個列表(N ALIST
s),我需要將它分成k個相互排斥的集體窮舉列表(不一定必須是相同的長度)。也就是說,我需要一個函數,將做類似如下(爲N = 6,K = 2):隨機分配列表中的元素
(my-function (listA listB listC listD listE listF))
#=> ((listA listC listF listD) (listB listE))
我思考的方式沿着這些線路(分配數量最多K中去ALIST
的每個成員,然後根據他們的任務對這些項目進行分組)。也許這很愚蠢,我不確定。
(defun make-solution (problem)
"Generates random initial solution to be later explored"
(let ((assignments (mapcar #'(lambda (request) (random *fleet-size*)) problem)))
; maybe something to group back the elements of problem according to their value in assignments?
))
任何提示什麼填寫?也許更好的方法?對於上下文,我正在做的是隨機創建一個車輛路徑問題的初始羣體,我可以稍後使用本地搜索進行迭代。
美麗的,謝謝!順便說一下,你是否在HN上lispm?你(當然還有PG)是我決定開始學習Lisp的原因。爲此非常感謝 ;-) – Guilherme