Ich habe versucht, meine Perl 6 Chops auszuüben, indem ich auf einige Golfprobleme schaue. Eine davon beinhaltete das Extrahieren der Bits einer ganzen Zahl. Ich bin nicht in der Lage gewesen, einen prägnanten Weg zu finden, einen solchen Ausdruck zu schreiben.Perl6-ish Ausdruck für die Bits einer ganzen Zahl
Meine "besten" Versuche folgen bisher, mit 2000
als die Nummer. Es ist mir egal, ob das meiste oder das am wenigsten signifikante Bit zuerst kommt.
Ein numerischer Ausdruck:
map { $_ % 2 }, (2000, * div 2 ... * == 0)
Eine rekursive anonyme Unterprogramm:
{ $_ ?? ($_ % 2, |&?BLOCK($_ div 2)) !!() }(2000)
Konvertierung in einen String:
2000.fmt('%b') ~~ m:g/./
Davon fühlt sich der erste mir sauberste, aber es wäre wirklich schön, die Bits in einem einzigen Schritt erzeugen zu können, anstatt sie über ein Inter abzubilden vermitteln Liste.
Gibt es einen saubereren, kürzeren und/oder idiomatischen Weg, um die Bits zu erhalten, mit einem einzigen Ausdruck? (Das heißt, ohne eine benannte Funktion zu schreiben.)