木兰编程语言重现:引用本地木兰模块;模拟凑十法加法
之前一直没重现本地包内的木兰模块引用,导致提取出的模块只能放在项目根目录下。
上周终于搞定。于是将上次的摆放规划应用的源码拆分成几个模块,比如测试/实用/规划/点.ul
,在主模块中可以如此引用using 点 in 测试.实用.规划.点
。不需要在包中放置类似__init__.py
。
其他新添功能
字符串拼接时的报错信息
(..•˘_˘•..) 字符串只能拼接字符串,请将"int"先用 str() 转换 见第1行:print("1" + 2)
对匿名函数指定返回类型
type 形状 { {} } print(func (边长) : 形状 { return 形状() }(1) != nil)
查询字典中是否包含某个键
之前是用__contains__
,一直觉得不爽,现在用get
代替,比如:字集.get(字) != nil
新实例
最近看到幼儿数学启蒙时的一种“凑十法”,比如求 9+7,先把 7 拆为 1 和 6,而 9+1 = 10,最终得出 16。感觉小孩似乎不需要真正用“加法”运算。模拟解题过程如下:
拆分 = { 2 : [[1, 1]], 3 : [[1, 2]], 4 : [[1, 3], [2, 2]], 5 : [[1, 4], [2, 3]], 6 : [[1, 5], [2, 4], [3, 3]], 7 : [[1, 6], [2, 5], [3, 4]], 8 : [[1, 7], [2, 6], [3, 5], [4, 4]], 9 : [[1, 8], [2, 7], [3, 6], [4, 5]], 10 : [[1, 9], [2, 8], [3, 7], [4, 6], [5, 5]] } func 取剩余(整体, 部分) { for 两部分 in 拆分[整体] { if 两部分[0] == 部分 { return 两部分[1] } elif 两部分[1] == 部分 { return 两部分[0] } } } func 凑十法求和(基数, 被拆数) { 凑数 = 取剩余(10, 基数) 拆得数 = 取剩余(被拆数, 凑数) return "1" + str(拆得数) } println(凑十法求和(9, 7))
本来可以用index
取列表中元素所在位置,但由于尚未支持捕获异常,只得用原始搜索。
代码统计
下面是几个主要部分的代码行数统计,格式为:上次->现在。
- 测试
- 木兰测试用例:1590 -> 1700
运行测试.py
,检验所有木兰测试代码片段:154 -> 156- 未变
test语法树.py
,确保生成的语法树与原始版本一致:67
- 实现:2183 -> 2169
分析器/语法分析器.py
:944 -> 881分析器/语法树.py
对 ast 库的中文封装,进行了重构简化代码:234 -> 178环境.py
,加载木兰模块:97 -> 123分析器/语法成分.py
,从语法分析器中提取出来的枚举常量:77功用/反馈信息.py
:45 -> 49- 未变
分析器/词法分析器.py
:190演示高亮.py
:100中.py
,主程序:36

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
喵的Unity游戏开发之路 - 物理:表面接触,保持联系
前言 很多童鞋没有系统的Unity3D游戏开发基础,也不知道从何开始学。 为此我们精选了一套国外优秀的Unity3D游戏开发教程,翻译整理后放送给大家,教您从零开始一步一步掌握Unity3D游戏开发。 本文不是广告,不是推广,是免费的纯干货! 本文全名:喵的Unity游戏开发之路 - 物理 - 表面接触 - 保持联系 表面接触 保持联系 贴在地面,而不要从斜坡上飞走。 执行射线检测。 配置多层及其交互。 导航楼梯。 利用陡峭的接触(steep contacts)。 这是有关控制角色的运动的系列教程的第三部分。这是关于改善球体与曲面的相互作用。 本教程使用Unity 2019.2.14f1创建。它还使用ProBuilder软件包。 效果之一 跑酷的球。 贴在地面 当我们的球体到达坡道的顶部时,由于其向上的动量,它开始飞行。这是现实的,但可能并不理想。 球体在坡道顶部飞行。 当球体突然突然出现小的高差时,也会发生类似的情况。我制作了一个测试场景,以0.1增量的步长演示了这一步。 步骤测试场景。 如果步距不太高,则以足够的速度接近时,球体会反弹。在测试场景中,这对于平坦车道甚至很少发生,因为...
- 下一篇
云计算到底是谁发明的?
本文转载自微信公众号「鲜枣课堂」,作者小枣君 。转载本文请联系鲜枣课堂公众号。 说到云计算的起源,公众普遍认为,谷歌前CEO埃里克·施密特是云计算概念的第一个提出者。 2006年8月9日,在搜索引擎大会(SES San Jose 2006)上,他提出了“云计算(Cloud Computing)”的概念。 埃里克·施密特(Eric Schmidt) 也有人认为,当今云计算市场的龙头老大——美国亚马逊(Amazon)公司,在更早的2006年3月,就正式推出了自家的弹性计算云(Elastic Compute Cloud,EC2)服务,是事实上的云计算开创者。 其实,准确来说,不管是谷歌还是亚马逊,都不是云计算的发明人。云计算概念的提出,远比我们想象中要早得多。 今天这篇文章,我们就针对云计算来一次彻底的“寻根问祖”。 � Part.1 公共计算——云计算理论的萌芽 大家应该还记得,我们的计算机通识课本里说过,世界上第一台电子计算机是ENIAC(埃尼阿克)。 Electronic Numerical Integrator And Computer 电子数字积分计算机 其实,严谨来说,ENIAC...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8编译安装MySQL8.0.19