Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

[PROG CHALLENGE #024] Non-Corporate Edition

Name: Anonymous 2020-01-13 16:05

Write a function:

int solution(int N);

that, given a positive integer N, returns the length of its longest binary gap. The function should return 0 if N doesn't contain a binary gap.

For example, given N = 1041 the function should return 5, because N has binary representation 10000010001 and so its longest binary gap is of length 5. Given N = 32 the function should return 0, because N has binary representation '100000' and thus no binary gaps.

Name: Cudder !cXCudderUE 2020-01-14 3:26

; in: ecx
; out:eax
solution:
xor edx, edx
L1:
shr ecx, 1
jz _ret
jnc L1
xchg eax, ecx
L2:
bsf ecx, eax
cmp ecx, edx
cmova edx, ecx
inc ecx
shr eax, cl
jnz L2
_ret:
xchg eax, edx
ret


24 bytes. It's funny how all the HLL solutions posted above are larger both in source and binary form... so much for HLLs being efficient!

Name: Cudder !cXCudderUE 2020-01-15 4:33

>>36
Only if you believe the marketing...

>>43
Enjoy your RAM latency, lol.

No compiler so far has managed to beat 24 bytes.

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List