私は値のリストを持っていて、そのリストから最初のxの値をとり、(リスト(最初のx値のリスト)(次のx値のリスト)などを作成してこのリストが空になるまでします。例えばリストをBSLの複数の部分に分割できますか?
、このリストを与える:事前に(list (list a" "b" "c") (list "d" "e" "f") (list "g" "h" "t"))
感謝:)
私は値のリストを持っていて、そのリストから最初のxの値をとり、(リスト(最初のx値のリスト)(次のx値のリスト)などを作成してこのリストが空になるまでします。例えばリストをBSLの複数の部分に分割できますか?
、このリストを与える:事前に(list (list a" "b" "c") (list "d" "e" "f") (list "g" "h" "t"))
感謝:)
リストのデータ型が何であるかを覚えておいてください:この(list "a" "b" "c" "d" "e" "f" "g" "h" "t")
リターンを。あなたのテンプレートは、この構造を反映すべきである、ということを考えると
;; A IntegerList is one of:
;; - '()
;; - (cons Integer IntegerList)
:あなたのクラスは、おそらくのようなものをやっています。我々は1つの整数のリストに整数のリストをオンにしたいところ私は(基本ケースを解決する
まず、私のように1List
データ型を定義します。
;; a 1List is:
;; - (cons Integer '())
次にための目的の声明と署名関数は次のようになります。
;; Takes a list of integers and returns a list of 1Lists of the same integers
;; IntegerList -> 1List
(define (make-1list lst)
...)
オーケークール今、私たちに必要なテストケース:
(check-expect (make-1list (list 1 2 3)) (list (list 1) (list 2) (list 3)))
(check-expect (make-1list (list)) (list))
(check-expect (make-1list (list 42)) (list (list 42)))
最後に、私は私のテンプレートを作ることができます。最後に
(define (make-1list lst)
(cond [(null? lst) ...]
[else ... (first lst) ... (rest lst) ...]))
(。それは時々あなたが必要なテスト何を指針とするために、最初のテンプレートの一部を作るために理にかなっていることに注意してください)
、我々はできます
(define (make-1list lst)
(cond [(null? lst) '()]
[else (cons (list (first lst)) (make-1list (rest lst)))]))
最終的にはテストでもありますので、すべての動作を確認するためにテストする必要があります。
1List
の代わりに3List
を作りたいので、このレシピに従って問題を解決する方法がわかりますか?
このパターンに従うと、問題を小さなステップに分割するのに役立ちます。がんばろう。
このタスクを達成するためのより良い方法は、アキュムレータ&再帰を使用することです。