The second problem of my DevAdvent 2022 concerns square roots. The story of the problem is about cubes, squares and a passion for the numbers. But long story short, it’s about whether a number is a perfect square or not.

The problem is very simple, and my solution requires only a couple of steps:

```
export default function isSquare(n: number): boolean {
const square: number = n ** 0.5;
const truncated: number = Math.trunc(square);
return square == truncated;
}
```

In JavaScript it becomes:

```
const isSquare = function (n) {
const square = n ** 0.5;
const truncated = Math.trunc(square);
return square == truncated;
};
```

Put into words, first I calculate the square of the number. To do this I use the exponential operator `**`

setting `1/2`

as the exponent. Alternatively, I can use Math.sqrt().

```
const square = n ** 0.5;
const square = Math.sqrt(n);
```

Then I have to figure out if the resulting number is integer. I can do it in two ways. The long way is by truncating the number and checking that the result is equal to the original number.

```
const truncated = Math.trunc(square);
const isInteger square == truncated;
```

The easiest way is to use the Number.isInteger() method.

```
const isInteger = Number.isInteger(square);
```

Finally I can also use the Remainder `%`

operator to check if the remainder of division by `1`

returns `0`

.

```
const isSquare = (n) => Math.sqrt(n) % 1 === 0;
```