我想获取列表的任意列表并“旋转”它。 也就是说,对于大小为3x3的列表的列表:

#lang racket
(require rackunit)

(define (rotate-lol lol)
  (append (list (map first lol)) (list (map second lol)) (list (map third lol))))

(check-equal? (rotate-lol (list (list 'a 'b 'c)
                                (list 'd 'e 'f)
                                (list 'g 'h 'i)))
          (list (list 'a 'd 'g)
                (list 'b 'e 'h)
                (list 'c 'f 'i)))

我在想list-ref将替换first / second / third但是我不太清楚这样做的最简洁方法。

知道必须有一种优雅的方法来做到这一点。 过去,我已经针对该问题做了一些微不足道的解决方案,这些解决方案都是针对特定领域的,但是我想针对一般情况解决此问题,将其存储在个人库中并解决该问题。 有任何提示或解决方案吗?

===============>>#1 票数:5 已采纳

它非常类似于zip并且您不必制作它,因为它已经在SRFI-1列表库中

(require srfi/1)
(zip '(a b c) '(d e f) '(g h I)) ; ==> ((a d g) (b e h) (c f i))

现在,将所有参数用作列表,然后应用apply:

(apply zip '((a b c) (d e f) (g h I)))
; ==> ((a d g) (b e h) (c f i))

并且,仅出于完整性考虑。 这是zip的定义方式:

(define (zip . lsts)
  (apply map list lsts))

  ask by BlackVegetable translate from so

未解决问题?本站智能推荐:

3回复

球拍清单长度

我试图弄清楚清单的长度 但没有这样做 展示 我的代码 : 我打算做的是 获取列表(它在里面,因为无法弄清楚如何获取列表...) 制作'if'函数,以便在(cdr列表)为null时可以printf len 如果你们有任何错误,请告诉我 我
1回复

计划结构和清单

mult是我的帮手功能 const将位置numshares和position-share-price放在一个列表中并将它们相乘。 我想要做的是获取列表的第一个并将列表的其余部分添加到一起。 相反,我只获得了第一个列表。 所以如果我这样做(const p1)我只得到1920,
1回复

方案中的清单深度

我正在尝试编写一个计划,该计划将找到列表的最大深度。 到目前为止,我的代码是: 它适用于这种类型的列表(depth '(1 2 3 (2))) -> 2 ,但显然不适用于这种类型的列表(depth '( (2) ((3))) -> 3问题是,当我第一次遇到一个列表时,我自
1回复

两个清单作为生产清单的输入-方案

供参考,我正在使用DrRacket使用Scheme进行编程。 我正在尝试使功能全部tally-by-all该功能消耗list-of-candidates list-of-votes list-of-voting-tallies ,以借助已经定义的helper函数输出list-of-vote
2回复

安排球拍中的清单

(排列'(0 1 1 2 3 3 4 5 6 6))->'(0(1 1)2(3 3)4 5(6 6)) 您好,我想做这个。 他们应该这样做,相同的下一个元素进入列表列表,其他元素进入普通列表。 但是我不知道如何使用文件夹和lambda来处理下一个元素。 我的代码:
2回复

清单的球拍模式匹配

我正在尝试与列表进行模式匹配,但是由于某些原因,当我执行以下操作时会得到意外的匹配: 问题:为什么code与code-match-expr ? 实际用例 我在Racket REPL中进行了尝试,因为我实际上想解决另一个实际问题:使用Pollen的pygments包装函数突出显
4回复

建立2D清单

寻找一个可以完成以下功能的函数: DrRacket中是否有任何内置功能可以实现这一目标?
1回复

如何从球拍的结构中列出清单?

我制作了一个结构(struct g(abcd))并将其定义为(每(g 1 6 5 4)个定义) 但是我想使用per作为我想定义的另一个函数的列表参数。它给我一个错误 第一:预期违反合同:(和/ c列表?(不/ c为空?)) 给定: 如何为每个带有结构参数的列表创建清单
3回复

高效地制定计划清单

我想使用Scheme语言创建高效的特殊列表。 例如: 函数名称: make-list 参数: max (make-list max) -> (1 2 3 4 5 6 7 ... max) 我可以使用递归方法完成此任务。 但是,该方法可以认为是低的。 我
1回复

如何从球拍的输入阅读行中列出清单

我想从标准输出中输入要用作列表的列表 输入列表时,由于要在列表中输入列表,所以不断出现此错误