Skip to content

Commit 1d07fa7

Browse files
author
Nima
committed
Pc INIT
1 parent 5ecf8c0 commit 1d07fa7

1 file changed

Lines changed: 61 additions & 0 deletions

File tree

palindromeNumber.js

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
// A Positive number and ad reverse together => palindrome
2+
// 139 + 931 = 1070 => 1070 + 0701 = 1771
3+
4+
const reverseNumber = (number) => {
5+
return parseInt(number.toString().split("").reverse().join(""));
6+
}
7+
8+
const isOdd = (length) => {
9+
if (length % 2 >= 1) return true;
10+
else return false;
11+
}
12+
// 7 - 1 =6 /2 = 3
13+
// 1234321
14+
const editOddLengths = (num) => {
15+
const splitted = String(num).split("");
16+
const length = splitted.length;
17+
18+
if (length == 1) throw new Error('Error while parsing the number')
19+
20+
if (isOdd(length)) {
21+
// deleting middle one and converting to even length
22+
splitted.splice((length - 1) / 2, 1)
23+
return splitted;
24+
}
25+
}
26+
27+
function getCopyOfArray(arr) {
28+
return [...arr]
29+
}
30+
31+
const isPalindromeNumber = (number) => {
32+
let splitted = String(number).split("");
33+
let sumLength = splitted.length;
34+
35+
if (isOdd(sumLength)) splitted = editOddLengths(number);
36+
37+
let part1 = getCopyOfArray(splitted).splice(0, (sumLength / 2)).join("")
38+
let part2 = reverseNumber(getCopyOfArray(splitted).splice(sumLength / 2, sumLength).join(""))
39+
40+
if (part1 == part2) return true;
41+
}
42+
43+
const calculateNumber = (num) => {
44+
let result;
45+
let reverse;
46+
47+
reverse = reverseNumber(num);
48+
result = num + reverse;
49+
50+
let steps = 1;
51+
52+
while (!isPalindromeNumber(result)) {
53+
result = result + reverseNumber(result);
54+
steps++;
55+
console.log(`${num} : | steps: ${steps} | result: ${result}`) // can be removed to having less logs
56+
}
57+
58+
return console.log(`${num} took ${steps} steps to reach ${result} and be knows as a palindrome`);
59+
}
60+
61+
console.log(calculateNumber(89)) // if you need your CPU, don't run this code and change the input 🐢!

0 commit comments

Comments
 (0)