项目介绍:simpletex-webapi

一个借用SimpleTex解决在线Tex文档识别的方案

This is default featured slide 3 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 3 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 4 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 5 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

2024年8月7日星期三

[牢骚]幽默TileMap.Scale对2D游戏Posiotion的影响

 今天跟着教程调试某2D界面,发现人物绘图总和给定的position存在偏差,并且移动不按照现有的格子一格一格的移动.

最后通过断点确定了不是TileMap.Tileset.TileSize的问题.而是TileMap.Scale的问题,不知道是误操作还是默认的设置,总之这里的Scale不是(1,1).找到TileMap中Transform->Scale设置改回1,1就行了



2024年8月3日星期六

记录一次关于GetNode方法的GoDot 4.2 (采用c#脚本)的踩坑

note1

记录一次关于GetNode方法的GoDot 4.2 (采用c#脚本)的踩坑

前言:笔者是第一次使用godot,c#的一些高级特性也不是很精通.今天在跟着b站上视频教程时遇到了奇怪的问题,具体报错如下

在这里我实现了Fsm类,并在一个Main.cs文件中导入这个节点GetNode<Fsm>("%Fsm")

将此行_fsm = GetNode<Fsm>("%Fsm");注释并使用GetNode("%Fsm"),发现返回值为Node,并且该Node实例没有任何属性.

 

原因和解决

windows的godot4.2没有对场景的自动保存,因此在为场景添加c#脚本后需要手动保存,否则即使创建了c#脚本文件,但是没有和场景进行绑定.

由此,在前面的代码中实际上节点Fsm是不在节点Main下的.

手动指定Script后恢复正常.

QQ_1722675297455

 

2024年5月15日星期三

[引路]gin-中间件next方法原理解析

原文链接:
https://blog.dianduidian.com/post/gin-%E4%B8%AD%E9%97%B4%E4%BB%B6next%E6%96%B9%E6%B3%95%E5%8E%9F%E7%90%86%E8%A7%A3%E6%9E%90/

  1. 中间件代码最后即使没有调用Next()方法,后续中间件及handlers也会执行;
  2. 如果在中间件函数的非结尾调用Next()方法当前中间件剩余代码会被暂停执行,会先去执行后续中间件及handlers,等这些handlers全部执行完以后程序控制权会回到当前中间件继续执行剩余代码;
  3. 如果想提前中止当前中间件的执行应该使用return退出而不是Next()方法;
  4. 如果想中断剩余中间件及handlers应该使用Abort方法,但需要注意当前中间件的剩余代码会继续执行。

2024年4月15日星期一

Compile Principle Chapter 3 Notes

doc3

Compile Principle Chapter 3 Notes

Key: DFA、NDFA, NDFA到DFA的转换, 正规文法与FA, 正规表达式与FA

编译原理 3rd 章笔记

有穷自动机的形式定义

确定的有穷自动机DFA (5元组)

DFA=(Q,,t, ,F)

Q—有穷非空的状态集

— 有穷的输入字母表 。

, 是开始状态

F——, 非空终止状态集合 。

t — 单值映射​。t(q,x)=q'

“确定”: 当前状态和下一个输入字符惟一地确定了后继状态。

表示

FA的表示:

  1. 状态转换表

    列key为字母(路径),行Key为状态

    QQ截图20240415171727

  2. 状态转换图

    类似数电里学的状态转移图,只不过终态用双圆圈

    QQ截图20240415171659

image-20240415171948333

如此,有穷自动机就可以识别符号串了

FA等价性

如果两个有穷自动机A_1和A_2满足

则称自动机是等价的。

image-20240415172230233

非确定的有穷自动机NDFA (5元组)

非确定的有穷自动机NDFA

Q一有穷非空的状态集

, 是开始状态集

F— , 非空终止状态集合 。

t— 多值映射

image-20240415172652278

NDFA与DFA的转换

  • DFA是NDFA的特例
  • 对每个NDFA N一定存在一个DFA M,使得L(M)=L(N)。即对任意的NDFA N存在与之等价的DFA M。但这种DFA M可能不唯一

确定化-造表法

一些定义

image-20240415173230143

image-20240415173239843


为避免不可达状态,从初始状态出发,计算t′,依次构造其后继状态,进行确定化

image-20240415173020316

image-20240415173457766

完整过程参考示例请见NFA的确定化珞辰的技术博客51CTO博客


最小化,化简

完整过程参考示例请见DFA 的化简_dfa化简-CSDN博客

寻找一个状态数比M更少的DFA Mˊ,使得M和Mˊ所识别的字符串相同,即L(M)=L(Mˊ)。(Mˊ唯一的)

条件:接受的语言相同(等价的DFA)

主要思想:

  • 合并等价状态

    • 等价状态 :如果从DFA 的某个状态q1出发能识别某一字符串x而停止于终态,那么从q2出发也能识别字符串x而停止于终态;反之亦然。则称状态q1 和q2 是等价的。如果q1 和q2 不等价,则说q1 和q2 是可区分的。

      Note

      两个终态不一定相等,假设有两个终止态F1,F2,但是这两个终止态又是等价的

    • 最小化算法(划分法):DFA最小化的关键在于把它的状态集分成一些两两互不相交的子集,使得任何两个不同的子集中的状态都是可区分的,而同一子集中的任何两个状态都是等价

  • 删除无关状态

步骤一 构造状态集的划分

  • 终止状态集 / 非终止状态集
  • 对每一个子集进行再分解(属于同一子集的任意状态q1和q2,对于任何a ,t(q1 ,a)与t(q2 ,a)属于同一子集。)

步骤二 取每一组中的一个状态作代表 ,合并等价状态

步骤三 删去无关状态

  • 不可达状态
  • 死状态

image-20240415220222580

 

正规文法与FA

RG: 生成规则,FA:识别(接受)

定理

  1. RGFA 由正规文法G[S]可直接构造一个与之等价的FA A,使得L(G)=L(A)。
  2. FARG 由有穷自动机FA A可直接构造一个与之等价的正规文法G,使得L(G)=L(A)。

构造

  1. RGFA的构造:
  • 令G的终结符号集为A的字母表;
  • 增加一个终止状态Z(Z);
  • 形如U→a的规则,引一条从状态U到终止状态Z的标记为a的 弧;
  • 形如U→aW的规则,引一条从状态U到W的a弧。
  1. FA RG的构造

    1. 自动机A中的每一个状态均作为G的非终结符号,其中A的开始状态作为G的开始符号,A的输入字母表中的所有符号作为G的终结符号;

    2. 对A中的映射,构造G的产生式UaV , 则构造G的产生式 U::=a;

      1. 若A中, 则构造G的产生式S​。
  2. FA RG的构造

    1. 自动机A中的每一个状态均作为G的非终结符号,其中A的开始状态作为G的开始符号,A的输入字母表中的所有符号作为G的终结符号:
    2. 对A中的映射,构造G的产生式U::=aV;
    3. 对A中终止状态Z,构造G的形如Z::=​的产生式。

 

正规(正则)表达式RE

不在赘述,重点是使用汉语简介地描述正则表达式的含义

注意用词

举例

(8) Ф​​

定义

正规表达式等价

设e1,e2均为∑上的正规表达式,若 L(e1 )=L(e2 ),则称e1与e2等价,记为:e1 =e2。

如b(ab)* = (ba)*b

image-20240415222306102

end ppt 62nd page