Bash
ProjectEuler
数学

Project Euler Q4 【最大の回文積】

More than 1 year has passed since last update.

Project Eulerをワンライナーで解いてみる。

間違っていたらコメントください。


問題

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

では, 3桁の数の積で表される回文数の最大値を求めよ.


解答

前提:求める値は6桁であろう(ループを少なくしたかった)。

seq 900 999 |

awk '{for(i=900;i<=999;i++){printf("%d ",i*$1)}}' |
xargs -n1 |
sed -r 's/\B/ /g' |
awk '$3$2$1==$4$5$6{print $1$2$3$4$5$6}' |
sort -u |
tail -1
906609

awkの部分をうまく書き直したい。。

[2017/10/03追記]

taramさんから教えて頂いた解答

seq 900 999 |

awk '{for(i=$1;i<=999;i++){print i*$1}}' |
awk -v FS= '$3$2$1==$4$5$6{print $1$2$3$4$5$6}' |
sort -u |
tail -1
906609

スッキリしました(*^_^*)


答え合わせ

こちらのサイト様と一致していればOKとした。

http://kingyojima.net/pje/004.html