如果我的输入是一个列表列表,那么我想输出一个包含输入元素的列表,以便它们像一副扑克牌一样被洗牌。
例如,如果输入是'((1 2 3) (4 5)),那么我希望输出显示为'(1 4 2 5 3)。
我的想法是首先从列表中的第一个列表中删除一个元素,然后将该列表的列表移动到列表的后面。这样,可以附加列表的下一个列表的第一个元素。
到目前为止,这是我的代码:
(define (shuffle ls)
(if (null? ls) '()
(cond ((null? car (ls)) (append (cdr (ls)) (list (cdr(car(ls)))))))
(else (car (car (ls)))
(append (cdr (ls)) (list (cdr (car (ls))))
(shuffle (cdr (ls)))))))