tdcq7188
发表于 2012-5-14 10:43:33
来玩玩看看
netegg
发表于 2012-5-14 10:49:28
回复 1# 水木子
水木,这个问题我看了三天,始终有个问题,到底是要求问的问题,还是要求数,如果是第一种3次好像的不出结果,如果是第二种那就要看问的问题了
jj119120
发表于 2012-5-14 13:36:32
学习一下·········
yang_jun830913
发表于 2012-5-14 13:59:22
看看,顺便学习以下。
nnlenx
发表于 2012-5-14 17:33:58
看看水木子高手
netegg
发表于 2012-5-14 17:39:57
回复 18# happytc
赞下,要点所在
lark
发表于 2012-5-14 20:31:40
怎么什么,看看
netegg
发表于 2012-5-15 09:54:50
本帖最后由 netegg 于 2012-5-15 18:24 编辑
#include <Math.au3>
#include <array.au3>
Dim $s
$s = 3
main()
Func main()
Local$input, $ret = '', $i = 1
MsgBox(0,0,'请记住一个数' & @CRLF & '10,11,12,13,14,15,16' & @CRLF & '17,18,19,20,21,22,23'& @CRLF & '24,25,26,27,28,29,30')
Do
$aA1 = _RandomUnique(21, 10, 30, 1)
$s = _ArrayToString($aA1, ',', 1, 7)
$s = _ArrayToString($aA1, ',', 8, 14)
$s = _ArrayToString($aA1, ',', 15, 21)
$input = InputBox('输入选定数所在行', $s & @CRLF & $s & @CRLF & $s, '')
If @error Then Exit
$ret &= $s[$input] & ','
$i += 1
Until $i = 4
$aRet = StringSplit($ret, ',', 2)
For $i In $aRet
If UBound(_ArrayFindAll($aRet, $i)) = 3 Then
$msg = MsgBox(4, 0, $i & @CRLF & 'exit?')
If $msg = 6 Then Exit
$s = 0
$s = 3
main()
EndIf
Next
EndFunc ;==>main
zerobin
发表于 2012-5-15 17:52:13
回复看下。。
zerobin
发表于 2012-5-15 17:54:26
是以前玩的魔术扑克
sanmoking
发表于 2012-5-15 17:55:45
提问的列表内容能够完全随机排列,无迹可寻。。。提供选择的数量可扩展哦,当然得到答案的次数会相应增加。
**** Hidden Message *****
whitehead
发表于 2012-5-15 17:57:09
来学习思路
sunlewuyou
发表于 2012-5-15 18:21:48
今天是个平淡的日子!
sanmoking
发表于 2012-5-15 19:15:13
再来一个
**** Hidden Message *****
sanmoking
发表于 2012-5-15 19:25:04
楼上的代码,每次提供选择的选项是6,所以36个姓氏的,6的2次方是36,所以只用2次就可以选出结果来了,216个姓氏的,6的3次方,所以需要3次才能得到答案。
以此类推,7776个中间挑一个,每次提供6个选项,只需要5次就能找出来。。。因为7776等于6的5次方