Igor
Тогда да вполне возможно у меня тоже было тяжелое детство, но нынешней молодежи кнут ни к чему
Andrii
Ну да, я на discord кинул тут задачку из Д. Кнута, мне начали говорить, что она неправильная
Igor
Возьмте любой курс нормальный по алгоритмам вместо Кнута. А если прям хочется упороться в задачки codeforces
Andrii
Вот задачка из Кнута: что делает код и зачем он может быть нужен static inline uint64_t ncm(uint64_t x) { uint64_t a = x & -x; uint64_t b = x + a; uint64_t c = b ^ x; a <<= 2; c /= a; return b | c; }
Nazar
Кнут расчитан не на среднестатистического человака, а на студента средних курсов, иначе много математики просто не поймеш
Artem
Есть какой нибудь сайт с задачами для JavaScript ? Для новичков
Igor
если это адаптация под c++ то давайте начнем с того что первая строка это сразу UB
Igor
минус для беззнаковых чисел зависит от реализации от компилятора и процессора
Igor
3 Section 4.7 paragraph 3 in the standard says (with my emphasis added): If the destination type is signed, the value is unchanged if it can be represented in the destination type (andbit-field width); otherwise, the value is *implementation-defined*.
Igor
может приводиться к сайнед и вести себя так же а может ничего не делать
Andrii
Дык у меня unsigned
Igor
в том и дело для того чтобы применить унарный минус компилятор может привести его к сайнед а может не приводить и ничего не делать
Igor
и то и то является верным поведением по стандарту
Andrii
A computation involving unsigned operands can never overflow, because a result that cannot be represented by the resulting unsigned integer type is reduced modulo the number that is one greater than the largest value that can be represented by the resulting type. (ISO/IEC 9899:1999 (E) §6.2.5/9)
Andrii
Тут написано, что если операция над unsigned приводит к выходу за диапазон, то результат будет такой же, как и в случае, если результат будет взят по модулю
Andrii
Поэтому (unsigned)0 - (unsigned)1`это `UINT_MAX
Andrii
НУ и по логике, такой код настолько часто используется, что если бы это не было бы частью стандарта, то были бы проблемы с переносимостью.
Igor
ub используется но это не есть хорошая практика
Andrii
А вот эта задачка из Д. Кнута
Andrii
Только там + последнее действие, но в результате множества установленных битов будут отличаться, поэтому на результат не влияет
Andrii
ub используется но это не есть хорошая практика
Я привёл пункт стандарта, где говорится, что это не UB
Igor
ну взяли какой то младший установленный бит добавили его
Andrii
У меня все unsigned
Igor
в чем смысл с битмагией разбираться?
Andrii
в чем смысл с битмагией разбираться?
Ну... иногда встречается у меня в проектах :)
Igor
обычно к ней всеравно пишется коментарий
Andrii
Опять же, мне прикольно
Andrii
Andrii
Да и в тех же шахматных движках я особо много объяснения битовой магии не видел. Там это база, без которой соваться не стоит :)
Igor
ну ок первые две операции выключают блок битов и заменяет следующий ноль на 1
Andrii
Ещё раз, где заменяют? ```static inline uint64_t ncm(uint64_t x) { uint64_t a = x & -x; uint64_t b = x + a; uint64_t c = b ^ x; a <<= 2; c /= a; return b | c; }```
Igor
первая строка берет младший установленный бит
Igor
потом если добавить младший бит к числу то убереться блок из единиц в конце записи
Igor
потом мы ксорнем и уберем блок
Igor
потом какая то дичь но зачем это может быть нужно вменяемому человеку мне не понятно
Igor
да кстати я не настоящий программист на c++ у нас в питоне целые числа вообще имеют бесконечную запись :)
Misa
❤️
Igor
это кстати прикол возьмите -1 в питоне и попробуйте эндом взять любой бит и всегда будет 1 те в минус единице в питоне бесконечное число бит
Andrii
это кстати прикол возьмите -1 в питоне и попробуйте эндом взять любой бит и всегда будет 1 те в минус единице в питоне бесконечное число бит
Это не прикол, это логичное поведения для того, чтобы битовые алгоритмы было легче адаптировать на любое число бит
Igor
экий вы сноб
Andrii
На самом деле это получения следующего числа, в котором количество установленных в адиницу бит столько же, сколько и в исходном.
Andrii
И зная эту задачу я ей нашёл применение, например, в покерном калькуляторе для беребора всех бордов
Igor
ура вы молодец :) только такие задачи решают когда в этом появляется необхоимость а не на уроках программирования
Andrii
А елси бы не знал, кстати, и в мыслях бы не было, что такое возможно
Andrii
ура вы молодец :) только такие задачи решают когда в этом появляется необхоимость а не на уроках программирования
Проблема, кто когда такая задача появляется, ты может просто не знать, что есть такое решение. И что оно может быть там. В этом вопрос
Igor
Проблема, кто когда такая задача появляется, ты может просто не знать, что есть такое решение. И что оно может быть там. В этом вопрос
https://www.google.com/search?q=find+next+number+with+same+set+bits&rlz=1C5CHFA_enUA955UA955&oq=find+next+number+with+same+set+bits&aqs=chrome..69i57.7309j0j7&sourceid=chrome&ie=UTF-8 вот так решается эта задача программистом
Igor
вот вторая ссылка в поиске
Igor
https://www.geeksforgeeks.org/closest-next-smaller-greater-numbers-number-set-bits/
Igor
на всех языках
Igor
спасибо кнута не надо
Igor
блин я понимаю что у нас было трудное детство и мы считали биты нынешним программистам в этом нет необходимости
Andrii
Да, но для этого надо как-то догадаться использовать битовые маски, например
Igor
нет я задал вопрос и получил ответ гугл жи? или вас забанили?
🅼🅰🆇🧑🏻‍💻
Здравствуйте ,тупой вопрос .Я поступаю в универ на специальность Компьютерные науки .Предмет Информатика и фаховый испит то есть тесты .что нужно выучить чтобы сдать и пройти ? .
Andrii
У большинства людей борд будет массивом из пяти элементов, где индекс будет номером карты
Andrii
И такого запроса в google уже не будет
Artem
Тут половину ничего не понимают что вы пишите, спорьте в личку.
🅼🅰🆇🧑🏻‍💻
Я просто не знаю к каким вопросом готовиться
🅼🅰🆇🧑🏻‍💻
Что выучить .чтобы сдать
Igor
откройте codewars там есть раздел интервью там вопросы по программированию выбираете свой язык = профит
Igor
если речь о практике если о теории то точно так же гуглиться интервью по (технология, язык и тп)
Andrii
откройте codewars там есть раздел интервью там вопросы по программированию выбираете свой язык = профит
Не знаю, я заходил на leetcode, и ушёл, потому что там всё тривиально сильно. ТАкие упражнения я решаю, чтобы мозг пощекотать. А когда решение очевидно, и надо только его технически реализовать... В чём смысл?
Igor
мы говорим о помощи начинающим а не о щекотании мозгов тех кому скучно
Artem
Помогите мне, скиньте сайт с задачами для JavaScript
Igor
https://www.codewars.com/kata/search/javascript?q=&&beta=false
Igor
начинайте с 6-7 kyu это сложность самые простые
Igor
чем меньше тем сложней
Igor
когда решили можно посмотреть код других людей и выучить что то новое
🅼🅰🆇🧑🏻‍💻
Кто учился на специальность. Компьютерные науки ??