如何实现我的语言? 我的瓷砖?
sage.categories.examples.languages:两个语言示例。 回文语言 (回文语言)和 统一单体 ({a,b}上包含a和b的自由幺半群的子幺半群)。 sage.monoids.free-monoid:自由monoid的实现。 sage.combint.languages.*:大多数语言的实现应该去哪里(目前只有一个_balancedlanguage和finite_word\language)
sage.类别.移位 sage.dynamics.symbolic.full_shift:全班
结构
概述
sage.categories:大多数通用代码都包含在这里。 .languages:语言是A^*的子集,其中A是一个称为字母表的集合。 它由N自然分级,分级称为长度。 .shifts:移位A^G的范畴(其中G是一个半群,其操作x->gx对G中的任何G都是内射的,A是一个称为字母表的集合)
sage.combinat.words公司 有限和无限单词的数据结构 与以前版本的向后兼容性 态射(我们应该把它移到sage.monoids.free_moid_morphism吗?)
鼠尾草类群 .free_monoid:自由monoid(替换sage.combint.words.words.words的一部分)
sage.dynamics.符号 .full_shift:完整移位的实现(替换sage.combint.words.words的一部分)
sage.combinat.语言 不同语言的实现(平衡语言、有限词语言……) 特定的数据结构(后缀树/trie、rauzy图、返回树…)
有限单词类
sage.combinat.words.word_sequence Word_char:其底层数据结构是无符号字符的C数组的单词 Word_python_object:上面专门用于字符串的子类
这两个类受益于纯C实现的算法,这些算法可以在sage.combinat.words.algorithms中找到
sage.combinat.words.lazy_word: FiniteWord(有限单词) _iterable:根据迭代器构建的单词 FiniteWord(有限单词) _可调用:从函数构建的单词 级联有限元 :单词构建为两个单词的串联(此类用于连接大型单词)
评论
泛型代码的继承 对于想要找到方法实现的用户来说有点困惑 对于编写代码并问“我应该把这个放在哪里?” ...
算法和命名约定
鼠尾草:w1==w2
测试前XXX个字母以找出差异。 如果find-one返回False,则会引发错误,“似乎等于use.is_equal(force=True)启动无限测试”。 测试所有字母,如果相等,则不返回True
帕里克氏病媒、评估、变异
模式匹配
x.find(y[,开始[,结束]]) :搜索x中第一个出现的y[开始:结束]。 返回事件的位置,如果失败,返回-1。 x.rfind(y[,开始[,结束]]) :向后搜索x中第一个出现的y[start:end]。 返回出现故障时的位置或-1(不适用于无限字)。 x.find_iter(y,[,start[,end]]) :返回x中y出现位置的迭代器[start:end]。 x.rfind_iter(y,[,start[,end]]) :同上但向后(不适用于无限字)。 x.find_all(y,[,开始[,结束]]) :返回y在x中出现的列表[start:end]。 x.count(y[,开始[,结束]]) :计数x中y的出现次数[开始:结束]。
sage:w1=单词('ababaabaaababa',字母='ab') sage:w2=单词('ababaaaa',字母='ab') 圣人:w1.find('aa') 5 圣人:w2.查找('aa') 6
sage:w=单词('ab',字母表='ab') sage:f=查找器(w) sage:f.match(单词('ababababaababbabababbabababa',字母='ab')) ...
重复次数和指数
最小_周期 指数 有_周期 周期([divide_length]) 秩序 临界指数 基本_长度 is_primitive(原始) 原始的 重叠(_O)
子项目
有限语言与因子集
替代语言和adic语言
最终周期性语言/单词
TODO列表
使用doc和tests更新阶乘语言:任务由 蒂埃里·蒙蒂尔 在sage.categories.example.factorial_languages.py中实现阶乘语言的一个简单示例:任务由 蒂埃里·蒙蒂尔 想想命名约定。 例如,要获取语言L中长度为n的单词子集,您更喜欢L.subset(n=4)还是L.subsette(length=4):task take by 文森特德莱克索瓦 为回文闭包创建一个专用类 确保sage.categories.languages中的方法。 元素方法 尽可能少 wordspath(目前在sage.combint.words.paths中)必须修改以适应新的实现(问题:我们现在应该这样做吗?) 与以前的实现向后兼容(特别是在酸洗方面) 区分有限/无限/枚举/有序字母表(尤其是用特定类别初始化父字母表时)
特定数据结构rauzy图和返回树(Thierry) 有限型/sofic的一维子移位 n维有限字与n维移位 有限型n维子移位 n-dim代换子移位 细胞自动机 ... 添加您的呼声