正規表現で文字列の否定⑥

以下のWebサイトの「補足資料 (5)」に沿ってDFAを正規表現に変換するC#のメソッドを書こうとしているところ。 www.nue.ie.niigata-u.ac.jp 2ページ目の「GNFAの等価変換」は、さらっとななめ読みしただけだと分からなかったので、例2を自分で解いてみた。 ま…

正規表現で文字列の否定⑤

文字列処理でやってみた とりあえず ここ で以下の16個の正規表現を生成して、それらのルールを分析して、C#のメソッド作ってみたよ。 Regex01:文字列"0"を含まない任意の文字列とマッチする正規表現 Regex02:文字列"01"を含まない任意の文字列とマッチす…

LibreOfficeで二重丸描きたい

オートマトンの受理状態を描くときに、今までオレンジ色で塗りつぶした円を描いてた。 だけど、できれば二重丸でかきたいなーとずっと思ってて、良いやり方見つけた。 基本シェイプの中にある「円」じゃなくて「輪」を使えば良さげ。 円と輪内側の円も拡大縮…

正規表現で文字列の否定④

以下のオートマトンを構成してみた。出現する状態はすべて受理状態。 M2 文字列abを含まない任意の文字列を受理するDFA M3 文字列abcを含まない任意の文字列を受理するDFA M4 文字列abcdを含まない任意の文字列を受理するDFA M5 文字列abcdeを含まない任意の…

正規表現で文字列の否定③

前回提示したM1の状態2は無いのと同じなので、等価なオートマトンM2は次のようになる。 文字列abを含まない任意の文字列を受理するDFA([^a]|a+[^ab])* で状態0から状態0への遷移で、続けて a+ で状態1への遷移。 まとめて ^([^a]|a+[^ab])*a+$ でいいかと思…

正規表現で文字列の否定②

まずは文字列abを含まない文字列から考えてみた。僕ははあまり賢くないので、いきなり正規表現で考えると分からなくなりそうだったので、状態遷移図を描きつつ、有限オートマトンM0を構成してみた。オレンジ色の状態が受理状態で、いったん状態3に到達したら…

正規表現で文字列の否定①

bynatures.hatenadiary.jp を読んで、「正規表現は否定を上手く表せない?マジか!!」って思ったので、やってみた。とりあえず、紹介されている例を確かめてみた。 https://ideone.com/a38njo ん...??なんか変じゃね??

正規表現からそれを受理するDFAへ変換するプログラム書いた

正規表現→ε動作ありNFA→ε動作なしNFA→DFAをやるコードを書いてGitHubにpushしといたよ。 github.com やり残してることは以下。 DFAの最小化 一回以上の繰り返し(+)の導入 (0|1|2|3|4|5|6|7|8|9)を[0-9]って書けるようにする 任意の位置文字を表す文字(.)…

実数を表す文字列を受理するオートマトン(訂正)

3年くらい前、実数を表す文字列を受理するオートマトンを実装してみた。 最近、簡単な正規表現をDFAに変換するコードを書いてみてるけど、その中で、過去書いた日記に誤りを見つけたので、訂正しておく。

先日書いた問題の原因が分かった(たぶん)

プロジェクトのプロパティをいじったら未入力チェックがかからなくなった Visual Studio 2022でやってたんだけど、プロジェクトのプロパティで「ビルド」→「全般」にある「Null許容」が「有効化」になってると先日書いたような挙動をするようだ。 プロジェク…

モデルの未入力チェックの挙動が理解できない

