Ansatzの備忘録

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

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

問題32 回文の検出

問題のファイルは

https://github.com/shellgei/shellgei160

からダウンロードできる。

タイトル通り回文を検出する問題だった。文字列を一文字ずつ配列に入れて両端から比較していけばいいかなと思ったが、別解で正規表現を活用して似たような考え方で解いているのを見てわざわざ配列を使う必要など全くないと気が付いた。

簡単な解答例は

rev kaibun.txt | grep -xf - kaibun.txt

である。rev というこのパズルのために作られたようなコマンドがあるのを知らなかった。grep は ファイル名の代わりに - が与えられると標準入力として解釈する仕様になっている。

grep  は  FILE  で名前を指定されたファイルを検索して、与えられた  PATTERN にマッチする部分を含む行を探します。ファイルが指定されていない場合や、 ファイル名の代わりに 1 個のマイナス記号 “-”  が指定されている場合は、  grepは標準入力から検索します。 デフォルトでは、 grep はマッチした行を表示します。