Ansatzの備忘録

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

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

問題64 第三火曜日の列挙

今回は解けたが解答例と比べると自分の解答は最後の出力の体裁がいまいちだった。

自分の解答は

seq 0 364 | sed 's/^/20210101 /' |sed 's/$/ days/' | date -f - '+%m %d %w' | grep 2$ | awk '{a[$1]=a[$1]"."}length(a[$1])%3==0{print $0,"@"}' | grep @$ | sed 's/@$//'

となった。前問と同様に日付をずらっと出力した後 awk で第三火曜日にしるしをつけ、最後に grep で抜き出して sed でしるしを除去して出力した。答えの形式は 01 19 2 のように月・日・曜日となっている。最後に2021を1列目に加えてもよかったかもしれない。

解答例では substring をうまく用いて年も含めたまま処理を実行していた。