diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2021-05-30 21:07:41 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-05-30 21:07:41 +0100 |
| commit | ae2eff25fb9552220dde7346b536ca9747d539a6 (patch) | |
| tree | 32a40b7f702274743d0a71ad216a46f43206ef89 /challenge-114 | |
| parent | 06cd5c4383577c65b5c7dc43b88eb7c6e19412e9 (diff) | |
| parent | 9ca80c0528fd04eec9df3637781b788ede345a32 (diff) | |
| download | perlweeklychallenge-club-ae2eff25fb9552220dde7346b536ca9747d539a6.tar.gz perlweeklychallenge-club-ae2eff25fb9552220dde7346b536ca9747d539a6.tar.bz2 perlweeklychallenge-club-ae2eff25fb9552220dde7346b536ca9747d539a6.zip | |
Merge pull request #4167 from adamcrussell/challenge-114
Challenge 114
Diffstat (limited to 'challenge-114')
| -rw-r--r-- | challenge-114/adam-russell/blog.txt | 1 | ||||
| -rw-r--r-- | challenge-114/adam-russell/blog1.txt | 1 | ||||
| -rw-r--r-- | challenge-114/adam-russell/perl/ch-1.pl | 23 | ||||
| -rw-r--r-- | challenge-114/adam-russell/perl/ch-2.pl | 36 | ||||
| -rw-r--r-- | challenge-114/adam-russell/prolog/ch-1.p | 18 | ||||
| -rw-r--r-- | challenge-114/adam-russell/prolog/ch-2.p | 26 |
6 files changed, 105 insertions, 0 deletions
diff --git a/challenge-114/adam-russell/blog.txt b/challenge-114/adam-russell/blog.txt new file mode 100644 index 0000000000..ae095ae781 --- /dev/null +++ b/challenge-114/adam-russell/blog.txt @@ -0,0 +1 @@ +http://www.rabbitfarm.com/cgi-bin/blosxom/perl/2021/05/30 diff --git a/challenge-114/adam-russell/blog1.txt b/challenge-114/adam-russell/blog1.txt new file mode 100644 index 0000000000..d8e1daeb5b --- /dev/null +++ b/challenge-114/adam-russell/blog1.txt @@ -0,0 +1 @@ +http://www.rabbitfarm.com/cgi-bin/blosxom/prolog/2021/05/30 diff --git a/challenge-114/adam-russell/perl/ch-1.pl b/challenge-114/adam-russell/perl/ch-1.pl new file mode 100644 index 0000000000..b087b883f5 --- /dev/null +++ b/challenge-114/adam-russell/perl/ch-1.pl @@ -0,0 +1,23 @@ +use strict; +use warnings; +## +# You are given a positive integer $N. +# Write a script to find out the next Palindrome Number +# higher than the given integer $N. +## +sub next_palindrome{ + my($n) = @_; + { + $n++; + return $n if $n eq join("", reverse(split(//, $n))); + redo; + } +} + +MAIN:{ + my($N); + $N = 1234; + print next_palindrome($N) . "\n"; + $N = 999; + print next_palindrome($N) . "\n"; +} diff --git a/challenge-114/adam-russell/perl/ch-2.pl b/challenge-114/adam-russell/perl/ch-2.pl new file mode 100644 index 0000000000..0104194db1 --- /dev/null +++ b/challenge-114/adam-russell/perl/ch-2.pl @@ -0,0 +1,36 @@ +use strict; +use warnings; +## +# You are given a positive integer $N. +# Write a script to find the next higher integer +# having the same number of 1 bits in binary representation as $N. +## +sub count_bits{ + my($n) = @_; + my $total_count_set_bit = 0; + while($n){ + my $b = $n & 1; + $total_count_set_bit++ if $b; + $n = $n >> 1; + } + return $total_count_set_bit; +} + +sub next_same_bits{ + my($n) = @_; + my $number_bits = count_bits($n); + { + my $next = $n + 1; + return $next if count_bits($next) == $number_bits; + $n = $next; + redo; + } +} + +MAIN:{ + my($N); + $N = 3; + print next_same_bits($N) . "\n"; + $N = 12; + print next_same_bits($N) . "\n"; +} diff --git a/challenge-114/adam-russell/prolog/ch-1.p b/challenge-114/adam-russell/prolog/ch-1.p new file mode 100644 index 0000000000..7c17436039 --- /dev/null +++ b/challenge-114/adam-russell/prolog/ch-1.p @@ -0,0 +1,18 @@ +:-initialization(main). + +next_palindrome(N, NextPalindrome):- + current_prolog_flag(max_integer, MAX_INTEGER), + N0 is N + 1, + between(N0, MAX_INTEGER, X), + number_chars(X, C), + reverse(C, R), + number_chars(NR, R), + NR == X, + NextPalindrome = NR. + +main:- + next_palindrome(1234, NextPalindrome0), + write(NextPalindrome0), nl, + next_palindrome(999, NextPalindrome1), + write(NextPalindrome1), nl, + halt. diff --git a/challenge-114/adam-russell/prolog/ch-2.p b/challenge-114/adam-russell/prolog/ch-2.p new file mode 100644 index 0000000000..dd8a3700e2 --- /dev/null +++ b/challenge-114/adam-russell/prolog/ch-2.p @@ -0,0 +1,26 @@ +:-initialization(main). + +set_bits(N, X):- + set_bits(N, 0, X). +set_bits(0, X, X). +set_bits(N, X_Acc, X):- + B is N /\ 1, + X0 is X_Acc + B, + N0 is N >> 1, + set_bits(N0, X0, X), !. + +next_same_bits(N, NextSameBits):- + current_prolog_flag(max_integer, MAX_INTEGER), + set_bits(N, NumberBits), + N0 is N + 1, + between(N0, MAX_INTEGER, X), + set_bits(X, B), + B == NumberBits, + NextSameBits = X. + +main:- + next_same_bits(3, NextSameBits0), + write(NextSameBits0), nl, + next_same_bits(12, NextSameBits1), + write(NextSameBits1), nl, + halt. |
