阿一

第 37 位会员
注册于 2018-08-08 16:16:28
活跃于 2018-09-06 11:34:00


  • 35 选 7 且和值为 100 引发的血案 at 2018-09-06 11:06:07

    js不懂,有没有直接用M语言解的?我用acc+transmany写了一个,效率比楼主的低了很多,请帮忙看看是否能优化。
    (mylist,sum,偏差,n)=>
    let
    list={0..List.Count(mylist)-1},
    k2 = List.Accumulate(list,{},(r,e)=>r & List.Transform( List.Skip(list,e+1),each {list{e},})),
    自定义1 =List.Buffer( List.Accumulate({1..n-2},k2,(r,e)=> List.TransformMany( r, each List.Skip(list,List.Last(
    )+1),(x,y)=>x & {y}))),
    组合=List.Buffer(List.Transform(自定义1,each List.Transform(,(x)=>mylist{x}))),
    条件=List.Select(组合,each if 偏差=0 then List.Sum(
    )=sum else Number.Abs(List.Sum()-sum)<=偏差),
    结果=List.Transform(条件,each Text.Combine(List.Transform(
    ,Text.From),","))
    in
    结果
    /n小于3的话默认取2个数值/