You like building blocks. You especially like building blocks that are squares. And what you even like more, is to arrange them into a square of square building blocks!
However, sometimes, you can't arrange them into a square. Instead, you end up with an ordinary rectangle! Those blasted things! If you just had a way to know, whether you're currently working in vain… Wait! That's it! You just have to check if your number of building blocks is a perfect square.
Given an integral number, determine if it's a square number:
In mathematics, a square number or perfect square is an integer that is the square of an integer; in other words, it is the product of some integer with itself.
The tests will always use some integral number, so don't worry about that in dynamic typed languages.
-1 => false
0 => true
3 => false
4 => true
25 => true
26 => false
import "dart:math" as Math;
import "package:test/test.dart";
import "package:solution/solution.dart";
void main() {
test('should work for some examples', () {
expect(isSquare(-1), isFalse);
expect(isSquare(0), isTrue);
expect(isSquare(3), isFalse);
expect(isSquare(4), isTrue);
expect(isSquare(25), isTrue);
expect(isSquare(26), isFalse);
});
test('should work for random square numbers', () {
var r = new Math.Random();
new List.generate(100,(i) => i).forEach((n) {
var x = r.nextInt(65520);
expect(isSquare(x*x), isTrue);
});
});
}
import 'dart:math';
isSquare(n) => sqrt(n) % 1 != null && sqrt(n) % 1 == 0 ? true : false;
import 'dart:math';
var isSquare = (n) => sqrt(n).remainder(1) == 0;