Ansatzの備忘録

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

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

問題99 ポーカーの役

問題のファイルは

https://github.com/shellgei/shellgei160

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

フラッシュとフルハウスを抜き出す問題だった。うまい正規表現の形を思いつけず、なんだか惜しいものを生み出してしまった。

解答例はそれぞれ

cat cards.txt | grep -P '^(.) (\d+)( \1 \d+){4}'
cat cards.txt | grep -P '^(. (\d+)( . \2){1,2}) \g<1>$'

となる。前者がフラッシュ、後者がフルハウスだ。少し勘違いしていて、\1といった表記を使えるのが-Eのオプションだと思い込んでいた。前者の(\d+)の部分はかっこがなくても問題ない。