PascalABC.NET официальный канал
الذهاب إلى القناة على Telegram
Официальный канал языка и системы программирования PascalABC.NET
إظهار المزيد1 856
المشتركون
-124 ساعات
-97 أيام
-2430 أيام
أرشيف المشاركات
Как посчитать количество уникальных элементов в коллекции
https://teletype.in/@pascalabcnet/OIaiNkMlyci
Меряем производительность array vs List
Сравним производительность массивов и списков. Кто выиграет?
Приведенная программа демонстрирует, что если мы используем рукописные алгоритмы для вычисления суммы, то списки проигрывают по скорости на 50%.
При использовании стандартных методов разрыв сокращается: списки проигрывают массивам всего на 20%.
Но самое удивительное - то, что стандартные методы в данном случае на порядок медленнее рукописных алгоритмов.
Списки List как расширяемые массивы
Как и во всех современных языках, в PascalABC.NET имеются списки. Они представлены типом
List<T>.
Что можно с ними делать и чем они отличаются от массивов?
Главное отличие - списки могут расширяться по ходу работы программы. Для добавления элемента x в конец списка используется метод l.Add(x).
На изображении представлена программа, выделяющая цифры целого числа и помещающая их в список. Поскольку цифры выделяются с конца, то после цикла список инвертируется методом l.Reverse.История про for var
https://teletype.in/@pascalabcnet/AE9t0hYFLbj
А не написать ли нам сортировку выбором?
Самую короткую. Короче пузырьковой.
Попробуем. Срезы нам в помощь!
Алгоритм сортировки выбором прост: выбираем максимальный элемент и меняем его местами с первым.
Потом выбираем максимальный элемент в оставшейся части и меняем его местами со вторым.
И так - до предпоследнего элемента.
Сколько строк мы потратим на такой алгоритм?
Правильно - две!
Обернём затем всё это в процедуру и будем использовать :)
Вся правда о диапазонах a..b
https://teletype.in/@pascalabcnet/k5cBsjlGZt1
Слова с указанными буквами
Какие слова можно составить, используя данные буквы (пусть они хранятся в переменной letters)?
В PascalABC.NET в примерах имеется файл Samples\Games\BookWorm\words.txt, который хранит более 14000 различных слов.
Решим указанную задачу, пользуясь несколькими возможностями PascalABC.NET:
📌 Во-первых, метод
.EachCount для строки возвращает частотный словарь повторяемости каждой буквы в строке.
📌 Во-вторых, функция ReadAllLines возвращает последовательность слов из файла
📌 В-третьих, метод d.Get(key) возвращает для словаря d значение, соответствующее ключу key или 0 если такой ключ отсутствует в словаре.
И, наконец, сердцем алгоритма является проверка того, что все буквы данного слова таковы, что для каждой его буквы c количество этой буквы в слове не больше количества этой буквы в строке letters: wd[c]<=ld.Get(c)
Итог - в окне вывода. Можно узнать, что оказывается в русском языке есть слова арат и мара.Событие OnResize графического окна
https://teletype.in/@pascalabcnet/OnResize
Проверка делимости числа
Как проверить, что число x делится на 2 или на 3? Разумеется, написать составное логическое выражение с операцией
or, используя скобки.
Если же использовать стандартный метод Divs, то скобки в операндах для or можно не ставить, что повышает читаемость.
Можно пойти еще дальше - и использовать стандартный метод DivsAny, который проверяет делимость на одно из значений, указанных в списке параметров.Графическая программа, иллюстрирующая задачу о восьми ферзях
И - конкурс - кто напишет компактную и понятную программу, решающую саму задачу о восьми ферзях?
Решения пишите в комментариях.
https://teletype.in/@pascalabcnet/YCoM39xhImG
Использование NuGet пакетов в проекте на PascalABC.NET
https://teletype.in/@pascalabcnet/lZw4g7BV--b
Библиотеки в PascalABC.NET и их подключение к программе на C#
https://teletype.in/@pascalabcnet/LibPABC
Новые свойства LocalAxisX,Y,Z и новые методы AnimMoveByLocal в модуле Graph3D
https://teletype.in/@pascalabcnet/vjMWETDjcDi
Как учить начинающих лямбда-функциям
https://teletype.in/@pascalabcnet/qnjVzzKtGBX
