登录

修订历史记录A139356号

(粗体、带蓝色下划线的文本是附加;褪色的红色下划线文本是删除.)

显示条目1-10|较旧的更改
序列描述了用法语书写序列时辅音的位置(版本1)。
(历史;已发布版本)
#35通过阿洛伊斯·海因茨2023年1月6日星期五19:50:15 EST
状态

提出

经核准的

#34通过泰勒-巴斯比2023年1月3日星期二15:31:51
状态

编辑

提出

讨论
2004年1月3日
20:57
泰勒-巴斯比:对我有用!
2005年1月4日
02:45
凯文·莱德:对于除foo[3]以外的所有元素,除一个元素外的向量都是foo[^3]。vecextract()做了一些额外的事情。
12:43
泰勒-巴斯比啊,谢谢你!很高兴知道。
#33通过泰勒-巴斯比2023年1月3日星期二15:28:35 EST
黄体脂酮素

(PARI)列表a(n)=法语辅音位置闭合frconspos公司([4])(n)

法语辅音位置闭合frconspos公司(startseq)=n->{

状态

提出

编辑

#32通过泰勒-巴斯比2023年1月3日星期二13:46:02 EST
状态

编辑

提出

讨论
2003年1月2日星期二
13:46
泰勒-巴斯比:而且“法语辅音位置闭合”有点冗长,所以我愿意接受这里的建议。
14:47
米歇尔·马库斯:frconclos?
#31通过泰勒-巴斯比2023年1月3日星期二13:45:16 EST
黄体脂酮素

(PARI)lista(n)=法语辅音位置闭合([4])(n)

法语辅音位置闭合(startseq)=n->{

my(辅音=Vec(“bcdfghjklmnpqrstvwxyz”),charoffset=0,seqindex=#startseq+1,seq=Vec(startseq,n));

如果(n个 <= #startseq(启动序列), 序列[1..n个], 对于(帕里) 法国人 = 1, n个, 我的(nn个) 这个法国人 =Vec公司(strchr([c|c<-Vecsmall(法语(nn个序列[])),c>96])), 辅音索引 = 选择(x个->集合搜索(辅音, x个), 这个法国人, 1));

李斯特对于(j个 = 1, #辅音索引, 如果(#选择( -> == 辅音索引[j个] + 字符偏移, startseq(启动序列)) == 0, 如果(序列索引 + j个 - 1 <= n个) , 序列[序列索引] ={辅音索引[j个] + 字符偏移; seqindex公司++)));

my(startseq=[4],charoffset=0,seqindex=#startseq+1,seq=Vec(startsey,n));

如果(n<=#startseq,seq[1..n],对于(term=1,n,my(thisfrench=Vec(法语(seq[term]))),辅音索引=select(x->setsearch(Vec(“bcdfghjklmnpqrstvwxyz”),x),thisfrench,1));

对于(j=1,#辅音索引,如果(#select(i->i==辅音索引[j]+charoffset,startseq)==0,如果(seqindex+j-1>n,return(seq),seq[seqindexe]=辅音指数[j]+charoffset;seqindex++));

charoffset+=#这个法语))};

序列号)}

状态

提出

编辑

#30通过米歇尔·马库斯2023年1月2日星期一14:58:45 EST
状态

编辑

提出

讨论
2002年1月1日星期一
15:51
泰勒-巴斯比:我可以用短语表达!
15:59
泰勒-巴斯比:只需注意,代码现在可以在47毫秒内计算100000个项,以证明其速度:)
2003年1月2日星期二
06:16
凯文·莱德:在程序代码中,gettime()是自上次以来的简单时间。
06:19
凯文·莱德:如果你有三个差不多一样的程序,那么上传可能有共同的内脏,每个序列都会调用特定的启动。这也为French()提供了运行空间,并增加了布局。
06:25
凯文·莱德:我有点倾向于不使用辅音索引[],只检查这个法语的每个字符。
06:27
凯文·莱德:顺便说一句,没有固定的折叠,所以Vec(“bcdfghjklmnpqrstvwxyz”)每次都会分裂。不会有太大的区别,但可以在一个变量中创建(可能在函数之外),以便根据您的选择一次创建一次。
13:45
泰勒-巴斯比:我同意可以提取辅音(不知道PARI没有常数折叠),并且应该提取通用代码。我现在已经做了这两个更改。但我认为在这里复制French()不是一个好主意,因为如果它有错误或者需要改进,并且它在A167507上得到了修复,那么它很可能会在这里被破坏。它也是大量的代码(在oeis上呈现为15行)。以这种方式引用它可以保持简洁的作者资格认证。至于删除辅音索引[],我认为这不会提高算法的渐近性能。它可能在内存占用方面有一些微小的改进,但我认为,在生成100000个术语所需的时间不到一秒钟的情况下,此时必须完成的索引运算量将使程序更难理解。但如果你对此有强烈的感受,我可以尝试这样做!我仍然能发现的主要依赖于输入的性能改进是,startseq仍然在每一步进行检查,但我不确定为了可读性,是否值得在此时进行优化。我还不太熟悉如何在PARI中简洁地删除向量的单个元素。(concat(startseq[1..j-1],startseq[j+1..#startseque])?)
#29通过米歇尔·马库斯2023年1月2日星期一14:58:36 EST
名称

A类 -单调的 模拟 属于 A139212号 在里面 哪一个 这个 序列 描写 序列 描述 序列用法语书写时辅音的位置(版本1)。

状态

提出

编辑

讨论
2002年1月1日星期一
14:58
米歇尔·马库斯:这样好吗?
#28通过泰勒-巴斯比2023年1月2日星期一14:46:45 EST
状态

编辑

提出

讨论
2002年1月1日星期一
14:52
米歇尔·马库斯:您可以尝试默认(计时器,1)
14:53
安德鲁·霍罗伊德:在pari/gp中,如果输入#+enter,则将打开计时。
#27通过泰勒-巴斯比2023年1月2日星期一14:44:51 EST
黄体脂酮素

如果(n<=#startseq,seq[1..n],对于( 学期 =1,n,my(thisfrench=Vec(法语(seq[学期])),辅音索引=select(x->setsearch(Vec(“bcdfghjklmnpqrstvwxyz”),x),thisfrench,1));

for(j=1,#辅音索引,if(#选择( -> ==辅音索引[j]+字符偏移,startseq)==0,如果(seqindex+j-1<= > 编号:,返回(序列), seq[seqindex]=辅音索引[j]+字符偏移;seqindex++));

charoffset+=#这个法语);)}

序列号)}

讨论
2002年1月1日星期一
14:46
泰勒-巴斯比:实现了第三个建议,程序现在保留3个运行索引:字符偏移量(我们处理了多少法语字符)、序列索引(在序列中插入新辅音索引的位置)和术语(我们为序列的哪个术语生成法语)。一旦我们填充了预先分配的向量,并且在生成所有法语之前,程序就会返回。现在它似乎很快,尽管我不确定如何以pari方式执行基准测试(与python的时间相同)
#26通过泰勒-巴斯比美国东部时间2023年1月2日星期一14:31:22
黄体脂酮素

我的(startseq=[4],序列号 字符偏移 = 0, 序列索引 =Vec公司(凹面(concat)(应用(法国人, #startseq(启动序列)))), + 1, seq=Vec(startseq,n));

如果(n<=长度(#startseq(启动序列)), , 序列[1..n],用于(i)=长度(startseq(启动序列)) + 1,n,对于我的(这个法国人 = Vec公司(法国人(j个 序列[])), 辅音索引 =选择(x个->集合搜索(Vec公司("bcdfghjklmnpqrstvwxyz公司"), x个), 这个法国人, 1, 长度(startseq(启动序列)), 如果(startseq(启动序列)[j个] <= 长度(序列号), seqstr公司[startseq(启动序列)[j个]] = " "));

my(index=select(x->setsearch(Vec(“bcdfghjklmnpqrstvwxyz”),x),seqstr,1)[1]);

序列号 = 凹面(concat)对于(序列号, Vec公司j个 = 1, #辅音索引, 如果(法国人#选择(指数)) -> == 辅音索引[j个] + 字符偏移, startseq(启动序列)); == 0, 如果(序列索引 + j个 - 1 <= n个, 序列[序列索引] =指数辅音索引[j个] + 字符偏移; 序列索引++)));

seqstr[index]=“”);

charoffset+=#thisfrench);