例如 我有一個字符陣列 totalTest={"0","1","2","3"..........."?","/".....共94個,也可以選擇其中部分,最多94個}
然后做個函式 ProA(密碼長度)
最后能夠按密碼長度設定,列舉全部字符組合,如:密碼長度5,則列舉后如下:
00000
00001
00002
00003
00004
00005
00006
00007
00008
00009
0000a
0000b
..........
00010
..........
0001?
..........
請高手不吝賜教 謝謝
uj5u.com熱心網友回復:
建議用字串陣列完成如果密碼長度小于指定長度就在前面添加0
intL=strA.length
if intL<5 then
for intI=1 to 5-intL
strA="0" & strA
next
end if
uj5u.com熱心網友回復:
暴破,如果把初始換成 [0-9]你會不會寫。我相信你會的,那不就是數數么ok,【0-9】你會寫,那是10進制。換個條件,{"0","1","2","3"..........."?","/".....共94個 那不就是94進制么,滿94進一位
當然94進制,5位的94進制是個很大數字,int,long可能無法表達。
我們可以換成函式式寫法,這個我現在不太想寫,只是提供思路。f(f1(f2(f3(f4(f5)))))
uj5u.com熱心網友回復:
我不想廢腦筋打造完美寫法,就簡單演示一下,不過我也不想弄純函式式。直接用物件式模擬了testxx f1 = new testxx(0);
testxx f2 = new testxx(0);
testxx f3=new testxx(0);
testxx f4=new testxx(0);
testxx f5 = new testxx(0);
f5.parent = f4;
f4.parent = f3;
f3.parent = f2;
f2.parent = f1;
//這一串初始程序,可以用代碼實作,只是簡單演示,我懶得寫那么完備
for (int i = 0; i < 100; i++)
{
var res = f5.computeEx();
Console.WriteLine(string.Join(",",res));
}
-------------------------
物件
public class testxx
{
public testxx parent { get; set; }
public int value
{
get;
set;
}
public testxx(int init)
{
value = init;
}
public void compute()
{
value++;
if (value == 94)
{
value -= 94;
parent?.compute();
}
}
}
擴展方法
public static IEnumerable<int> computeEx(this testxx lst)
{
var obj = lst;
var res = lst.ParentValue();
foreach (var re in res)
{
yield return re;
}
obj.compute();
}
private static IEnumerable<int> ParentValue(this testxx obj)
{
if (obj.parent != null)
{
var b = obj.parent.ParentValue();
foreach (var i in b)
{
yield return i;
}
}
yield return obj.value;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/14562.html
標籤:VB.NET
