15 сентября 2010 г.

Матричное произведение с помощью LINQ

Бороздя просторы рунета матраска наткнулся на примечательную статью «Поиск декартового произведения с помощью LINQ» на Хабре. А оно не единственное на этом глобусе! Надо вспомнить еще и матричное произведение.  ( эта тема долго не отпускала автора) => Необходимо найти произведение строки на вектор. Практически это означает что надо перемножить элементы двух массивов|списков с одинаковыми порядковыми номерами.
умножение строки на вектор, получаем скаляр
Такая задача может понадобится для перемножения матриц. Поэтому ниже представлен пример LINQ запроса возвращающий список перемноженных элементов. Не буду изголятся воспользуюсь функцией join :
double[] s1 = { 1, 2 };
double[] s2 = { 7, 8 };

var t1 = s1.Select((e, i) => new { element = e, index = i });
var t2 = s2.Select((e, i) => new { element = e, index = i });

var t3 = from o1 in t1 join o2 in t2 on o1.index equals o2.index select (double)o1.element*(double)o2.element;

foreach(double t in t3) Console.WriteLine("T: {0}", t);


* This source code was highlighted with Source Code Highlighter.

5 сентября 2010 г.

Грибы убийцы

Matraska много бродил в интернете, но токого еще не читал. Грипы манипуляторы|паразиты (Ophiocordyceps unilateralis). Опять грибы и опять сводят с ума, но нет не matraskу - муравьишек-древоточцев...

Споры грибы попадают в организм муравья. Прорастают в мозгу и мышцах. И полностью подчиняют себе насекомое. Муравей-зомби покидает родную колонию, начиная вести жизнь отшельника.
 Манипулируя захваченным организмом, паразит буквально направляет ведомого в наиболее благоприятные для себя места. Ведь грибу не подходят ни кроны деревьев, ни лесная подстилка, ни почва. А нужно лишь пространство, расположенное примерно в 25 сантиметрах от земли, где существует оптимальное для паразита сочетание влажности и температуры. Вот туда муравьи-зомби и уходят. И там же гибнут по воле гриба.

Финальная сцена удивительна. Фантастика отдыхает. Гриб заставляет муравья забраться на нижнюю сторону листа, повелевает вцепиться в него челюстями и замереть. Затем убивает. А потом прорастает сквозь голову. Отращивает коробочку со спорами, высыпает их, заражая других муравьев.


Муравей, погибший за власть грибов. Гриб пророс сквозь голову насекомого. Утолщение - коробочка со спорами. Снимок сделан в Таиланде. 


Matraska знает, муравьи не одиноки - в людях тоже растут грибы!