tryhi 发表于 2015-6-10 18:25:06

新版本的3.3.9以上的Assign是不是不支持中文了

本帖最后由 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 = ['中文','中文','汉字','汉字','中文','string','string',5,5,6,7,5]
$a = del_chongfu($rarray)
_ArrayDisplay($a,Eval(5))
Func del_chongfu($array)
        Local $rarray = [$array],$temp
        Assign($array, 0)
        For $i = 1 To UBound($array)-1
                $temp = $array[$i]
                If Not IsDeclared($temp) Then
                        Assign($temp, $i)
                        ReDim $rarray
                        $rarray = $temp
                EndIf
        Next
        Return $rarray
EndFunc


make2855 发表于 2015-6-10 19:50:58

_ArrayUnique

Alam 发表于 2015-6-10 20:55:25

3.3.9.4 可以得出正确结果

make2855 发表于 2015-6-10 21:38:36

本帖最后由 make2855 于 2015-6-10 21:51 编辑

v 3.3.13.20#include <Array.au3>

Local $rarray = ['中文','中文','汉字','汉字','中文','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
        For $i = 0 To UBound($MapKey) -1
                $Ret[$i] = $MapKey[$i]
        Next
       
        Return $Ret
EndFunc

Func del_chongfu($array)

      Local $rarray = [$array],$temp

      Assign($array, 0)

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

                $temp = $array[$i]

                If Not IsDeclared($temp) Then

                        Assign($temp, $i)

                        ReDim $rarray

                        $rarray = $temp

                EndIf

      Next

      Return $rarray

EndFunc

tryhi 发表于 2015-6-10 22:28:47

回复 4# make2855


    厉害啊,原来现在新出了MapKeys这类函数啊

zhaoyun 发表于 2015-6-11 08:50:49

学习了。。。。。。。。。。

cfanpc 发表于 2015-6-11 13:55:13

新版本?哪来的新版本?

xms77 发表于 2015-6-15 23:04:18

3.3.13.20才有MapExists()函数啊,我现在用3.3.12.0没有。
页: [1]
查看完整版本: 新版本的3.3.9以上的Assign是不是不支持中文了