Разбор задач
Передать input() что-нибудь действительно нехорошее:
Функция __import__() открывает простор самым омерзительным чудесам:
>>> input()
__import__("os").system("cd /; ls")
bin dev home lib64 media opt root sbin srv tmp var boot etc lib lost+found mnt proc run selinux sys usr 0 >>>
- Пример «решения на Паскале» без применения мозга:
- Здесь всё плохо, кроме того, что решение работает:
Off-by-One в циклах/сравнениях (почему в строках 2-6 то 1, то 0?)
- Работа со строками как с массивами (строковые методы на что?)
- глуповатый алгоритм (см. далее)
- Пример решения на Python (мозг не включаем):
- Пару слов про алгоритм:
Зачем сначала считать вхождения подстроки в строку, а затем выяснять, что ничего и не могло получиться, потому что длина строки не кратна длине подстроки?
Максимум убывающей последовательности можно было бы искать и поэффективнее
- Короткое решение:
Решение не оптимально (вместо xrange надо бы взять список делителей, а count проходит по всей строке, хотя нас устроил бы первый же сбой поиска)
- Решение занимает всего 5 строк. Это нормально
- Решение с избыточным применением мозга:
1 print (lambda s: (len(s)/i for i in xrange(1, len(s)+1) if not len(s)%i and s.count(s[:i])*i == len(s)).next())(raw_input())
Любую задачу можно решить в одну строку функциональным путём. Но не всегда нужно.
- Пример «решения на Паскале» без применения мозга: