- - PR -
2文字しりとり
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2001-09-24 16:55
三省堂デイリーコンサイス国語辞典にアクセスするWebサービスクライアントを書いてみました。
末尾2文字が先頭2文字に合致する単語を探す2文字しりとりです。 コマンドライン引数で指定した単語からスタートします。 以下のような結果を出力します。 0: ぱそこん 1: こんあつ 2: あつあげ 3: あげあし 4: あしあと 5: あとあし 6: あしおと 7: おとあわせ 8: わせい 9: せいあ 10: いあい 11: あいあいがさ 12: がさい 13: さいあい 14: アイアン 15: あんいつ 16: いついつまでも 17: デモクラシー Give Up I found 17 words. メインソースは以下の通りです。 using System; using System.Collections; using System.Xml; using eastjj001.jp.co.est.btonic; namespace eastjj001 { class Class1 { static private Hashtable used = new Hashtable(); static private ArrayList searcher( string last2letter ) { Search sch = new Search(); FindData fd = sch.GetHeadings( last2letter, eastjj001.jp.co.est.btonic.enumSearchType.FORWARD, 1, 20, 20 ); ArrayList ar = new ArrayList(); if( fd.HeadingDatas != null ) { foreach( HeadingData hd in fd.HeadingDatas ) { XmlDocument doc = new XmlDocument(); try { doc.LoadXml( hd.HeaderXML ); } catch( Exception e ) { Console.WriteLine( "Warning, XML Parase Error: {0} '{1}'", e.ToString(), hd.HeaderXML ); continue; } XmlNode node = doc.SelectSingleNode("/headword/big/b"); if( node != null ) { string target = node.InnerText; if( target.Length > 2 ) { switch( target[target.Length-2] ) { case 'ん': break; case 'ン': break; case 'ー': break; case '・': break; default: ar.Add( target ); break; } } } } } return ar; } static private void tryIt( string firstWord ) { string target = firstWord; int count = 0; while( true ) { Console.WriteLine( "{0}: {1}", count, target ); used[target] = 0; ArrayList ar = searcher( target.Substring(target.Length-2, 2 )); bool found = false; foreach( object o in ar ) { string cand = (string)o; if( used[cand] == null ) { target = cand; count ++; found = true; break; } } if( !found ) { Console.WriteLine( "Give Up I found {0} words.", count ); return; } } } static void Main(string[] args) { if( args.Length != 1 ) { Console.WriteLine("usage: eastjj001 FirstWord"); return; } if( args[0].Length < 3 ) { Console.WriteLine("First Word must have more than 3 characters"); return; } tryIt( args[0] ); } } } なお、実行すると以下のようなエラーが出る場合があります。 これは、辞書サーバから返ってくるデータ中のXML部分に未定義の実体がある場合です。おそらく正規のDTDには実体の宣言があると思いますが、それを参照するデータが無いので、パースできません。文字参照に変更する、といった何らかの対策を期待します。 Warning, XML Parase Error: System.Xml.XmlException: 宣言されていないエンティティ 'auml' への参照です。 行 1、位置 71 です。 at System.Xml.XmlValidatingReader.ResolveEntity() at System.Xml.XmlLoader.ReadCurrentNode() at System.Xml.XmlLoader.LoadChildren(XmlNode parent) at System.Xml.XmlLoader.ReadCurrentNode() at System.Xml.XmlLoader.LoadDocSequence(XmlDocument parentDoc) at System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean prese rveWhitespace) at System.Xml.XmlDocument.Load(XmlReader reader) at System.Xml.XmlDocument.LoadXml(String xml) at eastjj001.Class1.searcher(String last2letter) in f:wtesteastjj001class 1.cs:line 23 '<headword><big><b>デモーニッシュ</b></big><sub>2</sub> <small>(ド イツ)</small>dämonisch</headword>' _________________ 川俣晶 [ メッセージ編集済み 編集者: autumn 編集日時 2001-09-24 16:56 ] [ メッセージ編集済み 編集者: autumn 編集日時 2001-09-24 16:57 ] | ||||||||
|
投稿日時: 2001-09-24 16:59
この掲示板システムって、行頭の空白文字が全部消えちゃうんですね。
TABから空白に変えてもダメでした。 _________________ | ||||||||
|
投稿日時: 2001-09-25 01:26
川俣さんこんばんは。@ITの樋口です。
書き込んだ内容をなるべくそのままHTMLにしてますんで、行頭のタブとスペースは消えてしまいます。 コードを書くときにはコード部分を [code] と [/code] で囲んでください。行頭のスペースもそのまま保存して、等幅で表示されます。 詳しくは FAQ の中の BBコードをご参照くださいませ。 _________________ 樋口 理 株式会社アットマーク・アイティ | ||||||||
|
投稿日時: 2001-09-25 13:46
> 書き込んだ内容をなるべくそのままHTMLにしてますんで、行頭のタブとスペースは消えて
> しまいます。 「この投稿で HTML を使わない」をチェックしてますから、HTMLは関係ないでしょう。 > 詳しくは FAQ の中の BBコードをご参照くださいませ。 「この投稿で BBコード を使わない」もチェックしてます。 こりゃ、この掲示板システム駄目かも。 やっぱり、これはWebサービスのサンプルプログラムとして、ソースをそのまま貼り付けられる掲示板システムを作って見せろということか?^^; _________________ | ||||||||
|
投稿日時: 2001-09-25 14:24
樋口です。こまかい説明は省きますが……
BBコードを使わないをチェックすると、ダメなんです。 BBコードを使える状態で、[code][/code]タグを使うようにしていただけますか? こんなかんじになります。
あ、それから、以前に別の会議室で同じ話題が出たときに問題になったんですが、入力用のTEXTAREAでTABキーを押すとフォーカスが次のフィールドに移ってしまってタブが入力できないという(ブラウザの)「仕様」がありますので、タブの入力はお手数ですが他のエディタなどからコピー&ペーストで…… よろしくご理解とご協力のほどを。 _________________ 樋口 理 株式会社アットマーク・アイティ |
1