Порридж В Ко-ливинге
Порридж В Ко-ливинге
Порридж В Ко-ливинге
Порридж В Ко-ливинге
Viktor
ох. почти что спам 😄
Порридж В Ко-ливинге
ох. почти что спам 😄
Ну последняя картинка все ставит на круги своя
Evgeniy
(a[i], a[j]) = (a[j], a[i]);
Порридж В Ко-ливинге
(a[i], a[j]) = (a[j], a[i]);
Что-то мне подсказывает что это с использованием доп. Переменной
Порридж В Ко-ливинге
Но 100% под капотом там так оптимизировалли, что это не отлтчается от ^=
Evgeniy
jit компилятор на лету меняет на обмен между регистрами
Evgeniy
и итоговый код не отличается, если бы с дополнительной переменной писал
Evgeniy
https://sharplab.io/#v2:D4AQTAjAsAUOAMtwGYAEBvWruvGDWORAlgHYAuqAhqgLypgDchR2ZlARnagKzMyscACioAaDgEpuQjqKoT+g7CAgBOEagDUqAES6tqSYpwBfWCaA
Порридж В Ко-ливинге
В низу это псевдо ассамблер?
Evgeniy
В низу это псевдо ассамблер?
https://sharplab.io/#v2:C4LghgzgtgPgAgJgIwFgBQiAM7EGYAEA3uvqfogkSWTQJYB2w+Y+AvPggNzU2kNMAjNvgCs3NLzIAKMABoBASmFSBssAvGTScJAE4Z+ANT4ARKaP5FmsgF90NoA=
Evgeniy
вот ассемблер
Порридж В Ко-ливинге
Гениально 🤣
Порридж В Ко-ливинге
Он просто поменял их местами изначально
Порридж В Ко-ливинге
Надо попробывать использовать эти переменные перед свапом
Evgeniy
https://sharplab.io/#v2:C4LghgzgtgPgAgJgIwFgBQiAM7EGYAEA3uvqfogkSWTQJYB2w+Y+AvPggNzU2kNMAjNvgCs3NLzJwkATgAUYAJTjJpafIHKevBQBp8m4XIH6lK1eoX4A1PgBE9mwa0SyAX3RugA=
Evgeniy
Записал одни, использовал, записал другие. 🙂
Порридж В Ко-ливинге
Порридж В Ко-ливинге
А можно было бы, наверное просто поменять местами переменные в writeLine
Порридж В Ко-ливинге
Но не буду больше ничего говорить, т.к. слабо знаю asm
Порридж В Ко-ливинге
Товарищи
Порридж В Ко-ливинге
Делимся самыми короткими/отбитыми решениями сегодняшней задачки!
Порридж В Ко-ливинге
Очень похожа на задачку на 4ой неделе, где надо было тоже двигать единички
Порридж В Ко-ливинге
class Solution { public: int findComplement(int num) { int i = 32; while(num >> (32 - i)){--i;} return ((unsigned)(~num) << i >> i); } };
Uladzimir
Могу только длинным поделиться
Порридж В Ко-ливинге
Это мое чудо
Порридж В Ко-ливинге
Uladzimir
На js :)
Порридж В Ко-ливинге
Опа, ну давай
Порридж В Ко-ливинге
Мне даже интересно стало)
Порридж В Ко-ливинге
Порридж В Ко-ливинге
Я вообще ожидал, что кто-то сделает через bitset
Uladzimir
Да шутка, нечего там смотреть, if в ifе и ifом погоняет
Порридж В Ко-ливинге
Порридж В Ко-ливинге
Да шутка, нечего там смотреть, if в ifе и ifом погоняет
Ну ладно, я тоже так сначала начал делать
Порридж В Ко-ливинге
Я просто вспомнил, что очень похожая задачка была
Порридж В Ко-ливинге
Вообще, вот задачи с битами, это единственные задачи на которых я не туплю, подождите еще недельку, и вы увидете мои страдания
Viktor
Делимся самыми короткими/отбитыми решениями сегодняшней задачки!
У меня вот так вышло: int n = num; int m = 0; int i = 0; while (n > 0) { m = (1 << i++) + m; n >>= 1; } return num > 0 ? m - num : 1;
Viktor
выглядит магически, конечно
Порридж В Ко-ливинге
Ага, особенно комбинация (unsigned) и ~
Порридж В Ко-ливинге
Мне кажется, проверка в конце не нужна
Evgeniy
@vitkarpov @KlenZeleny @grishinanton61 ?
https://leetcode.com/problems/number-complement/discuss/533435/C-simple-solution-using-bitwise-operations
Evgeniy
решал ещё два месяца назад
Порридж В Ко-ливинге
https://leetcode.com/problems/number-complement/discuss/533435/C-simple-solution-using-bitwise-operations
Нее, вот это выглядит вообще высшей магией
Viktor
Given a positive integer,
да, кстати, может я перемудрил. это защита от нуля у меня.
Порридж В Ко-ливинге
https://leetcode.com/problems/number-complement/discuss/533435/C-simple-solution-using-bitwise-operations
Ну ты на 4ой неделе тоже через логарифм решал задачу с битами вроде
Порридж В Ко-ливинге
Как и я
Evgeniy
Нее, вот это выглядит вообще высшей магией
Ищется сколько битов занято. А потом по очереди разворачивается.
Evgeniy
Ну ты на 4ой неделе тоже через логарифм решал задачу с битами вроде
Да, похоже на то решение. Только задача другая
Viktor
Ищется сколько битов занято. А потом по очереди разворачивается.
это, кстати, классно. в лоб решение. у меня сложнее.
Порридж В Ко-ливинге
Ааа
Viktor
я нахожу число со всеми единичками и вычитаю оттуда
Порридж В Ко-ливинге
Капец, ну это прям железное
Evgeniy
https://leetcode.com/problems/number-complement/discuss/613182/Python3-using-bit-xor
Evgeniy
вот оно, только на питоне
Evgeniy
и с встроенной функцией
Порридж В Ко-ливинге
bit_length
Порридж В Ко-ливинге
Очень удобно
Порридж В Ко-ливинге
Я бы назвал это читом
Evgeniy
Ага
Порридж В Ко-ливинге
Мне для этого надо было int задекларить и while loop прогнать
Anton
@vitkarpov @KlenZeleny @grishinanton61 ?
Я текущие задачи не решаю. Я еще на уровне easy с b-tree  борюсь)
Arman
На Python решал: num^(int('1'*(len(bin(num))-2),2))
Порридж В Ко-ливинге
Почему 1 в кавычках?
Evgeniy
Строку делает
Порридж В Ко-ливинге
Ну, я знаю
Порридж В Ко-ливинге
Ааа, понял, типо повторить единицы