Project Eulerをワンライナーで解いてみる。
間違っていたらコメントください。
問題
立方数 $41063625 (345^3)$ は, 桁の順番を入れ替えると$2$つの立方数になる: $56623104 (384^3)$ と $66430125 (405^3)$ である. $41063625$は, 立方数になるような桁の置換をちょうど$3$つもつ最小の立方数である.
立方数になるような桁の置換をちょうど$5$つもつ最小の立方数を求めよ.
解答
time seq 345 9999 |
awk '{print $1^3}' |
awk '{split($1,a,"");asort(a,b);for(i=1;i<=length(b);i++){printf b[i]};printf " "$0"\n"}' |
sort |
awk '{if(k!=$1){printf "\n"$0" "}else{printf $2" "};k=$1}' |
awk 'NF==6{print $2}' |
sort |
head -1
127035954683
real 0m0.287s
user 0m0.300s
sys 0m0.017s
「数字を並び替えて同じ」ということは「使用している数字を配列としてみてsort
した結果が同じ」ということである。
なので、sort
した結果をキーに横に並べたときに$5$個あるものを拾えばよい。
答え合わせ
こちらのサイト様と一致していればOKとした。
Project Euler 62 _ 立方数置換 - PEをMathematicaで