Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /*
- Необходимо написать функцию, которая принимает на вход массив со списком слов
- и возвращает сгруппированные слова. К одной группе относятся слова, которые
- могут быть получены одно из другого с помощью произвольной перестановки букв.
- Например:
- make_groups(['rfv', 'vfr', 'abc', 'bac', 'dbatre', 'qwer', 'cba', 'terbda'])
- Вернет:
- [
- ['rfv', 'vfr'],
- ['abc', 'bac', 'cba'],
- ['dbatre', 'terbda'],
- ['qwer']
- ]
- Здесь rfv получается из vfr с помощью перестановки v и r,
- а из слов abc, bac и cba формируется общая группа, потому что любое
- из этих слов превращается в соседнее путём одной или нескольких
- перестановок букв.
- Протестируйте свой код.
- */
- function make_groups(array $words)
- {
- $groups = [];
- foreach ($words as $word) {
- $letters = str_split($word);
- sort($letters);
- $index = implode($letters);
- if (!array_key_exists($index, $groups)) {
- $groups[$index] = [];
- }
- array_push($groups[$index], $word);
- }
- return array_values($groups);
- }
- $r = make_groups(['rfv', 'vfr', 'abc', 'bac', 'dbatre', 'qwer', 'cba', 'terbda']);
- print_r($r);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement