プロが教えるわが家の防犯対策術!

関数の f[{x, y}]+g[{z, w}]-h[{a, b, c}] という式があったときに,これらの式の f や g や h の中に入っているリスト(今の場合は,{x, y}や{z, w}や{a, b,c})の先頭の要素に,+1をして, f[{x+1, y}]+g[{z+1, w}]-h[{a+1, b, c}] のようにしたいと考えています.
極力簡明な方法であれば有り難いと考えていますが,例えばどのような方法がありますでしょうか?お教え頂ければ大変有り難く存じます.

(追記)
以前大変親切な方に,「関数の f[{x, y}]+g[{z, w}] という式があったときに,これらの式の f や g の中に入っているリスト(今の場合は,{x, y}や{z, w})の先頭に,a を付け加えて, f[{a, x, y}]+g[{a, z, w}] のようにするには,f[{x, y}] + g[{z, w}] /. {s_Symbol[{args__}] -> s[{a, args}]}のように記述すれば良い旨を教えて頂きました.」
今回も上記の式の類似式をいろいろと作ってみましたが,なかなか上手くいきません.
例えば,f[{2, 3}] + g[{4, 1}] - h[{2, 2, 1}] /. {s_Symbol[{args__}] -> s[Prepend[{args}, 1]]}は上手くいきますが,PrependのところをDelete(と,1])にしてみると上手くいきません.

A 回答 (1件)

以下のようにすれば良いでしょう。



f[{x, y}] + g[{z, w}] - h[{a, b, c}] /. {s_Symbol[{a1_, a2___}] -> s[a1 + 1, a2]}
    • good
    • 0
この回答へのお礼

有り難うございます!
目から鱗が落ちました!!

お礼日時:2016/12/24 17:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!