特にLispまたはMLファミリーの既存のプログラミング言語には、「最初から2番目の開始まで」という意味でリストの違いを計算するライブラリ関数がありますか-正確に何と呼ばれるべきかわかりません-たとえば、入力が次の場合、文字列を文字のリストと見なします。
abcdef
def
次に、出力は次のようになります
abc
特にLispまたはMLファミリーの既存のプログラミング言語には、「最初から2番目の開始まで」という意味でリストの違いを計算するライブラリ関数がありますか-正確に何と呼ばれるべきかわかりません-たとえば、入力が次の場合、文字列を文字のリストと見なします。
abcdef
def
次に、出力は次のようになります
abc
すでに受け入れられている回答がありますが、Common Lisp LDIFF
(「リストの違い」の略) はまだ言及する価値があります。これは、リストの要素ではなく、リストの構造 (リストを構成するコンス セル) に基づいているため、「減算」されるリストは、リストの末尾と同じコンス セルでなければなりません。もう少し具体的ですが、確かにリストの差を計算します。
CL-USER> (let* ((abcdef '(a b c d e f))
(def (cdddr abcdef)))
(ldiff abcdef def))
(A B C)
Common Lisp のコード:
CL-USER 1 > (defun fusos (s1 s2)
(let ((pos (search s2 s1)))
(when pos (subseq s1 0 pos))))
FUSOS
CL-USER 2 > (fusos '(a b c d e f) '(d e f))
(A B C)