• ? вот я считайте 4 недели на работе не был… Как вернутся к продуктивному состоянию? А то что-то вообще не идет :(
  • Напиши программу получения минимального по модулю элемента в массиве.
  • @mabu, python -c "print min(map(abs,[3,-2,1,2,3,4]))"
  • @Shchvova, Что выводит?
  • @mabu, если надо число а не модуль, то так
  • @Shchvova, python -c "print min(map(lambda a:(abs(a),a),[3,-2,-1,2,3,4]))[1]"
  • @Shchvova, выведет -1
  • @Shchvova, На бейсике:
    Dim m = (arr.Select(Function(x As Integer) Math.Abs(x)).ToArray).Min
    Где arr — это массив или список.
  • @mabu, а как сделать что бы вернуло число а не его модуль?
  • @Shchvova, Лол. Оно же модуль возвращает. А нужно число.
  • @mabu, я это и спросил
  • я тут подумал, в питоне можно совсем корото — sorted([2,3,-1,-2,-3], key=abs)[0]
  • @Shchvova, Придумал вот это:
    Dim m = arr.OrderBy(Function(x As Integer) Math.Abs(x)).Min
  • @mabu, неверно ведь. .Min лишнее. Надо первый элемент брать
  • @Shchvova, Не совсем. Метод OrderBy просто сортирует последовательность и возвращает последовательность. Нужно получить же не последовательность, а один элемент. Лучше вместо Min использовать First.
  • @mabu, я это и сказал. Что вместо min надо первый элемента… А разве нельзя просто arr.OrderBy( Math.Abs ).First ?
  • @Shchvova, Нужен делегат типа Func(Of TSource, TKey). Math.Abs им не является.
  • @mabu, Ну нет, Я наврал. Можно. Но тогда нужно добавить AddressOf Math.Abs
  • @mabu, уф… Си стайл языки. Уже дюжину лет ничего нового...
  • @Shchvova, Почему си‐стайл? Это же бейсик.
  • @mabu, по секрету — бейсик и питон это си-стайл языки. Как и большинство других. Не си-стайл языки, это типа всякие лиспы, форты, немного хаскели
  • @Shchvova, Ты имеешь в виду парадигму «Императивное программирование»?
  • @mabu, нене, именно Си-стайл. Хотя хз. Это вилами по веде виляно. Это ведь неформальная категория языков синтаксисом похожих на си. Вообще не стоит на этом заморачиватся.
  • @Shchvova, Бейсик появился раньше, чем эти си и питоны. Правда современный бейсик в сравнении с тогдашним — это как небо и земля. Можно считать, что два разных языка.
  • На питоне можно сделать рекурсивную лямбду?
  • @mabu, тут не во времени дело. Тут дело в том что си захватила мир :) Паскаль тоже раньше появился. Но он тоже си стайл. Общим, я не хочу об этом говорить. Это не есть формальная категория.
  • @Shchvova, вот так сойдет?
  • @Shchvova, l = lambda a: (1 if a==1 else l(a-1))*a
    l(10)
    3628800
  • @Shchvova, но если чесно то это первый раз когда я попробовал такое и оно заработало.
  • @Shchvova, То есть l не может внутри себя вызывать l?
    Вот в бейсике. Проверка числа на простоту. Определена лямбда, вызывающая саму себя внутри себя.
    lambda As Func(Of Integer, Integer, Boolean) = Function(x, i) If(x < 2, False, If(x = i, True, If((x Mod i) = 0, False, lambda(x, i + 1))))
  • @mabu, в смысле, не может. Оно само себя вызвало ведь.
  • @mabu, l(a-1)
  • @Shchvova, Я не увидел. l как палочка выглядит.
  • Ну как, полегчало? Уже тянет программировать?
  • @mabu, не тянет. Переписал твою штуку на питон путем драг&дропа почти что
    >> l = lambda x, i: (False if x<2 else (True if x == i else (False if (x%i==0) else l(x, i + 1))))
    >> l(25,2)
    False
    >> l(23,2)
    True
  • @Shchvova, Работает! Правда она рекурсивная, забивает стэк.
  • @Shchvova, Это когда на форум повалила студентота с лабораторками, Я им решал всё в виде однострочника на бейсике. Они там такой текст на полэкрана вставляли, с такими определениями, а в ответ получали работающий однострочник.
  • @mabu, кстате, надо возвращать True если x≤2
  • @Shchvova, Число 2 простое, единица — нет.
  • @mabu, хм… всегда думал что простое… Ну и фиг с ним :)
  • @Shchvova, Единица не простое и не составное число, потому что она делится только на саму себя.
  • @mabu, угу. Википедия говорит что простое число это число у которого два натуральных делителя.
  • @Shchvova, Почитай статью как Я писал нахождение пути в лабиринте по алгоритму Ли freebasic.justforum.net
  • @mabu, но я не умею бейсик )
  • @mabu, но прочитаю )
  • @mabu, прочитал. Запили с евристикой.
  • @Shchvova, В таком случае нужно выбирать направление, куда сворачивать. Это уже не агортим Ли, так как он проверяет всё поле.
    Но у алгоритма поворотов, например, только направо или только налево, есть недостаток — он не всегда находит точку назначения.