Group: Difference between revisions

From The K Language Wiki
Content added Content deleted
No edit summary
(add K2/K3 impl)
Line 7: Line 7:
`a`b`c`d`k!(0 1 7 8;,2;3 4 6;,5;,9)
`a`b`c`d`k!(0 1 7 8;,2;3 4 6;,5;,9)
</pre>
</pre>




The [[keys]] from the '''group''' dictionary represent the [[distinct]] elements of the array.
The [[keys]] from the '''group''' dictionary represent the [[distinct]] elements of the array.
Line 19: Line 21:
"abrcd"
"abrcd"
</pre>{{Works in|ngn/k}}
</pre>{{Works in|ngn/k}}


In K2 and K3, the group primitive returns a nested array:<pre>
="abracadabra"
(0 3 5 7 10
1 8
2 9
,4
,6)
</pre>{{Works in|Kona}}

In order to mimic the K6 behaviour, you can use [[distinct]]: <code>{(?x)!=x}</code> to get a dict.

<pre>
{(?:x)!=x}`a`a`b`c
.((`a
0 1
)
(`b
,2
)
(`c
,3
))
</pre>{{Works in|Kona}}

Revision as of 05:36, 11 July 2021

Group
=x

The group primitive, denoted by =, is used to group the indices of an array by the values they represent in the array, returning a dictionary.

 =`a`a`b`c`c`d`c`a`a`k
`a`b`c`d`k!(0 1 7 8;,2;3 4 6;,5;,9)


The keys from the group dictionary represent the distinct elements of the array.

 ="abracadabra"
"abrcd"!(0 3 5 7 10;1 8;2 9;,4;,6)

 !="abracadabra"
"abrcd"
 ?"abracadabra"
"abrcd"
Works in: ngn/k


In K2 and K3, the group primitive returns a nested array:

 ="abracadabra"
(0 3 5 7 10
 1 8
 2 9
 ,4
 ,6)
Works in: Kona

In order to mimic the K6 behaviour, you can use distinct: {(?x)!=x} to get a dict.

 {(?:x)!=x}`a`a`b`c
.((`a
   0 1
   )
  (`b
   ,2
   )
  (`c
   ,3
   ))
Works in: Kona