有没有人尝试在方案中生成字谜???
我有一个列表(A B C D E F),需要创建长度为4的字谜。如'AAAA','ABCD','BCBC'等。 我完全糊涂了。 :(
有人可以请我就如何解决这个问题进行改进吗?
答案 0 :(得分:1)
嗯......最近我解决了非常相似的任务 - 从(0 1)创建长度为N的字谜。这是我的解决方案。可能对你有帮助:
;;
;; (define (generate n)) -> create list of string where
;; * length of each string is n
;; * each symbol of string is '0' or '1'
;; * the list has all possible combinations of symbols '0' and '1'
(define (generate n)
(generate-engine (list "0" "1") n))
(define (generate-engine lst n)
(cond
[(= n 1) lst]
[else (generate-engine (append (add-to-list lst "0") (add-to-list lst "1")) (- n 1))])
)
(define (add-to-list lst symbol)
(cond
[(empty? lst) empty]
[else (cons (add-to-element (first lst) symbol) (add-to-list (rest lst) symbol))]))
(define (add-to-element element symbol)
(string-append element symbol)
)
;; example
(generate 3)
结果:
(list "000" "100" "010" "110" "001" "101" "011" "111")
答案 1 :(得分:0)
对于每个i = 0..x
,其中x
是anagram的长度,生成一个随机数r
,使得0 <= r <= n
n
,其中r
是元素的数量在信件列表中。现在使用{{1}}作为字母列表的索引并将其连接到结果。
答案 2 :(得分:0)
长度为1的字谜只是列表中的项目。退回清单。
长度为n的字谜是附加到所有长度为(- n 1)
的字谜的列表中的每个项目。
从那以后你应该能够做一些基本案例和递归案例的例子。你可能需要帮手功能。