2
我有一個數字列表和一個球拍中的運算符列表。使用球拍在排列列表中遞歸地求和嵌套列表
(define numList (list 5 25))
(define ops '(+ *))
我使用笛卡爾積加入運營商的號碼列表中的每個可能的排列。
(cartesian-product ops (permutations numList))
它給出以下結果;
'((+ (5 25))
(+ (25 5))
(* (5 25))
(* (25 5)))
我要總結每個嵌套列表,即(+(5月25日)),然後將它們添加到列表中。 我已設法使用eval關鍵字到目前爲止執行以下操作:
(define ns (make-base-namespace))
(list (eval
(flatten
(cadr
(cartesian-product ops (permutations numList))))ns))
從而消除每個列表的嵌套和對第一3種元素的總和,並返回50(+(5 25))的值。 我想在執行拼合之前在每個嵌套節上遞歸執行此操作。我知道我也可以使用移除副本。 我是新來的球拍,但這是我到目前爲止;
(define (evalCart l)
(if (null? l)
0
(list
(eval
(flatten
(cadr
(cartesian-product ops (permutations numList)))) ns) (evalCart (car
l)))))
非常感謝您的時間和精力,這非常完美。不幸的是我沒有足夠的聲望來投票給你,但我們只是說它是+1! – morpheus1977