- 博客(168)
- 收藏
- 关注
原创 NFA 通过子集法化成DFA
舍弃了 3,4,5,6 原因是形成新的集合后,没有可以到达的路径,本质是5号终态融合进了CDE状态中,只不过这些状态是5和其他状态叠加的,既是走到5状态,又是走到其他状态,但是只要是停留在5状态,就一定可以符合规定。
2025-04-08 19:38:12
20
原创 PL0 语法分析器 状态机 最后\0 单独检测发现可合并代码
手动解决由于从 fscanf 切换到fgets 读取多个空格导致空格加入到分割的词语中而不是过滤掉的问题。这样只有statu=1时,读入空白字符,statu=1,会继续清空旧数据。为减少代码量,修改函数发现不能合并情况,好奇怎么回事,于是又回到通关版本进行合并。因为退出状态一定是 statu=1,但是不知道之前有没有空格。但是statu=1时,新的数字要从0开始填充,于是num复位。对check 函数进行了修改。代码一样,只是增加了注释,以及复位statu =1。实际完善后的完整代码。
2025-03-21 11:50:33
484
原创 编译原理 pl0 词法解析器 使用状态机与状态矩阵,和查找上一步得到分析
大体思路是先区分数字,标识符,然后标识符再区分保留字这样。随后根据PL0 字符改状态机。状态矩阵,一行一行写。
2025-03-20 21:54:24
462
原创 希冀 利用fscanf 吸收回车特性 替换fgets 的回车保留实现四位数识别 状态机
有回车干扰,且消除 ‘\n'代码在希冀里不识别。fsacnf 读取回车时会替换为 ’\0'fgets 读取回车时会‘\'n。原来起点是1,终点是ERROR。
2025-03-17 20:10:01
126
原创 希冀代码本地运行成功,但上传不通过解决办法,原因是fgets函数读取回车,在if 比较中不能读取到‘\n‘ 字符量,但是能参与运算,会出现 -35情况。
修改后把回车符号去掉,就是在一开始fgets 读取一行后,直接把倒数第二个字符改成 '\0'怀疑了代码问题,结果打印执行序列,发现翻译正常,直接把网上的代码直接打印,说明这部分代码退出失效。否则应该退出循环,不再继续执行写入字符指令。传了一个PL0虚拟机代码,结果不输出,这个是测试代码,发现p写入回车到文件。
2025-03-03 19:16:13
217
原创 流体代码分析
一点散度,梯度,在推导过程,建议和 https://zhuanlan.zhihu.com/p/339092102 对比看。流体模拟算法,可和梦开始的地方对比,发现矩阵加速计算了。N-S 纳维-斯托克斯方程推导。拉格朗日,欧拉视角,半拉格朗日。高斯赛德尔迭代法代码C语言。从雅可比到高斯赛德尔迭代法。
2024-10-11 11:53:46
119
原创 raylib实现生产者消费者模型增加缓冲提高帧率
后来学了生产者消费者模型,尝试追加缓冲池,剥离主函数查找需要更新的数据。中间工程主要是探索数据结构体怎么安排。原来增加了四叉树导致帧率下降。帧率上升稳定到60帧。
2024-09-27 19:39:26
446
原创 多线程 二维数组 需要装箱
然后打印列表地址,发现除了数组越界 /500 %499 而不是 /500 %500 /499 %499。做游戏测试写入数组发现数据错误,捯饬半天,想起来二维数组的指针列表故事,尝试重新复制列表。然后测试不同结构体嵌套,直接 int* map 发现都可以。
2024-09-15 09:27:17
313
原创 Ubuntu 22.04 make menuconfig 失败原因
然后make munuconfig 即可。make menuconfig 又报错。然后 cd 到指定源代码。需要在内核文件目录下编译。
2024-09-07 12:19:59
391
原创 修复直线炮弹黑色点间隔BUG
往北走,东北偏,或者西北偏,这里测试等号,发现解决问题。注释掉代码测试往北的直线炮弹,确定代码范围。0.99改0.97摄像机放大缩小倍数。
2024-08-02 21:58:18
177
原创 raylib 直线炮弹与封装
修复 45° 和 0° 导致炮弹没有走 if 线 导致无法发射和 炮弹数目不回复问题,实际上是直线的长宽相等 或者等于0时,没有写入,所以不行。改大于为大于等于即可。
2024-07-24 13:53:27
262
原创 Raylib 手动实现AABB 碰撞与重叠检测
然后横着竖着,横着的四种情况里,其中一种情况会有四个竖着的情况,然后每个横着的情况 if就包含着4个,所以是 16个,当时粘贴改代码,花括号写错导致最后一个竖着碰撞的情况不显示,然后看了看if 代码对应情况才认识到是花括号导致某个if 被合并了。drawj+mousewidth 在不在区间【 targetj , targetj + targetwidth】targetj+targetwidth在不在区间【drawj , drawj + mousewidth】在区间,不在区间,这是两种情况。
2024-07-14 09:03:36
400
b站搬运 “这是怎么搓出来的?”从10行代码到400行代码的小工程,无中生有的各版本备份-EasyxDevC++开发绘图板
2023-12-23
EasyxDevC++开发地图编辑和游戏编辑代码工程文件附注释
2023-12-16
DevC++ 内置easyx之后,可以编译图形界面的,基于socket服务器demo
2023-12-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人