Bit Set
Что, если нам нужно выполнить какие-то операции с массивами битов? Вы будете использовать для этого boolean[]?
Для этого есть более эффективный с точки зрения использования памяти метод.
Это класс BitSet, позволяющий нам хранить массивы битов и манипулировать ими. По сравнению с boolean[] он требует в 8 раз меньше памяти. Мы можем выполнять логические операции над массивами, такими как, например and, or, xor.
Допустим, у нас есть два входных массива битов. Мы хотим провести на них операцию xor.
Уточню, операция xor, возвращает только те элементы, которые имеются только в одном массиве, но не в другом. Для этого нам нужно создать два экземпляра BitSet и вставить туда элементы, как показано ниже. Наконец, вы должны вызвать метод xor в одном из BitSet объектов, указав в качестве аргумента второй BitSet объект.
#java
Подписывайтесь на канал 👉@cod_academy
Что, если нам нужно выполнить какие-то операции с массивами битов? Вы будете использовать для этого boolean[]?
Для этого есть более эффективный с точки зрения использования памяти метод.
Это класс BitSet, позволяющий нам хранить массивы битов и манипулировать ими. По сравнению с boolean[] он требует в 8 раз меньше памяти. Мы можем выполнять логические операции над массивами, такими как, например and, or, xor.
Допустим, у нас есть два входных массива битов. Мы хотим провести на них операцию xor.
Уточню, операция xor, возвращает только те элементы, которые имеются только в одном массиве, но не в другом. Для этого нам нужно создать два экземпляра BitSet и вставить туда элементы, как показано ниже. Наконец, вы должны вызвать метод xor в одном из BitSet объектов, указав в качестве аргумента второй BitSet объект.
#java
Подписывайтесь на канал 👉@cod_academy
Токенизация строки
Токенизация строки означает разделение строки относительно некоторого разделителя (разделителей). Есть много способов этого добиться.
Рассмотрим пример с функцией strtok(). Она разбивает строку по указанным разделителям и должна быть вызвана в цикле, на каждой итерации возвращая следующую часть. В конце возвращает NULL.
#cpp
Подписывайтесь на канал 👉@cod_academy
Токенизация строки означает разделение строки относительно некоторого разделителя (разделителей). Есть много способов этого добиться.
Рассмотрим пример с функцией strtok(). Она разбивает строку по указанным разделителям и должна быть вызвана в цикле, на каждой итерации возвращая следующую часть. В конце возвращает NULL.
#cpp
Подписывайтесь на канал 👉@cod_academy
Узнать все о функции
Современные редакторы кода всегда помогут правильно написать функцию, а некоторые даже их параметры. Но что делать, если нужно узнать точно описание функции, методы или прочитать документацию?
Для всех этих действий существует две функции dir() и help(). Первая возвращает список всех доступных для функции методов. Вторая возвращает текстовую документацию.
Очень удобно использовать dir() когда не знаешь, как точно пишется метод.
С помощью help() можно узнать все об объекте и его методах даже без подключения к интернету.
#python
Подписывайтесь на канал 👉@cod_academy
Современные редакторы кода всегда помогут правильно написать функцию, а некоторые даже их параметры. Но что делать, если нужно узнать точно описание функции, методы или прочитать документацию?
Для всех этих действий существует две функции dir() и help(). Первая возвращает список всех доступных для функции методов. Вторая возвращает текстовую документацию.
Очень удобно использовать dir() когда не знаешь, как точно пишется метод.
С помощью help() можно узнать все об объекте и его методах даже без подключения к интернету.
#python
Подписывайтесь на канал 👉@cod_academy
В С++11 появилась такая классная штука, как цикл for, основанный на диапазоне. Например, вам не придётся писать for (int i = 0; i < v.size(); i++), потому что теперь есть for (auto &e : v). Он очень полезен при обходе std::set или std::map.
#cpp
Подписывайтесь на канал 👉@cod_academy
#cpp
Подписывайтесь на канал 👉@cod_academy
👍2
Класс-оболочка и тип данных
В приведенном выше примере второй оператор печати не будет отображать значение true, поскольку сравниваются ссылки на объекты класса-оболочки, а не их значения.
#java
Подписывайтесь на канал 👉@cod_academy
В приведенном выше примере второй оператор печати не будет отображать значение true, поскольку сравниваются ссылки на объекты класса-оболочки, а не их значения.
#java
Подписывайтесь на канал 👉@cod_academy
Копирование словарей и других объектов
Новички часто допускают такую ошибку при создании копии списка:
lst2 = lst1
При работе с одним из словарей оказывается, что изменяются оба.
Почему так происходит?
Об этом — в завтрашнем посте. Пока что расскажу, как этого избежать:
У списка существует специальный метод copy(), который нужен как раз для таких случаев.
Но подобное работает не всегда! Если имеется множество вложенных списков, то надо сделать полное копирование импортировав модуль copy и воспользовавшись методом deepcopy().
#python
Подписывайтесь на канал 👉@cod_academy
Новички часто допускают такую ошибку при создании копии списка:
lst2 = lst1
При работе с одним из словарей оказывается, что изменяются оба.
Почему так происходит?
Об этом — в завтрашнем посте. Пока что расскажу, как этого избежать:
У списка существует специальный метод copy(), который нужен как раз для таких случаев.
Но подобное работает не всегда! Если имеется множество вложенных списков, то надо сделать полное копирование импортировав модуль copy и воспользовавшись методом deepcopy().
#python
Подписывайтесь на канал 👉@cod_academy
👍2
Длина числа
Для вычисления количества цифр в числе вместо цикла можно эффективно использовать log.
#cpp
Подписывайтесь на канал 👉@cod_academy
Для вычисления количества цифр в числе вместо цикла можно эффективно использовать log.
#cpp
Подписывайтесь на канал 👉@cod_academy
Метод fill()
Присваивает определенное значение int к каждому элементу указанного целочисленного массива. Такой же метод может быть использован всеми другими примитивными типами данных (byte, short, int и т.д.).
#java
Подписывайтесь на канал 👉@cod_academy
Присваивает определенное значение int к каждому элементу указанного целочисленного массива. Такой же метод может быть использован всеми другими примитивными типами данных (byte, short, int и т.д.).
#java
Подписывайтесь на канал 👉@cod_academy
Как объединить все элементы списка Python в одну строку?
Советую пользоваться первым способом. Малое количество строк кода и его работоспособность - одно из главных качеств хорошего кода. Посмотреть пример в онлайн редакторе.
#python
Подписывайтесь на канал 👉@cod_academy
Советую пользоваться первым способом. Малое количество строк кода и его работоспособность - одно из главных качеств хорошего кода. Посмотреть пример в онлайн редакторе.
#python
Подписывайтесь на канал 👉@cod_academy
👏1
Вы можете написать функцию, которая будет возвращать два и более значений, с помощью
#cpp
Подписывайтесь на канал 👉@cod_academy
std::tuple и std::tie.#cpp
Подписывайтесь на канал 👉@cod_academy
Interface for Consts
Очень часто встречаются интерфейсы для описания констант. Это не правильно с точки зрения ООП. Интерфейс должен описывать поведение, не больше не меньше. Этот пункт не очень принципиален, тем более что результат компиляции будет один и тот же, но все же java это ООП язык и было бы хорошо придерживаться его принципов.
#java
Подписывайтесь на канал 👉@cod_academy
Очень часто встречаются интерфейсы для описания констант. Это не правильно с точки зрения ООП. Интерфейс должен описывать поведение, не больше не меньше. Этот пункт не очень принципиален, тем более что результат компиляции будет один и тот же, но все же java это ООП язык и было бы хорошо придерживаться его принципов.
#java
Подписывайтесь на канал 👉@cod_academy
👍2
Как копировать файлы из одной папки в другую на Python?
Библиотека под названием
Посмотреть пример в онлайн редакторе.
Подписывайтесь на канал 👉@cod_academy
Библиотека под названием
shutil включает в себя несколько полезных функций для создания копий объектов на жестком диске. Посмотреть пример в онлайн редакторе.
Подписывайтесь на канал 👉@cod_academy
👍1
Использование emplace_back вместо push_back
В C++ 11
#cpp
Подписывайтесь на канал 👉@cod_academy
В C++ 11
emplace_back работает так же, как push_back, добавляя элементы в конец вектора. emplace_back работает быстрее, так как push_back сначала создает временную переменную, а затем добавляет ее в конец вектора.#cpp
Подписывайтесь на канал 👉@cod_academy
NullPointer Exception
Исключения нулевого указателя возникает в Java довольно часто при попытке вызова метода несуществующего объекта.
Возьмем для примера следующую строчку кода:
Если объект
Хорошей практикой разработки на Java является предварительная проверка на Null в методах.
#java
Подписывайтесь на канал 👉@cod_academy
Исключения нулевого указателя возникает в Java довольно часто при попытке вызова метода несуществующего объекта.
Возьмем для примера следующую строчку кода:
int noOfStudents = school.listStudents().count;Если объект
school окажется равен Null или его метод listStudents вернет Null, вы получите исключение NullPointerException.Хорошей практикой разработки на Java является предварительная проверка на Null в методах.
#java
Подписывайтесь на канал 👉@cod_academy
👍2
Присвоение первого непустого значения из ряда
Следующая инструкция присвоит первый непустой (имеющий истинное значение) объект из множества объектов A, B и С. Или None, если все предыдущие объекты окажутся пустыми.
#python
Подписывайтесь на канал 👉@cod_academy
Следующая инструкция присвоит первый непустой (имеющий истинное значение) объект из множества объектов A, B и С. Или None, если все предыдущие объекты окажутся пустыми.
#python
Подписывайтесь на канал 👉@cod_academy
👍1
Рекомендуем к прочтению книгу Александра Бындю "Антихрупкость в IT"
Эта книга — результат многолетнего опыта построения IT-продуктов. И прежде всего она о том, как выстроить процессы разработки IT-систем таким образом, чтобы успевать вовремя подстроиться под любые изменения.
В её основе — описание работающих практик, примеры из реальных проектов, анализ ошибок и выводы. В книге собраны рекомендации для владельцев бизнеса и разработчиков. Первые приобретут систематизированные знания о том, как правильно взаимодействовать с IT, а вторые — как делать хорошо и не делать плохо.
Сайт издания
Ознакомиться с книгой
Эта книга — результат многолетнего опыта построения IT-продуктов. И прежде всего она о том, как выстроить процессы разработки IT-систем таким образом, чтобы успевать вовремя подстроиться под любые изменения.
В её основе — описание работающих практик, примеры из реальных проектов, анализ ошибок и выводы. В книге собраны рекомендации для владельцев бизнеса и разработчиков. Первые приобретут систематизированные знания о том, как правильно взаимодействовать с IT, а вторые — как делать хорошо и не делать плохо.
Сайт издания
Ознакомиться с книгой
Как включить все стандартные библиотеки одной командой
Чтобы разом включить в проект все стандартные библиотеки, используйте #include <bits/stdc++.h>. Это особенно полезно в условиях дефицита времени на соревнованиях по программированию.
Но помните, что:
#include <bits/stdc++.h>
содержит множество заголовочных файлов, которые, возможно, и не понадобятся в конкретном проекте. А это может привести к увеличению времени компиляции.
#include <bits/stdc++.h> не является стандартным заголовочным файлом библиотеки GNU C++. Таким образом, не относящиеся к типу GCC (GNU Compiler Collection) компиляторы могут испытывать затруднения в процессе исполнения. Однако так бывает не часто!
#cpp
Подписывайтесь на канал 👉@cod_academy
Чтобы разом включить в проект все стандартные библиотеки, используйте #include <bits/stdc++.h>. Это особенно полезно в условиях дефицита времени на соревнованиях по программированию.
Но помните, что:
#include <bits/stdc++.h>
содержит множество заголовочных файлов, которые, возможно, и не понадобятся в конкретном проекте. А это может привести к увеличению времени компиляции.
#include <bits/stdc++.h> не является стандартным заголовочным файлом библиотеки GNU C++. Таким образом, не относящиеся к типу GCC (GNU Compiler Collection) компиляторы могут испытывать затруднения в процессе исполнения. Однако так бывает не часто!
#cpp
Подписывайтесь на канал 👉@cod_academy
👍2
Пирамидальная сортировка
Пирамидальная сортировка является методом сортировки, который интерпретирует элементы в массиве, как почти полное бинарное дерево.
Она берет элементы массива и вставляет их в пирамиду.
После построения пирамиды, из нее по очереди удаляются наибольшие элементы и вставляются в конец массива, где и находятся в отсортированном виде.
Общее время сортировки расчитывается по O(N logN) для N элементов.
#java
Подписывайтесь на канал 👉@cod_academy
Пирамидальная сортировка является методом сортировки, который интерпретирует элементы в массиве, как почти полное бинарное дерево.
Она берет элементы массива и вставляет их в пирамиду.
После построения пирамиды, из нее по очереди удаляются наибольшие элементы и вставляются в конец массива, где и находятся в отсортированном виде.
Общее время сортировки расчитывается по O(N logN) для N элементов.
#java
Подписывайтесь на канал 👉@cod_academy
👍1