DOBON.NETプログラミング道掲示板

[ 最新記事及び返信フォームをトピックトップへ ]

■35678 / inTopicNo.1)  ロジックの実現お願い
  
□投稿者/ あばば無人君 一般人(2回)-(2025/07/22(Tue) 21:24:46)
  • アイコン環境/言語:[Windows10 Home(19045.5917) 64bit、.NetFramework_4.8.1] 
    分類:[.NET] 

    約1年半ぶりの投稿となります。宜しくお願いします。

    掲題の件ですが、以下の仕様を実現するロジックを組むorヒントが欲しいです。
    (ロジックなんて自分で考えろ!と言われるのは百も承知ですが、
    この件に10Hほど掛けても未だ光明が見えず、致し方なくの投稿です)

    ※書き込みのルール「丸投げした投稿」に該当するのでしたらご指摘ください。
     諦めます。


    ではここから仕様

    以下のカラムを持つDataTable「dtSyuyakumae」があります。
    全カラム数値で、後述のデータパターン(集約前)の値が入っています。
    ・親分類
    ・子分類
    ・孫分類
    ・他分類

    これを以下のクラスに格納してListに積みたいのですが、その際に
    「親子孫の値に0が含まれるなら複数行を集約&空値にしてクラスにセットする」
    「ただし他分類が異なるならそれぞれの行でクラスにセットする」
    というのが条件になります。
    (言葉では分かりにくいと思うのでデータパターン(集約後)をご確認下さい)

    クラス
    private class BunruiInfo
    {
    /// <summary>親分類</summary>
    public string OBunrui { get; set; } = string.Empty;
    /// <summary>子分類</summary>
    public string KBunrui { get; set; } = string.Empty;
    /// <summary>孫分類</summary>
    public string MBunrui { get; set; } = string.Empty;
    /// <summary>他分類</summary>
    public string HBunrui { get; set; } = string.Empty;
    }

    処理部分
    private void button1_Click(object sender, EventArgs e)
    {
    // このDataTableが集約前のデータa〜jいずれかとなる
    DataTable dtSyuyakumae = GetSyuyakumaeData();

    // このリストに集約後のデータを積みたい
    var bunruiList = new List<BunruiInfo>();

    ★ここで集約するロジックが実現できない!★


    }


    パッと見だと実現できそうな感じがするのですが、いざやってみると
    「あちらを立てればこちらが立たず」な状態となってしまい、
    どうにもならなくなったのでご助力を依頼している状態です。

    ロジックの実現お願いなど「ふざけるな!」と言われそうで恐縮ですが
    自分(と周りのメンバー)ではどうにもできないのでご協力の程、お願い致します。


    ここからデータパターン
    ※インデントを調整していますが等幅フォントでないと正しく表示されないかも。
     お手数ですがメモ帳などのテキストエディタに張り付けてご確認ください。

      集約前                 集約後
    a  親分類 子分類 孫分類 他分類   →   親分類 子分類 孫分類 他分類
      1   1   1   1         1          1
      1   0   0   1


    b  親分類 子分類 孫分類 他分類   →   親分類 子分類 孫分類 他分類
      1   1   1   1         1   1       1
      1   1   0   1


    c  親分類 子分類 孫分類 他分類   →   親分類 子分類 孫分類 他分類
      1   1   1   1         1   1   1   
      1   1   1   0


    d  親分類 子分類 孫分類 他分類   →   親分類 子分類 孫分類 他分類
      1   1   0   1         1   1       1
      2   0   0   1         2          1


    e  親分類 子分類 孫分類 他分類   →   親分類 子分類 孫分類 他分類
      1   1   0   1         1   1       1
      1   2   0   1         1   2       1


    f  親分類 子分類 孫分類 他分類   →   親分類 子分類 孫分類 他分類
      1   1   1   1         1   1   1   1
      1   0   0   2         1          2


    g  親分類 子分類 孫分類 他分類   →   親分類 子分類 孫分類 他分類
      1   0   0   2         1          2
      1   1   0   1         1   1       1
      1   1   1   1         1   2       1
      1   2   0   1


    h  親分類 子分類 孫分類 他分類   →   親分類 子分類 孫分類 他分類
      1   1   1   1         1   1   1   1
      0   0   0   2                   2


    i  親分類 子分類 孫分類 他分類   →   親分類 子分類 孫分類 他分類
      0   0   0   2                   2
      1   1   1   1         1   1   1   1
      2   0   0   3         2          3
      2   1   1   2         2   1   1   2


    j  親分類 子分類 孫分類 他分類   →   親分類 子分類 孫分類 他分類
      1   1   1   1         1   1   1   1
      1   2   0   1         1   2       1

