Ayrat
я вообще решал задачку из пронета. Тривиальную, решение не особо интересно, но когда я увидел свои if-else, понял что явно можно проще, ебануть значить цепочку ИЛИ
Vasily
Vasily
И через tryFind
Ayrat
вопрос был в спортивном интересе
Hog
а у меня какой-то затык с лямбдами... вроде тока работало - и бац -
Unhandled Exception: System.ArgumentNullException: Value cannot be null.
Parameter name: method
Vasily
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
Hog
Vasily
Уже прожег
Ayrat
круды, хуюды, а заводы стоят
Hog
Vasily
Ayrat
а я чпушник
Ayrat
не путать с чмошником
Vasily
Hog
Vasily
Vasily
Hog
Vasily
Матрицы наблюдаемости/управляемости и прочая поебень
Hog
импульсные регуляторы :)
Vasily
АЧХ, ФЧХ, передаточные функции
Vasily
Как ща помню - на интеграторах 1/s можно собрать передаточную функцию любой сложности
Hog
слёт старпёров 2
Vasily
Ладно, пойду спать
Андрей
о, я в немецком универе профа встретил, по чьей книжке в России учился, Öme, Схемотехника
Hog
Андрей
Не, только по немецки терь помню
Roman
Hog
Hog
А поподробнее?
Roman
Много данных, несколько типов (long, int, bool, double, object). Задача была хранить в памяти компактно, но с быстрым доступом (очень быстрым), данные типа табличек в базе, у них схемы есть, апдейтятся инкрементально.
Hog
OHLC?
Roman
И схемы динамические
Roman
Hog
бар же
Roman
Свечки в смысле. Это тоже.
Roman
Там ещё таблички по сотне столбцов
Roman
Ордера, трейды, маркетные данные и всё остальное.
Фил Ранжин
ожидание - фп, чистые функции, иммутабельность и полный контроль за состоянием
Фил Ранжин
Roman
Если этот код работает в одном потоке и скрыт за нормальным интерфейсом, то почему нет?
Фил Ранжин
как ты понимаешь, этот код вот такой, потому что есть штука, которая принимает onOrderCompleted, и есть штука, которая принимает checkOrderCompleted
Фил Ранжин
тоесть, я не мог не использовать мутабл
Roman
checkOrderCompleted хотя можно одной строкой записать. Без матчинга
Roman
А судя по имени check это совсем не чек.
Shub
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
Фил Ранжин
меня не устраивают мутации. Вот эта вот херня, типа, если они изолированные, то всё ок - она верная, но она поощрает говнокод. И в какой то момент эти мутации появляются уже и во внешнем апи. Это как болезнь