我想获取列表的任意列表并“旋转”它。 也就是说,对于大小为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
但是我不太清楚这样做的最简洁方法。
我知道必须有一种优雅的方法来做到这一点。 过去,我已经针对该问题做了一些微不足道的解决方案,这些解决方案都是针对特定领域的,但是我想针对一般情况解决此问题,将其存储在个人库中并解决该问题。 有任何提示或解决方案吗?