# Perl Weekly Challenge 114: palindrome and ‘1’s numbers

One way to let me improve my knowledge about Raku (aka Perl 6) is to implement programs in it. Unluckily, I don’t have any production code to implement in Raku yet (sob!). So, why not try solving the Perl Weekly Challenge tasks?In the following, the assigned tasks for Challenge 110.

## PWC 114 - Task 1

The first task was abount finding the next palindrome number greater thana given one.It is a quite simple task to me: a number is palindrome if its

`flip`

ped string representation is the same, so it all means I have to loop over numbers bigger than the current one and see if it is a palindrome.
```
sub MAIN( Int $N where { $N > 10 } ) {
say $_ and exit if $_ == $_.Str.flip.Int for $N ^.. Inf;
}
```

Therefore I loop from

`$N`

(exlcuded), i.e., the given number, to the infinity. For every number, `$_`

, I compare it to its flipped version, and the if the numbers are the same, then I do print the value and exit.
Please note the lower precedence

`and`

in the `say $_ and exit`

that avoid `exit`

to take precedence on the whole thing and terminate the program without printing anything.
## PWC 114 - Task 2

The second task was a kind of one liner too: find out a number that has the same amount of`1`

digits in the binary representation, assuming it is bigger than a give value.
```
sub MAIN( Int $N where { $N > 0 } ) {
say $_ and exit if ( $N.base( 2 ).split( '' ).grep( '1' ).elems
== $_.base( 2 ).split( '' ).grep( '1' ).elems )
for $N ^.. Inf;
}
```

Again, I do loop from the given number to the infinity, and for every value I check if the number, converted into binary thru

`.base( 2 )`

, reduced to an array of digits by means of `split( '' )`

, extracted to its only `1`

digits by means of `grep( '1' )`

has the same number of elements of the current number.
In the case, I do print the value and terminate the script.

Of course, this is a concise approach, but is not optimized, since it computes over and over again the number of

`1`

digits of the given number `$N`

.