Ansatzの備忘録

勉強したことあるいはふと思い立ったこと

シェルワンライナー160本ノック問題94

問題94 ラグランジュの四平方定理の部分的な検証

ラグランジュの四平方定理を実際に具体的な数で確かめる問題だった。

解答例は

seq -w 0 9999 | awk -F "" '{print $0,$1*$1+$2*$2+$3*$3+$4*$4}' | sort -k2,2n | uniq -f 1 | head -n 101

となる。seq -w で0埋めをしている。awkで区切り文字を空文字にして計算を行っている。sortは

-k, --key=KEYDEF
              指定されたキーでソートする。KEYDEF では場所と並び替え種別を指定する

KEYDEF は F[.C][OPTS][,F[.C][OPTS]] の書式で、開始位置と停止位置を指定します。  F  はフィールド番号で、  C  は
       フィールド内の文字位置です。両方とも開始番号は  1 です。

とあるように2列目から2列目を基準にソートするという意味になる。number,number の範囲にnを適用する仕様になっている。uniq -f は最初のnこのフィールドを無視するオプションである。