2017-01-19 13 views
2

ある正の整数を2から9に変換したいと思います。 ベース2のための出力は次のようになります。すべてのビルドでQ機能が効果的にそれを行うことがある場合 与えられた基底への整数変換

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;()] 

については、次の機能を開発しましたか?そうでない場合は、上記のソリューションをどのように最適化できますか?

答えて

3

vs関数は、左側の引数が数値の場合にこれを行います。例えば

:あなたはそれは、しかし、空のリストを返します右引数として0を持っている場合は

1 1 0 0 1 0 0 

を、しかし、次のことができます。

2 vs 100 

が返されます戻り値が空の場合は0を出力する条件付きでラップします。

+0

Paulありがとうございます。どのバージョンのQを使用しますか?私は3.2と3.3を試して、「nyi」を得ました。それは3.4ですか? –

+0

私は現在、kdb + 3.4 2016.06.14を使用しています。私は最近までこのイディオムを使用する機会がなかったので、私は古いバージョンでテストしたことがありません。 –

+0

返事ありがとう、良い機能、悪いのではない<3.4。 –

関連する問題