fn CopyArr arr = return for el in arr collect el
---------------------------
fn OptimisedArr arr =
(
local newArr = #()
for el in arr where (findItem newArr el == 0) do
append newArr el
return newArr
)
--其实吧数组在倒腾一下就好, 这个很经典, 下面看看我之前写的唯一化的的东东,
--大家看看我写的,真实太繁琐了。
---这些代码就可以吧数组唯一化。
--其实这个数组很不严谨。如果数组没有一样的。就不行了。必须又一个一样的才能出来。 什么时候用在整理把。
fn weiyipailei jk =
(
oop= jk.count-1 ---输入的数组数量少1
stringarray =#()
for i in 1 to oop do
(
linshi =i as string --把元素转成字符串。
oom = i+1 --其实就是递归比较。
for m in oom to jk.count do ---从前一个网后走。
(if jk[i]== jk[m] then
(
linshi+= "-" +m as string --- 进行字符串的罗列相加。
)--end for
)
----- 这个其实是我之前写别的查找相同 写的。
--顺便改成了数组唯一化得。
if (filterString linshi "-" ).count >1 then
(
append stringarray linshi
)---end if
)---end for i
---通过上面的循环我们就知道了数组内相同的一些。
---上面会出现金子塔的东西 如1—2—3 2—3 就会出现这样的相同的形式。
if stringarray.count >=1 then --如果是真的有相同的数量的话
(
xin=#()
yytadd_mat_dao=#()
map_ = stringarray.count-1
map__= stringarray.count
for m in 1 to map_ do
(
ecct= m+1
for each in ecct to map__ do
(
---再次内部比较,如果查找到字符中有 1—2—3 2—3 的, 通过下面的查找,就真正的查找到了相同的东西。
if( findString stringarray[m] stringarray[each] != undefined ) then
(
append yytadd_mat_dao stringarray[each] ---把唯一的元素加入到数组。
)
)
)
for nu in stringarray do ---这里由加入了一个数组唯一化的东西。其实我觉得这里应该不用加入。因为是这样的,上面应该数组唯一化了。
--这里就是个保险
(
if findItem yytadd_mat_dao nu ==0 then
append xin nu
)
)
tiqu_shuzu =#()
tiqu_shuzu_ling =#()
---------------------------在这里不是对所有的是有处理的, 如 mun[1]as integer 必须保证能转化。 所有我这个还是应用到材质上的。
for i in xin do
(
mun = filterString i "-" ---这个只能是说 或数组字符数组, 要不下面就是没有办法满足。
append tiqu_shuzu jk [mun[1]as integer]
)---end for
for i in jk do
(
if findItem tiqu_shuzu i ==0 then
append tiqu_shuzu_ling i
)---end for
sort ( tiqu_shuzu+ tiqu_shuzu_ling)
)