2017-04-16 13 views
-1

リストと数字を与えたプログラムをコーディングして、指定した数のリストでリストを分割したいと思います。ラケット、与えられた数のリストにリストを分割する

(リストはランダムに行われているので、例えば)例えば、

(split 3 '(1 2 3 4 5 6 7 8 9 10)) 

は、3つのリストを作る必要があります。

‘(4 1 6) 

‘(9 7 2) 

‘(3 10 8 5) 

それがそのように作成され、要素のランダムピックを持っている必要がありますがリストは常に異なっています。

コードを取得したら、これをin another question at this webと比較します。 (私はラケットを学んでいます)

+0

これまで何を試みましたか? – Renzo

答えて

0
(define (n-way-split n lst) 
    (define (go len* lst) 
    (match len* 
     ['() '()] 
     [`(,len . ,len*-tail) 
     (let-values ([(next-len-elems rest-of-elems) (split-at lst len)]) 
     (cons next-len-elems (go len*-tail rest-of-elems)))])) 
    (go (n-way-split-length* n (length lst)) 
     (shuffle lst))) 

(define (n-way-split-length* n len) 
    (let*-values ([(quot rem)      (quotient/remainder len n)] 
       [(count/lists-of-length-quot) (- n rem)] 
       [(count/lists-of-length-quot+1) rem] 
       [(size*) (append (make-list count/lists-of-length-quot quot) 
           (make-list count/lists-of-length-quot+1 (+ 1 quot)))]) 
    size*)) 
+0

非常にブレンダムありがとう!それが私が欲しかったものです。本当に助けになります。本当にありがとう! –

関連する問題