Last active
November 27, 2018 11:47
-
-
Save harrisonmalone/f4ccf3eecafa1e42b8db6d785ffe3d06 to your computer and use it in GitHub Desktop.
morning challenge 27/11, nice use case for sort and looping through two arrays
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Given two arrays a and b write a function comp(a, b) (compSame(a, b) in Clojure) that checks whether the two arrays have the "same" elements, with the same multiplicities. "Same" means, here, that the elements in b are the elements in a squared, regardless of the order. | |
// Examples | |
// Valid arrays | |
// a = [121, 144, 19, 161, 19, 144, 19, 11] | |
// b = [121, 14641, 20736, 361, 25921, 361, 20736, 361] | |
// comp(a, b) returns true because in b 121 is the square of 11, 14641 is the square of 121, 20736 the square of 144, 361 the square of 19, 25921 the square of 161, and so on. It gets obvious if we write b's elements in terms of squares: | |
// a = [121, 144, 19, 161, 19, 144, 19, 11] | |
// b = [11*11, 121*121, 144*144, 19*19, 161*161, 19*19, 144*144, 19*19] | |
function comp(a, b) { | |
if (a === null || b === null) { | |
return false | |
} | |
let i = 0 | |
const arr = [] | |
const sortedA = a.sort((a, b) => a - b) | |
const sortedB = b.sort((a, b) => a - b) | |
for(i; i < a.length; i++) { | |
if ((sortedA[i] ** 2) === sortedB[i]) { | |
arr.push('true') | |
} | |
else { | |
arr.push('false') | |
} | |
} | |
return !arr.includes('false') | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment