リストの平坦化
http://www.geocities.jp/m_hiroi/func/scheme01.html
リストの平坦化(記法はlambdaを使ったものに変更してあります)
(define flatten (lambda (ls) (cond ((null? ls) '()) ((pair? ls) (append (flatten (car ls)) (flatten (cdr ls)))) (else (list ls)))))
平坦化するリスト
((((#\h #\t #\u . #\v) . #\t) (((#\o . #\d) #\m . #\w) (#\z . #\j) #\w . #\g) *1
実行
gosh> (flatten '((((#\h #\t #\u . #\v) . #\t) (((#\o . #\d) #\m . #\w) (#\z . #\j) #\w . #\g) *2
平坦化されたリスト
(#\h #\t #\u #\v #\t #\o #\d #\m #\w #\z #\j #\w #\g #\l #\c #\r #\x #\c #\o #\c #\k #\l #\y #\z #\t #\a #\h #\h #\g #\n)
なるほどねぇ、appendで繋がないとダメというわけですか。
半日自分で考えて答えが出なかった。
午前中からぐぐって見ればよかったなぁ。
それから、個体の適合度を評価するにはハミング距離ではなく、レーベンシュタイン距離を実装する必要がありそう。