给定基数的整数转换
Integer conversion to given base
我想将任何正整数转换为从 2
到 9
的某个基数。
base 2
的输出应该是:
0 -> enlist 0
1 -> enlist 1
31 -> 1 1 1 1 1
62 -> 1 1 1 1 1 0
63 -> 1 1 1 1 1 1
64 -> 1 0 0 0 0 0 0
我为此开发了下一个功能
convertToBase: reverse {[x;base;result]
result,: `int$x mod base;
x-: last result;
x%: base;
$[x=0;result;.z.s[x;base;result]]
};
//invocation
convertToBase[62;2;()]
问题是,是否有任何内置的 Q
功能可以有效地做到这一点?如果不是,如何优化上述解决方案?
如果 left-hand 参数是一个数字,vs 函数会执行此操作。
例如:
2 vs 100
将return:
1 1 0 0 1 0 0
如果您将 0 作为 right-hand 参数,那么它会 return 一个空列表,但是您可以用一个条件包装它,在以下情况下输出 ,0 returned 值为空。
我想将任何正整数转换为从 2
到 9
的某个基数。
base 2
的输出应该是:
0 -> enlist 0
1 -> enlist 1
31 -> 1 1 1 1 1
62 -> 1 1 1 1 1 0
63 -> 1 1 1 1 1 1
64 -> 1 0 0 0 0 0 0
我为此开发了下一个功能
convertToBase: reverse {[x;base;result]
result,: `int$x mod base;
x-: last result;
x%: base;
$[x=0;result;.z.s[x;base;result]]
};
//invocation
convertToBase[62;2;()]
问题是,是否有任何内置的 Q
功能可以有效地做到这一点?如果不是,如何优化上述解决方案?
如果 left-hand 参数是一个数字,vs 函数会执行此操作。
例如:
2 vs 100
将return:
1 1 0 0 1 0 0
如果您将 0 作为 right-hand 参数,那么它会 return 一个空列表,但是您可以用一个条件包装它,在以下情况下输出 ,0 returned 值为空。