pusofalse 发表于 2010-3-15 19:27:59

趣味正则:用正则匹配3的倍数

本帖最后由 pusofalse 于 2010-3-15 20:05 编辑

此题非以往的练习,只是突发奇想地想到这么个题目,有兴趣的来思考下,绝对一道是发散思维的题目。
用户输入一个10进制数,用正则判断此数是否是3的倍数,不能用运算符号和运算函数(mod)。
自己本人也没有清晰的解题思路,发上来纯粹是因为无聊加为了娱乐,没有兴趣的诸位请华丽地无视。

afan 发表于 2010-3-15 19:48:24

应该不是这个意思…… :face (32):$a = '300'
If StringRegExp($a / 3, '\.') Then
        MsgBox(0, 0, $a & ' 不是3的倍数')
Else
        MsgBox(0, 0, $a & ' 是3的倍数')
EndIf

水木子 发表于 2010-3-15 19:49:40

本帖最后由 水木子 于 2010-3-15 20:16 编辑

老师是这意思吗?$a = InputBox('提示', '请输入一个十进制数')
If Not @error And $a <> '' Then
        If StringRegExp($a / 3, '\.') Then
                MsgBox(16, '匹配结果', $a & '不是3的倍数' & @CRLF & '因为: ' & $a & '/3' & '=' & $a / 3)
        Else
                MsgBox(64, '匹配结果', $a & '是3的倍数' & @CRLF & '因为: ' & $a & '/3' & '=' & $a / 3)
        EndIf
EndIf

pusofalse 发表于 2010-3-15 20:02:46

回复2#、3#:
不是这个意思,抱歉,怪我没说清楚,表达式中不能有任何的加减乘除和取余运算,只用正则:
$iNum = 5
StringRegExp($iNum, ???)

水木子 发表于 2010-3-15 20:04:46

回复 4# pusofalse
就是嘛!是说老师怎么可能出这么简单的题,有难度再想想!

pusofalse 发表于 2010-3-15 20:08:39

回复 5# 水木子

    谢谢水木子兄抬爱,不要再叫老师了,真的不要再这样叫了。

afan 发表于 2010-3-15 20:11:10

回复 4# pusofalse


    不知道能用循环不?呵呵

pusofalse 发表于 2010-3-15 20:21:43

回复 7# afan


    我想是可以这样做的。在没有实现之前,应该尽量将条件放宽一些。
结合正则和循环语句,在实现之后,再一步步加大难度,只用一句正则。

hbyyan 发表于 2010-3-15 20:22:06

真都是高人也啊!我正在学呢

afan 发表于 2010-3-15 20:27:16

本帖最后由 afan 于 2010-3-15 20:30 编辑

回复 8# pusofalse


    :face (33):Local $iNum = 5
Local $str
For $i = 1 To $iNum
        $str &= '.'
Next
If StringRegExp($str, '^(...)+$') Then
        MsgBox(0, 0, $iNum & ' 是3的倍数')
Else
        MsgBox(0, 0, $iNum & ' 不是3的倍数')
EndIf当然这不是“趣味正则”的主题了……

水木子 发表于 2010-3-15 20:33:36

回复pusofalse


    当然这不是“趣味正则”的主题了……
afan 发表于 2010-3-15 20:27 http://www.autoitx.com/images/common/back.gif
呵呵!厉害,靠数点(.)来做,真是没想到啊!

pusofalse 发表于 2010-3-15 20:36:37

果真思路独特,妙极了~

gapkiller 发表于 2010-3-15 20:37:08

回复pusofalse


    当然这不是“趣味正则”的主题了……
afan 发表于 2010-3-15 20:27 http://www.autoitx.com/images/common/back.gif

哈哈...高
不过太扯了, 要是$num比较大, $str不是超出范围了.....

gapkiller 发表于 2010-3-15 20:37:39

不懂正则的飘过...

水木子 发表于 2010-3-15 21:02:25

本帖最后由 水木子 于 2010-3-15 21:03 编辑

借afan前辈的思路,哎!再想想!#Include <Array.au3>
$i = InputBox('提示', '请输入一个十进制数')
Local $a[$i] = ['.']

$iNum = _ArrayToString($a, '.')
If StringRegExp($iNum, '^(...)+$') Then
        MsgBox(0, 0, $i & ' 是3的倍数')
Else
        MsgBox(0, 0, $i & ' 不是3的倍数')
EndIf
页: [1] 2
查看完整版本: 趣味正则:用正则匹配3的倍数