LoginSignup
3
2

More than 5 years have passed since last update.

【簡単!】ProjectEulerの問題をJavascript1行で解いてみる

Last updated at Posted at 2017-09-29
1 / 11

ProjectEulerとは

プログラムで解く数学の問題集です。1


せっかくなのでJavascript1行で解いてみる


Q1

10未満の自然数のうち, 3 もしくは 5 の倍数になっているものは 3, 5, 6, 9 の4つがあり, これらの合計は 23 になる.
同じようにして, 1000 未満の 3 か 5 の倍数になっている数字の合計を求めよ.2


Q1

10未満の自然数のうち, 3 もしくは 5 の倍数になっているものは 3, 5, 6, 9 の4つがあり, これらの合計は 23 になる.
同じようにして, 1000 未満の 3 か 5 の倍数になっている数字の合計を求めよ.2

[...Array(1000)]
.map((v,i) => i)
.filter((v) => !(v%3) || !(v%5))
.reduce((s, v) => s + v , 0)

Q2

フィボナッチ数列の項は前の2つの項の和である. 最初の2項を 1, 2 とすれば, 最初の10項は以下の通りである.
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
数列の項の値が400万以下の, 偶数値の項の総和を求めよ.3


Q2

フィボナッチ数列の項は前の2つの項の和である. 最初の2項を 1, 2 とすれば, 最初の10項は以下の通りである.
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
数列の項の値が400万以下の, 偶数値の項の総和を求めよ.3

(
    (f = (a) => !a ? 
        f([ 1, 2 ]) : 
        a[a.length-2] + a[a.length-1] > 4000000 ? 
        a : 
        f([...a, a[a.length-2] + a[a.length-1]])
    ) => f()
        .filter((v) => !(v%2))
        .reduce((s, v) => s +v , 0)
).call()

Q4

左右どちらから読んでも同じ値になる数を回文数という. 2桁の数の積で表される回文数のうち, 最大のものは 9009 = 91 × 99 である.
では, 3桁の数の積で表される回文数の最大値を求めよ.4


Q4

左右どちらから読んでも同じ値になる数を回文数という. 2桁の数の積で表される回文数のうち, 最大のものは 9009 = 91 × 99 である.
では, 3桁の数の積で表される回文数の最大値を求めよ.4

[...Array(1000)]
.map((v,i) => i)
.filter((v) => v > 99)
.map((v,i,a) => 
    a
    .map((b) => b * v)
    .filter((v) => `${v}` === `${v}`.split("").reverse().join(""))
)
.reduce((p,a) => [...p, ...a], [])
.sort((a,b) => a - b)
.pop();

参考資料


3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2