| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Ruby: Общие вопросы > Разложение числа на слагаемые |
| Автор: PavAks 23.1.2008, 00:13 |
| Всем привет! Помогите, плз, с идеей. Я для изучения ruby накачал в нете разных заданий, и пытаюсь их выполнить. Изучаю его недолго Написать метод partitions_p(n), которые получают целое положительное число n и возвращают все разложения числа n на сумму натуральных слагаемых (т.е. возвращают массивы слагаемых). В разложениях слагаемые идут по убыванию. Пример: [[5], [4, 1], [3, 2], [3, 1, 1], [2, 2, 1], [2, 1, 1, 1], [1, 1, 1, 1, 1]] з.ы. подскажите, пожалуйста, с какого боку к этому подходить. Или, может, есть какая функция, которая делает такое разложение? Или делать все циклами? |
| Автор: setq 23.1.2008, 18:16 |
Если такая функция уже есть, то задача становится немного бессмысленной. Циклы - хорошая идея, почему нет?) |
| Автор: PavAks 23.1.2008, 22:07 |
| Просто я не могу себе представить как это делать циклами |
| Автор: PavAks 3.2.2008, 01:46 | ||
| Что-то начало получаться, хотя не все разложения выдает [[5], [4, 1], [3, 2, 1], [3, 2], [3, 1, 1, 1], [2, 2, 1], [2, 1, 1, 1], [1, 1, 1, 1, 1]] ----------------------------------------------------------------------- [[10], [9, 1], [8, 2], [7, 3], [6, 4], [5, 5], [5, 4, 1], [5, 3, 2], [5, 2, 2, 1], [5, 1, 1, 1, 1, 1], [4, 4, 2], [4, 4, 1, 1], [4, 3, 3], [4, 2, 2, 2], [4, 1, 1, 1, 1, 1, 1], [3, 3, 3, 1], [3, 3, 2, 2], [3, 2, 2, 2, 1], [3, 1, 1, 1, 1, 1, 1, 1], [2, 2, 2, 2, 2], [2, 2, 2, 2, 1, 1], [2, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]
На числах больше 10 не очень хорошо работает :( |
| Автор: fixxer 5.2.2008, 23:14 | ||
как то сложно у Вас получилось. У меня так
Изучаю ruby совсем недавно. Уверен, что можно сделать еще короче. |
| Автор: fixxer 6.2.2008, 13:26 | ||
удалось сократить до
ЗЫ. Админы, а когда будет подсветка для ruby? |
| Автор: PavAks 9.2.2008, 15:04 |
| ну ты даешь... класс... |
| Автор: source777 9.2.2008, 16:47 | ||
Эх, решение уже найдено, но у меня есть небольшое исправление, чтобы результат выводился именно в том виде как в написано в задании:
|