Simon Green

Posted on

# Big number, small numbers

## Weekly Challenge 176

Write a script to find the smallest positive integer `x` such that `x`, `2x`, `3x`, `4x`, `5x` and `6x` are permuted multiples of each other.

### My solution

This is one challenge where we could over-engineer it to make it faster. Given that the solution can be found in a fraction of a second, this won't be necessary.

For example after 1,666, the next possible solution is 100,000. 1667 × 6 will result in a five digit number which can't possibly be a permutation of the original number.

The easiest way to work out if a number is a permutation is simply to sort the numbers numerically. In Python, we can do this by `''.join(sorted(str(num)))`. While `join '', sort split //, \$num` will do a similar thing in Perl.

Like a lot of the challenges, I have a counter that starts at one, and increments until we have a solution. For each number, we figure out if the number multiplied 2 to 6 are a permutation of the original number, and exit the inner loop if it isn't.

Finally when I do find a solution, I print it out, and exit the `main()` function.

### Examples

``````\$ ./ch-1.py
142857

\$ ./ch-1.pl
142857
``````

Write a script to find out all Reversible Numbers below 100. A number is said to be a reversible if sum of the number and its reverse had only odd digits.

### My solution

This is relatively straight forward challenge. Count from 1 to 99, and add to a `solutions` list if the number is a reversible number.

As python doesn't have an easy way to reverse an integer, I convert it to a string and back to an integer with `int(str(num)[::-1])`. In Perl, this simply done with the `reverse` method. To see if the number is odd, I compare it with the regular expression `^[13579]+\$`.

I then print all the numbers in a `solutions` list.

### Examples

``````\$ ./ch-2.py
10, 12, 14, 16, 18, 21, 23, 25, 27, 30, 32, 34, 36, 41, 43, 45, 50, 52, 54, 61, 63, 70, 72, 81, 90

\$ ./ch-2.pl
10, 12, 14, 16, 18, 21, 23, 25, 27, 30, 32, 34, 36, 41, 43, 45, 50, 52, 54, 61, 63, 70, 72, 81, 90
``````