Задать вопрос
leni_m
@leni_m
ЧупаКобрус

Как написать функцию?

1 - a
2 - b
3 - c
4 - aa
5 - ab
6 - ac
7 - ba
8 - bb
9 - bc
10 - ca
11 - cb
12 - cc
13 - aaa
14 - aab
15 - aac
16 - aba
17 - abb
18 - abc
19 - aca
20 - acb
21 - acc
...
Необходимо написать функцию
function create_word ($alphabet, $index) {
    ....
    return $word;
}

чтобы результат её был таков:
create_word ("abc", 9); // "bc"
create_word ("abc", 18); // "abc"

Может кто подскажет чего? А то не могу понять с какой стороны подойти.
  • Вопрос задан
  • 183 просмотра
Подписаться 1 Простой 2 комментария
Решение пользователя Immortal_pony К ответам на вопрос (5)
Immortal_pony
@Immortal_pony Куратор тега PHP
function create_word($aplhabet, $index) {
    $words = [];

    $prevLevelWords = [""];    
    foreach (range(1, strlen($aplhabet)) as $offset) {
        $currentLevelWords = [];
        foreach (str_split($aplhabet) as $letter) {
            foreach ($prevLevelWords as $prevLevelWord) {
                $word = $letter . $prevLevelWord;
                $currentLevelWords[] = $word;
                $words[] = $word;
            }
        }
        $prevLevelWords = $currentLevelWords;
    }
    
    return $words[$index-1] ?? false;
}
Ответ написан
Комментировать