Спасибо, ознакомлюсь. А так пока в планах с чат-гпт напополам созданный алгоритм по определению принадлежности треугольнику(Я узнал 3 способа сделать это, но всё оказалось проще, когда узнал про смысл cross-product. А там звёзды и сошлись с принципами работы OpenGL) развивать и публиковать по-тихоньку.
const COORD* head = &Snake[0]; // чтобы не копипастить индекс каждый раз
isGameEnd |= head->X == W || head->X == 0; // укусила боковые границы
isGameEnd |= head->Y == H || head->Y == 0; // укусила нижнюю или верхнюю границы
for (int i = 1; i < snakeSize; i++)
{
// укусила себя
isGameEnd |= head->X == Snake[i].X
&& head->Y == Snake[i].Y;
}
Но можно проще:
isGameEnd |=
head->X == W | head->X == 0 |
head->Y == H | head->Y == 0; // Побитовые операции наше всё
for (int i = 1; i < snakeSize; i++)
{
// укусила себя
isGameEnd |= (head->X == Snake[i].X & head->Y == Snake[i].Y);
}
Почему?
При операции сравнение мы получаем bool, где false = 0b0000 (Упрощённо), а true = 0b0001. Таким образом, задействован только 1 бит. Побитовое "или" работает для любого количества входных аргументов, поэтому я просто объединил все сравнения в одну конструкцию. А ещё мне нравится убирать тело цикла и решать всё через инкремент.
for (
int i = 1;
i < snakeSize | !isGameEnd; // Зачем нам продолжать проверки, если врезались.
isGameEnd |= (head->X == Snake[i].X & head->Y == Snake[i++ /* инкремент */].Y));
Я не употреблял и не собираюсь пробовать, что либо воздействующее серьёзно на мозг, однако ближе к полуночи я пробуждаюсь под светом тёмной темы и пишу код лучше, а утром не очень понимаю как я это вообще смог придумать такой алгоритм.
Ну не знаю даже... Вынести вспомогательные функции в отдельные курсы, которые идут дополнением к уроку, не, или ссылаясь на существующие "как сделать"? К примеру мне нравится Си, хотя я приведу куда более красивый пример: Rust. Вот запрос "Нейросеть на Rust-lang" даёт следующее количество результатов: 0 по теме, +- 10 результатов про "использование нейросети в rust(игре)", +- 20 результатов про реализацию с помощью библиотек на python, +- 5 результатов с чистой математикой и слоганом "простыми словами" (лишь слоганом), при поиске в "duckduckgo". А я не хочу ковыряться тысячи часов в исходниках библиотеки tensorflow на python, чтобы написать необходимую мне библиотеку. Вот мне и нужно это +- простое объяснение, чтобы сделать то, что я желаю, или хотя бы адаптировать под свои нужды. Вот про что я могу сказать, что помогло, так это ролик про перцептрон от IT_Школьника, код которого я переписал на Rust и создав 1 рабочий слой, который даже работал. Я заинтересован в создании конвейеров нейросетей, но хочу использовать хоть немного чужого опыта, чтобы не начинать полностью с нуля.
UPD: Простите, если моё сообщение не в тему, просто вечный поиск мне немного надоел. Если есть что почитать полезного про создание нейросети на Rust, то прошу посоветуйте, не откажусь от помощи.
Возможно, вот эту функцию можно написать лучше
Например, вот так
P. S. Я вообще разделил реализацию и просто выбираю правильную в CMake.
Добавлю, есть ещё команда
Или же в крайнем случае
для запуска без
if __name__ == "__main__", или подобногоДа, я спрашиваю нейронку, но она так коверкает мои уникальные идеи, что я просто сам допираю как что-то сделать.
Спасибо, сам только нашёл.
У меня вот как, я включил 694 и 705 строку в код:
Да, я вот думаю, что это будет полезно в том же OpenGL на стадии понимания что делает glClear тот же:
И да, это работает и с побитовыми операциями, я думаю.
Ладно, у меня компилятор подавился. Но gcc на linux как-то съел
struct {int;};и не подавился. Спасибо за помощь, сейчас подредачу статью.Спасибо, ознакомлюсь. А так пока в планах с чат-гпт напополам созданный алгоритм по определению принадлежности треугольнику(Я узнал 3 способа сделать это, но всё оказалось проще, когда узнал про смысл cross-product. А там звёзды и сошлись с принципами работы OpenGL) развивать и публиковать по-тихоньку.
Я полистал первый из 4 словарей, в нём указаны окончания.
Шаман в словаре. Орфографический словарь, 3072 страница
Сколько я искал инфы на C>17, так и не находил. Спасибо. Пора снова залезть в интернет
Но можно проще:
Почему?
При операции сравнение мы получаем bool, где
false = 0b0000(Упрощённо), а true = 0b0001. Таким образом, задействован только 1 бит. Побитовое "или" работает для любого количества входных аргументов, поэтому я просто объединил все сравнения в одну конструкцию. А ещё мне нравится убирать тело цикла и решать всё через инкремент.Всё конечно классно переведено, но я начинаю понимать, что довольно запарно всё это создавать...
Делюсь make-комбайном по компиляции GLSL в SPIR-V
Прим:
Замените
glslcв коде ниже на путь (Я просто воткнул /home/stalker320/VulkanSDK/1.3.290.0/x86_64/bin в переменную PATH в начало)Поместите ниже приведённый Makefile в папку shaders
Поместите шейдеры в папку shaders/src и создайте папку shaders/bin. Пути зависят от SRCPREFIX и OBJPREFIX
называйте файлы следующим образом: filename.stage.glsl, где stage - это vert, vertex, frag, fragment и прочие стадии пайплайна
Выполните make all для исполнения
Выполните make clear для очистки
UPD: исправил для поддержки hlsl (сделал суффикс изменяемым)
2 дня? Я вхожу в такое состояние уже к полуночи.
Ты и пользователи github. А вообще те, кто будет писать компилятор к твоему языку программирования
Ну смотри: str - это тип, а str() - это создание объекта str. При использовании подсказок типов ты пишешь
А
__str__необходим для добавления в варианты того, что можно подставить в конструктор.А
decode- это для работы с байтами.Ты прямо серьёзно, или "гениальный" кусок "кода"?
Я не употреблял и не собираюсь пробовать, что либо воздействующее серьёзно на мозг, однако ближе к полуночи я пробуждаюсь под светом тёмной темы и пишу код лучше, а утром не очень понимаю как я это вообще смог придумать такой алгоритм.
Ну не знаю даже... Вынести вспомогательные функции в отдельные курсы, которые идут дополнением к уроку, не, или ссылаясь на существующие "как сделать"? К примеру мне нравится Си, хотя я приведу куда более красивый пример: Rust. Вот запрос "Нейросеть на Rust-lang" даёт следующее количество результатов: 0 по теме, +- 10 результатов про "использование нейросети в rust(игре)", +- 20 результатов про реализацию с помощью библиотек на python, +- 5 результатов с чистой математикой и слоганом "простыми словами" (лишь слоганом), при поиске в "duckduckgo". А я не хочу ковыряться тысячи часов в исходниках библиотеки tensorflow на python, чтобы написать необходимую мне библиотеку. Вот мне и нужно это +- простое объяснение, чтобы сделать то, что я желаю, или хотя бы адаптировать под свои нужды. Вот про что я могу сказать, что помогло, так это ролик про перцептрон от IT_Школьника, код которого я переписал на Rust и создав 1 рабочий слой, который даже работал. Я заинтересован в создании конвейеров нейросетей, но хочу использовать хоть немного чужого опыта, чтобы не начинать полностью с нуля.
UPD: Простите, если моё сообщение не в тему, просто вечный поиск мне немного надоел. Если есть что почитать полезного про создание нейросети на Rust, то прошу посоветуйте, не откажусь от помощи.
Слушай, вот ты ближе всего к сегодня написал: как ты понял, в производную функции активации передавать надо что?