Lisp 如何求方案中列表的中位数
我对这个计划还不熟悉,我正在使用Racket博士来试图找到名单的中位数 例如,Lisp 如何求方案中列表的中位数,lisp,scheme,computer-science,median,Lisp,Scheme,Computer Science,Median,我对这个计划还不熟悉,我正在使用Racket博士来试图找到名单的中位数 例如,(中值2 1 3)应返回2,(中值1 5 5 2 3)应返回2.5 我使用的是R6RS方案规范,允许使用get line 以下是我到目前为止的情况: #!r6rs (import (rnrs)) (define (median-interactive lst) (display "Enter input:") (let ((input (get-line (current-input-port))))
(中值2 1 3)
应返回2
,(中值1 5 5 2 3)
应返回2.5
我使用的是R6RS方案规范,允许使用get line
以下是我到目前为止的情况:
#!r6rs
(import (rnrs))
(define (median-interactive lst)
(display "Enter input:")
(let ((input (get-line (current-input-port))))
(list-sort < lst)))
#!r6rs
(进口)
(定义(中间交互式lst)
(显示“输入:”)
(let((输入(获取行(当前输入端口)))
(列表排序
有人能帮我吗?第一件事:“中间人互动”不应该叫“中间人”吗 第二件事:我强烈建议你完全独立于“中间交互”开发“中间交互” 事情三:你能举例说明中位数的作用吗?具体来说,您可以如何称呼“中值”以及它应该返回什么的具体示例
事情四:我猜这是家庭作业?这是一个过于简单的实现。由于中间值正好是一半值在上面,一半值在下面的点,因此可以对列表进行排序并找到中间点。根据元素的数量是奇数还是偶数,您可以选择排序列表中的中点(奇数)或两个中点的平均值(偶数) 如果这是家庭作业,那么这样一个糟糕的版本可能会给你一个“D”,但它确实有效
> (median (list 5 2 6 2))
3 1/2
> (median (list 5 2 6 3 1))
3
>
请注意,这与(平均)值不同。我在列表中有奇数个元素的中位数,但对偶数个元素不起作用。有人能帮我告诉我偶数函数有什么问题吗?
> (median (list 5 2 6 2))
3 1/2
> (median (list 5 2 6 3 1))
3
>