- A+

Category：Languages

I have the following table:

`t:([]sym:`eae`oco`khd`dga`eob`iog`edg`kio`gme`iko; val:1 0 5 1 0 0 1 7 6 3) sym val ------- eae 1 oco 0 khd 5 dga 1 eob 0 iog 0 edg 1 kio 7 gme 6 iko 3 `

What I want is to assign some `bucket`

value according to the following rules:

`if 0 <= val < 1, then bucket = 3 if 1 <= val < 3, then bucket = 8 if 3 <= val < 5, then bucket = 20 if 5 <= val , then bucket = 30 `

So similar to applying a step function to the values `val`

. The resulting table should look like this:

`sym val bucket -------------- eae 1 8 oco 0 3 khd 5 30 dga 1 8 eob 0 3 iog 0 3 edg 1 8 kio 7 30 gme 6 30 iko 3 20 `

Of course, I don't want to apply `if[if[...]]`

, and I am looking for an elegant q-ist solution.

The following works:

`update bucket: (`s#0 1 3 5!3 8 20 30)[val] from t `