Ayrat
я вообще решал задачку из пронета. Тривиальную, решение не особо интересно, но когда я увидел свои if-else, понял что явно можно проще, ебануть значить цепочку ИЛИ
Vasily
И через tryFind
Ayrat
вопрос был в спортивном интересе
Hog
а у меня какой-то затык с лямбдами... вроде тока работало - и бац - Unhandled Exception: System.ArgumentNullException: Value cannot be null. Parameter name: method
Ayrat
задачка тривиальная, определить симметричность линкедлиста (хз почему именно его) решение с кучей говноифов let isSymmetric (col: #ICollection<_>) = use fwd = col.GetEnumerator() use bwd = (Seq.rev col).GetEnumerator() let rec loop n = if n >= col.Count / 2 then true else if fwd.MoveNext() && bwd.MoveNext() then printfn "%A %A " fwd.Current bwd.Current if fwd.Current <> bwd.Current then false else loop (n+1) else true loop 0
Vasily
Или сборщик мусора захавал
Ayrat
решение без кучи говноифов let isSymmetric (col: #ICollection<_>) = use fwd = col.GetEnumerator() use bwd = (Seq.rev col).GetEnumerator() let rec loop n = n >= col.Count / 2 || not (fwd.MoveNext()) || not (bwd.MoveNext()) || fwd.Current = bwd.Current && loop (n+1) loop 0
Vasily
Ваще, канеш, решается она не так
Hog
нарядно
Ayrat
ой ну начялось
Vasily
Как минимум там Seq.rev малину портит
Ayrat
ясен хер там можно в один for
Vasily
У двунаправленного листа есть Next и Prev
Hog
от половинки в обе стороны
Ayrat
с двух концов к середине
Vasily
Ну лучше от половинки в обе
Ayrat
но это не так важно, вы упускаете соль. Соль не в решении тривиальной задачи была
Ayrat
а в том что вы мне рассказали про карты карно
Ayrat
!
Hog
2 раза :)
Vasily
Ты еще побольше пообщайся
Vasily
Я мож вспомню, как логические элементы строить
Vasily
Всякие там шифраторы/дешифраторы
Vasily
И прочую поебень
Ayrat
прожигаешь ты свою жизнь, Василий!!11
Vasily
Уже прожег
Ayrat
круды, хуюды, а заводы стоят
Hog
Уже прожег
протравил
Vasily
ты электронщик?
КОгда-то был
Hog
КОгда-то был
а я - автоматчик
Ayrat
а я чпушник
Ayrat
не путать с чмошником
Андрей
у меня они на первом курсе были :)
Это ж явно не информатика была? 🤔 помню что на бумажке решал, и без канпютеров в те времена ещё. матан штоль...
Vasily
а я - автоматчик
В смысле САУ?
Vasily
да
У меня тоже в целом
Vasily
Матрицы наблюдаемости/управляемости и прочая поебень
Hog
импульсные регуляторы :)
Vasily
импульсные регуляторы :)
Не, ну я не настолько старый
Vasily
АЧХ, ФЧХ, передаточные функции
Vasily
Как ща помню - на интеграторах 1/s можно собрать передаточную функцию любой сложности
Hog
слёт старпёров 2
Vasily
Ладно, пойду спать
Hog
Ладно, пойду спать
а как же непройденный... на букву N?
Андрей
о, я в немецком универе профа встретил, по чьей книжке в России учился, Öme, Схемотехника
Vasily
а как же непройденный... на букву N?
Он уже пройденный, ща ностальгирую просто
Андрей
Не, только по немецки терь помню
Hog
Или сборщик мусора захавал
а это очень даже может быть
Hog
А поподробнее?
Roman
Много данных, несколько типов (long, int, bool, double, object). Задача была хранить в памяти компактно, но с быстрым доступом (очень быстрым), данные типа табличек в базе, у них схемы есть, апдейтятся инкрементально.
Hog
OHLC?
Roman
И схемы динамические
Roman
OHLC?
Это что?
Hog
бар же
Roman
Свечки в смысле. Это тоже.
Roman
Там ещё таблички по сотне столбцов
Roman
Ордера, трейды, маркетные данные и всё остальное.
Фил Ранжин
ожидание - фп, чистые функции, иммутабельность и полный контроль за состоянием
Фил Ранжин
реальность
Roman
реальность
Если этот код работает в одном потоке и скрыт за нормальным интерфейсом, то почему нет?
Фил Ранжин
как ты понимаешь, этот код вот такой, потому что есть штука, которая принимает onOrderCompleted, и есть штука, которая принимает checkOrderCompleted
Фил Ранжин
тоесть, я не мог не использовать мутабл
Roman
checkOrderCompleted хотя можно одной строкой записать. Без матчинга
Roman
А судя по имени check это совсем не чек.
Shub
module Order = type Order = {items: string[]; status: bool} let isOrderCompleted order = order.status let onOrderComplete order = {order with status = true}
Shub
это если тупо в лоб. а если вспомнить заветы нашего вождя и сделать по ддд...
Фил Ранжин
ты не понял, те штуки, которые принимают onOrderCompleted и checkOrderCompleted я не могу менять
Shub
это не твой код, что ли?
Фил Ранжин
да тупо нет бюджета
Pavel
ожидание - фп, чистые функции, иммутабельность и полный контроль за состоянием
тебя что конкретно в куске не устраивает? finished наружу торчит?
Фил Ранжин
меня не устраивают мутации. Вот эта вот херня, типа, если они изолированные, то всё ок - она верная, но она поощрает говнокод. И в какой то момент эти мутации появляются уже и во внешнем апи. Это как болезнь