MsgBox gen(1050, 2400) gen(a, b, q := '') { if !q { if a > b t := a, a := b, b := a a := String(Integer(a)) b := String(Integer(b)) } la := StrLen(a), lb := StrLen(b), s := '' if (la < lb) { loop (t := '', la) t .= '9' return gen(a, t, q) '|' gen('' t + 1, b, q) } else if (la == 1) return q (a == b ? a : a = '0' && b = '9' ? '\d' : '[' a '-' b ']') else { sa := SubStr(a, 1, 1) + 0, sb := SubStr(b, 1, 1) + 0 ua := SubStr(a, 2) + 0 ? sa + 1 : sa if (sa == sb) return gen(SubStr(a, 2), SubStr(b, 2), q sa) else if (ua < sb) { if ua && !(a ~= '^[1-9]0*$') s := gen(a, Format('{:0' la 'd}', ua * (10 ** (la - 1)) - 1), q) if (b ~= '^9+$') s .= '|' q (ua = 9 ? '9' : '[' ua '-9]') (lb > 2 ? '\d{' (lb - 1) '}' : '\d') else { db := sb - 1 s .= '|' q (db == ua ? ua : ua = '0' && db = '9' ? '\d' : '[' ua '-' db ']') '\d' (lb > 2 ? '{' (lb - 1) '}' : '') s .= SubStr(b, 2) + 0 ? '|' gen(Format('{:0' lb 'd}', sb * (10 ** (lb - 1))), b, q) : '|' q b } } else { if ua s .= '|' gen(a, Format('{:0' la 'd}', ua * (10 ** (la - 1)) - 1), q) s .= SubStr(b, 2) + 0 ? '|' gen(Format('{:0' lb 'd}', sb * (10 ** (lb - 1))), b, q) : '|' q b } } return LTrim(s, '|') }
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。
评论(0)