LoginSignup
1

More than 5 years have passed since last update.

Project Euler Q62 【立方数置換】

Posted at

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で

参考にさせて頂いたサイト様

asort = 配列の要素を並び替える(Gawk専用) - AWK - to_dk notebook

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
1