Я пытался использовать свои отбивные на Perl 6, рассматривая некоторые проблемы с игрой в гольф. Один из них включал извлечение битов целого числа. Я не смог придумать лаконичный способ написать такое выражение.Perl6-ish выражение для битов целого числа
Мои «лучшие» попытки до сих пор следуют, используя 2000
в качестве номера. Меня не волнует, что первый или наименее значимый бит на первом месте.
Числовое выражение:
map { $_ % 2 }, (2000, * div 2 ... * == 0)
Рекурсивный анонимной подпрограммы:
{ $_ ?? ($_ % 2, |&?BLOCK($_ div 2)) !!() }(2000)
Преобразование в строку:
2000.fmt('%b') ~~ m:g/./
Из них первый чувствует чистейшее ко мне, но было бы очень приятно иметь возможность генерировать биты за один шаг, вместо того, чтобы отображать поверх список посредников.
Есть ли более чистый, более короткий и/или более идиоматический способ получить бит, используя одно выражение? (То есть, без написания имени функции.)