Ansatzの備忘録

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

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

問題6 端末に模様を描く

     x

    x

   x

  x

 x

という模様を出力する問題だった。試しに

seq 5 -1 1 | awk '{for(i=1;i<=$1;i++)print " "}{print "x"}'

とやってみたらスペースが縦に改行されて出てしまった。本をよく読むと、printは末尾に改行を挿入する仕様なので、改行を挿入しないprintfを使おうという話だった。man printf などで調べてみたがこの仕様がどこに書いてあるのかは見つけられなかった。さて答えは

seq 5 -1 1 | awk '{for(i=1;i<=$1;i++)printf " ";print "x"}'

となる。本には他にもたくさんの別解が記載されている。よくこんなに思いつくなと感心してしまった。