マルチポストを報告
違反を報告
引用返信 削除キー/
■35679 / inTopicNo.2)  Re[1]: ロジックの実現お願い
□投稿者/ おき 一般人(1回)-(2025/07/23(Wed) 10:34:17)
  • アイコンNo35678に返信(あばば無人君さんの記事)

    イ.
    データパターンcの入出力が、文章で記述されたルールと矛盾しているように見えます。
    「データパターンc」か「文章で記述されたルール」かどちらかが誤っていますか?

    ロ.
    3入力1出力のデータパターンを最低1つは用意した方が良いと思います。文章で記述されたルールから推測は付くのですがデータパターンが無いと確信できません。
違反を報告
引用返信 削除キー/
■35680 / inTopicNo.3)  Re[2]: ロジックの実現お願い
□投稿者/ おき 一般人(2回)-(2025/07/23(Wed) 13:21:58)
  • アイコンこの3入力のとき、出力はどうなりますか?
    0001
    1111
    1221



    Column数が4なのはわかりました。一方Row数はパターンデータ通りに4以下なのでしょうか?
    Row数の制約があれば教えて下さい。
    Row数が必ず4以下で与えられるものとしてパターンデータaが2回繰り返されていたとき出力はどうなりますか?

    1111
    1001
    1111
    1001



    親子孫の定義がなされていません。以下のようなパターンデータのとき出力はどうなりますか?

    1011
    1011


違反を報告
引用返信 削除キー/
■35681 / inTopicNo.4)  Re[3]: ロジックの実現お願い
□投稿者/ あばば無人君 一般人(3回)-(2025/07/31(Thu) 07:08:29)
  • アイコンおき さん、ご返答ありがとうございます。
    また、返信が遅くなりまことに申し訳ありません。
    (投稿の翌日から昨日まで出張が入り返信できませんでした)

    以下、ご返信いただいた内容にお答え致します。

    > イ.
    > データパターンcの入出力が、文章で記述されたルールと矛盾しているように見えます。
    > 「データパターンc」か「文章で記述されたルール」かどちらかが誤っていますか?

    →データパターンcはあり得ます。文章で記述されたルールが正確ではありませんでした。
     まずルールの前に値の意味を記載すべきでした。(スミマセン)
     値の意味:
      値は0または0以外(正数のみ)で、0は「全て」を意味します。
      また(予想がついていたと思いますが)親子孫は、親→子→孫の関係なので
      上位で0が出てきたら下位も0となります。
      (100はあっても010や001のパターンは無いということ)

      ただし他分類だけは特殊で、親子孫が同じ値の時に他分類が0なら
      集約することになります。(データパターンcがこれに該当します)


    > この3入力のとき、出力はどうなりますか?
    > 0001
    > 1111
    > 1221

    →親子孫が0の入力があり、他は3入力とも1となっているので出力は 0001 のみとなります。


    > Column数が4なのはわかりました。一方Row数はパターンデータ通りに4以下なのでしょうか?
    > Row数の制約があれば教えて下さい。

    →Row数は制限なしです。データパターンの4行はあくまで例となります。


    > Row数が必ず4以下で与えられるものとしてパターンデータaが2回繰り返されていたとき出力はどうなりますか?
    >
    > 1111
    > 1001
    > 1111
    > 1001

    →すべて親1/他1であり、子孫は0なので出力は 1001 のみとなります。


    > 親子孫の定義がなされていません。以下のようなパターンデータのとき出力はどうなりますか?
    >
    > 1011
    > 1011

    →上記値の意味のとおり、上位の子が0なのに孫が1のパターンはありません。


    上記が回答となりますが、「まだ意味不明だよ!」とか「この場合は?」など
    ありましたらご連絡ください。

    返信が遅くなりまことに申し訳ありませんでした。

違反を報告
引用返信 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

Mode/  Pass/


- Child Tree -