-
Notifications
You must be signed in to change notification settings - Fork 0
/
solution0052.js
56 lines (41 loc) · 2.13 KB
/
solution0052.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
/*
--------------- 7 Kyu - You're a square! ------------------
Instructions:
A square of squares
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.
Task
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.
Examples
-1 => false
0 => true
3 => false
4 => true
25 => true
26 => false
-------------
Sample Tests
describe("isSquare", function(){
it("should work for some examples", function(){
Test.assertEquals(isSquare(-1), false, "-1: Negative numbers cannot be square numbers");
Test.assertEquals(isSquare( 0), true, "0 is a square number (0 * 0)");
Test.assertEquals(isSquare( 3), false, "3 is not a square number");
Test.assertEquals(isSquare( 4), true, "4 is a square number (2 * 2)");
Test.assertEquals(isSquare(25), true, "25 is a square number (5 * 5)");
Test.assertEquals(isSquare(26), false, "26 is not a square number");
});
});
--------------
Psuedo Code:
-use Math.sqrt() to determine if number is a square number/perfect square
-if result is an integer, return true
-if result is a float, return false
-determine if result is integer or float by use of % 1 (num % 1 = 0 is an integer; num % 1 = anything else and it's a float)
Lessons Learned:
-I tried to write this more concisely, without the true : false expression. Turns out this was possible, but I needed to also discard the ternary, and possibly use a strict equality operator instead
*/
var isSquare = function(n){
return Math.sqrt(n) % 1 == 0 ? true : false
}