2017-10-06 9 views
0

私はラケットプログラミングの新人です。私は数字のリストが与えられている問題に取り組んでいます。数字の組み合わせのリストを作る必要があります。以下のようなラケットのリストの作成

何か:

(combine (list 3 1 2)) => (list 
          (list 31 32 33) 
          (list 21 22 3) 
          (list 11 12 13)) 

は、どのように私はラケットでこれを達成していますか? ありがとう

+0

私はそこだと思うが、タイプミスです期待される出力では、 '(list 21 22 23)' –

答えて

0

ちょうどiterators and comprehensionと再生すると、リストのリストを返すデカルト積と、正しい結果を得るための少しの計算が実装されます。これを試してみてください:代わり

(for/list ((i '(3 2 1))) 
    (for/list ((j '(1 2 3))) 
    (+ (* 10 i) j))) 

または、(学生の言語で利用可能)より標準的な構文を使用して:

(map (lambda (i) 
     (map (lambda (j) 
       (+ (* 10 i) j)) 
      '(1 2 3))) 
    '(3 2 1)) 

いずれかの方法、それが期待どおりに動作:

=> '((31 32 33) (21 22 23) (11 12 13)) 
+0

でなければなりません。中級言語のみを使用しなければなりません。 ISLではイテレータも使えますか? – Deesha

+0

@Derik私はそうは思わない、より簡単な代替案で私の答えを更新しました –

+0

@Derikあなたが書いている言語は質問に含まれる重要な情報です。タグ 'racket'はあなたが' #lang racket'を持っていることを意味し、 'scheme'タグはあなたが'#!r6rs'にラケットを書いていることを示しているかもしれません。 – Sylwester

関連する問題