2016-10-25 5 views
1

別の文字列の長さに基づいて文字列を生成しようとしています。指定された別の文字列の長さに基づいて文字列を生成する方法はありますか?

generate(S1,S2)-> 
LenString1 = length(S1), 
LenString2 = length(S2), 
L = LenString1 div LenString2, 
lists:flatten(lists:duplicate(L,S2)). 

が、それは動作しません。この場合、次のとおりです: 私のコードがある

generate("Some", "Key") 

または

generate("Generate","Key") 

私は必要な結果は次のとおりです。

KeyK 

KeyKeyKe 

ます。また、最初のLenString1 rem LenString2文字を取り、flattenの結果にそれを追加する必要があなたに

答えて

4

なぜそんなに複雑?

generate(S1, S2) -> 
    generate(S2, S1, S2). 

generate(S2, [_|_] = S1, []) -> 
    generate(S2, S1, S2); 
generate(S2, [_|S1], [H|T]) -> 
    [H | generate(S2, S1, T)]; 
generate(S2, [], _) when is_list(S2) -> []; 
generate(_, _, _) -> error(badarg). 
4

ありがとう:

generate(S1, S2)-> 
    LenString1 = length(S1), 
    LenString2 = length(S2), 
    L = LenString1 div LenString2, 
    Extra = LenString1 rem LenString2, 
    lists:flatten(lists:duplicate(L, S2)) ++ lists:sublist(S2, Extra). 
1> a:generate("Some", "Key"). 
"KeyK" 
2> a:generate("Generate", "Key"). 
"KeyKeyKe"