VB数字排列组合输出
麻烦指导下VB代码该如何写:TXT文件中包含:组六包号0,1,4,7,9组六包号2,5,7,8组六胆拖胆码:2,3拖码:5,6,7,9组六胆拖胆码:3拖码:0,2,4,5...
麻烦指导下VB代码该如何写:
TXT文件中包含:
组六包号0,1,4,7,9
组六包号2,5,7,8
组六胆拖胆码:2,3拖码:5,6,7,9
组六胆拖胆码:3拖码:0,2,4,5,7,8,9
组六和值10,11,12,13,14,15,16,17,18,19
读取TXT文件按一下规则转换
1、组六包号0,1,4,7,9
说明:组六包号后面的数字个数最小3个,最大9个,不会有重复的。
转换后应该为:
014
017
019
047
049
079
147
149
179
479
同上组六包号2,5,7,8 转换后应该为:
257
258
278
578
将转换后的数据保存到组六.txt文件中
2、组六胆拖胆码:2,3拖码:5,6,7,9
组六胆拖胆码:2拖码:5,6,7,9
说明:
组六胆拖胆码:2,3拖码:5,6,7,9
胆码:后面的数字范围0-9,最少1个,最多2个,不会重复。
拖码后面的数字范围0-9,最少1个,最多9个,不会重复。
转换后应该为
235
236
237
239
组六胆拖胆码:2拖码:5,6,7,9 同上转换后应该为:
256
257
259
267
269
279
将转换后的数据保存到组六.txt文件中
三、组六和值10,11,12,13,14,15,16,17,18,19
说明:组六和值后面的数字最小3,最大24。最少1个,最多22个。
步骤,先获取10,11,12,13,14,15,16,17,18,19 然后对比000-999这1000个组合中
和值的大小,如10对应000-999中的127 217 721等等。把所有的组合都取出来
然后把取出来的组合去掉百十个位任意都相等的,只保留其中一个。例如当取出的
组合中有123 132 213 231 312 321 时,这6个组合中因为都含有123,那么任意
取出其中一个组合即可,指定取第一种组合也可以。
最后输出到组六.txt中。
-----------------------------------------------------------------------
接下面的追问
你的代码转成了:
367
369
379
一、组六包号问题,是类似于047 074这样的重复,这2个都包含数字0数字7数字4 。只保留一种组合即可。
二、组六胆拖 胆只有一个的情况下,胆在百位不变,拖后面的取2进行十位、个位组合,十位个位不相同并且十位个位的同时包含的数字不能相同,例如01 10 算重复,只要其中一个,然后与百位组合成3位数。
应该是我问题里面没有文字说明导致你没有发现这个问题的,因为后面的和值部分我详细说了,你写对了,抱歉啊。还要再麻烦你改下代码,因为我不知道去重复代码怎么搞,不然可以自己修改,也不用次次麻烦你了。真是不好意思。 展开
TXT文件中包含:
组六包号0,1,4,7,9
组六包号2,5,7,8
组六胆拖胆码:2,3拖码:5,6,7,9
组六胆拖胆码:3拖码:0,2,4,5,7,8,9
组六和值10,11,12,13,14,15,16,17,18,19
读取TXT文件按一下规则转换
1、组六包号0,1,4,7,9
说明:组六包号后面的数字个数最小3个,最大9个,不会有重复的。
转换后应该为:
014
017
019
047
049
079
147
149
179
479
同上组六包号2,5,7,8 转换后应该为:
257
258
278
578
将转换后的数据保存到组六.txt文件中
2、组六胆拖胆码:2,3拖码:5,6,7,9
组六胆拖胆码:2拖码:5,6,7,9
说明:
组六胆拖胆码:2,3拖码:5,6,7,9
胆码:后面的数字范围0-9,最少1个,最多2个,不会重复。
拖码后面的数字范围0-9,最少1个,最多9个,不会重复。
转换后应该为
235
236
237
239
组六胆拖胆码:2拖码:5,6,7,9 同上转换后应该为:
256
257
259
267
269
279
将转换后的数据保存到组六.txt文件中
三、组六和值10,11,12,13,14,15,16,17,18,19
说明:组六和值后面的数字最小3,最大24。最少1个,最多22个。
步骤,先获取10,11,12,13,14,15,16,17,18,19 然后对比000-999这1000个组合中
和值的大小,如10对应000-999中的127 217 721等等。把所有的组合都取出来
然后把取出来的组合去掉百十个位任意都相等的,只保留其中一个。例如当取出的
组合中有123 132 213 231 312 321 时,这6个组合中因为都含有123,那么任意
取出其中一个组合即可,指定取第一种组合也可以。
最后输出到组六.txt中。
-----------------------------------------------------------------------
接下面的追问
你的代码转成了:
367
369
379
一、组六包号问题,是类似于047 074这样的重复,这2个都包含数字0数字7数字4 。只保留一种组合即可。
二、组六胆拖 胆只有一个的情况下,胆在百位不变,拖后面的取2进行十位、个位组合,十位个位不相同并且十位个位的同时包含的数字不能相同,例如01 10 算重复,只要其中一个,然后与百位组合成3位数。
应该是我问题里面没有文字说明导致你没有发现这个问题的,因为后面的和值部分我详细说了,你写对了,抱歉啊。还要再麻烦你改下代码,因为我不知道去重复代码怎么搞,不然可以自己修改,也不用次次麻烦你了。真是不好意思。 展开
展开全部
Dim s As String, s1 As String, t() As String, t1() As String
Dim k1 As Integer, k2 As Integer, k3 As Integer
Open App.Path & "\123.txt" For Input As #1
Open App.Path & "\组六.txt" For Output As #2
Do Until EOF(1)
Line Input #1, s
If InStr(s, "组六包号") Then
t = Split(Replace(s, "组六包号", ""), ",")
For k1 = 0 To UBound(t) - 2
For k2 = 1 To UBound(t) - 1
For k3 = 2 To UBound(t)
If k1 <> k2 And k2 <> k3 And k1 <> k3 Then Print #2, t(k1) & t(k2) & t(k3)
Next
Next
Next
ElseIf InStr(s, "组六胆拖胆码:") Then
t = Split(Replace(s, "组六胆拖胆码:", ""), "拖码:")
t1 = Split(t(1), ",")
If InStr(t(0), ",") Then
For k1 = 0 To UBound(t1)
Print #1, Replace(t(0), ",", "") & t1(k1)
Next
Else
For k1 = 1 To UBound(t1) - 1
For k2 = 2 To UBound(t1)
If k1 <> k2 Then Print #2, t(0) & t1(k1) & t1(k2)
Next
Next
End If
ElseIf InStr(s, "组六和值") Then
t = Split(Replace(s, "组六和值", ""), ",")
For k1 = 0 To UBound(t)
For k2 = 0 To 999
s1 = Format(k2, "000")
If Val(Left(s1, 1)) + Val(Mid(s1, 2, 1)) + Val(Right(s1, 1)) = Val(t(k1)) And Val(Left(s1, 1)) < Val(Mid(s1, 2, 1)) And Val(Mid(s1, 2, 1)) < Val(Right(s1, 1)) Then Print #2, s1
Next
Next
End If
Loop
Close #2
Close #1
Dim k1 As Integer, k2 As Integer, k3 As Integer
Open App.Path & "\123.txt" For Input As #1
Open App.Path & "\组六.txt" For Output As #2
Do Until EOF(1)
Line Input #1, s
If InStr(s, "组六包号") Then
t = Split(Replace(s, "组六包号", ""), ",")
For k1 = 0 To UBound(t) - 2
For k2 = 1 To UBound(t) - 1
For k3 = 2 To UBound(t)
If k1 <> k2 And k2 <> k3 And k1 <> k3 Then Print #2, t(k1) & t(k2) & t(k3)
Next
Next
Next
ElseIf InStr(s, "组六胆拖胆码:") Then
t = Split(Replace(s, "组六胆拖胆码:", ""), "拖码:")
t1 = Split(t(1), ",")
If InStr(t(0), ",") Then
For k1 = 0 To UBound(t1)
Print #1, Replace(t(0), ",", "") & t1(k1)
Next
Else
For k1 = 1 To UBound(t1) - 1
For k2 = 2 To UBound(t1)
If k1 <> k2 Then Print #2, t(0) & t1(k1) & t1(k2)
Next
Next
End If
ElseIf InStr(s, "组六和值") Then
t = Split(Replace(s, "组六和值", ""), ",")
For k1 = 0 To UBound(t)
For k2 = 0 To 999
s1 = Format(k2, "000")
If Val(Left(s1, 1)) + Val(Mid(s1, 2, 1)) + Val(Right(s1, 1)) = Val(t(k1)) And Val(Left(s1, 1)) < Val(Mid(s1, 2, 1)) And Val(Mid(s1, 2, 1)) < Val(Right(s1, 1)) Then Print #2, s1
Next
Next
End If
Loop
Close #2
Close #1
更多追问追答
追问
组六包号0,1,4,7,9 (不一样)
(应该是)
014
017
019
047
049
079
147
149
179
479
你的代码转成了:
014
017
019
047
049
074
079
147
149
174
179
417
419
479
组六包号2,5,7,8 (不一样)
组六胆拖胆码:2,3拖码:5,6,7,9 (这个正确)
组六胆拖胆码:3拖码:5,6,7,9 ( 不一样)
应该为:
256
257
259
267
269
279
你的代码转成了:
追问字数限制了,我在问题补充的最下面继续
追答
Dim s As String, s1 As String, t() As String, t1() As String
Dim k1 As Integer, k2 As Integer, k3 As Integer
Open App.Path & "\123.txt" For Input As #1
Open App.Path & "\组六.txt" For Output As #2
Do Until EOF(1)
Line Input #1, s
If InStr(s, "组六包号") Then
t = Split(Replace(s, "组六包号", ""), ",")
For k1 = 0 To UBound(t) - 2
For k2 = 1 To UBound(t) - 1
For k3 = 2 To UBound(t)
If k1 < k2 And k2 < k3 Then Print #2, t(k1) & t(k2) & t(k3)
Next
Next
Next
ElseIf InStr(s, "组六胆拖胆码:") Then
t = Split(Replace(s, "组六胆拖胆码:", ""), "拖码:")
t1 = Split(t(1), ",")
If InStr(t(0), ",") Then
For k1 = 0 To UBound(t1)
Print #1, Replace(t(0), ",", "") & t1(k1)
Next
Else
For k1 = 1 To UBound(t1) - 1
For k2 = 2 To UBound(t1)
If k1 < k2 Then Print #2, t(0) & t1(k1) & t1(k2)
Next
Next
End If
ElseIf InStr(s, "组六和值") Then
t = Split(Replace(s, "组六和值", ""), ",")
For k1 = 0 To UBound(t)
For k2 = 0 To 999
s1 = Format(k2, "000")
If Val(Left(s1, 1)) + Val(Mid(s1, 2, 1)) + Val(Right(s1, 1)) = Val(t(k1)) And Val(Left(s1, 1)) < Val(Mid(s1, 2, 1)) And Val(Mid(s1, 2, 1)) < Val(Right(s1, 1)) Then Print #2, s1
Next
Next
End If
Loop
Close #2
Close #1
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询