アカウント名:
パスワード:
「正規表現」と「数独」で思いついたんだけど「1~9の数字をそれぞれ1度だけ使った9桁の数字」にマッチする正規表現ってあるのかな?ぜんぜんアイデアが沸かない
9!通りの可能性を全部書き出して | で並べる。
それしかないね。『1~9の数字をそれぞれ1度だけ』を人間がスマートにやろうとすると、入力を読んでいくときに『それまでにどの数が出現したか』を覚えておこうとするのが普通だろう。それに対し、正規表現は『入力をどこまで読んだか』『正規表現のどこまでがマッチしたか』ということしか状態を持てない。そういう問題を文法でどうにかするのは向いてないな。
とか思ったけど、古典的な正規表現だと無理でも、ほかの人が言っている通り後方参照が使える言語ならベタに展開しなくてもできるね。あんまり書きやすくはないし、かなり長いけど……
3文字だけの例:http://ideone.com/T8Zxww [ideone.com]
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
計算機科学者とは、壊れていないものを修理する人々のことである
[1-9]{9} じゃなくて (スコア:2, 興味深い)
「正規表現」と「数独」で思いついたんだけど
「1~9の数字をそれぞれ1度だけ使った9桁の数字」にマッチする正規表現ってあるのかな?
ぜんぜんアイデアが沸かない
Re: (スコア:0)
9!通りの可能性を全部書き出して | で並べる。
Re: (スコア:1)
それしかないね。
『1~9の数字をそれぞれ1度だけ』を人間がスマートにやろうとすると、入力を読んでいくときに『それまでにどの数が出現したか』を覚えておこうとするのが普通だろう。
それに対し、正規表現は『入力をどこまで読んだか』『正規表現のどこまでがマッチしたか』ということしか状態を持てない。
そういう問題を文法でどうにかするのは向いてないな。
Re:[1-9]{9} じゃなくて (スコア:1)
とか思ったけど、古典的な正規表現だと無理でも、
ほかの人が言っている通り後方参照が使える言語ならベタに展開しなくてもできるね。
あんまり書きやすくはないし、かなり長いけど……
3文字だけの例:
http://ideone.com/T8Zxww [ideone.com]