2013-03-30 56 views
0

我試圖創建運行創建最大的N長度的字符串的功能的程序,與某些字符
例如與輸入「AB」(A和B字符可能的)和3(最大長度): A AA AAA AAB AB ABA ABB ... BB BBA BBB (順序並不重要)如何使用所有字符串運行函數?

我發現這一點: Bash string handling (char at index and concatenation)
的答案只適用於2長度的字符串,我想與如10長度,20個字符運行它。 (我有時間運行這:))
有沒有辦法做到這一點? 如果是這樣,如何?

+1

您可能不想使用20個字符來運行它,因爲即使只有2個字符可供選擇,您也會在(整數)100萬個20個字符的字符串以及50萬個19個字符的字符串中運行, ...最終以約2百萬個字符串輸出。 –

+0

有關N個字符串的列表,請捕獲N-1個字符串列表的輸出,然後回顯每個捕獲的字符串,然後跟隨每個可能的額外字符。從N = 1開始。不過,你必須捕捉以前的輸出結果會消耗內存。 –

+0

我有時間運行這個,但內存是有限的。 :) – radl

回答

3

一個bash溶液:

chars='{A,B}'       # characters to use 
cnt=6         # maximum length 
str='' 
for ((CNTR=0; CNTR<$cnt; CNTR+=1)); do 
    str=$str$chars 
    eval echo "$str" 
done 

的字符列表可以被擴展,例如

chars='{A,B,C}' 

輸出:

A B 
AA AB BA BB 
AAA AAB ABA ABB BAA BAB BBA BBB 
AAAA AAAB AABA AABB ABAA ABAB ABBA ABBB BAAA BAAB BABA BABB BBAA BBAB BBBA BBB 

需要幾秒鐘的CNT = 20和集合{A,B}。

相關問題