Category: происшествия

Category was added automatically. Read all entries about "происшествия".

nyaload

Смезда Сверти

Есть табличка сравнения размеров космических кораблей, на ней не хватает Звезды Смерти.

Пририсовал : http://dobrokot.ru/pics/i2015-04-18__15-38-08_2011kb.jpg

Звезд Смерти - две штуки. Первая рабочая - 160км в диаметре (для рисунка выбрал её размер), вторая недостроеная - точно неясно, 200-900 км.

Картинки для коллажа взяты отсюда: много разных космических кораблей, инфографика по DeathStar, нарисованная Death Star
nyaload

вызвать определенные последствия

Есть две такие стрелочки, → и ⇒ , импликация и следствие.
В курсах логики подчеркивается, что это РАЗНОЕ, но я почему-то всё время пропускал, чем же они связаны.

Пусть есть предикаты P и Q, зависящие от какого-то x. Например, ЧЕЛОВЕК(x), СМЕРТЕН(x), СОКРАТ(x).
Тогда то, что из P(x) следует Q(x) записывается через импликацию так:
∀x: P(x)→Q(x)


Для импликации дают запоминать вот такую таблицу:
0→0 = 1
0→1 = 1
1→0 = 0
1→1 = 1
Можно запомнить так: (x→y) эквивалентно (x ≤ y). Отсюда сразу видна транзитивность импликации, так как операция (≤) транзитивна.


Задачка для школьников (решается на листочке бумаги, или в уме, если легко складываете двузначные числа):
Collapse )
nyaload

MayBe C++

Вот храним мы в переменной целое число. Иногда нам надо хранить не число, а факт того, что числа вообще нет. Например, функция пересечения двух линий хочет сообщить что нет точки пересечения вообще. Часто для этой цели используют "особые" значения которые вроде как бессмысленные. Например, -1 для int, или пустая строка для std::string.

Иногда делают баги, и забывают написать if на проверку бессмысленности значения. "Бессмысленное" значение вырывается в мир, и начинает участвовать в арифметических операциях или становится "особым" значением уже в другом месте.

Для того что бы явно записать факт "иногда тут ничего нет" используется обёртка над типом, внутри которой хранится булевский флажок. В boost есть тип boost::optional<T>. В Haskell есть Maybe T. В C# есть Nullable (для встроенных типов).


Хороший пример, почему лучше иметь тип в котором особое состояние "нету никакого int вообще": cначала человек получает -1 из системной функции типа getpid, а затем эта -1 попадает в killall. Смерть, разрушения, мертвый мак.

Есть ещё мой велосипед для C++, когда не хочется boost, без вложенных зависимостей:
MayBe<T> : https://github.com/dobrokot/may_be/blob/master/may_be.hpp

Если кто-то сможет помочь переписать с учетом strict aliasing - буду благодарен. Как с учетом strict aliasing вообще разместить объект типа T в массиве char[sizeof(T)] ? Русские коментарии на английские переведу сам, если вдруг окажется что штука нужная и нравится людям больше чем boost::optional :)

Примеры использования: https://github.com/dobrokot/may_be/blob/master/may_be_usage_example.cpp
Collapse )
nyaload

(no subject)

Есть подозрение, что районы гóрода и городá отличаются сильнее, чем разные страны.

"Этим маршрутом автобуса не езди, в этом время на нём много арабов"
"В этот район города не ходи, туда даже полиция после 6 не суется"