●昇降優先表ソート

「●昇降優先表ソート」の編集履歴(バックアップ)一覧はこちら

●昇降優先表ソート」(2009/03/24 (火) 22:06:07) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

*情報 作者名:五十六 引用元:なし *概要 表列(二次元配列)をオプション(昇順,降順)の優先順位でソートします。 *解説 ***引数 SS:表列 VV:ソートオプション(AA,BB,CC) の配列(上にあるほど優先順位が高い) AA:対象の列(数値、0起点) BB:昇順or降順 CC:「文字」or「数値」or「日付」or「時間」or配列カスタムソート用のプログラムS(*を入れておくとAAに置換される) 日付 yyyy/mm/dd  時間 hh:mm:ss (共に昇順で古い時間帯からソートする) ***返り値 ソートされた表列 *サンプルプログラム A=「E,4,d B,1,5 A,1,h B,1,3 C,3,q」をCSV取得。 オプション=「1,昇順,数値 0,降順,文字 2,昇順,数値」。 //1列目を昇順で数値ソートした後 //0列目を降順で文字ソートした後 //2列目を昇順で数値ソートします。 A=Aをオプションで昇降優先表ソート。 Aを言う。 /* B,1,3 B,1,5 A,1,h C,3,q E,4,d */ *//本体 ●昇降優先表ソート(SSをVVで)   既並列とは配列=空。今値とは配列=空。前値とは配列=空。結果とは配列=空。補助とは配列=空。   VVで反復     結果=空。補助=空。初処理=いいえ。今値=空。前値=空。対象を「,」で区切る。AA=それ[0]。BB=それ[1]。CC=それ[2]。     //0=昇順。1=降順。ということにしようと思ったけどわかりやすいように「昇順」「降順」そのまま     もし、BB=「昇順」ならば       //昇順       もし、既並列=空ならば         //初処理         もし、CC=「数値」ならば、SS=SSのAAを表数値ソート。         もし、CC=「文字」ならば、SS=SSのAAを表ソート。         もし、CC=「日付」ならば、SS=SSを「B[{AA}]とA[{AA}]の日数差」で配列カスタムソート。SSを配列逆順。         もし、CC=「時間」ならば、SS=SSを「B[{AA}]とA[{AA}]の時間差」で配列カスタムソート。SSを配列逆順。         違えば、CC=CCの「*」をAAに置換。SS=SSをCCで配列カスタムソート。         既並列にAAを配列追加。続ける。       違えば         //二回目以降         SSで反復           NN=対象。今値=空。既並列で反復、今値にNN[対象]を配列追加。           //初処理           もし、初処理=いいえならば、補助にNNを配列追加。前値=今値。初処理=はい。続ける。           もし、前値≠今値ならば             //前値と違う場合             もし、補助の配列要素数≠「1」ならば               もし、CC=「数値」ならば、補助=補助のAAを表数値ソート。               もし、CC=「文字」ならば、補助=補助のAAを表ソート。               もし、CC=「日付」ならば、補助=補助を「B[{AA}]とA[{AA}]の日数差」で配列カスタムソート。SSを配列逆順。               もし、CC=「時間」ならば、補助=補助を「B[{AA}]とA[{AA}]の時間差」で配列カスタムソート。SSを配列逆順。               違えば、CC=CCの「*」をAAに置換。補助=補助をCCで配列カスタムソート。                            補助で反復、対象を結果に配列追加。             補助=空。補助にNNを配列追加。前値=今値。                        違えば             //前値と同じ場合             補助にNNを配列追加。前値=今値。                    もし、補助の配列要素数≠「1」ならば           もし、CC=「数値」ならば、補助=補助のAAを表数値ソート。           もし、CC=「文字」ならば、補助=補助のAAを表ソート。           もし、CC=「日付」ならば、補助=補助を「B[{AA}]とA[{AA}]の日数差」で配列カスタムソート。SSを配列逆順。           もし、CC=「時間」ならば、補助=補助を「B[{AA}]とA[{AA}]の時間差」で配列カスタムソート。SSを配列逆順。           違えば、CC=CCの「*」をAAに置換。補助=補助をCCで配列カスタムソート。         補助で反復、対象を結果に配列追加。         既並列にAAを配列追加。             違えば       //降順       もし、既並列=空ならば         //初処理         もし、CC=「数値」ならば、SS=SSのAAを表数値ソート。         もし、CC=「文字」ならば、SS=SSのAAを表ソート。         もし、CC=「日付」ならば、SS=SSを「B[{AA}]とA[{AA}]の日数差」で配列カスタムソート。SSを配列逆順。         もし、CC=「時間」ならば、SS=SSを「B[{AA}]とA[{AA}]の時間差」で配列カスタムソート。SSを配列逆順。         違えば、CC=CCの「*」をAAに置換。SS=SSをCCで配列カスタムソート。         SSを配列逆順。         既並列にAAを配列追加。続ける。       違えば         //二回目以降         SSで反復           NN=対象。今値=空。既並列で反復、今値にNN[対象]を配列追加。           //初処理           もし、初処理=いいえならば、補助にNNを配列追加。前値=今値。初処理=はい。続ける。                      もし、前値≠今値ならば             //前値と違う場合             もし、補助の配列要素数≠「1」ならば               もし、CC=「数値」ならば、補助=補助のAAを表数値ソート。               もし、CC=「文字」ならば、補助=補助のAAを表ソート。               もし、CC=「日付」ならば、補助=補助を「B[{AA}]とA[{AA}]の日数差」で配列カスタムソート。SSを配列逆順。               もし、CC=「時間」ならば、補助=補助を「B[{AA}]とA[{AA}]の時間差」で配列カスタムソート。SSを配列逆順。               違えば、CC=CCの「*」をAAに置換。補助=補助をCCで配列カスタムソート。               補助を配列逆順。             補助で反復、対象を結果に配列追加。             補助=空。補助にNNを配列追加。前値=今値。                        違えば             //前値と同じ場合             補助にNNを配列追加。前値=今値。         もし、補助の配列要素数≠「1」ならば           もし、CC=「数値」ならば、補助=補助のAAを表数値ソート。           もし、CC=「文字」ならば、補助=補助のAAを表ソート。           もし、CC=「日付」ならば、補助=補助を「B[{AA}]とA[{AA}]の日数差」で配列カスタムソート。SSを配列逆順。           もし、CC=「時間」ならば、補助=補助を「B[{AA}]とA[{AA}]の時間差」で配列カスタムソート。SSを配列逆順。           違えば、CC=CCの「*」をAAに置換。補助=補助をCCで配列カスタムソート。           補助を配列逆順。         補助で反復、対象を結果に配列追加。         既並列にAAを配列追加。     SS=結果。   SSで戻る。 ---- #comment() ----
*情報 作者名:五十六 引用元:なし *概要 表列(二次元配列)をオプション(昇順,降順)の優先順位でソートします。 *解説 ***引数 SS:表列 VV:ソートオプション(AA,BB,CC) の配列(上にあるほど優先順位が高い) AA:対象の列(数値、0起点) BB:昇順or降順 CC:「文字」or「数値」or「日付」or「時間」or配列カスタムソート用のプログラムS(*を入れておくとAAに置換される) 日付 yyyy/mm/dd  時間 hh:mm:ss (共に昇順で古い時間帯からソートする) ***返り値 ソートされた表列 *サンプルプログラム A=「E,4,d B,1,5 A,1,h B,1,3 C,3,q」をCSV取得。 オプション=「1,昇順,数値 0,降順,文字 2,昇順,数値」。 //1列目を昇順で数値ソートした後 //0列目を降順で文字ソートした後 //2列目を昇順で数値ソートします。 A=Aをオプションで昇降優先表ソート。 Aを言う。 /* B,1,3 B,1,5 A,1,h C,3,q E,4,d */ *//本体 ●昇降優先表ソート(SSをVVで)   既並列とは配列=空。今値とは配列=空。前値とは配列=空。結果とは配列=空。補助とは配列=空。   VVで反復     結果=空。補助=空。初処理=いいえ。今値=空。前値=空。対象を「,」で区切る。AA=それ[0]。BB=それ[1]。CC=それ[2]。     //0=昇順。1=降順。ということにしようと思ったけどわかりやすいように「昇順」「降順」そのまま     もし、BB=「降順」ならば       //昇順       もし、既並列=空ならば         //初処理         もし、CC=「数値」ならば、SS=SSのAAを表数値ソート。         もし、CC=「文字」ならば、SS=SSのAAを表ソート。         もし、CC=「日付」ならば、SS=SSを「B[{AA}]とA[{AA}]の日数差」で配列カスタムソート。         もし、CC=「時間」ならば、SS=SSを「B[{AA}]とA[{AA}]の時間差」で配列カスタムソート。         違えば、CC=CCの「*」をAAに置換。SS=SSをCCで配列カスタムソート。         既並列にAAを配列追加。続ける。       違えば         //二回目以降         SSで反復           NN=対象。今値=空。既並列で反復、今値にNN[対象]を配列追加。           //初処理           もし、初処理=いいえならば、補助にNNを配列追加。前値=今値。初処理=はい。続ける。           もし、前値≠今値ならば             //前値と違う場合             もし、補助の配列要素数≠「1」ならば               もし、CC=「数値」ならば、補助=補助のAAを表数値ソート。               もし、CC=「文字」ならば、補助=補助のAAを表ソート。               もし、CC=「日付」ならば、補助=補助を「B[{AA}]とA[{AA}]の日数差」で配列カスタムソート。               もし、CC=「時間」ならば、補助=補助を「B[{AA}]とA[{AA}]の時間差」で配列カスタムソート。               違えば、CC=CCの「*」をAAに置換。補助=補助をCCで配列カスタムソート。                            補助で反復、対象を結果に配列追加。             補助=空。補助にNNを配列追加。前値=今値。                        違えば             //前値と同じ場合             補助にNNを配列追加。前値=今値。                    もし、補助の配列要素数≠「1」ならば           もし、CC=「数値」ならば、補助=補助のAAを表数値ソート。           もし、CC=「文字」ならば、補助=補助のAAを表ソート。           もし、CC=「日付」ならば、補助=補助を「B[{AA}]とA[{AA}]の日数差」で配列カスタムソート。           もし、CC=「時間」ならば、補助=補助を「B[{AA}]とA[{AA}]の時間差」で配列カスタムソート。           違えば、CC=CCの「*」をAAに置換。補助=補助をCCで配列カスタムソート。         補助で反復、対象を結果に配列追加。         既並列にAAを配列追加。             違えば       //降順       もし、既並列=空ならば         //初処理         もし、CC=「数値」ならば、SS=SSのAAを表数値ソート。         もし、CC=「文字」ならば、SS=SSのAAを表ソート。         もし、CC=「日付」ならば、SS=SSを「B[{AA}]とA[{AA}]の日数差」で配列カスタムソート。         もし、CC=「時間」ならば、SS=SSを「B[{AA}]とA[{AA}]の時間差」で配列カスタムソート。         違えば、CC=CCの「*」をAAに置換。SS=SSをCCで配列カスタムソート。         SSを配列逆順。         既並列にAAを配列追加。続ける。       違えば         //二回目以降         SSで反復           NN=対象。今値=空。既並列で反復、今値にNN[対象]を配列追加。           //初処理           もし、初処理=いいえならば、補助にNNを配列追加。前値=今値。初処理=はい。続ける。                      もし、前値≠今値ならば             //前値と違う場合             もし、補助の配列要素数≠「1」ならば               もし、CC=「数値」ならば、補助=補助のAAを表数値ソート。               もし、CC=「文字」ならば、補助=補助のAAを表ソート。               もし、CC=「日付」ならば、補助=補助を「B[{AA}]とA[{AA}]の日数差」で配列カスタムソート。               もし、CC=「時間」ならば、補助=補助を「B[{AA}]とA[{AA}]の時間差」で配列カスタムソート。               違えば、CC=CCの「*」をAAに置換。補助=補助をCCで配列カスタムソート。               補助を配列逆順。             補助で反復、対象を結果に配列追加。             補助=空。補助にNNを配列追加。前値=今値。                        違えば             //前値と同じ場合             補助にNNを配列追加。前値=今値。         もし、補助の配列要素数≠「1」ならば           もし、CC=「数値」ならば、補助=補助のAAを表数値ソート。           もし、CC=「文字」ならば、補助=補助のAAを表ソート。           もし、CC=「日付」ならば、補助=補助を「B[{AA}]とA[{AA}]の日数差」で配列カスタムソート。           もし、CC=「時間」ならば、補助=補助を「B[{AA}]とA[{AA}]の時間差」で配列カスタムソート。           違えば、CC=CCの「*」をAAに置換。補助=補助をCCで配列カスタムソート。           補助を配列逆順。         補助で反復、対象を結果に配列追加。         既並列にAAを配列追加。     SS=結果。   SSで戻る。 ---- #comment() ----

表示オプション

横に並べて表示:
変化行の前後のみ表示:
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。