数学パズルをJavaScriptで解いてみたよ1
問題
10進数、2進数、8進数のいずれで表現しても回文数となる数のうち、10進数の10以上で最小の値を求めてください。
回文数とは逆から読んでも同じ数になる数です。(例 1001)
調べたこと
- 10進数からn進数へ変換する関数 -> toString()
- 回文数の英訳 -> Palindrome
実装
const reverse = (str) => [...str].reverse().join("")
const isPalindrome = (strNumber) => strNumber === reverse(strNumber)
const main = () => {
let result
let num = 10
while (result === undefined) {
if (
isPalindrome(num.toString()) &&
isPalindrome(num.toString(2)) &&
isPalindrome(num.toString(8))
) {
result = num
}
num++
}
return result
}
console.log(main())
感想
n進数へ変換する方法は地味に知らなかったので勉強になった。
whileの条件のためにresult変数を宣言しているけど、break;すればresult変数は不要になるので無駄だった。
文字列を逆にするのは標準の関数であってもいいなと思った。
最近のコメント