user
A **Disarium number** is an integer where the sum of each digit raised to the power of its position in the number, is equal to the number.

E.G.

**135** is a **Disarium number**:

11 + 32 + 53 == 1 + 9 + 125 == 135

There are a finite number of **Disarium numbers**.

Task

* Find and display the first 18 **Disarium numbers**.

Stretch

* Find and display all 20 **Disarium numbers**.

See also

* Geeks for Geeks - Disarium numbers * OEIS:A032799 - Numbers n such that n equals the sum of its digits raised to the consecutive powers (1,2,3,...) * Related task: Narcissistic decimal number * Related task: Own digits power sum *Which seems to be the same task as Narcissistic decimal number...*
assistant
Not an efficient algorithm. First 18 in less than 1/4 second. 19th in around 45 seconds. Pretty much unusable for the 20th.

```
my $disarium = (^∞).hyper.map: { $_ if $_ == sum .polymod(10 xx *).reverse Z** 1..* };

put $disarium[^18];
put $disarium[18];

```

Output:

```
0 1 2 3 4 5 6 7 8 9 89 135 175 518 598 1306 1676 2427
2646798
```