なでしこライブラリ~
http://w.atwiki.jp/isoroku_be/
なでしこライブラリ~
ja
2017-08-06T00:58:02+09:00
1501948682
-
●文字列カウント
https://w.atwiki.jp/isoroku_be/pages/193.html
*文字列カウント
作者名:曜日
*概要
文字列内にある特定の単語、文章の個数をカウントする。
検索範囲指定可能。
総文字数のカウント命令はありますが、文章内に文字列がいくつあるかカウントする命令は無かったと思うので
あればあったで便利かなと。
正規表現単置換を使ってカウントしているので
「きりん|キリン」等の様に指定すればひらがなカタカナ併せてのカウントも可能です。
(参考: 正規表現について - なでしこマニュアル - https://nadesi.com/doc/reference/function/2-1-regexp.htm)
*解説
***引数
全て文字列
TXT・・・検索を行なう元の文章
A・・・省略可 TXT内で範囲指定を行う場合に使用
B・・・省略可 TXT内で範囲指定を行う場合に使用
C・・・個数をカウントしたい単語(正規表現記述)
***返り値
半角数値
*//サンプルプログラム
A=『 25人の安否がわかっていない福岡県朝倉市では、9日も自衛隊や警察、
消防団などが約2千人態勢で捜索や救助を続けた。午前中、雨が一時強まり、孤立状態の住民の安否を
空から確認する予定だったヘリコプターの飛行が中止になった。
市東部の山間部にある同市杷木(はき)星丸。手作業で流木や土砂をかき出す捜索活動の様子を、
降りしきる雨の中、傘を差しながら、朝から見守る男性がいた。同市杷木久喜宮(くぐみや)の野上邦幸さん(36)。
母親の本河(ほんかわ)くに子さん(59)が一人暮らしをしていた戸建ての市営住宅が、本来あるはずの場所に、ない。
「水と土砂だけだったらこれほどひどくなかったと思う。流木が家を跡形もなく、壊したんだと思う」』
//(引用元:http://www.asahi.com/articles/ASK7964FVK79TIPE031.html)
c1=(Aで『の』を文字列カウント)
c2=(Aで『福岡県』から『捜索活動の様子』までの『の』を文字列カウント)
c3=(Aで『福岡県』から『捜索活動の様子』までの『[あ-ん]』を文字列カウント)
「『の』の数・・・{c1}
『福岡県』~『捜索活動の様子』の間に使われた『の』の
2017-08-06T00:58:02+09:00
1501948682
-
■優先度付きキュー
https://w.atwiki.jp/isoroku_be/pages/192.html
*情報
作者名:1.0e+21 (@TumoiYorozu)
*概要
なでしこ用の優先度付きキュー(priority queue)です。
キューに入れた要素をいい感じにソート(並び替え)して、最大値(カスタム可能)を取り出すことが可能です。
二分ヒープによる実装で、要素の挿入・削除をO(log n)で、先頭の参照はO(1)で行うことができます。
優先度付きキュー(priority queue)について詳しくは、Wikipedia等を御覧ください。
http://ja.wikipedia.org/wiki/%E5%84%AA%E5%85%88%E5%BA%A6%E3%81%A4%E3%81%8D%E3%82%AD%E3%83%A5%E3%83%BC
デフォルトでは降順(大きい順)ですが、内部の比較(A,B)関数を上書きすることで、カスタマイズできます。
要素が空の状態でトップ・ポップした場合、NILを返します。
*解説
**・初期化~
初期化します。意識しなくても、作った時に勝手に呼ばれます。
**・プッシュ(V|Vを)~
変数Vをキューに入れます。
Vはデフォルトで整数・実数に対して有効ですが、後述の操作で文字列や配列等も挿入可能です。
O(log n)時間かかります。
**・トップ~
ソートした際の最上位の値を返します。
つまり、デフォルトでは降順なので、最大の値が返ります。
O(1)時間かかります。
**・ポップ~
ソートした際の最上位の変数を削除します。
返り値は、削除した値になります。
O(log n)時間かかります。
**・トップポップ~
トップの操作をし、ポップの操作をします。トップの返り値を返ります。
が、実質的にポップと同じ動作です。
(ここらへんはC++の仕様とか習わし的な何かを模した結果)
(てか、ポップがC++だと返り値を返さないけど、このライブラリは返すのが原因)
**・サイズ
データの個数を返します。
**・比較(A,B)~
比較のための関数です。
デフォルトでA-Bで比較するので、整数・実数にのみ有効です。
文字列や配列等の比較をするには、後述の比較関数の上書きが必要です。(要サンプルプログラム2参照)
*サンプルプログ
2014-12-12T20:36:55+09:00
1418384215
-
◆nakoGMP
https://w.atwiki.jp/isoroku_be/pages/191.html
*情報
作者名:1.0e+21
引用元:mpirライブラリをなでしこ用に改変
*概要
mpirと言う、Windows用に移植されたC言語用GMPライブラリを使用して、なでしこで多倍長整数(巨大な整数)の計算をできるようにします。
なでしこ用プラグインをインストールするので、なでしこ標準の関数と同じように使用できます。
関数名はほとんどGMPのMPZ(整数)で使用できるものがほとんどなので、以下のサイトなどを参考にすると、だいたい使えると思います。
https://gmplib.org/manual/Integer-Functions.html
*サンプルプログラム
「nakoGMP ver:{NAKOGMP_DLLバージョン}、mpir ver:{Get_mpir_version}」と表示
A=mpz_init //多倍長整数を使用するためのキーが作成される。
「Aのキー:{A}」を表示
B=mpz_init
「Bのキー:{B}」を表示
C=mpz_init
「Cのキー:{C}」を表示
mpz_set_str(A、『123456789012345678901234567890123456789』、10)
mpz_set_str(B、『987654321098765432109876543210987654321』、10)
「A={mpz_get_str(A,10)}」を表示
「B={mpz_get_str(B,10)}」を表示
mpz_add(C,A,B)
「A+B={mpz_get_str(C,10)}」を表示
mpz_mul(C,B,A)
「A*B={mpz_get_str(C,10)}」を表示
mpz_clear(A)
mpz_clear(B)
mpz_clear(C)
//mpz_add(C,A,B)
//↑のコメントを外すと、不正なキーを使用するので、エラーが発生する。
*本体
https://www.dropbox.com/s/o9njvw9jd48zu1a/nakoGMP.dll
よりダウンロードして、なでしこのプラグインフォルダにコピー
又は、このページに添付されているdllをダウンロードして、なでしこのプラグインフ
2014-01-27T01:20:41+09:00
1390753241
-
●一括配列行削除
https://w.atwiki.jp/isoroku_be/pages/190.html
*情報
作者名:serica
引用元:自作
*概要
正規表現一致で一致する要素を配列から一括削除する関数。
対象の配列を書き換える。
*解説
標準関数の「正規表現ピックアップ」と対になる物として作成した物で、
「正規表現ピックアップ」が指定パターンに一致する要素だけ抽出し別配列を作成するのに対し、
この関数は指定パターンに一致する要素を元配列から直接削除する物。
処理的には配列の各要素を順に正規表現で判定していき、条件を満たせば要素を削除するだけ。
同じ引数(配列とパターン)で、「正規表現ピックアップ」→「一括配列行削除」の順番で実行すれば、
パターンの一致と不一致で、配列を2つに分けた形になるハズ。
***返り値
無し({参照渡し}の為)
*サンプルプログラム
パターン画像=「.*([Bb][Mm][Pp]|[Jj][Pp][Gg]|[Pp][Nn][Gg])」
暫定配列A=「123.BMP
123
456.jpg
465
789.png
789」
//①パターンの正規表現に一致する拡張子で終わる行が削除される。
//①結果「123,【空行】,465,【空行】,789」
暫定配列=暫定配列A
暫定配列からパターン画像を一括配列行削除
暫定配列を言う
//②パターンとして【「」】や【空】を直に指定すれば空行と一致して削除される。
//②結果「123.BMP,123,456.jpg,465,789.png,789」
暫定配列=暫定配列A
暫定配列から「」を一括配列行削除
暫定配列を言う
*本体
●一括配列行削除({参照渡し}対処配列から|対処配列の,対処パターンを)
cとは整数=0。LMとは整数=対処配列の要素数。
(c<LM)の間
もし(対処配列[c]を対処パターンで正規表現一致)=はいならば
対処配列のcを配列削除。LMから1を直接引く
違えば
cに1を直接足す
----
#comment()
初めてUPするのでプレビュで行頭がガタついたりと…うまく記載できたか心配です。
又、引数をアルファベットにするの苦手なので、
2013-10-20T14:02:10+09:00
1382245330
-
■関数ポインタ改
https://w.atwiki.jp/isoroku_be/pages/189.html
*情報
作者名:YouTubeダウンロードし放題
引用元:[[なでしこプログラム掲示板「代用関数ポインタ」>http://nade.jp-pro.net/bbs/bbs3/cbbs.cgi?mode=al2&number=5747&no=0&KLOG=6]]&br()[[なでしこライブラリ「関数ポインタ」>http://www26.atwiki.jp/isoroku_be/pages/67.html]]
*概要
関数ポインタが最新のなでしこで使えない..って人が多かったので不具合を直しました。
これを使えばなでしこで
-マルチスレッド
-フォームをWinAPIレベルから作成してメッセージループを回す
-非同期な通信
-重い処理の非同期実行
などの高度な処理を実現できます
*[[ソースダウンロード>http://www26.atwiki.jp/isoroku_be?cmd=upload&act=open&pageid=189&file=%E9%96%A2%E6%95%B0%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF+2.05.nako]]
*[[サンプル集ダウンロード>http://www26.atwiki.jp/isoroku_be?cmd=upload&act=open&pageid=189&file=%E9%96%A2%E6%95%B0%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF+2.05.zip]]
*変更点
-ver2.10
+●関数ポインタ作成 でイベントを事前にEVALで登録するように修正(高速化)
-ver2.05
+使いやすいように関数命令を追加&br()●関数ポインタ取得&br()●関数ポインタ取得&br()●関数ポインタ実行
+2個以上関数ポインタを作成した場合のアドレス重複エラーを修正
+関数内での宣言をサポート
+わざわざVirtualAllocでメモリを確保する理由もなく、メモリを解放し忘れる人が多いのでなでしこの「確保」命令に置換&br()(追記: やっぱり実行アクセスの有無が違うらしい... でも実行アクセスがなくてもなぜか実行できるので保留。)
-ver1.01
+グローバルからアクセスできるように
+引数の型を指定できるように
*
2012-08-23T02:38:44+09:00
1345657124
-
●リッチファイル選択
https://w.atwiki.jp/isoroku_be/pages/188.html
*情報
作者名:YouTubeダウンロードし放題
引用元:なし
*概要
「ファイル選択」命令よりリッチな感じの「ファイルを開く」ダイアログを生成できます
*[[ダウンロード>http://www26.atwiki.jp/isoroku_be?cmd=upload&act=open&pageid=188&file=%E3%83%AA%E3%83%83%E3%83%81%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E9%81%B8%E6%8A%9E.nako]]
*サンプル
「すべてのファイル (*.*),*.*
テキストファイル (*.txt),*.txt」を「C:\」でリッチファイル選択
それを表示
*本体
●リッチファイル選択({配列}フィルタ一覧を初期ディレクトリで)
ファイル名とは文字列
フィルタとは文字列
OpenFileName構造体とは文字列
OpenFileNameグループとはOPENFILENAME
ファイル名にMAX_PATHを確保
フィルタ一覧で反復
フィルタに「{対象[0]}{\0}{対象[1]}{\0}」を追加
フィルタに"{\0}"を追加
OpenFileNameグループについて
hwndOwner = 母艦ハンドル
hInstance = インスタンスハンドル
lpstrInitialDir = POINTER(初期ディレクトリ)
lpstrFilter = POINTER(フィルタ)
lpstrFile = POINTER(ファイル名)
nMaxFile = MAX_PATH
lpstrTitle = POINTER("ファイルを開く")
Flags = OFN_FILEMUSTEXIST
PACK(OpenFileNameグループ,OpenFileName構造体,OPENFILENAME型)
もし、GetOpenFileName(POINTER(OpenFileName構造体))ならば
ファイル名=ファイル名から"{\0}"まで切り取る
2012-07-19T03:51:07+09:00
1342637467
-
●URLエンコードの仕組み
https://w.atwiki.jp/isoroku_be/pages/187.html
*情報
作者名:Craving研究家
*[[ダウンロード>http://www26.atwiki.jp/isoroku_be/?cmd=upload&act=open&page=%E2%97%8FURL%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E4%BB%95%E7%B5%84%E3%81%BF&file=URL%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89.nako]]
*概要
URLエンコードの仕組みです。
*サンプルプログラム
「Hello World! = 世界よ、こんにちは! <>"{}|\^[]`#%;/?:@&=+$,」をURLエンコードB
それを表示
それをURLデコードB
それを表示
*本体
●URLエンコードB(Sを)
結果とは文字列;対象とは文字列
Iで1から(Sのバイト数)まで繰り返す
対象=MIDB(S,I,1)
もし、対象が「[^a-zA-Z0-9_\-\.]」に正規表現一致ならば
対象="%"&(ASC(対象)を10から16進数変換)
対象を結果に追加
結果=結果の「%20」を「+」に置換// 空白は"+"に置換
結果で戻る
●URLデコードB(Sを)
結果とは文字列
Iとは整数=1;対象とは文字列
S=Sの「+」を「%20」に置換// 空白に戻す
(I<=(Sのバイト数))の間
対象=MIDB(S,I,1)
もし、対象="%"ならば
対象=CHR(INT(「${MIDB(S,I+1,2)}」))
I=I+2
対象を結果に追加
I=I+1
結果で戻る
#--------------------------
#進数変換(五十六さん作 ありがとうございます)改造 ここから
#--------------------------
●十進数(SをVで)
IでASC("a")からASC("z")まで繰り返す
S=SのCHR(I)をCHR(I+ASC("A")-ASC("a"))に置換
S=(Sを文字列分解)を配列逆順
2012-02-07T07:40:23+09:00
1328568023
-
●BASE64エンコードの仕組み
https://w.atwiki.jp/isoroku_be/pages/186.html
*情報
作者名:Craving研究家
*[[ダウンロード>http://www26.atwiki.jp/isoroku_be/?cmd=upload&act=open&page=%E2%97%8FBASE64%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E4%BB%95%E7%B5%84%E3%81%BF&file=BASE64%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89%E3%83%BB%E3%83%87%E3%82%B3%E3%83%BC%E3%83%89.nako]]
*概要
BASE64の仕組みです。これをカスタマイズすれば結果をバイナリや配列で返したり、独自の暗号化アルゴリズムが作成できます。
*サンプルプログラム
「こんにちは」をBASE64エンコードB
それを表示
それをBASE64デコードB
それを表示
*本体
!B64_TABLE=『ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=』
●BASE64エンコードB(Sを)
結果とは文字列;ARYとは配列
Iで1から(Sのバイト数)まで繰り返す
ASC(MIDB(S,I,1))をARYに配列追加
MDとは整数=ARYの配列要素数%3
もし、MD!=0ならば(3-MD)回(0をARYに配列追加)//"="の代わりに"A"を付加
Iとは整数;TMPとは整数
(I<(ARYの配列要素数-1))の間
TMP=(ARY[I]<<16)||(ARY[I+1]<<08)||(ARY[I+2]<<00)
結果にMIDB(B64_TABLE,((TMP>>18&&$3F)+1),1)を追加
結果にMIDB(B64_TABLE,((TMP>>12&&$3F)+1),1)を追加
結果にMIDB(B64_TABLE,((TMP>>06&&$3F)+1),1)を追加
結果にMIDB(B64_TABLE,((TMP>>00&&$3F)+1),1)を追加
I=I+3
もし、MD!=0ならば//付加した"A"を"
2012-02-07T06:57:27+09:00
1328565447
-
●改行コード変更
https://w.atwiki.jp/isoroku_be/pages/185.html
*情報
作者名:YouTubeダウンロード
*[[ダウンロード>http://www26.atwiki.jp/isoroku_be/?cmd=upload&act=open&page=%E2%97%8F%E6%94%B9%E8%A1%8C%E3%82%B3%E3%83%BC%E3%83%89%E5%A4%89%E6%9B%B4&file=%E6%94%B9%E8%A1%8C%E3%82%B3%E3%83%BC%E3%83%89%E5%A4%89%E6%9B%B4.nako]]
*概要
改行コードを調査・変更できます。時々ファイルを開いたりやHTTPデータ取得したデータから改行を検知できないことがありますが、それは改行コードが違う場合が多いです
*サンプルプログラム
「http://www.youtube.com/」のHTTPデータ取得
それの改行コード調査
それを言う
*本体
!CR=CHR($0D);//復帰
!LF=CHR($0A);
!CRLF=CR&LF;//改行
●改行コード調査({=?}Sの|Sを)
もし、S=空ならばS=_
もし、(SのCRLFを空に置換)!=Sならば「CRLF」で戻る
もし、(SのLFを空に置換)!=Sならば「LF」で戻る
もし、(SのCRを空に置換)!=Sならば「CR」で戻る
-1で戻る
●改行コード変更({=?}Sの|Sを{=?}CODEに)
もし、S=空ならばS=_
もし、CODE=空ならばCODE=CRLF
改行コード調査(S)で条件分岐
「CRLF」ならば(SのCRLFをCODEに置換)で戻る
「LF」ならば(SのLFをCODEに置換)で戻る
「CR」ならば(SのCRをCODEに置換)で戻る
Sで戻る
----
総合:&counter()
今日:&counter(today)人
昨日:&counter(yesterday)人
#comment()
----
2012-02-01T09:48:41+09:00
1328057321
-
●窓ハンドル命令集
https://w.atwiki.jp/isoroku_be/pages/184.html
*[[ダウンロード>http://www26.atwiki.jp/isoroku_be/?cmd=upload&act=open&page=%E2%97%8F%E7%AA%93%E3%83%8F%E3%83%B3%E3%83%89%E3%83%AB%E5%91%BD%E4%BB%A4%E9%9B%86&file=%E7%AA%93%E3%83%8F%E3%83%B3%E3%83%89%E3%83%AB%E5%91%BD%E4%BB%A4%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA.nako]]
*概要
窓ハンドル命令の優秀なライブラリがたくさんあったのでまとめてみました。これでデフォルトの約2倍の窓ハンドル系の命令が使えるようになります。
見やすいようにDLLと書式を統合しました。
●窓ハンドル有効/無効
●窓ハンドル最前面/最前面解除
●窓ハンドルWH設定
●窓ハンドルバー無効/有効
●窓ハンドル親設定
●窓ハンドル終了ボタン無効/有効
●窓ハンドル最大化ボタン無効/有効
●窓ハンドル最小化ボタン無効/有効
●窓ハンドル最小化
●窓ハンドル最大化
●窓ハンドル終了
●窓ハンドル移動禁止
●窓ハンドルサイズ変更禁止
●窓ハンドルスタイル削除
●窓ハンドル最大化判定
●窓ハンドル透明度設定
●窓ハンドルフルスクリーン
●API窓ハンドルサイズ取得
●API窓アクティブハンドル取得
●API窓アクティブハンドル取得2
*作者一覧
#region(close,hihiro さん)
-●窓ハンドル有効/無効
#endregion#region(close,不明)
-●窓ハンドル最前面固定/解除
#endregion
#endregion#region(close,うたひこ さん)
-●窓ハンドルバー有効/無効
-●窓ハンドル親設定
#endregion
#region(close,まっこう さん)
-●窓ハンドル終了ボタン有効/無効
-●窓ハンドル最大化/最小化ボタン無効
-●窓ハンドル終了
-●窓ハンドル移動禁止
-●窓ハンドルサイズ変更禁止
#endregion
#region(close,forte
2012-02-01T10:56:06+09:00
1328061366