计划中的字谜

时间:2010-11-13 19:41:46

标签: scheme racket

有没有人尝试在方案中生成字谜???

我有一个列表(A B C D E F),需要创建长度为4的字谜。如'AAAA','ABCD','BCBC'等。 我完全糊涂了。 :(

有人可以请我就如何解决这个问题进行改进吗?

3 个答案:

答案 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)的字谜的列表中的每个项目。

从那以后你应该能够做一些基本案例和递归案例的例子。你可能需要帮手功能。