【问题标题】:3D arrays in Scheme languageScheme 语言中的 3D 数组
【发布时间】:2017-11-22 10:28:56
【问题描述】:
  • 我知道如何使用不同的命令式语言(如 c、c++ 等)处理 2D 和 3D 数组,但是
  • 我是函数式编程语言的新手。我正在工作 现在使用的是 Lisp 方言的 Scheme 语言。我本来打算 在 Scheme 语言中使用 3D 数组来了解 3D 数组如何在函数式编程语言中工作,特别是 Scheme。我已经搜索过 但没有找到任何有用的资源来工作。喜欢 https://docs.racket-lang.org/srfi/srfi-std/srfi-25.html
  • Scheme 中的 3D 数组的示例将不胜感激。

【问题讨论】:

标签: arrays multidimensional-array scheme lisp


【解决方案1】:

这是一个使用球拍矢量的示例:

#lang racket

;; Dimension sizes
(define x-size 10)
(define y-size 10)
(define z-size 10)

;; Create a 3D vector with a default value of 1
(define my-3D-vector
  (make-vector x-size (make-vector y-size (make-vector z-size 1))))

;; Returns the element in slot (x-pos, y-pos, z-pos) of 3D-vec.
;; The first slot is (0,0,0) and the last slot is
;; (x-size - 1, y-size - 1, z-size - 1)
(define (3D-vector-ref 3D-vec x-pos y-pos z-pos)
  (vector-ref (vector-ref (vector-ref 3D-vec x-pos) y-pos) z-pos))

;; Updates the slot (x-pos, y-pos, z-pos) of 3D-vec to contain v
(define (3D-vector-set! 3D-vec x-pos y-pos z-pos v)
  (vector-set! (vector-ref (vector-ref 3D-vec x-pos) y-pos) z-pos v))

【讨论】:

    猜你喜欢
    • 2021-11-12
    • 1970-01-01
    • 2018-02-25
    • 1970-01-01
    • 2021-03-21
    • 1970-01-01
    • 2021-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多