diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2021-05-24 14:07:41 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-05-24 14:07:41 +0100 |
| commit | 52eb2b404b9907f85b82f451970b0953b7376b15 (patch) | |
| tree | 09bbd1e6d88c72bb8cf0cb66af41f238cbf06bd5 | |
| parent | a5159d5a585f6d493a1318a3cf35b3675f6af304 (diff) | |
| parent | ee2eec4faa65d5dea48e85e0ae477725e30fecea (diff) | |
| download | perlweeklychallenge-club-52eb2b404b9907f85b82f451970b0953b7376b15.tar.gz perlweeklychallenge-club-52eb2b404b9907f85b82f451970b0953b7376b15.tar.bz2 perlweeklychallenge-club-52eb2b404b9907f85b82f451970b0953b7376b15.zip | |
Merge pull request #4135 from andemark/branch-for-challenge-114
Branch for challenge 114
| -rw-r--r-- | challenge-114/mark-anderson/raku/ch-1.raku | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/challenge-114/mark-anderson/raku/ch-1.raku b/challenge-114/mark-anderson/raku/ch-1.raku new file mode 100644 index 0000000000..caecfd4270 --- /dev/null +++ b/challenge-114/mark-anderson/raku/ch-1.raku @@ -0,0 +1,46 @@ +#!/usr/bin/env raku + +use Test; +plan 9; + +is next-palindrome-number(3), 4; +is next-palindrome-number(9), 11; +is next-palindrome-number(999), 1001; +is next-palindrome-number(1234), 1331; +is next-palindrome-number(1999), 2002; +is next-palindrome-number(4321), 4334; +is next-palindrome-number(4444), 4554; +is next-palindrome-number(500006), 501105; +is next-palindrome-number(90000056780000000000000), 90000056780008765000009; + +multi next-palindrome-number($N where * == 9) { 11 } + +multi next-palindrome-number($N) +{ + my ($left, $middle) = partition($N); + my $next = $left ~ $middle ~ $left.flip; + + while $next <= $N + { + $next = ($left ~ $middle) + 1; + $next ~= $next.substr(^$left.chars).flip; + } + + $next; +} + +sub partition($N) +{ + my @N = $N.comb; + my $mid = @N.elems div 2; + my @left = @N[^$mid]; + my $middle = q{}; + my @right = @N[$mid..*]; + + unless @left.end == @right.end + { + $middle = @right.shift; + } + + @left.join, $middle; +} |
