首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >maple上的替换规则

maple上的替换规则
EN

Stack Overflow用户
提问于 2015-02-27 18:40:20
回答 2查看 72关注 0票数 0

我对maple有点陌生,我对以下问题感兴趣。

假设我有一个映射f,它将a发送给abb,b发送给a。我的第一个问题是如何在maple上定义这个映射?我也感兴趣的是什么时候重复应用映射,即f的迭代。比方说,如果我有一个种子ab,有没有什么东西可以放在maple上,当我应用f时,它就变成了abba,依此类推?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2015-02-28 02:24:30

希望这能有所帮助:

代码语言:javascript
复制
> f(a) := a,b,b;
                            a, b, b
> f(b) := a;
                               a
> map(f, [a, b]);
                          [a, b, b, a]
> map(f, %);
                    [a, b, b, a, a, a, b, b]
票数 0
EN

Stack Overflow用户

发布于 2015-02-28 05:49:21

您也可以使用字符串来完成此操作。

代码语言:javascript
复制
restart:

g := e->StringTools:-SubstituteAll(StringTools:-CharacterMap("ab","ta",e),"t","abb"):

g("a");
                                "abb"

g("b");
                                 "a"

g("ab");
                               "abba"

(g@@2)("ab");
                             "abbaaabb"

subs(["a"=a,"b"=b],StringTools:-Explode(g("ab")));
                            [a, b, b, a]

f(a) := a,b,b;
                           f(a) := a, b, b

f(b) := a;
                              f(b) := a

map(f, [a, b]);
                            [a, b, b, a]

map(f, %);
                      [a, b, b, a, a, a, b, b]

F := e->map(f,e):

F([a, b]);
                            [a, b, b, a]

(F@@2)([a, b]);
                      [a, b, b, a, a, a, b, b]

evalb( subs(["a"=a,"b"=b],StringTools:-Explode(g("ab"))) = F([a, b]) );
                                true

ans1 := CodeTools:-Usage( (g@@20)("ab") ):
memory used=6.01MiB, alloc change=4.01MiB, cpu time=100.00ms, real time=102.00ms, gc time=0ns

ans1list := CodeTools:-Usage( subs(["a"=a,"b"=b],StringTools:-Explode(ans1)) ):
memory used=32.00MiB, alloc change=32.01MiB, cpu time=170.00ms, real time=175.00ms, gc time=0ns

ans2 := CodeTools:-Usage( (F@@20)([a, b]) ):
memory used=128.11MiB, alloc change=21.02MiB, cpu time=3.81s, real time=3.82s, gc time=3.46s

evalb( ans1list = ans2 );
                                true

您还可以编写gF来处理更大的块(长度为2或4等),并递归地拆分参数等,甚至学习这些模式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28763079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档