所有列表项目,包括第一个重复项目

Jon*_*nah 1 j

考虑:

x =. 0 1 2 3 4 1 3 4 99
v =. [ {.~ (>: @ i.&1 @ (#@~. = #\))
v x   NB. => 0 1 2 3 4 1
Run Code Online (Sandbox Code Playgroud)

行为是正确的.但正如你所看到的,v是可耻的冗长.有更好的解决方案吗?

Dan*_*ron 5

你想要monad ~:(nub筛):

   v =: {.~ 1 + 0 i.~ ~:

   x =: 0 1 2 3 4 1 3 4 99

   v x
0 1 2 3 4 1
Run Code Online (Sandbox Code Playgroud)

代码审查:

  • 在代码 - 高尔夫球场外,不要用来#\代替i.@#.它太可爱了,难以维护,并且不会被特殊代码优化器识别.
  • 不要指定名称x,y,u,v,m,或n(在一个明确的背景下除特殊情况外,并始终在本地).