2017-05-08 5 views
-3

私はLispプログラミングでかなり新しいので、これは愚かな質問ですが、とにかく私は(6000 6100 6200 6200 7200など)のリストを持っています。結果が(6000 6100 6200 7400 7200)になるように、2番目の同じ値(2番目の同じ値に1200を追加する)を置き換えます。これで私を助けることができますか?どうもありがとうございました。common lisp - リスト内の同じ値を置き換えてください

+3

あなたはこれまでに何をしようとしたのですか? –

+0

- 1つのオリジナルリストと1つのシフトリストを持つループを構築しようとしましたが、t/nilパターンを得るためにlambdaを持つmapcarよりも、動作した結果には達しませんでした。 – user7980164

+0

あなたのコードを表示し、そこから正しい方向にあなたを指すことができるかもしれません – sorifiend

答えて

-1

正直言って、フォークが質問を下落させる理由はわかりません。興味深い質問ではありませんが、それは明確な質問です。そこのペダントには、それをもっと面白くしようと一般化させてください。私はlispに慣れていないので、リストに関数を適用する必要があります。関数の出力は、現在の要素だけでなく、先行要素および/または後続要素にも依存します。使用するのに最適な構成要素は何ですか?

私は、最も簡単にはloopを使用することであると思う:

(defun nahrad (list change) 
    (loop for f = nil then s 
     for s in list 
     collect (if (eql f s) (+ change s) s))) 

(defparameter *test* '(6000 6100 6200 6200 7200)) 

(nahrad *test* 1200) 
+0

これは、2番目の同じ値を見つけることはありません。 *見つける*は通常、検索操作を意味します。 –

+0

あなたのコードも複数の変更を行います。質問は「第二の同じ価値観」について語ります。これは特異です。 「every every」とは言わない。 –

+0

コードは第3の同じ値を置き換える可能性があります。 –

関連する問題