
«Связанные списки — это goto структур данных.», — авторство приписывают разным системным программистам.

«Связанные списки — это goto структур данных.», — авторство приписывают разным системным программистам.
Для начала хотелось бы сказать, что же такое массивы и слайсы.
Массив в Go - это структура данных, которая представляет собой упорядоченную последовательность элементов одного типа фиксированной длины.
Давайте рассмотрим на примере:
package main
func main() {
/*
Массив создаётся в таком формате:
Имя := [количество элементов массива] тип данных {элементы массива, через запятую}
*/
arr := [3]int{0, 1, 2}
fmt.Println(arr[1])
}
На примере выше был создан массив с 3-мя элементами и типом данных int.
После создания массива мы не можем изменять его вместительность, однако можем менять сами элементы.
Всех приветствую!
Продолжаем знакомиться с TradingView, языком Pine Script и мудростями, которые помогут вам создавать собственные пользовательские индикаторы и стратегии. Соответственно, использовать их в торговле на любом рынке – будь то криптоактивы, национальный рынок акций или т.п.
Почитать предыдущие части-статьи можно по ссылкам ниже:
Я не применяю Go в коммерческой разработке, я недавно начал изучать и применять этот язык для пет-проектов и разного рода опытов. В этой статье речь пойдёт о слайсах. Пример, который мы будем рассматривать, мне показал коллега, за что ему большое спасибо.
Говоря простым языком, слайсы — это надстройка, интерфейс над массивами, который позволяет нам более гибко с ними работать. Мы можем работать со слайсом как с динамическим массивом: добавлять или удалять элементы, то есть менять его размер. При этом под каждым слайсом содержится базовый массив строго определённой длины.
Я – начальник отдела разработки небольшой государственной компании, и в последнее время мне снова пришлось провести несколько десятков созвонов-собеседований, с которых мне удалось отобрать только одного человека. О том, почему выпускники скиллбоксов присылают резюме пачками, но выхлоп от обучения собственных юристов компании оказывается выше, чем от собеседований по вакансии – эта статья.
Изучением представителей флоры и фауны, как правило, занимаются ботаники и биологи. Однако существует множество примеров того, как те или иные существа становились объектом живейшего интереса со стороны физиков, инженеров и математиков. Каждый организм можно назвать системой, которая оказывает определенное влияние на окружающую среду и оказывается под влиянием этой же среды. Все эти взаимодействия тем или иным образом описываются различными химическими реакциями, физическими процессами и математическими формулами. Все становится куда сложнее, когда подобных индивидуальных систем становится много, как в улье пчел или в гнезде муравьев. В таком случае, помимо индивидуального взаимодействия со средой добавляется взаимодействие между индивидами. Группа ученых из Колорадского университета в Боулдере (США) решили изучить рой пчел во время зарождения колонии. Особенность такого роя в том, что множество особей формируют скопление, которое свисает с ветки или другого объекта. Какова динамика такой системы, как ведут себя пчелы, и что помогает им держаться вместе? Ответы на эти вопросы мы найдем в докладе ученых.Читать полностью »
Проверим это на C.
#include <stdio.h>
int main()
{
int data[3] = {1, 2, 3};
int i = 0;
printf("Array address: %pn", data);
do {
printf("Array[%u] = %pn", i, (void *)(&data[i]));
i++;
} while(i < 3);
}
Получим результат:
Array address: 0x7ffd7c514a6c
Array[0] = 0x7ffd7c514a6c
Array[1] = 0x7ffd7c514a70
Array[2] = 0x7ffd7c514a74
Как первый (нулевой) элемент, так и сам массив находятся по одному и тому же адресу, поскольку 0-й элемент удалён на 0 элементов от начала. Эта связь между указателями и массивами в C настолько тесная, что их даже можно рассматривать вместе.
Однако это ответ на вопрос «зачем», а не «почему». Нумеровать массивы с нуля стали не сразу. Удивительно, но развитие такого простого вопроса не умещается в предложении или абзаце.
Читать полностью »

В конце июня мы писали о поломке телескопа «Хаббл» и немного неясном будущем его преемника «Джеймса Уэбба». Сегодня поговорим о целой системе телескопов, которая получила название Square Kilometre Array (SKA).
Это огромный, распределенный по поверхности Земли массив радиотелескопов, общая площадь которого должна была составить 1 км2. Спустя некоторое время после предварительной оценки проекта этот показатель решили увеличить до 5 км2. Сейчас SKA еще не работает, но должен начать функционировать в ближайшем будущем. Ну а теперь — подробнее о проекте.
Читать полностью »
Недавно в одном из проектов встала задача: есть набор множеств (Set), которые надо достаточно эффективно хранить в оперативной памяти. Потому что множеств много, а памяти мало. И с этим надо что-то делать.
Так как язык, на котором всё это написано — C#, то есть нюансы. А именно, что стандартный HashSet<int> на хранение одного числа тратит 16 байт, также влияет филл фактор. Есть более эффективные реализации (когда-нибудь и про них напишу), но с другой стороны, можно же тупо хранить в массивах, по 4 байта на число (требуется хранить инты), что достаточно эффективно. Но можно ли уменьшить ещё?
Сразу скажу, у меня нет ответа, как лучше сделать, возможно его не существует, ибо есть множество факторов, связанных с особенностями распределения конкретных данных. Но есть идеи, которыми я поделюсь: какие варианты экономии памяти существуют. Также рекомендую до прочтения поста подумать самостоятельно, всё-таки это неплохая разминка для ума. Для определённости сформулирую задачу следующим образом:
Есть набор неотрицательных уникальных интов (32 бита). Требуется хранить их эффективно в оперативной памяти, из операций — создание набора и получение всех элементов. Не нужно получать элементы по индексу, добавлять новые или удалять.
В статье будет много букв и цифр и ни одной картинки (кроме упакованного котика на КДПВ).
Читать полностью »
CoLab блокнот с примерами
Возможно сделать скользящее окно (rolling window, sliding window, moving window) по массивам NumPy на языке программирования Python без явных циклов. В данной статье рассматривается создание одно-, двух-, трех- и N-мерных скользящих окон по массивам NumPy. В результате скорость обработки данных увеличивается в несколько тысяч раз и сравнима по скорости с языком программирования С.
Cкользящее окно применяется в: обработке изображений, искусственных нейронных сетях, интернет протоколе TCP, обработке геномных данных, прогнозировании временных рядов и т.д.
Отказ от ответственности: в исходном коде могут быть ошибки! Если вы видите ошибку, пожалуйста, напишите мне.