aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Smith <js5@sanger.ac.uk>2022-11-21 11:44:01 +0000
committerGitHub <noreply@github.com>2022-11-21 11:44:01 +0000
commit96da103ba96c50d324397c33e79626cdcf977182 (patch)
tree9df61ef7c04ef12c39c76f409bae08b943dc431d
parent20a07ea3696dddf4bf4080f08a2bbe6031b6c15d (diff)
downloadperlweeklychallenge-club-96da103ba96c50d324397c33e79626cdcf977182.tar.gz
perlweeklychallenge-club-96da103ba96c50d324397c33e79626cdcf977182.tar.bz2
perlweeklychallenge-club-96da103ba96c50d324397c33e79626cdcf977182.zip
Update ch-1.pl
-rw-r--r--challenge-192/james-smith/perl/ch-1.pl15
1 files changed, 14 insertions, 1 deletions
diff --git a/challenge-192/james-smith/perl/ch-1.pl b/challenge-192/james-smith/perl/ch-1.pl
index 6526f74650..b2e18ab4be 100644
--- a/challenge-192/james-smith/perl/ch-1.pl
+++ b/challenge-192/james-smith/perl/ch-1.pl
@@ -6,12 +6,13 @@ use warnings;
use feature qw(say);
use Test::More;
use Benchmark qw(cmpthese timethis);
-use Data::Dumper qw(Dumper);
+use Inline 'C';
my @TESTS = ( [5,2],[4,3],[6,1] );
is( binary_flip( $_->[0] ), $_->[1] ) for @TESTS;
is( string_flip( $_->[0] ), $_->[1] ) for @TESTS;
+is( c_flip( $_->[0] ), $_->[1] ) for @TESTS;
done_testing();
sub string_flip {
@@ -23,3 +24,15 @@ sub binary_flip {
$r|=(~$n&1)<<$k++, $n>>=1 while $n;
$r;
}
+
+__END__
+__C__
+int c_flip(int n) {
+ int r=0;
+ int k=0;
+ while(n) {
+ r|=(1^n&1)<<k++;
+ n>>=1;
+ }
+ return r;
+}