gpt4 book ai didi

vector - 如何从 Racket 中的向量中获取最小整数

转载 作者:行者123 更新时间:2023-12-02 09:10:27 24 4
gpt4 key购买 nike

我正在尝试从仅包含数字的向量中获取最小整数。我知道如何使用列表来做到这一点。您比较列表的前两个值,根据哪个值较大,您要么保存您的值以稍后输出,要么使用 cdr 程序。

但是对于矢量我完全迷路了。我的猜测是,考虑解决方案的方式对于列表和向量是相同的。我一直在 racket-lang 网站上阅读,但未能找到解决问题的方法。我试验最多的程序是 vector-refvector-length 因为它们似乎在这个问题上最有用(但这是我第一次工作有矢量所以我知道什么)。

所以我的两个问题是:

  1. 我们如何从向量中获取除第一个值以外的所有值?是否有类似 cdr 但用于矢量的程序?

  2. 如果您使用列表,您可以使用 cons 来保存您想要输出的值。但是在处理向量时是否有类似的方法?

谢谢!

最佳答案

最简单的解决方案是使用 for 的变体,称为 for/fold。我以为有一个 for/min 但唉。

#lang racket
(define v (vector 11 12 13 4 15 16))

(for/fold ([m +inf.0]) ([x (in-vector v)])
(min m x))

如果您喜欢更明确的方法:

(define (vector-min xs)
(define n (vector-length xs))
(let loop ([i 0] ; running index
[m +inf.0]) ; minimum value so far
(cond
[(= i n) ; if the end is reached
m] ; return the minimum
[else ; else
(define x (vector-ref v i)) ; get new element in vector
(loop (+ i 1) ; increment index
(min m x))]))) ; new minimum

更新

(let loop ([x 1] [y 10])
(loop (+ x 1) (- y 1))

等同于:

(let ()
(define (loop (x y)
(loop (+ x 1) (- y 1)))
(loop 1 10))

关于vector - 如何从 Racket 中的向量中获取最小整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52917224/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com