2
Q에서 Collatz 시퀀스를 구현하려고합니다 (초급 운동). 첫 번째 값을 얻는 것은 쉽습니다.Q에서 Collatz 시퀀스
collatz:{`long$$[0j~x mod 2;x%2;1+3*x]}
위의 코드는 분명히 제어 구조를 포함하지 않습니다. 나는 등
2 collatz/ x
... 3,4에 의해 내가 다른 요소를 계산할 수 있다는 것을 알고 있습니다 .. 그러나 전체 목록 (순서)을 얻을 나의 시도가 완전히 쓸데했다 ... 나는 시도 :
til 5 collatz/ x
및
1 2 3 collatz/ x
아무것도 작동하지 않습니다 ...
http://code.kx.com/q/ref/adverbs/#converge-iterate
, 당신으로 표기 inifix 사용하여 '(1 <>) collatz \ 5' 또는 대안 적으로'collatz \ 같이 1 <> 5]'. 캐스트와 긴 비교를 제거하여 함수를 단순화 할 수도 있습니다.'collatz : {$ [x mod 2; 1 + 3 * x; x div 2]} ' – dstrachan두 답변 모두에 감사드립니다. 이제 완벽하게 작동합니다. –
다행입니다. 당신이 언어를 즐기고 당신의 학습에 대한 행운이 있기를 바랍니다. –