aboutsummaryrefslogtreecommitdiff
path: root/challenge-079/markus-holzer
diff options
context:
space:
mode:
authorMarkus "Holli" Holzer <holli.holzer@gmail.com>2020-09-22 11:08:32 +0200
committerMarkus "Holli" Holzer <holli.holzer@gmail.com>2020-09-22 11:08:32 +0200
commit083ff144a1eeebd1c7783dfae1acb78f63fedf65 (patch)
tree00223bfa2e78e7804563131a2fdd68890dec7b1b /challenge-079/markus-holzer
parent93f93db1b10b67f24fed13405eb7c69c4f98011a (diff)
downloadperlweeklychallenge-club-083ff144a1eeebd1c7783dfae1acb78f63fedf65.tar.gz
perlweeklychallenge-club-083ff144a1eeebd1c7783dfae1acb78f63fedf65.tar.bz2
perlweeklychallenge-club-083ff144a1eeebd1c7783dfae1acb78f63fedf65.zip
faster! faster!!
Diffstat (limited to 'challenge-079/markus-holzer')
-rw-r--r--challenge-079/markus-holzer/raku/bench.raku30
-rw-r--r--challenge-079/markus-holzer/raku/ch-1.raku27
2 files changed, 29 insertions, 28 deletions
diff --git a/challenge-079/markus-holzer/raku/bench.raku b/challenge-079/markus-holzer/raku/bench.raku
index b137f7e90d..c42bbb0ae6 100644
--- a/challenge-079/markus-holzer/raku/bench.raku
+++ b/challenge-079/markus-holzer/raku/bench.raku
@@ -55,24 +55,24 @@ sub a($n) {
$total-bits;
}
-sub b(Int $N)
+sub b(Int \N)
{
- my Int $t = 2;
- my Int $r = 0;
- my Int $n = $N;
-
- while $n {
- my $a = $t +> 1;
- my $s = $N +& ( $t - 1 );
- my $d = ( $N div $t );
-
- $r += $d * $a;
- $r += 1 + $s - $a if $s > $a - 1;
- $t +<= 1;
- $n +>= 1;
+ my Int \t = 2;
+ my Int \r = 0;
+ my Int \n = N;
+
+ while n {
+ my Int \a = t +> 1;
+ my Int \s = N +& ( t - 1 );
+ my Int \d = N div t;
+
+ r := r + d * a;
+ r := r + 1 + s - a if 1 + s > a;
+ t := t +< 1;
+ n := n +> 1;
}
- return $r
+ return r
}
Bench.new.timethese( 1000, {
diff --git a/challenge-079/markus-holzer/raku/ch-1.raku b/challenge-079/markus-holzer/raku/ch-1.raku
index bf62b2bf06..c9215dde2f 100644
--- a/challenge-079/markus-holzer/raku/ch-1.raku
+++ b/challenge-079/markus-holzer/raku/ch-1.raku
@@ -1,18 +1,19 @@
-unit sub MAIN( Int $N );
+unit sub MAIN( Int \N );
-my Int $t = 2;
-my Int $r = 0;
-my Int $n = $N;
+my Int \t = 2;
+my Int \r = 0;
+my Int \n = N;
-while $n {
- my $a = $t +> 1;
- my $s = $N +& ( $t - 1 );
- my $d = ( $N div $t );
+while n {
+ my Int \a = t +> 1;
+ my Int \s = N +& ( t - 1 );
+ my Int \d = N div t;
- $r += $d * $a;
- $r += 1 + $s - $a if $s > $a - 1;
- $t +<= 1;
- $n +>= 1;
+ r := r + d * a;
+ r := r + 1 + s - a if 1 + s > a;
+ t := t +< 1;
+ n := n +> 1;
}
-say $r % 1000000007; \ No newline at end of file
+
+say r % 1000000007; \ No newline at end of file