Кто любит забавные и совершенно непрактичные алгоритмы, как вот этот?
Final Results
50%
Все
23%
Никто
27%
Только я
Нашёл одно действительно полезное свойство кодинга с помощью ИИ.
Именно с помощью, а не "GPT, write me the next hyper hyped app, make no mistakes".
ИИ может в своём обучении получить какой-то полезный кусочек информации, на который программист мог не наткнуться, да и даже не подумать загуглить.
Вот пример того, как ИИ предложила умножать компоненты цвета на альфа канал.
Что тут такого? А то, что это банально быстрее чем
Некоторые вовсе берут и кастят всё в
И когда этих операций десятки, сотни, тысячи, то и не заметишь разницы.
А когда их миллионы, десятки миллионов, сотни миллионов в секунду, то это имеет значение.
Просто сравните как компилируется код.
Забавно, что компилятор оптимизирует деление в умножение и сдвиг.
Но не так эффективно, как ручной вариант, который оптимизируется в 0 умножений
Именно с помощью, а не "GPT, write me the next hyper hyped app, make no mistakes".
ИИ может в своём обучении получить какой-то полезный кусочек информации, на который программист мог не наткнуться, да и даже не подумать загуглить.
Вот пример того, как ИИ предложила умножать компоненты цвета на альфа канал.
div255(r as u32 * a as u32) as u8;
fn div255(x: u32) -> u32 {
((x + 128) * 257) >> 16
}
Что тут такого? А то, что это банально быстрее чем
(x + 127) / 255 и при том совершенно точно.Некоторые вовсе берут и кастят всё в
f32, а потом назад, что супер-медленно в сравнении с целочисленным умножением.И когда этих операций десятки, сотни, тысячи, то и не заметишь разницы.
А когда их миллионы, десятки миллионов, сотни миллионов в секунду, то это имеет значение.
Просто сравните как компилируется код.
Забавно, что компилятор оптимизирует деление в умножение и сдвиг.
Но не так эффективно, как ручной вариант, который оптимизируется в 0 умножений
❤12👍5💯1
Задачка для продвинутых крабоводов.
Нужно дописать субтрейт так, что бы функция тайпчекалась успешно.
Для удобства линк с задачей на плейграунде.
https://play.rust-lang.org/?version=stable&mode=debug&edition=2024&gist=487462038096be1e341e48d0f6fd94b7
Нужно дописать субтрейт так, что бы функция тайпчекалась успешно.
trait HasFoo {
type Foo;
}
/// Modify only this trait definition.
trait HasDefaultFoo: HasFoo {}
/// Make this function typecheck successfully
fn make_this_typecheck<F>() -> F::Foo
where
F: HasDefaultFoo,
{
Default::default()
}
Для удобства линк с задачей на плейграунде.
https://play.rust-lang.org/?version=stable&mode=debug&edition=2024&gist=487462038096be1e341e48d0f6fd94b7
play.rust-lang.org
Rust Playground
A browser interface to the Rust compiler to experiment with the language
❤8
Разработчики драйвера:
Нам нужно что бы вы указали все барьеры и лайауты текстурок, а то датарейсы и перформанс плохой.
Так же разработчики драйвера:
NDANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDA
Нам нужно что бы вы указали все барьеры и лайауты текстурок, а то датарейсы и перформанс плохой.
Так же разработчики драйвера:
😁8❤4
Опять попал в список контрибьюторов Rust в 1.96.
Но моё изменение в анонсе даже не упомянули из-за нишевости.
Надо бы делать это почаще и побольше.
Но моё изменение в анонсе даже не упомянули из-за нишевости.
Надо бы делать это почаще и побольше.
🔥27❤3🤡1
Хотел поделиться с вами задачкой.
На стыке топологии, геометрии и сетчатых графов.
Есть множество плотно упакованных полимино (больше 1), все из которых являются топологически дисками.
Нужно доказать, что для любого полимино можно выбрать квадрат и отдать соседнему полимино, так что бы они по прежнему оставались дисками.
Проще говоря
Для справки:
Полимино - фигура собранная из квадратов соединённых сторонами.
Является диском, если экстерьер является связным по сторонам квадратов. То есть нет пустых квадратов "внутри" полимино.
На стыке топологии, геометрии и сетчатых графов.
Есть множество плотно упакованных полимино (больше 1), все из которых являются топологически дисками.
Нужно доказать, что для любого полимино можно выбрать квадрат и отдать соседнему полимино, так что бы они по прежнему оставались дисками.
Проще говоря
Для прямоугольного множества квадратов A, и множества полимино дисков P1, P2... Pn, где n > 1.
Pi∩Pk = ∅ для i≠k.
P1∪P2∪...∪Pn = A.
Доказать что ∀i,∃x∈Pi, Pi = {x} или Pi-{x} - полимино диск и ∃j≠i, Pj∪{x} - полимино диск.
Для справки:
Полимино - фигура собранная из квадратов соединённых сторонами.
Является диском, если экстерьер является связным по сторонам квадратов. То есть нет пустых квадратов "внутри" полимино.
❤2👍1
Я раньше занимался всяким сетевым программированием. Но никогда еще не решал проблемы partial-partitioning'а.
То есть ситуации в много-узловой системе, в которой только коммуникация между какими-то парами узлов отваливается.
В отличии от, например, простой ситуации, где узел просто от сети отключился. Его тогда можно просто заменить. А поломавшийся узел терминируется.
Но вот что делать в p2p системе, в которой только определенные пары пиров не могут общаться. А им надо!
Пока не вижу вариантов кроме как таким пирам отключиться самим.
То есть ситуации в много-узловой системе, в которой только коммуникация между какими-то парами узлов отваливается.
В отличии от, например, простой ситуации, где узел просто от сети отключился. Его тогда можно просто заменить. А поломавшийся узел терминируется.
Но вот что делать в p2p системе, в которой только определенные пары пиров не могут общаться. А им надо!
Пока не вижу вариантов кроме как таким пирам отключиться самим.