Tìm Tập Hợp Số Có Tổng Bằng Số Cho Trước

Dữ liệu tập hợp các số trong ô, cùng với 1 cột tổng số cho trước. Bạn cần:
  • Tìm các tập hợp số có tổng bằng số cho trước.
  • Nhóm sẽ được đặt trong ngoặc tròn, để dễ dàng theo dõi.
  • Có nhiều tập hợp thỏa mãn, sẽ được ngăn cách bằng dấu ", ".
Ví dụ: Ở dòng 1 có tập hợp các số: 37, 40, 90, 68, 96, 70, 31, 63 và tổng: 164. Và có 3 nhóm số thỏa mãn 68+96=164, 37+96+31=164, 70+31+63=164 nên sẽ được đặt trong ngoặc tròn cùng với dấu ngăn cách giữa các nhóm.

Link:
Onedrive

Tìm tập hợp số bằng tổng cho trước

Công thức:
1.=MAP(B2:B14,LAMBDA(s,LET(a,TEXTSPLIT(@+A14:s,", "),IFERROR( ARRAYTOTEXT("("&MID(FILTER(REDUCE(0,a,LAMBDA(x,v, VSTACK(x,x&-v))),REDUCE(0,a,LAMBDA(x,v,VSTACK(x,x+v)))=s),3,99)&")"),""))))

2.=MAP(B2:B14,LAMBDA(r,ARRAYTOTEXT(IFERROR("("&TOCOL(BYROW( REDUCE("",--TEXTSPLIT(@+A14:r,,", "),LAMBDA(x,v,VSTACK(IFNA( HSTACK(x, ""),""),IFNA(HSTACK(x,v),v)))),LAMBDA(s,IFS(SUM(s)=r,TEXTJOIN("-",,s)))), 3)&")",""))))

3.=MAP(B2:B14,LAMBDA(s,LET(a,--TEXTSPLIT(@+A14:s,", "),b,COLUMNS(a),c,--MID(BASE(SEQUENCE(2^b-1),2,b),SEQUENCE(,b),1),ARRAYTOTEXT(IFERROR("("&BYROW(REPT(a,FILTER(c,BYROW(c*a,SUM)=s)),LAMBDA(x,TEXTJOIN("-",,x)))&")","")))))

4.Python (Xem trong file)
Đăng nhận xét (0)
Mới hơn Cũ hơn