如何用 5 个字符的代码替换 kdb+ 列表中的零?
How to replace zeros in a kdb+ list in 5 characters of code?
我有一个列表如下:
q) v:1 6 0 7 -2 0f
我可以使用条件向量将此列表中的 0 替换为 1:
q) ?[v=0;1;v]
但是,有什么方法可以只用5个字符来执行相同的操作吗?即
q)?[v=0;1;v]~xxxxx
1b
编辑:我把这个问题当作脑筋急转弯。我猜这源于 q 就是用尽可能少的代码获得你想要的结果的想法。所以这没有任何特殊目的,只是为了好玩
您可以使用以下语法执行此操作:
v+0=v
这是谜语吗??在一些非常具体的(人为的)示例中,这些也可以假设 non-floats:
q)v:1 1 0 7 -2 0 8
q)v^v v
1 1 1 7 -2 1 8
q)v|v v
1 1 1 7 -2 1 8
但再次强调,根据 Avons 的解决方案,非常捏造的示例在一般情况下根本不可用。
额外编辑:k 可以用 4 个字符完成一般情况
q)v:1 6 0 7 -2 0f
q)\
v+~v
1 6 1 7 -2 1f
我有一个列表如下:
q) v:1 6 0 7 -2 0f
我可以使用条件向量将此列表中的 0 替换为 1:
q) ?[v=0;1;v]
但是,有什么方法可以只用5个字符来执行相同的操作吗?即
q)?[v=0;1;v]~xxxxx
1b
编辑:我把这个问题当作脑筋急转弯。我猜这源于 q 就是用尽可能少的代码获得你想要的结果的想法。所以这没有任何特殊目的,只是为了好玩
您可以使用以下语法执行此操作:
v+0=v
这是谜语吗??在一些非常具体的(人为的)示例中,这些也可以假设 non-floats:
q)v:1 1 0 7 -2 0 8
q)v^v v
1 1 1 7 -2 1 8
q)v|v v
1 1 1 7 -2 1 8
但再次强调,根据 Avons 的解决方案,非常捏造的示例在一般情况下根本不可用。
额外编辑:k 可以用 4 个字符完成一般情况
q)v:1 6 0 7 -2 0f
q)\
v+~v
1 6 1 7 -2 1f