# ETOOBUSY ðŸš€ minimal blogging for the impatient

# PWC137 - Lychrel Number

**TL;DR**

On with TASK #2 from The Weekly Challenge #137. Enjoy!

# The challenge

You are given a number, 10 <=

`$n`

<= 1000.Write a script to find out if the given number is Lychrel number. To keep the task simple, we impose the following rules:

`a. Stop if the number of iterations reached 500. b. Stop if you end up with number >= 10_000_000.`

According to wikipedia:

A Lychrel number is a natural number that cannot form a palindrome through the iterative process of repeatedly reversing its digits and adding the resulting numbers.

Example 1`Input: $n = 56 Output: 0 After 1 iteration, we found palindrome number. 56 + 65 = 121`

Example 2`Input: $n = 57 Output: 0 After 2 iterations, we found palindrome number. 57 + 75 = 132 132 + 231 = 363`

Example 3`Input: $n = 59 Output: 0 After 3 iterations, we found palindrome number. 59 + 95 = 154 154 + 451 = 605 605 + 506 = 1111`

# The questions

The only real question isâ€¦ *what should we return if the number is
suspected to be a Lycherel*? Iâ€™ll return 1.

Itâ€™s interesting the limit at 500 iterations - I guess that with the
*other* limit at 10 millions, it will never be hit.

# The solution

Weâ€™ll start with Perl here. The reverse function flips a string, and an integer in Perl has a dual-life as a string, so it basically works:

```
#!/usr/bin/env perl
use v5.24;
use warnings;
use experimental 'signatures';
no warnings 'experimental::signatures';
say maybe_lychrel(shift || 196);
sub maybe_lychrel ($n) {
while ($n < 10_000_000) {
my $r = reverse $n;
return 0 if $n eq $r;
$n += $r;
}
return 1;
}
```

In Raku itâ€™s basically the same. We can have more input checks for free, of course:

```
#!/usr/bin/env raku
use v6;
sub MAIN (Int:D $x where 10 <= * <= 1000 = 196) { maybe-lychrel($x).put }
sub maybe-lychrel (Int:D $n is copy where * > 0) {
while $n < 10000000 {
my $r = $n.flip;
return 0 if $n eq $r;
$n += $r;
}
return 1;
}
```

This time the right sub/method is flip, because reverse is
for *listy* stuff. Apart from thisâ€¦ itâ€™s a copy.

Stay safe everybody!

*Comments? Octodon, Twitter, GitHub, Reddit, or drop me a line!*