--region *.lua
--Date
--此文件由[BabeLua]插件自动生成
--[[
4.自定义一个字符串,输出该字符串中字符的所有组合
--]]
--6.请实现函数argtostring将可变参数转换为字符串
function zhuhe(str)
--char[] lv_Char = str.ToCharArray();
lv_Char=strToTable(str);
-- List<char> list = new List<char>();
list={};
for i = 1,#lv_Char, 1 do
Combine(lv_Char,1,i,list,#lv_Char);
--重置lv_char
lv_Char=strToTable(str);
list={};
end
end
function strToTable(str)
local tb={}
for st in string.gmatch(str,"%a") do
-- print_string(st);
table.insert(tb,st);
end
return tb;
end
function Combine(v_Char,v_Start,v_ResultLength,list, length)
if (v_ResultLength == 0) then
lv_TempCombine ="";
for j = 1, #list,1 do
lv_TempCombine=lv_TempCombine..list[j] ;
end
--先不管
--textBox2.Text += lv_TempCombine + " ";
local retm=lv_TempCombine.."";
print_string(retm);
return;
end
if (length== #list) then
return;
end
-- list.Add(v_Char[v_Start]);
table.insert(list,v_Char[v_Start]);
Combine(v_Char,v_Start,v_ResultLength-1,list,length);
-- list.Remove((char)v_Char[v_Start]);
table.remove(v_Char,v_Start);
Combine(v_Char,v_Start,v_ResultLength,list,length);
end
---------------------------------------------------------------------
function copy(table)--复制table
if (type(table) ~= type(table)) then
return nil;
end
local ntable = {};
for i,v in pairs(table) do
local vtype = type(v);
if (vtype == type(table)) then
ntable[i] = copy(v);
else
ntable[i] = v;
end
end
return ntable;
end
function permutation(t, st)--递归
if #t == 1 then
st = st .. t[1]
print_string(st)
else
local i
for i = 1, #t do
local nt, ns
ns = st .. t[i]
nt = copy(t)
table.remove(nt, i)
permutation(nt, ns)
end
end
end
-- 主程序
function t4()
str = "wordabc"
t = strToTable(str);
st=""
permutation(t, st)
end
--endregion
--[[
--调用方式
local str = argtostring(1,"hello",7.5);
print_string("str结果为:"..str);
--]]
--endregion
--Date
--此文件由[BabeLua]插件自动生成
--[[
4.自定义一个字符串,输出该字符串中字符的所有组合
--]]
--6.请实现函数argtostring将可变参数转换为字符串
function zhuhe(str)
--char[] lv_Char = str.ToCharArray();
lv_Char=strToTable(str);
-- List<char> list = new List<char>();
list={};
for i = 1,#lv_Char, 1 do
Combine(lv_Char,1,i,list,#lv_Char);
--重置lv_char
lv_Char=strToTable(str);
list={};
end
end
function strToTable(str)
local tb={}
for st in string.gmatch(str,"%a") do
-- print_string(st);
table.insert(tb,st);
end
return tb;
end
function Combine(v_Char,v_Start,v_ResultLength,list, length)
if (v_ResultLength == 0) then
lv_TempCombine ="";
for j = 1, #list,1 do
lv_TempCombine=lv_TempCombine..list[j] ;
end
--先不管
--textBox2.Text += lv_TempCombine + " ";
local retm=lv_TempCombine.."";
print_string(retm);
return;
end
if (length== #list) then
return;
end
-- list.Add(v_Char[v_Start]);
table.insert(list,v_Char[v_Start]);
Combine(v_Char,v_Start,v_ResultLength-1,list,length);
-- list.Remove((char)v_Char[v_Start]);
table.remove(v_Char,v_Start);
Combine(v_Char,v_Start,v_ResultLength,list,length);
end
---------------------------------------------------------------------
function copy(table)--复制table
if (type(table) ~= type(table)) then
return nil;
end
local ntable = {};
for i,v in pairs(table) do
local vtype = type(v);
if (vtype == type(table)) then
ntable[i] = copy(v);
else
ntable[i] = v;
end
end
return ntable;
end
function permutation(t, st)--递归
if #t == 1 then
st = st .. t[1]
print_string(st)
else
local i
for i = 1, #t do
local nt, ns
ns = st .. t[i]
nt = copy(t)
table.remove(nt, i)
permutation(nt, ns)
end
end
end
-- 主程序
function t4()
str = "wordabc"
t = strToTable(str);
st=""
permutation(t, st)
end
--endregion
--[[
--调用方式
local str = argtostring(1,"hello",7.5);
print_string("str结果为:"..str);
--]]
--endregion