2013-04-07 3 views
1

이 방법으로 구성표에서 순열을 생성 할 수있는 방법 : 순열의 첫 번째 요소는 1-2 사이, 두 번째 1-4는 1-3 번째 ... 그리고 숫자도 더 많이 나타날 수 있습니다. 한 번 순열구성표의 특수 치환

+1

질문이 명확하지 않습니다. 어쩌면 당신은 그것을 업데이트해야하고, 샘플 입력과 프로 시저에 대한 예상 출력을 보여줄 것입니다. –

답변

0

보다 다음은 주어진 범위에서 숫자의 순서에 대한 모든 순열을 생성하는 것입니다 방법은 다음과 같습니다 for/list를 사용

(define (cartesian-product . lsts) 
    (foldr (lambda (lst acc) 
      (for*/list ((x (in-list lst)) 
         (y (in-list acc))) 
      (cons x y))) 
     '(()) 
     lsts)) 

(cartesian-product (range 1 3) (range 1 5) (range 1 4)) 

=> '((1 1 1) (1 1 2) (1 1 3) (1 2 1) (1 2 2) (1 2 3) (1 3 1) (1 3 2) 
    (1 3 3) (1 4 1) (1 4 2) (1 4 3) (2 1 1) (2 1 2) (2 1 3) (2 2 1) 
    (2 2 2) (2 2 3) (2 3 1) (2 3 2) (2 3 3) (2 4 1) (2 4 2) (2 4 3)) 
+0

append-map을 사용하여 해결책을 만들었지 만, 당신의 것이 더 좋을 것 같습니다! –

+0

@VoloacaOctavian 여러분을 환영합니다! 사이트에 게시 한 두 가지 질문을 [(http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) 받아 들일 수 있습니다. 확인 표시를 클릭하십시오. 그것의 왼쪽 - 그건 스택 오버플로에 "감사합니다"라고하는 방법입니다;) –

0

순열은 라켓의 문서에 here 덮여.

(for/list ([i '(1 2)] 
      #:when i 
      [j '(1 2 3 4)] 
      #:when j 
      [k '(1 2 3)]) 
    (list i j k))