代码之家  ›  专栏  ›  技术社区  ›  Paddy3118

生成所有可能的解决方案?

  •  0
  • Paddy3118  · 技术社区  · 7 年前

    Start as:
      specman -c 'define TRIES 16; load x;run;' 
    
    <'
    struct x {
        data[2] :  list of uint(bits:2);
    };
    extend sys {
        fu : x;
    
        run() is also {
            for i from 1 to TRIES do {
                gen fu;
                print fu.data;
            };
        };
    };
    '>
    

    4*4 = 16 gen

    谢谢。

    1 回复  |  直到 7 年前
        1
  •  2
  •   user3467290    7 年前

    struct x {
        data[2]     :  list of uint(bits:2);
    
        data_as_one :  uint(bits:4);
    
        keep data[0] == data_as_one[1:0];
        keep data[1] == data_as_one[3:2];
    };
    
    extend sys {
        fu : x;
    
        fus[TRIES] : list of x;
        keep fus.all_different(.data_as_one);
    
        run() is also {
            for each in fus {
                out(it.data);
            };
        };
    };