找回密码
 加入
搜索
查看: 4835|回复: 7

[效率算法] 新版本的3.3.9以上的Assign是不是不支持中文了

  [复制链接]
发表于 2015-6-10 18:25:06 | 显示全部楼层 |阅读模式
本帖最后由 tryhi 于 2015-6-10 18:32 编辑

http://www.autoitx.com/forum.php?mod=viewthread&tid=22107
8楼3mile的去重复非常高效,当时用3.3.6.1,现在发现新版本用不了,现在的新版还有什么比这个更高效的去重复算法


Assign('啊','测试文本')
MsgBox(0,0,Eval('啊'));新版本无效了





#include <Array.au3>
Local $rarray[12] = ['中文','中文','汉字','汉字','中文','string','string',5,5,6,7,5]
$a = del_chongfu($rarray)
_ArrayDisplay($a,Eval(5))
Func del_chongfu($array)
        Local $rarray[1] = [$array[0]],$temp
        Assign($array[0], 0)
        For $i = 1 To UBound($array)-1
                $temp = $array[$i]
                If Not IsDeclared($temp) Then
                        Assign($temp, $i)
                        ReDim $rarray[UBound($rarray)+1]
                        $rarray[UBound($rarray)-1] = $temp
                EndIf
        Next
        Return $rarray
EndFunc



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2015-6-10 19:50:58 | 显示全部楼层
_ArrayUnique
发表于 2015-6-10 20:55:25 | 显示全部楼层
3.3.9.4 可以得出正确结果
发表于 2015-6-10 21:38:36 | 显示全部楼层
本帖最后由 make2855 于 2015-6-10 21:51 编辑

v 3.3.13.20
#include <Array.au3>

Local $rarray[36] = ['中文','中文','汉字','汉字','中文','string','string',5,5,6,7,5,'中文','中文','汉字','汉字','中文','string','string',5,5,6,7,5,'中文','中文','汉字','汉字','中文','string','string',5,5,6,7,5]
$t1 = TimerInit() 
$a = del_chongfu($rarray)
$d1 = TimerDiff($t1)
_ArrayDisplay($a,"Time : " & Round($d1,1))

$t2 = TimerInit() 
$b =  Unique($rarray)
$d2 = TimerDiff($t2)
_ArrayDisplay($b,"Time : " & Round($d2,1))

Func Unique($Array)
        If Not UBound($Array) Then Return ""
                
        Local $Map[]
        For $i In $Array
                If Not MapExists($Map, $i) Then $Map[$i] = ""
        Next
        
        Local $MapKey = MapKeys($Map)
        Local $Ret[UBound($MapKey)]
        For $i = 0 To UBound($MapKey) -1
                $Ret[$i] = $MapKey[$i]
        Next
        
        Return $Ret
EndFunc

Func del_chongfu($array)

        Local $rarray[1] = [$array[0]],$temp

        Assign($array[0], 0)

        For $i = 1 To UBound($array)-1

                $temp = $array[$i]

                If Not IsDeclared($temp) Then

                        Assign($temp, $i)

                        ReDim $rarray[UBound($rarray)+1]

                        $rarray[UBound($rarray)-1] = $temp

                EndIf

        Next

        Return $rarray

EndFunc

评分

参与人数 1金钱 +50 贡献 +2 收起 理由
tryhi + 50 + 2 感谢

查看全部评分

 楼主| 发表于 2015-6-10 22:28:47 | 显示全部楼层
回复 4# make2855


    厉害啊,原来现在新出了MapKeys这类函数啊
发表于 2015-6-11 08:50:49 | 显示全部楼层
学习了。。。。。。。。。。
发表于 2015-6-11 13:55:13 | 显示全部楼层
新版本?哪来的新版本?

评分

参与人数 1金钱 +10 收起 理由
tryhi + 10 现在下载的都是新版本

查看全部评分

发表于 2015-6-15 23:04:18 | 显示全部楼层
3.3.13.20才有MapExists()函数啊,我现在用3.3.12.0没有。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-23 01:47 , Processed in 0.099770 second(s), 29 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表