好的写法 数组唯一化, 这个是多么的简单,。


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)
)

原文地址:https://www.cnblogs.com/gaitian00/p/2043308.html