なんで勝手に未入力チェックされるのん? 以下のコードで、新規Personを追加しようとするきの話し。 public class PersonController : Controller { public IActionResult Create() { return View(); } [HttpPost] [ValidateAntiForgeryToken] public IActio…

なぜか分らんけど動いた

SchoolContext.csのメソッドOnModelCreatingのコメントの行を書き直したら動くようになった。先日のエラーログから、ここがテーブル名になるのかなって感じでやってみた。 protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuild…

エンティティを継承したい

ASP.NET Core MVCとEntity Framework Coreに関して、Microsoft公式のチュートリアルシリーズをちょこちょこやってる。 docs.microsoft.com これの、「チュートリアル: 継承を実装する - ASP.NET MVC と EF Core」でつまづいている。 docs.microsoft.com「実…

C#での非同期処理

分かりやすくて良かったです。 tech-lab.sios.jp tech-lab.sios.jp

ユーザーシークレットの動きについてちょっと調べてみた

お久しぶりです。100億年ぶりにプログラミングを始めました。 先日、Visual Studio 2019をダウンロードして、何やらいろいろ調べながらやっています。 DBの接続文字列など、以前は config ファイルに書いていたように記憶していますが、何やらいろいろ仕組み…

ターミナルで実行したときとスクリプトファイルを実行したときで結果が違う

次のようなitems.xmlを作って、 <items> <item>foo</item> <item>bar baz</item> <item>qux</item> </items> bashで $echo "cat /items/item[2]" | xmllint --shell items.xmlしたときは / > ------- <item>bar baz</item> / >ってなるけど、 #!/bin/sh echo "cat /items/item[2]" | xmllint --shell items…

プロジェクトの参照設定

C#のプロジェクトの参照設定がよく分からない。ソリューションは以下のような状況になっている。 プロジェクトA 俺ライブラリ側。プロジェクトBや他のアプリなどでも使う(かもしれない)部品群。このプロジェクトの中で、とあるインターフェースX(.NET Fra…

日付や時間を表す文字列を受理するオートマトン③

どのパターンか判断できるようにしてみた。Ideone.com - vcrHk5 - Online C# Compiler & Debugging Tool

日付や時間を表す文字列を受理するオートマトン②

以下のフォーマットを受理するDFAを作った。 Ideone.com - FxXej0 - Online C# Compiler & Debugging Tool yyyy/MM/dd HH:mm:ss.fff yyyy/MM/dd HH:mm:ss yyyy/MM/dd HH:mm yyyy/MM/dd HH yyyy/MM/dd yyyy/MM yy/MM/dd HH:mm:ss.fff yy/MM/dd HH:mm:ss yy/MM…

日付や時間を表す文字列を受理するオートマトン①

日付や時間に関する型も用意して、オートマトンでチェックしたい。受理したい形式は以下。 yyyy/MM/dd HH:mm:ss.fff yyyy/MM/dd HH:mm:ss yyyy/MM/dd HH:mm yyyy/MM/dd HH HH:mm:ss.fff HH:mm:ss HH:mm mm:ss.fff mm:ss ss.fff 時刻部分はAM/PM表記も許した…

整数を表す文字列を受理するオートマトン②

以前作った整数のオートマトン、文字列"01"を受理するかどうかはさておき、"0"を受理しないのは問題だと思うので修正した。

実数を表す文字列を受理するオートマトン③

先日εNFAをNFAに変換した。 今度はこのNFAをDFAに変換したい。これをやるのが「部分集合構成法」というものらしい。以下にDFAの状態遷移表を作っていく。 NFAの初期状態はのみなので、初期状態の集合はとなる。そして、初期状態の集合から遷移する可能性のあ…

実数を表す文字列を受理するオートマトン②

自分の理解力の無さから、参考にしようとしていたサイトの説明では行き詰ってしまった。なのでオートマトンの教科書を読んでみた。 ε動作ありのNFAから、ε動作なしのNFAへの変換のやり方が書いてあったので、やってみた。 まず-(ε閉包というらしい)という…

実数を表す文字列を受理するオートマトン①

前回のつづき。「正規表現とNFA・DFA」を参考に、実数の正規表現を元に状態遷移図を描いて、C#で実装してみたい。 RとSを正規表現とすると、RSとR|SとR*を受理するオートマトン(ただし、ε遷移あり)は次のように表現できるらしい。 RS R|S R* 「整数を表す…

こんにちははてなブログ

はてなダイアリーから引っ越ししてきたよ~!

引っ越し

はてなダイアリーが終わるらしい。 2019年春「はてなダイアリー」終了のお知らせと「はてなブログ」への移行のお願い - はてなダイアリー日記 引越しせんとな。

整数を表す文字列を受理するオートマトン

正規表現は ^[-+]?[1-9][0-9]*$でいいんじゃないかな。これに相当する状態遷移図は でいいんじゃないかな。S2が受理状態。S3になったら直ちにエラーとして停止していい。これを元に作ってみたC#のクラスは interface Checker { /// <summary>このオブジェクトの状態を</summary>…

数式の結果が更新されない問題の回避方法

セルの値が正しく表示されない問題「数式の結果が更新されない - チキン煮込みチーズミックス4辛」を書いたが、回避の方法を見つけた。 数式内で、次のようにシート名まで書くと、問題は起こらないようだ。理由は不明。 =concat(Sheet1!A2:A21) やっぱり無理…

Excelで列番号を英文字に変換する方法

「Excelで列番号を英文字に変換する方法 - チキン煮込みチーズミックス4辛」は間違っていた。Excelの列を表すアルファベットは、A〜Zを使った26進数表現ではない。具体的には、次のようになっている。 桁数 列番号(0ベース*1) アルファベット*2 場合の数 1…

数式の結果が更新されない

次のような引数で指定された範囲をカンマ区切りで連結して返す関数concatを準備しといて、この関数を複数シートで使って、ブックをxlsm形式で保存した。 concatを使うセルはA1でconcatの引数はA2:A21。各シートで位置は揃えている。 Option Explicit Functio…