easy.math.qsp v. 2.4.0
История версий
-
Версия 2.1.1:
- сконструирован простейший отладчик
- изменен принцип работы функции
#+#
- теперь она может работать со сколько угодно большими числами.
-
Версия 2.1.2:
- добавлена функция
#zero#
- исправлена ошибка, приводившая к неправильному счёту при использовании нескольких функций подряд.
- добавлена функция
-
Версия 2.1.3:
- добавлена функция
#add#
- добавлена функция
#dev#
- переработана функция
#+#
- теперь она работает проще и быстрее, используя функции логического сложения и вычитания, что позволило суммировать числа любой длины и знака. - переработана и упрощена функция
#*#
- может перемножать числа любой длины и знака. - исправлена ошибка в функции
#sum#
, приводившая к неверному подсчёту вплоть до зависания программы.
- добавлена функция
-
Версия 2.1.4:
- исправлена функция
#dev#
- теперь она вычитает с учётом переполнения. - исправлена функция
#rndstr#
- исправлена функция
-
Версия 2.1.5:
- введены функции работы с массивами:
#array.rand#
- заполняет массив случайными числовыми значениями#array.prnt#
- выводит в результат содержимое массива#array.sort#
- сортировка значений массива#array.rstd#
- перестановка значений массива#array.dsrt#
- восстановление массива к виду до сортировки - Модернизирована функция
#array.sort#
. Теперь она сортирует также и по строковым значениям. - Исправлены функции работы с щестнадцатеричными числами: удалены лишние переменные.
- Добавлена функция сравнения содержимого двух массивов
#array.simp#
- введены функции работы с массивами:
-
Версия 2.1.6:
- Изменена функция, вычисляющая модуль разности двух чисел
#-#
- Расширена функция
#array.prnt#
- Добавлена функция
#str.inArray#
, которая выбирает из блока текста строки и помещает их в массив.
- Изменена функция, вычисляющая модуль разности двух чисел
-
Версия 2.1.7:
- Добавлена функция
#array.prnt.few#
, которая позволяет выводить на экран содержимое сразу нескольких массивов - Добавлена функция
#WIDETRIM#
- отрезающая прилегающие символы пробелов и табуляций и переводов строк. - Изменена функция
#array.prnt#
- расширена возможностью убирать из результатов прилегающие пробельные символы. - Расширена функция
#WIDETRIM#
- расширена возможностью убирать из строк преформатирование. - Изменена функция
#WIDETRIM#
- теперь удаляются все строки, которые не содержат ничего, кроме пробельных символов, в начале и конце текста.
- Добавлена функция
-
Версия 2.1.8:
- В модуль добавлены вспомогательные функции:
get.tag.cont
- получает значение сдвоенных тегов.get.tag.num
- получает значение одиночных тегов.get.word.inPos
- из строки вида"слово1|слово2|...|слово3"
получает слово в указанной позиции между вертикальными чертамиkill.var.olegus
- удаляет элемент массива по текстовому индексу.
- В модуль добавлены вспомогательные функции:
-
Версия 2.1.9:
- Имя функции
#WIDETRIM#
заменено на#widetrim#
. - Исправлена ошибка в функции
get.tag.num
, приводившая к неправильному получению гексаметричного числа. - Исправлена ошибка в функции
#widetrim#
, приводившая к зависанию плеера, когда ей передавали пустое значение - Cлегка подправлена функция
#chk.array.word#
- теперь можно указать границы поиска: начальный и конечный элемент.
- Имя функции
-
Версия 2.1.10:
- Добавлена функция
#array.clr#
, удаляющая из массива все элементы, содержащие указанное значение. Работает только со строковыми значениями. - Добавлена функция
#array.strt#
, генерирующая массив, заполненный подряд идущими числами. Можно указать верхний и нижний пределы числа, а так же с какого элемента начинать заполнение. - Добавлена функция
#array.srch#
, которая находит в числовом массиве максимальное и минимальное значения. В отличие от стандартных коммандMAX
иMIN
QSP, в этой функции можно указать пределы поиска: область элементов, область чисел. В случае, если для указанной области элементов, отсутствуют числа, входящие в заданные пределы, возвращается словоfalse
. Можно запросить у функции позицию элемента. - Добавлена функция
#coords.get#
, получающая координаты по номеру элемента. Эта функция пригодится при организации двумерного массива, через одномерный, или при отрисовке игровых полей заданной ширины.
- Добавлена функция
-
Версия 2.1.11:
- Добавлена функция вставки элемента в массив
#array.ins#
. Позволяет вставлять в массив элемент со сдвигом вправо. Поддерживаются текстовые и числовые массивы, а так же текстовые и числовые индексы. - Добавлено расширение функции сравнения массивов. Теперь можно сравнивать массивы на совпадение хотя бы одного элемента. Если в массивах найдено совпадение хотя бы одного элемента, возвращается
true
. - Исправлена функция сравнения массивов. При поиске на совпадение хотя бы одного элемента, если массивы имели разный размер, происходил оверкил-выход, что приводило к выдаче сообщения об ошибке. Теперь при сравнении массивов на совпадение хотя бы одного элемента, будет производиться поиск независимо от размеров массива, однако подобное действие приведёт к получению ложного
true
в случае, когда в одном из массивов будет пустая строка. - Исправлена функция очистки массива
#array.clr#
. Теперь она может очищать от пустых значений, и от числовых значений. - Внесены изменения в локацию
#array.prnt#
. Теперь можно выводить не весь массив, а лишь его часть. Т.е указать от какого до какого элемента следует вывести массив. - Исправлена ошибка ложного
true
при сравнении массивов на совпадение хотя бы одного элемента. Теперь ложное true может возникнуть лишь в случае, если в одном из массивов пустая строка (элемент) присутствует не на последнем месте. Однако и эту ситуацию можно предвосхитить, поставив ключ"/se"
к управляющей конструкции.Space Exclude
- исключает все пустые строки массивов из сравнения. - Добавлена функция разрежения строки
#str.thin#
. В полученную строку через определённое количество символов вставляется другая строка (разделитель). По умолчанию через каждый символ вставляется пробел. Есть возможность добавлять разделитель в начале результата, в конце результата: управление[left]
и[right]
соответственно. - Расширены возможности функции
#sum#
. Теперь она суммирует и элементы текстовых массивов. - Устранена ошибка в функции
#array.prnt.few#
, представлявшая неправильную таблицу при наличии пустых ячеек в массиве.
- Добавлена функция вставки элемента в массив
-
Версия 2.2.0:
- Исправлена ошибка в функции
#rounddiv#
— не функционировали направления округления. - Исправлена функция
#invert#
— ошибка удаления всех символов из строки устранена. - Отредактированы и обновлены разделы справки.
- Библиотека адаптирована под Quest Navigator. Для нормального функционирования с Quest Navigator в самом начале игры необходимо прописать следующее
$AVS_PLAYERTYPE='QN'
- Исправлена ошибка в функции
-
Версия 2.3.0:
- Добавлена функция
#col-rgb#
, преобразующая цвет в формате RRGGBB в формат понятный настройкам qsp. - Добавлена функция
#col-inv#
, преобразующая цвет в формате RRGGBB в противоположный. - Упрощена и сокращена функция
kill.var.olegus
на основе объяснения Олегуса. Работоспособность не изменилась. - Расширена функция случайной строки. Теперь можно указать набор символов, который необходимо получить в итоговой строке:
$func('#rndstr#',4,'только это','J01A23F45G67O89P')
- Добавлена функция
#rtp#
, меняющая содержимое двух переменных местами. В качестве аргументов указываются имена двух переменных. В т.ч. можно указывать ячейки массивов с текстовой индексацией. Работает как для текстовых, так и для числовых переменныз. - Исправлен недочёт в функции сортировки массивов, приводивший к сравниванию элемента массива самого с собой.
- Добавлена функция
-
Версия 2.3.14:
- Изменена функция
str.thin
, теперь она умеет разрежать с первого к последнему символу, или от последнего к первому. - Добавлена функция
re.rgb
- Изменена функция
array.ins
, с учётом особенностей copyarr, и о чудо! функция ускорилась в 100 раз!!! - поправлена функция
get.tag.num
, теперь она выдаёт более логичный результат. Так же для всех функций добавлена инициализация$args[
, чтобы текстовые индексы не перезатирали числовые, особенно в новых версиях libqsp.9
] - Исправлен алгоритм сортировки пузырьком. Уничтожен лишний цикл. Теперь сортировка осуществляется во много раз быстрее. Минимум в 240 раз, а при увеличении размера массива и более чем в 600 раз быстрее.
- Скорректирована функция
rstd
- мелкие недочёты. - Добавлена функция получения типа переменной
em.var.getType
для плееров с библиотеками версии 5.7.0 и ниже. - Добавлена функция изменяющая тип массива
em.arr.chType
- Исправлена функция
str.thin
- разделители в режиме[up]
вставлялись только через каждые три символа. Теперь работает в любом режиме. - Мелкие правки
em.arr.chType
иem.var.getType
. - в функцию
str.inArray
добавлено управлющее слово[strip]
. У всех значений между разделителями отсекаются прилегающие пробелы. - Добавлены функции
em.maxVar
иem.minVar
, которые возвращают название максимальной или минимальной соответственно переменной из списка. - Добавлены в мануал функции
em.maxVar
иem.minVar
,em.arr.chType
иem.var.getType
. re.rgb
добавлена в мануал.
- Изменена функция
-
Версия 2.4.0:
- В функции
#coord.get#
изменены управляющие конструкции. Вместо'x'
и'y'
теперь нужно передавать'[x]'
,'[y]'
, или'[xy]'
. - В функции
#array.prnt#
теперь можно указать ключ/se
, чтобы при выводе значений массива не использовался разделитель. - В функции
#array.prnt.few#
исправлено определение неверного имени массива, теперь если имя массива задано не по правилам QSP, функция возвращает ошибку. Поправлены тексты ряда ошибок. Так же функция не выводила числовые значения, теперь выводит. - Для функций
#array.prnt.few#
и#array.prnt#
исправлен вывод в виде кода, теперь содержимое массивов можно выводить в виде валидного кода QSP, тогда как раньше это был условный код, не валидный для QSP. - В функции
#coord.get#
изменился формат возвращения результата. Раньше результат возвращался в формате строки'x:00 y:99'
, а теперь —'[x:00] [y:99]'
. - В функции
#array.simp#
изменены управляющие конструкции: вместоsimp
,conc
,/se
соответственно[simp]
,[conc]
,[se]
(или[space exclude]
). - В функции
#array.srch#
изменены управляющие конструкции. Упразднён шестой аргумент. Добавлена возможность выводить позицию и значение элемента одновременно. - Изменена функция
em.arr.chType
- теперь она работает без посторонних функций. - Изменены управляющие конструкции функции
#rndstr#
. Стандартизированы, приведены к более читаемому виду. Упрощены алгоритмы функции. Более подробно см. документацию в исходнике. - Изменены управляющие конструкции функции
#chk.array.word#
. - Управляющие конструкции
#str.inArray#
изменены на[regular]
,[left]
,[right]
и т.д. - В функции
#array.sort#
изменены управляющие слова ([up]
и[down]
). Слегка изменена логика определения аргументов на входе. - Для функции
#widetrim#
изменено управляющее слово:[strip]
вместо[trim]
. - Практически переписана и упрощена функция
#even#
- должна работать быстрее. Изменены управляющие инструкцииup
иdown
на[up]
и[down]
. get.tag.num
теперь использует иной ключ для получения шестнадцатеричного значения/h
. Результат теперь возвращается только в текстовом виде.- Полностью переписана фукция
#simp#
сравнивающая два числа типа float (рациональных, с плавающей точкой). Теперь она использует меньше сторонних функций и может сравнивать числа большей длины. - Заменил ограничение функции
#dec-col#
на 255. Не пойму смысла, который вкладывал в эту функцию изначально, но теперь ограничения на входной аргумент лежат в пределах от -255 до 255, а значит и ограничения на выходной аргумент лежат в пределах от -ff до ff и это логично. - Добавлена функция
em.log
- логарифмирование. То есть вычисление максимально близкой целой степени основания, которая в результате может дать указанное число. - Заменил глобальные переменные на локальные в функции
#+col#
. Подготовил функции работы с шестнадцатеричными числами в исходниках для препроцессора. - Исправлена логика в работе функции
#dec-hex#
(а заодним и#dec-col#
), приводившая к неверному выводу числа, если число оканчивалось на два нуля. Этот ужас многие годы присутствовал в библиотеке, что говорит нам о том, что библиотекой вообще никто не пользуется.
- В функции