文字列のすべての可能な省略形を並べ替えることを担当する小さなルーチンを作成しようとしています。この文字列は、スペースで区切られた完全な名前です。このような:
James Mitchell Rhodes
出力したい:
J. Mitchell Rhodes
James M. Rhodes
J. M. Rhodes
など...ただし、「ストップワード」も考慮する必要があります。
James the Third Rhodes
出力したい:
J. the Third R.
James The Third R.
これには既知のアルゴリズムがありますか? 私はかなり長い間、この問題を解決しようとしてきました。
更新: 各単語を配列に入れるのは簡単です。destroy(' ', $string) と array_map を実行するだけで、in_array($word, $stopWordsMap) を考慮してストップ ワードを除外できます。これは問題ではなく、質問の焦点でもありません。問題は、可能性のある元の単語 (O) と略語 (A) の組み合わせをどのように発見するかです。
O A A
O A O
O A A
A A A
O O O