![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 1 Всего: 43 |
Есть класс.
У него есть метод getItem() Надо, чтобы при каждом вызове метода он выдавал некоторое значение. Теперь про значение: есть 2 числа-границы. Например 1 и 6. Есть строка типа "abcdefghklmnopqrstuvwxyz" Т.е. значения должны быть такие:
Вместо точек - пропуски. Вот как такое организовать? хотел рекурсией, но тогда придется создавать список, куда добавлять эти значения, а так делать нельзя, ибо трата оперативы. |
|||
|
||||
| albertn |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 368 Регистрация: 17.7.2006 Где: г. Ставрополь Репутация: 30 Всего: 34 |
Помучился, но получилось:
|
|||
|
||||
| Artemios |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 405 Регистрация: 14.8.2006 Где: Саратов, Россия Репутация: 18 Всего: 50 |
Только вместо 2-ки 6-кой инициализировать не советую, все-таки 36^6 строк выводить будет Это сообщение отредактировал(а) Artemios - 14.11.2006, 11:46 -------------------- fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ] |
|||
|
||||
| ser_gen |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 25.9.2006 Репутация: 1 Всего: 1 |
Выдавать по одному из функции можно с помощью yield
Что-то вроде return толко при следующем вызове продолжит выполнение со следующей строки функции (после yield)
А алгоритм ищи в книгах по дискретной математики (кажись эта генерация всех возможных комбинаций там должна быть) |
|||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 1 Всего: 43 |
есть вариант об использовании новой системы счисления, база которой равна длине строки. Вот сейчас про него думаю.
ser_gen, т.е. просто состояние переменных метода сохранится? будет ли это работать в классах? Добавлено @ 11:47 Artemios, спасибо, сейчас посмотрим Добавлено @ 11:48 albertn, спасибо. Что у меня за плохая привычка смотреть темы снизу ) |
|||
|
||||
| albertn |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 368 Регистрация: 17.7.2006 Где: г. Ставрополь Репутация: 30 Всего: 34 |
||||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 1 Всего: 43 |
А вот такой вопрос: имеется функция-генератор(из примера albertn). Как снять с нее 1 значение?
|
|||
|
||||
| albertn |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 368 Регистрация: 17.7.2006 Где: г. Ставрополь Репутация: 30 Всего: 34 |
Используя метод next
Но только по окончанию он вызывает экскепшон |
||||
|
|||||
| nerezus |
|
||||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 1 Всего: 43 |
спасибо
Добавлено @ 12:23 получилось все.
где
еще раз спасибо ) |
||||
|
|||||
| slav0nic |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 17.5.2006 Репутация: 4 Всего: 5 |
мм, документацию читать не модно нынче=)
в туториале есть пример интересный, для генерации всех комбинаций, думаю переписать его не сложно
Это сообщение отредактировал(а) slav0nic - 14.11.2006, 12:34 --------------------
python.com.ua |
|||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 1 Всего: 43 |
slav0nic, это откуда?
|
|||
|
||||
| slav0nic |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 17.5.2006 Репутация: 4 Всего: 5 |
nerezus, ну ген из оффициальной доки вроде бы брался)
2.1.8 Indentation --------------------
python.com.ua |
|||
|
||||
| Artemios |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 405 Регистрация: 14.8.2006 Где: Саратов, Россия Репутация: 18 Всего: 50 |
Мне тоже стало интересно, попробовал:
только здесь вычислений больше производится -------------------- fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ] |
||||
|
|||||
| slav0nic |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 17.5.2006 Репутация: 4 Всего: 5 |
nerezus, короче профилировщик в зубы и тести что быстрее
--------------------
python.com.ua |
|||
|
||||
| albertn |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 368 Регистрация: 17.7.2006 Где: г. Ставрополь Репутация: 30 Всего: 34 |
Но только есть одна загвоздка. Ни в какой системе счисления нельзя задать число начинающееся с нуля (кроме самого нуля). Тогда надо будет уже указывать количество используемых единиц. Это сообщение отредактировал(а) albertn - 14.11.2006, 13:01 |
||||
|
|||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Python: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |