Skip to content

Instantly share code, notes, and snippets.

@kharandziuk
Created April 27, 2015 10:26
Show Gist options
  • Save kharandziuk/d360388c5c4b677fd6da to your computer and use it in GitHub Desktop.
Save kharandziuk/d360388c5c4b677fd6da to your computer and use it in GitHub Desktop.
Palindrom tasks
var assert = require('assert');
var check = function(num) {
var numStr = String(num);
var length = numStr.length / 2;
for(var i = 0; i <= length; i++) {
if (numStr[i] != numStr[numStr.length - i - 1]) {
return false;
}
}
return true;
};
assert(check('1'));
assert(!check('12'));
assert(!check('123'));
assert(check('121'));
var naiveFind = function(k) {
var max = Math.pow(10, k) - 1,
min = Math.pow(10, k - 1),
left, right, prod, result = [0, 0, 0];
left = max;
while(left > min) {
right = max;
assert(right > 0);
while(right > min){
prod = left * right;
if(check(prod) && result[0] < prod) {
result = [prod, left, right];
}
right--;
}
left--;
}
return result;
};
var find = function(k) {
var max = Math.pow(10, k) - 1, min = Math.pow(10, k - 1) - 1,
i, j, pretender;
for(i = max; i > min; i--) {
pretender = Number(i+ String(i).split('').reverse().join(''));
for(j=max; j > min; j--){
if(pretender / j <= max && pretender % j === 0) {
return [pretender, i, j];
}
}
}
};
console.log(naiveFind(3));
console.log(find(3));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment