В ячейке A1 находится текст (символы любые, буквы, цифры, знаки) Необходимо формулой рассчитать, сколько возможных перестановок можно получить, используя буквы (знаки) из A1
Приветствуется формульное решение (т.к. макросами решается просто) Есть формула менее 110 символов
В ячейке A1 находится текст (символы любые, буквы, цифры, знаки) Необходимо формулой рассчитать, сколько возможных перестановок можно получить, используя буквы (знаки) из A1
Принцип-то понятен - посчитать мультиномиальный коэффициент. Я вот придумал формулу на 143 знака (120 для xl2010), но дальше пока приостановился...
Принцип-то понятен - посчитать мультиномиальный коэффициент. Я вот придумал формулу на 143 знака (120 для xl2010), но дальше пока приостановился... AndreTM
Кстати, Миша, - а ограничение на длину строки есть? Или считать, что в ячейке может быть строка любой (возможной) длины?
Принципиальных ограничений не ставил, одно из решений у меня без ограничений, другое - то что строка не более 99 символов, размер формул получилось одинаковым. Можно ограничить строку 99 символами (трудно себе представить число соответствующее 99!, ну а 200 факториал в Excel простым способом не посчитать)
Кстати, Миша, - а ограничение на длину строки есть? Или считать, что в ячейке может быть строка любой (возможной) длины?
Принципиальных ограничений не ставил, одно из решений у меня без ограничений, другое - то что строка не более 99 символов, размер формул получилось одинаковым. Можно ограничить строку 99 символами (трудно себе представить число соответствующее 99!, ну а 200 факториал в Excel простым способом не посчитать)MCH
Сообщение отредактировал MCH - Воскресенье, 24.11.2013, 03:12
По задаче отписалось только пятеро участников (правда так и не понял, Виктор решил или нет) Выкладываю UDF, может у кого нибудь еще созреет формульное решение. [vba]
Код
Function Permutations#(ByVal s$) Dim i&, n&, m&, f#(), p# n = Len(s) ReDim f#(n) f(0) = 1 For i = 1 To n f(i) = f(i - 1) * i Next i p = f(n) While n m = n s = Replace(s, Left(s, 1), "") n = Len(s) p = p / f(m - n) Wend Permutations = p End Function
[/vba]
По задаче отписалось только пятеро участников (правда так и не понял, Виктор решил или нет) Выкладываю UDF, может у кого нибудь еще созреет формульное решение. [vba]
Код
Function Permutations#(ByVal s$) Dim i&, n&, m&, f#(), p# n = Len(s) ReDim f#(n) f(0) = 1 For i = 1 To n f(i) = f(i - 1) * i Next i p = f(n) While n m = n s = Replace(s, Left(s, 1), "") n = Len(s) p = p / f(m - n) Wend Permutations = p End Function
Предлагаю вскрываться в воскресенье - задачка была не очень простой всё же Учитывая то, что всего два человека имеют решения (менее 110) - то вообще отличная задача. Например, у меня сейчас всего 125 (правда я уже неделю не смотрел этот топик)
Предлагаю вскрываться в воскресенье - задачка была не очень простой всё же Учитывая то, что всего два человека имеют решения (менее 110) - то вообще отличная задача. Например, у меня сейчас всего 125 (правда я уже неделю не смотрел этот топик) AndreTM
Вы издеваетесь? У меня складывается впечатление, что и траекторию полета баллистической ракеты (с учетом всех факторов) вы бы тоже смогли посчитать одной формулой в 23 знака. А через пару дней в 17 знаков. Поделитесь мозгами
Вы издеваетесь? У меня складывается впечатление, что и траекторию полета баллистической ракеты (с учетом всех факторов) вы бы тоже смогли посчитать одной формулой в 23 знака. А через пару дней в 17 знаков. Поделитесь мозгами SkyPro
skypro1111@gmail.com
Сообщение отредактировал SkyPro - Воскресенье, 01.12.2013, 18:31