Bash
ProjectEuler
数学

Project Euler Q49 【素数数列】

Project Eulerをワンライナーで解いてみる。
間違っていたらコメントください。

問題

項差$3330$の等差数列$1487, 4817, 8147$は次の$2$つの変わった性質を持つ.

(i)$3$つの項はそれぞれ素数である.
(ii)各項は他の項の置換で表される.

$1, 2, 3$桁の素数にはこのような性質を持った数列は存在しないが, $4$桁の増加列にはもう$1$つ存在する.

それではこの数列の$3$つの項を連結した$12$桁の数を求めよ

解答

seq 1000 $((9999-2*3330)) |
factor |
awk 'NF==2{print $1*1,$1+3330,$1+2*3330}' |
factor |
tr ' ' '_' |
xargs -n3 |
tr '_' ' ' |
awk 'NF==6{print $2$4$6}' |
awk -v FS= '{delete a;for(i=1;i<=NF;i++){a[$i]=1};print $0,length(a)}' |
awk '$2<=4{print $1}' |
tail -1
296962999629

最初は問題文の読み取りが正しく出来なかった。公差$3330$であることも条件のひとつだとは読み取れなかったし、各数字もユニークでなければならないと思った。

答え合わせ

こちらのサイト様と一致していればOKとした。
http://kingyojima.net/pje/049.html