Post History
C (gcc), 44 bytes Borrowing/modifying test harness from @Lundin: #define f(n)__builtin_popcount(n&~(n*2|n/2)) Try it online! n & ~(n<<1) & ~(n>>1) is non-zero for an...
#4: Post edited
# [C (gcc)], 45 bytesBorrowing test harness from @Lundin:- <!-- language-all: lang-c -->
r;f(long n){for(n&=~(n*2|n/2);r+=n&1,n/=2;);}[Try it online!][TIO-mmc3jo9r]- [C (gcc)]: https://gcc.gnu.org/
[TIO-mmc3jo9r]: https://tio.run/##dZFLS8NAGEX3@RVDSkqi0zbfPDONqbhQEAUXduHCTZk8DNRJSVNIqfWnGyMG26id2QyHy70HRo8yrZumDFN3WZgMGW@XFqVrhtG7a87Im5kQLyzPIzMEbCYRCb1w3wxyo5ebOEEX6yrOi/HLzLIGcZLmJkHz68e5W@Oth8rID1Hq1l6IVmVuqtS1HfDHGzSaIWccPKGsqKZOjJJ6legqib/ezvrZ2Lhub4m3uIyi7aX9cGdP7Zur23vbCy2rLUKvi9y4nrWz0Pecj9Hh@G2q44wopoQkiuMeJ8AkC6hgQcvhwOG4B/7JqzZADlwF1Gf47y5Q8CXprEjfR1AlgPd3fzzZCU/Z55QQIIQzCSd6aJ@TQFAKwGmrBOLIk1EQnEvBf3EJUgVCQdDt7psPnS4X2boZtT8eaYBP "C (gcc) – Try It Online"Basic algorithm is `n & ~(n<<1) & ~(n>>1)` - which is non-zero for any bit only when it is non-zero and the preceding and following bits aren't. The `for` loop implements popcount.
- # [C (gcc)], 44 bytes
- Borrowing/modifying test harness from @Lundin:
- <!-- language-all: lang-c -->
- #define f(n)__builtin_popcount(n&~(n*2|n/2))
- [Try it online!][TIO-mmccyqsi]
- [C (gcc)]: https://gcc.gnu.org/
- [TIO-mmccyqsi]: https://tio.run/##dZFdS8MwFIbv@ytCRyWVbvbkO9NNvFAQBS/chRfCmGk7CzMtroUOP366Nep0q7rkIoeHw/s@ENOfG9O2vSTNcpuiDNtwOr2r80WV22lZlKaobYXt3iu2@@TZHpAwbHu5NYs6SdHRskryYnA/9rzvgMnp9QQ30SpE5WNuqwz7AcSDGvXHKBioGzQvqmGQoLQpU1OlycccLG@tHzXuZrgJo9XnMxqtjv2rC3/on52cX/rhoee5OPQwyy0OvScPfTXFEdqc2G2tOSOaaSGJ5lGHE2CSKSqYchw2HLZz4J997RbIhmtFYxb97QUKsSRrK9L1EVQL4N3eH0@2w1N2OSUECOFMwo4c2uVECUoBOHVKILY8GQXBuRT8F5cgtRIa1Lr3pX0z2WI2X7Z999kjA/AO "C (gcc) – Try It Online"
- `n & ~(n<<1) & ~(n>>1)` is non-zero for any bit precisely when the original bit of `n` is non-zero and the preceding and following bits aren't.
#3: Post edited
# [C (gcc)], 46 bytes- Borrowing test harness from @Lundin:
- <!-- language-all: lang-c -->
r;f(long n){for(n&=~(n*2|n/2);n;r+=n&1,n/=2);}[Try it online!][TIO-mmc2xuic]- [C (gcc)]: https://gcc.gnu.org/
[TIO-mmc2xuic]: https://tio.run/##dZFPS8MwGIfv/RSho6PVbOubpEmzmokHBVHw4A4evIz@szDT0XXQMedHt0YsblWXXPI@/Hh/DyQe5XHctlWUuctS50h7u6ysXD1U764@I296QrxIR9W50kPAeqLMuG8HhY6XmyRFF@s6Kcrxy8yyBkmaFTpF8@vHudvgrYcq5UcocxsvQquq0HXm2g744w0azZAzDp9QXtZTJ0Fps0rjOk2@3s76Wdu4MbfCW1wptb20H@7sqX1zdXtve5FlmUXodVFo17N2Fvqu8zE6HN@kOs6IZJILIgPc4wSYYCHlLDQcDhyO98A/eWkC5MBlSH2G//YCBV@Qzor0fTiVHIJ@748nO@Ep@pwSAoQETMCJPbTPScgpBQioUQJ@5Mko8CAQPPjFBQgZcglh17tvP@JsucjX7cj8uIoBPgE "C (gcc) – Try It Online"- Basic algorithm is `n & ~(n<<1) & ~(n>>1)` - which is non-zero for any bit only when it is non-zero and the preceding and following bits aren't. The `for` loop implements popcount.
- # [C (gcc)], 45 bytes
- Borrowing test harness from @Lundin:
- <!-- language-all: lang-c -->
- r;f(long n){for(n&=~(n*2|n/2);r+=n&1,n/=2;);}
- [Try it online!][TIO-mmc3jo9r]
- [C (gcc)]: https://gcc.gnu.org/
- [TIO-mmc3jo9r]: https://tio.run/##dZFLS8NAGEX3@RVDSkqi0zbfPDONqbhQEAUXduHCTZk8DNRJSVNIqfWnGyMG26id2QyHy70HRo8yrZumDFN3WZgMGW@XFqVrhtG7a87Im5kQLyzPIzMEbCYRCb1w3wxyo5ebOEEX6yrOi/HLzLIGcZLmJkHz68e5W@Oth8rID1Hq1l6IVmVuqtS1HfDHGzSaIWccPKGsqKZOjJJ6legqib/ezvrZ2Lhub4m3uIyi7aX9cGdP7Zur23vbCy2rLUKvi9y4nrWz0Pecj9Hh@G2q44wopoQkiuMeJ8AkC6hgQcvhwOG4B/7JqzZADlwF1Gf47y5Q8CXprEjfR1AlgPd3fzzZCU/Z55QQIIQzCSd6aJ@TQFAKwGmrBOLIk1EQnEvBf3EJUgVCQdDt7psPnS4X2boZtT8eaYBP "C (gcc) – Try It Online"
- Basic algorithm is `n & ~(n<<1) & ~(n>>1)` - which is non-zero for any bit only when it is non-zero and the preceding and following bits aren't. The `for` loop implements popcount.
#2: Post edited
# [C (gcc)], 48 bytes- Borrowing test harness from @Lundin:
- <!-- language-all: lang-c -->
r;f(long n){r=__builtin_popcount(n&~(n*2|n/2));}[Try it online!][TIO-mmbzi8jm]Basic algorithm is `n & ~(n<<1) & ~(n>>1)` - which is non-zero for any bit only when it is non-zero and the preceding and following bits aren't.- [C (gcc)]: https://gcc.gnu.org/
[TIO-mmbzi8jm]: https://tio.run/##dZFPS8MwHIbv/RSho5JKN/tL0qRZ7cSDgih4cAcPwpjpHws1LV0LHXN@dGvF4VZ1ySU8vLzvA1HjVKmuq4IE54VOkbY3VbhYPDdZXmd6URalKhpdY33yjvUpedNnxLaDbTfKtMqbKEbnqzrKisnLzDBGUZxkOkbzq4c5bp21jarQDVCCWztAZZXpOsGmBe6kQeMZsib@I0qLempFKG7LWNVx9PW2Vk/adNr@Vs7aqcJwfWHe35pT8/ry5s60A8Poi9DrMtPYNjYG@p5zHbQ/bp/acUYkk1wQ6TkDToAJ5lPO/J7DnsNhD/yTl32A7Ln0qcucv7tAwRVkZ0WGPpxKDt5w98eTHfEUQ04JAUI8JuBIDx1y4nNKATzaKwE/8GQUuOcJ7v3iAoT0uQR/t7vtPlSSL9NVN@5/PFQAnw "C (gcc) – Try It Online"
- # [C (gcc)], 46 bytes
- Borrowing test harness from @Lundin:
- <!-- language-all: lang-c -->
- r;f(long n){for(n&=~(n*2|n/2);n;r+=n&1,n/=2);}
- [Try it online!][TIO-mmc2xuic]
- [C (gcc)]: https://gcc.gnu.org/
- [TIO-mmc2xuic]: https://tio.run/##dZFPS8MwGIfv/RSho6PVbOubpEmzmokHBVHw4A4evIz@szDT0XXQMedHt0YsblWXXPI@/Hh/DyQe5XHctlWUuctS50h7u6ysXD1U764@I296QrxIR9W50kPAeqLMuG8HhY6XmyRFF@s6Kcrxy8yyBkmaFTpF8@vHudvgrYcq5UcocxsvQquq0HXm2g744w0azZAzDp9QXtZTJ0Fps0rjOk2@3s76Wdu4MbfCW1wptb20H@7sqX1zdXtve5FlmUXodVFo17N2Fvqu8zE6HN@kOs6IZJILIgPc4wSYYCHlLDQcDhyO98A/eWkC5MBlSH2G//YCBV@Qzor0fTiVHIJ@748nO@Ep@pwSAoQETMCJPbTPScgpBQioUQJ@5Mko8CAQPPjFBQgZcglh17tvP@JsucjX7cj8uIoBPgE "C (gcc) – Try It Online"
- Basic algorithm is `n & ~(n<<1) & ~(n>>1)` - which is non-zero for any bit only when it is non-zero and the preceding and following bits aren't. The `for` loop implements popcount.
#1: Initial revision
# [C (gcc)], 48 bytes
Borrowing test harness from @Lundin:
<!-- language-all: lang-c -->
r;f(long n){r=__builtin_popcount(n&~(n*2|n/2));}
[Try it online!][TIO-mmbzi8jm]
Basic algorithm is `n & ~(n<<1) & ~(n>>1)` - which is non-zero for any bit only when it is non-zero and the preceding and following bits aren't.
[C (gcc)]: https://gcc.gnu.org/
[TIO-mmbzi8jm]: https://tio.run/##dZFPS8MwHIbv/RSho5JKN/tL0qRZ7cSDgih4cAcPwpjpHws1LV0LHXN@dGvF4VZ1ySU8vLzvA1HjVKmuq4IE54VOkbY3VbhYPDdZXmd6URalKhpdY33yjvUpedNnxLaDbTfKtMqbKEbnqzrKisnLzDBGUZxkOkbzq4c5bp21jarQDVCCWztAZZXpOsGmBe6kQeMZsib@I0qLempFKG7LWNVx9PW2Vk/adNr@Vs7aqcJwfWHe35pT8/ry5s60A8Poi9DrMtPYNjYG@p5zHbQ/bp/acUYkk1wQ6TkDToAJ5lPO/J7DnsNhD/yTl32A7Ln0qcucv7tAwRVkZ0WGPpxKDt5w98eTHfEUQ04JAUI8JuBIDx1y4nNKATzaKwE/8GQUuOcJ7v3iAoT0uQR/t7vtPlSSL9NVN@5/PFQAnw "C (gcc) – Try It Online"
