その他 名前が近いっていう検索方法 その3


その他 名前が近いっていう検索方法 その2

の続きで

ある文字列の組み合わせで
隣あった文字列の組み合わせを
すべて作るループを考えてみた

こんなかんじ

[as3]

(
–テスト用
tagStr = “abc”;

–1文字になるまで繰り返す
Local i = tagStr.count;
Local u = 0;
Local j = 1;–文字の合成回数、最小は1から
Local compStr = “”;–合成文字
Local analysisTagStr = #();–調べ上げる文字列の組み合わせ

–文字の最大数分繰り返す
while i > 0 do
(
–合成回数を設定
u = j;
while u > 0 do
(
–一旦文字を初期化
compStr = “”;

–K文字目からi文字数分の文字列を合成

for k = u to (u+(i-1)) do
(
compStr += tagStr[k];
);–for end
append analysisTagStr compStr;
u -= 1;
);–while end

–カウントを一つ移動する
i -= 1;
j += 1;
);–while end

print analysisTagStr;

)

[/as3]

隣あった文字列の組み合わせは
1234という文字列ならば
4文字で、1組
3文字で、2組
2文字で、3組
1文字で、4組
と最大数~1の間で組み合わせ数は一つづつ増えるので

そのことを踏まえてループを仕込んだ

ただし、このループだと

文字列がそもそも1文字あった場合
何もしないので、
1文字の場合はif判定で弾いておけばいいかな

123456789の場合の組み合わせは
“123456789”
“23456789”
“12345678”
“3456789”
“2345678”
“1234567”
“456789”
“345678”
“234567”
“123456”
“56789”
“45678”
“34567”
“23456”
“12345”
“6789”
“5678”
“4567”
“3456”
“2345”
“1234”
“789”
“678”
“567”
“456”
“345”
“234”
“123”
“89”
“78”
“67”
“56”
“45”
“34”
“23”
“12”
“9”
“8”
“7”
“6”
“5”
“4”
“3”
“2”
“1”
の計45個

んー、問題なさそうだ

よし、あとは文字列を評価するだけだから
とりあえずやってみるか~

Leave a comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください