[ quoted from ] 情報演習 課題S-B-2(※)一部抜粋・改変
- (1)
任意の長さnのリスト (a1 a2 … an) を入力とし、長さn+1のリストのリスト
((a1 a2 … an) (a2 … an) … (an) ())を返す再帰関数tailsを定義せよ。
例: > (tails '(1 2 3 4 5)) ((1 2 3 4 5) (2 3 4 5) (3 4 5) (4 5) (5) ())- (2)
任意の長さnのリスト (a1 a2 … an) を入力とし、長さn+1のリストのリスト
(() (a1) (a1 a2) … (a1 a2 … an))を返す再帰関数headsを定義せよ。
例: > (heads '(1 2 3 4 5)) (() (1) (1 2) (1 2 3) (1 2 3 4) (1 2 3 4 5))- (3)
整数のリスト (a1 a2 … an) を受け取り、その連続する部分列
ai, ai+1, …, ai+k-1 (k≧0, 1≦i≦n, i+k≦n)の総和 ai+ … +ai+k-1 のうち最大の総和を返す関数mssを定義せよ。
例: > (mss '(1 2 3 -4 1)) 6 > (mss '(-5 2 8 -19 9 6 8 -1 2 -1)) 24