LoginSignup
2
2

More than 5 years have passed since last update.

Project Euler Q39 【整数の直角三角形】

Posted at

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

問題

辺の長さが $\{a,b,c\}$ と整数の$3$つ組である直角三角形を考え, その周囲の長さを $p$ とする. $p = 120$のときには3つの解が存在する:

$\{20,48,52\}, \{24,45,51\}, \{30,40,50\}$

p ≤ 1000 のとき解の数が最大になる p はいくつか?

解答

seq 998 |
awk '{for(i=1;i<=1000;i++){if(1000<=$1+i){break};print $1,i,sqrt($1^2+i^2)}}' |
fgrep -v '.' |
awk '$1+$2+$3<=1000{print $0,$1*$2,$1+$2+$3}' |
sort -k5,5n -k4,4n |
uniq -f3 |
uniq -c -f4 |
sort -k1,1n |
awk 'END{print $6}'
840

別解(ピタゴラス数の公式から導出)

seq 1000 |
awk '{for(i=1;i<=1000;i++){a=$1^2-i^2;b=2*$1*i;c=$1^2+i^2;if(a<=0||1000<a+b+c){break};print a,b,c,a*b,a+b+c}}' |
awk '{for(i=1;i<=100;i++){if(1000<$5*i){break};print $1*i,$2*i,$3*i,$4*i^2,$5*i}}' |
sort -k5,5n -k4,4n |
uniq -f3 |
uniq -c -f4 |
sort -k1,1n |
awk 'END{print $6}'
840

答え合わせ

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

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

ピタゴラス数の求め方とその証明 _ 高校数学の美しい物語

2
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
2
2