|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
24.07.2022, 12:37 | #1 |
Новичок
Джуниор
Регистрация: 24.07.2022
Сообщений: 3
|
Индекс лёгкости (python)
Лингвист Юля создала индекс лёгкости восприятия текста, который базируется на расположении одинаковых букв в слове. Для расчёта этого индекса K в слове мы выбираем последовательность непрерывных символов (их количество равно n), удаляем её и прибавляем к индексу K=K+n*n . Так выполняем до тех пор, пока символов в слове не останется. Задача — получить максимальный индекс для слова w .
Ввод: w — строка-слово, состоящее только из строчных букв английского алфавита, для которого нужно посчитать индекс, 0<length(w)<25 Вывод: integer — максимальный индекс для слова w print(get_result("acbbcb")) #12: "acbbcb" -> "acbbb" (удалили 'c', K=1(0+1))->"ac" (удалили 'bbb', K=10(1+9))->"a"(удалили 'c', K=11(10+1))->(удалили 'a', K=12(11+1)) print(get_result("aaaada")) #26: удалили 'd', K=1, затем удалили все 'a', K=1+5*5=26 |
24.07.2022, 18:46 | #2 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,330
|
Одна подсказка:
- создать множество Код:
https://pythonist.ru/python-schitaem...vola-v-stroku/ Например выбрали count() и сразу вычисляем квадрат числа вхождений символа Код:
Замечание: Тут у вас ошибка: "acbbcb" -> "acbbb" (удалили 'c', K=1(0+1))->"ac" (удалили 'bbb', K=10(1+9))->"a"(удалили 'c', K=11(10+1))->(удалили 'a', K=12(11+1)) Должно получиться 14, так как 'c' входит два раза. PS: Если строчные и прописные символы - это одинаковые, то перевести слово, например, в верхний регистр.
Как-то так, ...
|
24.07.2022, 22:03 | #3 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,341
|
ViktorR, на входе по условию слово только из строчных букв, так что про регистр не надо думать. Порядок изъятия символов важен, поэтому сначала удаляется 'c' между 'bb' и 'b', чтобы затем удалить сразу 'bbb'. Сумма квадратов количеств вхождения каждого символа будет ответом только в том случае, если каждый уникальный символ входит одной подстрокой в исходное слово.
Kilodayt, я бы первым делом попробовал рекурсию: разбить слово на группы одинаковых символов, удалить каждую группу по очереди, оставшиеся символы передать в эту же рекурсивную функцию, результат функции - максимальный индекс для слова. Скорее всего, это не самый оптимальный способ, зато будет с чем сравнивать следующие варианты решения.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
Последний раз редактировалось BDA; 24.07.2022 в 22:11. |
24.07.2022, 23:24 | #4 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
А где в задании сказано, что надо выбирать непрерывную последовательность только из одинаковых символов? Ведь можно выбрать последовательность различных символов между одинаковыми.
т.е. "acbbcb" -> "bbcb" (удалили 'ac', K=4(0+2*2=4))->"bbb" (удалили 'c', K=5(4+1))->""(удалили 'bbb', K=14(5+9)) |
25.07.2022, 00:47 | #5 |
Новичок
Джуниор
Регистрация: 24.07.2022
Сообщений: 3
|
ViktorR, Спасибо за подсказку. Очень помогло.
|
25.07.2022, 12:52 | #6 | |||
Старожил
Регистрация: 23.10.2010
Сообщений: 2,330
|
Цитата:
И первый пример на это рассчитан: Цитата:
Цитата:
В таком случае расчёт K будет неоднозначен. Можно просто удалять последовательно, начиная с первого символа: 'a', затем 'c', затем 'bb' и т.д. А можно начать с "хвоста" или "выдёргивать" символы, оптимизируя K (на максимум или минимум). К сожалению в задании на эту тему нет никаких указаний. Если ТС доволен решением, то видимо это и предполагалось
Как-то так, ...
|
|||
26.07.2022, 03:41 | #7 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,341
|
Согласен, что задание сформулировано недостаточно четко. macomics, не понял вашу идею про различные символы, а что тогда мешает брать сразу всё слово целиком и удалять (тогда K будет максимален)? ViktorR, нет, как раз максимизацию K задание и требует. Да, переубеждать ТС не буду.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
26.07.2022, 08:59 | #8 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Python - как установить Easy-Machine-Learning-Object-Detection при уже установленном Python 3.9 | Krasi | Общие вопросы по программированию, компьютерный форум | 4 | 23.12.2021 15:49 |
[Python] Нужно решить в среду вечером 5 -6 заданий для начинающих на языку Python. Пример заданий смогу выслать. Задания на английском языке. | foxylen | Фриланс | 2 | 17.03.2019 12:30 |
Хеш-таблица, метод цепочек, первичный индекс и вторичный индекс - C# | AnatoliyAnatoliy | Помощь студентам | 2 | 09.01.2018 15:30 |
Начальный уровень Python. Функции - Python | YYYUUU | Python | 5 | 09.06.2017 12:09 |
найти индекс min | misha25525 | Помощь студентам | 0 | 11.04.2010 12:03 |