Perl6-ish表达式为整数位

Sea*_*ean 8 perl6

我一直试图通过观察一些高尔夫问题来锻炼我的Perl 6排骨.其中一个涉及提取整数的位.我无法想出一种简洁的方式来编写这样的表达式.

到目前为止,我的"最佳"尝试跟随,使用2000数字.我不在乎最重要或最不重要的位是第一位的.

数字表达式:

map { $_ % 2 }, (2000, * div 2 ... * == 0)
Run Code Online (Sandbox Code Playgroud)

递归匿名子例程:

{ $_ ?? ($_ % 2, |&?BLOCK($_ div 2)) !! () }(2000)
Run Code Online (Sandbox Code Playgroud)

转换为字符串:

2000.fmt('%b') ~~ m:g/./
Run Code Online (Sandbox Code Playgroud)

其中,第一个对我来说感觉最干净,但能够在一个步骤中生成位而不是映射到中间列表上真的很好.

使用单个表达式,是否有更简洁,更短和/或更惯用的方法来获取位?(也就是说,无需编写命名函数.)

sml*_*mls 9

最简单的方法是:

2000.base(2).comb
Run Code Online (Sandbox Code Playgroud)

.base方法返回一个字符串表示,并将其.comb拆分为字符 - 类似于您的第三个方法.