2015-07-05

Regex Golf をやってみた 11 〜Order〜

Regex Golf 11回目(10回目はこちら

正規表現によるパズルゲーム? Regex Golf 9問目 "Order" に挑戦です。


お題は "Order" です。「順序」ですね。
左側は先頭から a〜z の順に文字が現れています。

以下、ネタバレ

と言うことで
  • ^ 行頭から
  • a* a が0文字以上繰り返し
  • b* b が0文字以上繰り返し
  • c* c が0文字以上繰り返し
  • d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s*t*u*v*w*x*y*z* 同様に d 〜 z を順に0文字以上繰り返し
  • $ 行末まで
なので
^a*b*c*d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s*t*u*v*w*x*y*z*$
でいいでしょう。


後はこれを縮めるために左側に無い文字を減らしていきます。
左側には j, k, q, u, v, x が無いので
^a*b*c*d*e*f*g*h*i*l*m*n*o*p*r*s*t*w*y*z*$
でいいでしょう。


問題のタイトルに
Order — Cheat.
とあるのでもう少し、並びを完全に限定しなくてもいいんじゃないかと思い
^[ab]*c*d*e*f*g*h*i*l*m*n*o*p*r*s*t*w*y*z*$
のように少しずつ変えていったところ
^[abcdefghi]*[lmnoprstwyz]*$
でも OK でした。後は [abcdefghi] を範囲で表す書き方にして
^[a-i]*[l-z]*$

ずいぶん文字数を減らすことが出来ました。

12回目は 10 問目 "Triples" に挑戦です。

0 件のコメント: