优化一个函数,将字符串的每个字符转换为q kdb中的一个符号
Optimize a function to convert each character of a string to a symbol in q kdb
我必须编写一个函数,它将整数作为输入参数,return 一个按字母顺序排列的符号列表用于这么多符号。
例如。比如说,如果函数的输入是 4,那么输出应该是 a
bc
d。
P.S如果输入是27那么输出可以是a-z然后重复a.
我想到的解决办法是:
q)f:{(`$(x;0N)#x#.Q.a)}
q)f 4
`a`b`c`d
q)f 5
`a`b`c`d`e
有人可以向我推荐一个 better/optimized 解决方案吗?
另外,有没有更好的方法将字符串转换为
以外的符号列表
{(`$(x;0N)#x#.Q.a)}
您可以尝试以下一种:
{`$/:x#.Q.a}
其中向符号 `$
的转换应用于右侧的每个元素。
我想下面应该是你想要的:
q) {`$'x#.Q.a}5
`a`b`c`d`e
如果您打算将此函数用于 list/vector 个整数,那么这种准向量化方法应该比函数 each 更快:
q){x#\:`$'.Q.a}5 1 10 28
`a`b`c`d`e
,`a
`a`b`c`d`e`f`g`h`i`j
`a`b`c`d`e`f`g`h`i`j`k`l`m`n`o`p`q`r`s`t`u`v`w`x`y`z`a`b
我必须编写一个函数,它将整数作为输入参数,return 一个按字母顺序排列的符号列表用于这么多符号。
例如。比如说,如果函数的输入是 4,那么输出应该是 a
bc
d。
P.S如果输入是27那么输出可以是a-z然后重复a.
我想到的解决办法是:
q)f:{(`$(x;0N)#x#.Q.a)}
q)f 4
`a`b`c`d
q)f 5
`a`b`c`d`e
有人可以向我推荐一个 better/optimized 解决方案吗?
另外,有没有更好的方法将字符串转换为
{(`$(x;0N)#x#.Q.a)}
您可以尝试以下一种:
{`$/:x#.Q.a}
其中向符号 `$
的转换应用于右侧的每个元素。
我想下面应该是你想要的:
q) {`$'x#.Q.a}5
`a`b`c`d`e
如果您打算将此函数用于 list/vector 个整数,那么这种准向量化方法应该比函数 each 更快:
q){x#\:`$'.Q.a}5 1 10 28
`a`b`c`d`e
,`a
`a`b`c`d`e`f`g`h`i`j
`a`b`c`d`e`f`g`h`i`j`k`l`m`n`o`p`q`r`s`t`u`v`w`x`y`z`a`b