# Raku Challenge, Week 85

Welcome back to another week of the Weekly Challenge, and today I’ll briefly describe my solutions to the Week 85. Task 1. Triplet Sum. Task 2. Power of Two Integers.

Welcome back to another week of the Weekly Challenge, and today I’ll briefly describe my solutions to the Week 85.

The solutions of this week actually make me think that Raku changes my definition of what is a straightforward solution. All those tiny Raku bits such as `any` or `X` or `^\$N` are awesome even in a not fully-optimised program.

You are given an array of real numbers greater than zero. Write a script to find if there exists a triplet `(a, b, c)` such that `1 < a + b + c < 2`. Print 1 if you succeed otherwise 0.

So, the task is to find such three numbers from the given list so that they add up to a number between 1 and 2. Sounds as a good task for using the `combinations` routine.

```my @r = 1.2, 0.4, 0.1, 2.5;
say +so 1 < any(@r.combinations(3)>>.sum) < 2;```

As you see, the solution is extremely short. It creates the possible 3-element combinations from the input data and computes the sums of each. Then, we make a test `1 < any(...) < 2` using the `any`-junction, which allows us to avoid any explicit loops in the program. Finally, the `+so` construct converts the result to first to a Boolean value (`so`), and then to either 1 or 0 as the task requires.

## Task 2. Power of Two Integers

You are given a positive integer `\$N`. Write a script to find if it can be expressed as `a ^ b` where `a > 0` and `b > 1`. Print 1 if you succeed otherwise 0.

Well, some mathematics can be applied before going to the code, but let’s skip this useful step 🙂

```my \$N = @*ARGS // 8;

for 1..^\$N X ^\$N -> (\$a, \$b) {
say "\$N = \$a^\$b" if \$N == \$a ** \$b;
}```

The program is quite wordy and self-explanatory, but I must mention that parentheses around loop variables are important here. Without them, you will get two pairs such as `(7 2) (7 3)` on each iteration instead of just two integers.

The program prints all the possible solutions, and prints nothing if it could not find it.

* * *