2017-01-19 3 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

폴 감사합니다. 어떤 버전의 Q를 사용하십니까? 나는 3.2와 3.3을 시도하고''nyi'을 얻었다. 3.4인가요? –

+0

현재 kdb + 3.4 2016.06.14를 사용하고 있습니다. 예. 나는이 관용구를 최근까지 사용할 기회가 없었기 때문에 이전 버전에서는 테스트하지 않았습니다. –

+0

답장을 보내 주셔서 감사합니다. 좋은 기능입니다. <3.4가 아닙니다. –