Perl6-ish-Ausdruck für die Bits einer ganzen Zahl

8

Ich habe versucht, meine Perl-6-Chops auszuprobieren, indem ich mir Golfprobleme anschaue. Eine davon beinhaltete das Extrahieren der Bits einer ganzen Zahl. Ich bin nicht in der Lage, eine prägnante Möglichkeit zu finden, einen solchen Ausdruck zu schreiben.

Meine bisher besten Versuche folgen mit 2000 als Nummer. Es ist mir egal, ob das meiste oder das am wenigsten signifikante Bit zuerst kommt.

Ein numerischer Ausdruck:

%Vor%

Eine rekursive anonyme Subroutine:

%Vor%

Umwandlung in eine Zeichenfolge:

%Vor%

Von diesen fühlt sich das erste für mich am saubersten an, aber es wäre wirklich nett, die Bits in einem einzigen Schritt erzeugen zu können, anstatt über eine Zwischenliste abzubilden.

Gibt es eine sauberere, kürzere und / oder idiomatischere Art, die Bits zu erhalten, indem Sie einen einzelnen Ausdruck verwenden? (Das heißt, ohne eine benannte Funktion zu schreiben.)

    
Sean 06.12.2016, 18:48
quelle

3 Antworten

8

Der einfachste Weg wäre:

%Vor%

Die .base -Methode gibt eine Zeichenfolgendarstellung zurück und .comb teilt sie in Zeichen auf - ähnlich wie bei Ihrer dritten Methode.

    
smls 06.12.2016, 19:31
quelle
4

Eine imperative Lösung, vom kleinsten zum höchstwertigen Bit:

%Vor%

Das Gleiche wurde mit Hyperoperatoren in einer Sequenz neu geschrieben:

%Vor%     
Christoph 06.12.2016 20:17
quelle
4

Eine Alternative, die nützlich ist, wenn Sie die Basis auf etwas über 36 ändern müssen, ist polymod mit einem unendliche Liste dieser Basis.

In den meisten Fällen müssen Sie die Reihenfolge jedoch umkehren.

%Vor% %Vor%     
Brad Gilbert 07.12.2016 22:53
quelle

Tags und Links