All streams
Search
Write a publication
Pull to refresh
82
0
Валерий @Vayun

Пользователь

Send message
Вторую можно выкинуть) Или обернуть первую еще одной лямбдой. Все из-за того, что питоновские in-place методы возвращают None вместо объекта…
в чем разница? Кроме того Хаскелль статически типизированный язык и для списков произвольной вложенности надо будет изобретать тип наподобие деревьев, и это будет уже далеко не 1 строчка.
Этот habrahabr.ru/blogs/python/63539/#comment_1765404 вариант примерно на 20% быстрее itertools. На счет Эрланга не знаю, не установлен.
опечатался
mergeto = lambda dst,lst: reduce(lambda none,b: dst.extend(b) if type(b) is list else dst.append(b), lst, dst) or dst
merge = lambda lst: mergeto([], lst)
Я бы поостерегся возвращать генератор, зависящий от мутируемых объектов. Можно получить ерунду если программа продолжит изменять данные.
Ага, хотя я бы не назвал второй вариант большим извратом, тк рекурсивные алгоритмы в форме лямбд записываются более элегантно. Вот чисто итеративный вариант будет извратом.

единственный комментарий: можно убрать «or» из цикла:
mergeto = lambda dst,lst: reduce(lambda a,b: a.extend(b) if type(b) is list else a.append(b), lst, dst) or dst
merge = lambda lst: mergeto([], lst)
Подозреваю, что по скорости это будет на уровне с List comprehensions вариантом (№5)
Скорее это ностальгия за Хаскель-будущим автора)
Разминка для мозгов.

К тому же я предлагаю вам решить задачку в конце, способом аналогичным Варинту 3. И мы сравним с моим, аналогичным Варианту 6.
Надо было попробовать) Вон ниже пишут, что все равно фан и опыт.

Я не вполне понял вопрос, какая разница в каких координатах орбиты? ВМ отдавала декартовы, моя программу внутри (в основном) считала в полярных.

Я не пользовался системами контроля версий, поэтому из исходников представить, что было в первые сутки не возможно) Комментариев там нет, а формулы выглядят примерно так, чтобы занимать меньше места:
dis=R01*R02*(2*a1*a2 + a1*a1*R01 + a2*a2*R02 - 2*a1*a2*ep1*ep2
    *math.cos(d1 - d2))*(a2*ep1*R02*math.sin(d1) - a1*ep2*R01*math.sin(d2))**2
numerator=(*dis + a2*ep1*R02*(a1*R01-a2*R02)*math.cos(d1) 
  - a1*ep2*R01*(a1*R01 - a2*R02)*math.cos(d2))
denominator=(a1*a1*ep2*ep2*R01*R01 + a2*a2*ep1*ep1*R02*R02
  - 2*a1*a2*ep1*ep2*R01*R02*math.cos(d1 - d2))
alpha1=( math.sqrt(dis)+numerator)/denominator
alpha2=(-math.sqrt(dis)+numerator)/denominator
 


Хотя я же написал «К вечеру субботы все работало и решало 4 первых сценария «по двум точкам»». Это части первой задачи.
На самом деле особого смысла прикручивать к Matematic'е другие языки программирования нет, её встроенный язык достаточно продвинут сам по себе (например на нем например написана WolframAlpha). Хотя если нужно, то есть интерфейс — MathLink. В поставке есть примеры для Си, Джавы и Дот.Нет.

К Пиону я её не пытался приделать, просто использовал как визуализатор, с обменом данными через файлы. Да и кстати решить эту задачу на самой Математике можно было в два счета, но это все-таки не спортивно, тк это не ЯП общего назначения)

Если есть желание посмотреть, что на неё вытворяют есть интересный сайт demonstrations.wolfram.com/ там куча примеров от школьной программы, до ядерной физики
По образованию и профессии физик-теоретик. Правда астрофизикой никогда не занимался, так что было интересно покопаться…
Matematica действительно очен хороший инструмент. Чего нет там, обычно есть на functions.wolfram.com/. Еще есть www.wolframalpha.com/, но к сожалению эллиптическим секторам её еще не научили)
За местом я не гнался, кажется где-то во второй сотне. На все просто не хватило рук. Даже если бы я не отвлекся в воскресенье, то результат все равно до первой двадцатки было мало шансов допрыгнуть. В следующий раз буду участвовать хотя бы вдвоем с кем-то, уже должно быть легче. А так приходилось метаться между кодом и математикой (разными к тому же).
Спасибо, почитаю) Может и свой писать не придется, если там уже все есть))
Удивляюсь как у людей получается иметь одну открытую вкладку? У меня последний зафиксированный минимум был год назад — 22 вкладки. Сейчас открыто 68.

Чтобы не быть полным оффтопом) удобный аддон для сохранения состояния кучи вкладок Session Manager
Удобство в том, что для каждой новой функции производные пишутся один раз. Остальное получается автоматически из алгебраических свойств дифференцирования.
Главное не показывать Dual «наружу», а использовать только для определения функций.

Information

Rating
Does not participate
Location
Berlin, Berlin, Германия
Date of birth
Registered
Activity