(functionsort functionlist value)
Run Code Online (Sandbox Code Playgroud)
functionsort采用2个参数,函数列表和单个值.当给定"value"时,返回以递增顺序排序的相同函数列表.
例如:这是我的功能列表
(define myfunctions (list (lambda (x) (+ x 3))
(lambda (x) (- 100 x))
(lambda (x) (* x 2))))
(define fs
(function-sort myfunctions
5))
Run Code Online (Sandbox Code Playgroud)
应该返回以下内容
((first fs) 6) ; (first fs) is (lambda (x) (+ x 3))
9
((second fs) 6) ; (second fs) is (lambda (x) (* x 2))
12
((third fs) 6) ; (third fs) is (lambda (x) (- 100 x))
94
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止所得到的:
define (function-sort functions value )
(map (lambda (y) (y value)) functions)) …Run Code Online (Sandbox Code Playgroud) 我是prolog的新手,试图解决这个经典的硬币找零问题。
用公式M> = 0和M = P + 5 * N + 10 * D来更改(M,P,N,D)这是我的方法
change(M,P,N,D) :-
M is P+5*N+10*D,
P is M - (5*N+10*10).
Run Code Online (Sandbox Code Playgroud)
几个测试用例
change(100,10,8,5).
True
change(X,10,8,5).
X = 100.
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试
change(100,P,8,5).
Run Code Online (Sandbox Code Playgroud)
它给了我“参数没有被充分实例化”,而不是P = 10。
编辑:通过在谓词之间(0,M,P),之间(0,M,N),之间(0,M,D),之间的谓词来修复我的代码,M是P + 5 * N + 10 * D。