私はこのプログラムをSchemeで実装するのに少し苦労していますが、90%は達成できたと思います。残念ながら、これは宿題なので、少し曖昧にする必要があります。
入力として 1 つのリストを取得し、リストのすべての可能なサブシーケンスを生成し、特定の基準に一致する 1 つを返す必要があります。リストのすべてのサブシーケンスを生成し、特定のサブセットが解かどうかを判断するコードを完成させました。ただし、Scheme がそのソリューションを返すのに問題があります。私のコードは基本的に今このように見えます
(define (function rest_of_list subsequence)
(if (subsequence is a solution) subsequence)
(if (> (length rest_of_list) 0) (function (cdr rest_of_list) (append subsequence (car rest_of_list))))
(if (> (length rest_of_list) 0) (function (cdr rest_of_list) subsequence)))
このコードがすべきことは、リスト内の各要素に対して、2 方向に再帰的に分岐することです。一方向では、サブシーケンスに (car rest_of_list) を追加し、リストを下に続けます。逆方向では (car rest_of_list) を無視し、リストを下に進みます。受け入れ可能なサブシーケンスを見つけるとすぐに、それを返します。これが function と呼ばれる関数の結果です。現在、空白の出力が得られます。そして、私は推測する理由をある程度理解していますが、これを修正するには十分ではありません.