以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  找出每行3个以上的重复数字  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=192947)

--  作者:sloyy
--  发布时间:2024/8/4 23:56:00
--  找出每行3个以上的重复数字
图片点击可在新窗口打开查看
如图:有18行数据,用什么办法能够迅速找出每行3个以上的重复数字?

--  作者:y2287958
--  发布时间:2024/8/5 8:02:00
--  
没看明白


--  作者:有点蓝
--  发布时间:2024/8/5 8:51:00
--  
6选3的不重复组合个数是120种。33选3的不重复组合个数是5456种。没有快速的方法,只能所有组合都逐一搜索一遍
--  作者:sloyy
--  发布时间:2024/8/5 9:27:00
--  
我以为有特殊的算法可以缩减工作量
--  作者:y2287958
--  发布时间:2024/8/5 9:32:00
--  
说说规则,还是看不明白


--  作者:sloyy
--  发布时间:2024/8/5 16:23:00
--  
就是在一行6个数字里面选3到4个数字,与其他行对比,看是否有重复,如果有重复就标出这3个数字
--  作者:y2287958
--  发布时间:2024/8/5 16:31:00
--  
与其他行对比,是怎样的对比


--  作者:sloyy
--  发布时间:2024/8/5 21:53:00
--  
看其他行,是否有这3个数字 
--  作者:y2287958
--  发布时间:2024/8/5 23:27:00
--  
也就是其他行所有列,不包括当前行呗。明天上班看看,有办法。
--  作者:y2287958
--  发布时间:2024/8/6 7:54:00
--  
Dim 列名集 As New List(Of String)({"第一列", "第二列", "第三列", "第四列", "第五列"})
Dim 集合 As New List(Of Integer)(Tables("表A10").rows.Select(Function(行) CInt(行("第一列"))))
For Each 列名 As String In 列名集.skip(1)
    集合.AddRange(Tables("表A10").rows.Select(Function(行) CInt(行(列名))))
Next
集合 = 集合.GroupBy(Function(元素) 元素).where(Function(元素) 元素.count > 3).Select(Function(元素) 元素.key).tolist
For Each 行 As Row In Tables("表A10").rows
    行("第六列") = String.Join(" ", 集合.Intersect(列名集.select(Function(列名) CInt(行(列名)))))
    Output.Show(String.Join(" ", 集合.Intersect(列名集.select(Function(列名) CInt(行(列名))))))
Next