umajho / dicexp

Dicexp 是一种表示掷骰的表达式。本仓库代码用于对该表达式求值,并作为该表达式的事实标准。
https://umajho.github.io/dicexp/
MIT License
2 stars 0 forks source link

执行限制 #3

Closed umajho closed 1 year ago

umajho commented 1 year ago

可以考虑的限制有:

有些操作比较昂贵(比如引入 bigint 后的指数操作,不会止步于无限),判断是否超出限制时应该注意切成多块。

限制时间:表达式在 worker 中求值,超时时尝试软性中断(在中断处造成 RuntimeError,用以溯源),没有响应则硬性中断(步骤全无,只剩一个 RuntimeError)。

umajho commented 1 year ago

除此之外,还可以对结果包含的值的数量做限制。

umajho commented 1 year ago

已在 https://github.com/umajho/dicexp/commit/5459b51fcc2cc0747c2be5d3db9f1e980be9b71e 完成支持部分软性的限制,硬性的时间限制则需要等实现用 WebWorker 执行表达式。

决定不限制总步骤数和最大深度,改而允许限制总计调用次数。(软性的时间限制也在统计调用次数途中检查。)

umajho commented 1 year ago

硬性超时限制先前已于 https://github.com/umajho/dicexp/commit/bd410f2b3b881d31c38245b9d01f54a43df24f48 实现。