Ваше решение с использованием комбинаций хорошо, если ваш список небольшой, но учтите, что сумма combinations(number, i)
по всем i равна 2**len(numbers)
. Это очень быстро растет и убьет вашу программу.
Ваша проблема известна как «Подмножество сумм», где вы хотите выбрать подмножество чисел для суммирования с вашей суммой. Он очень хорошо известен и имеет очень много вариантов и решений. Он также является NP-полным, то есть для него не существует реального полиномиального (быстрого) решения.
Тем не менее, существует псевдополиномиальное решение с использованием динамического программирования.
Пример здесь: https://www.geeksforgeeks.org/subset-sum-problem-dp-25/
Objective C с Какао API является способом пойти. После того как у Вас есть они вниз, существуют также мосты между Ruby и Python к Какао API. Я настоятельно рекомендовал бы первоначально изучение Какао API с Objective C сначала, все же.
Взгляните на Моно проект
Кавычка из Википедии
Моно проект во главе с Novell (раньше Ximian) для создания стандарта Ecma совместимый, совместимый с.NET набор инструментов, включая среди других компилятор C# и Общеязыковая среда выполнения. Моно может быть выполнен на Linux, BSD, UNIX, Mac OS X, Солярисе и операционных системах Windows.
Но я действительно рекомендую, идут путем Какао и получают книжное Программирование какао "Aaron Hillegass для Mac OS X"
Я также просто купил Mac, и происходите из среды разработки.NET. Я попробовал набор различных языков и сред. Если Вы собираетесь записать программное обеспечение, установленное на компьютере OS X, Вы испытываете необходимость для использования Какао и Интерфейсного Разработчика. IB не имеет дубликата Windows, потому что он так в большой степени набросился на Какао. Это означает, что Вы испытываете необходимость для изучения Какао одновременно, и не легко сделать путем рассмотрения кода.
Objective C является родным языком Mac, и он столь не усовершенствован как C#. Это требует времени, прежде чем можно будет считать его бегло, потому что вызывание функций выглядит по-другому. Используя Python или Ruby вместо Objective C только добавляет слой сложности, пока Вы не изучаете Какао, но это кажется довольно жизнеспособным после этого. C# через Моно хорошо работает, но я не думаю, что целый мост Cocoa# реализован. Инструменты C# являются намного более низким качеством, чем Visual Studio, и MonoDevelop чрезвычайно ужасен на Mac. Я решил, что, если я хочу пойти этим путем затем, я должен изучить Objective C, но пошел другое направление.
Если Вы пишете веб-сайт затем, у Вас есть намного больше гибкости. Весь Python и культуры Ruby доступны, хотя существуют некоторые отклонения с установкой некоторых библиотек Python. Это - маршрут, которым я следовал, потому что у меня был некоторый основной опыт Python, и навыки почти на 100% совместимы с Linux. iTerm является лучшим клиентом, чем Терминал. Мне не нравилось большинство редакторов кода, которые я попробовал и запустил с Smultron, который не является намного больше, чем очень компетентный текстовый редактор с подсветкой синтаксиса. Существуют определенно тонны опций.
Неважно, как Вы приближаетесь к нему, Вы собираетесь провести много времени, учась. Я постоянно спотыкался синтаксис Python, но я наконец становлюсь хорошим в нем. SQLAlchemy (Python ORM) документы почти всегда имеют открытое окно браузера. Я также стиснул зубы и начал использовать Vim (MacVim конкретно), который является на самом деле забавной вещью учиться, потому что всегда, кажется, существует другая команда, которая делает точно, что Вы хотите. (Например, я устал от движения к строке, поразив $ для движения в конец, совершив нападки для добавления, затем совершите нападки, входят для запуска новой строки так я Погугленный и узнал, что я могу просто поразить o.)
Objective C, C, C++, Java, Ruby, Python, Php... Существует большой выбор языков/сред разработки использовать, включая C# через Моно, как говорит @epatel. Я сказал бы, что выбор языка зависит больше от того, что Вы разрабатываете, чем на том, из какой платформы Вы происходите.
Objective C и Какао являются способом пойти наверняка. Довольно часто devs сделает неправильное представление, что Цель-c "как не детализирована", или, "как точно настроено". Но я могу уверить Вас, это - дом питания позади некоторых лучших приложений в бизнесе. Существует значимая кривая обучения.
На связанной ноте,
Silverlight является веб-"подобной флэш-памяти" технологией, поддерживаемой в Windows и Mac, и можно кодировать на большинстве языков .NET.
C# доступен для OS X, пока Вы готовы использовать Моно. Для неUI и веб-материала это должно работать просто великолепно.
Для разработки настольного приложения я использую REALbasic. Это - синтаксис, и объектная модель очень похожи на Visual Basic.
Для программирования бизнес-уровня я не уверен, будет ли Cocoa/Objective-C самой продуктивной вещью запуститься с; это очень отличается, чем.NET и/или Java.