Я хочу преобразовать любое положительное целое число в некоторую базу от 2
до 9
. Выход на базе 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
функции сделать это эффективно? Если нет, то как можно оптимизировать решение выше?
Спасибо, Пол. Какую версию Q вы используете. Я попробовал 3.2 и 3.3 и получил '' nyi'. Это 3.4? –
Я использую kdb + 3.4 2016.06.14 в настоящее время, да. Мне не приходилось использовать эту идиому до недавнего времени, поэтому я никогда не тестировал старые версии. –
Спасибо за ответ, хорошая особенность, плохая, это не в <3.4. –