Вход
Приветствую Вас Гость
 

easy.math.qsp v. 3.2.0

Операции над массивами. Страница 2

em.arr.fill

Упрощённое заполнение массива значениями.

$args[0]- название массива, элементы которого необходимо заполнить (тип значений определяется по префиксу!).
%args[1] - кортеж значений, которые нужно поместить в массив.
 args[2] - номер элемента, с которого необходимо начать.
Результат работы функции:
@em.arr.fill('mass', [123, 234, 345])

mass[0] = 123
mass[1] = 234
mass[2] = 345

em.arr.fill_rand

Генерирует случайные числа и заполняет ими указанный массив. Если массив существует, новые значения затрут уже имеющиеся.

$args[0]- название массива, элементы которого необходимо сформировать (исследуемый массив), обязательный параметр
 args[1] - количество формируемых элементов, обязательный параметр
%args[2] - [нижняя, верхняя] границs случайного числа (по умолчанию - [0, 1000]).
 args[3] - номер элемента, с которого необходимо начать.

Результат работы функции:
@em.arr.fill_rand('mass1',8)

mass1[0]=574
mass1[1]=668
mass1[2]=413
mass1[3]=765
mass1[4]=478
mass1[5]=205
mass1[6]=701
mass1[7]=272

@em.arr.fill_rand('mass2', 6, [], 2)

mass2[0]=0
mass2[1]=0
mass2[2]=174
mass2[3]=371
mass2[4]=69
mass2[5]=732
mass2[6]=334
mass2[7]=950

@em.arr.fill_rand('mass', 6, [10, 20], 2)

mass[0]=0
mass[1]=0
mass[2]=12
mass[3]=19
mass[4]=19
mass[5]=13
mass[6]=10
mass[7]=17

em.arr.fill_strt

Заполняет массив порядковыми числами. Если массив существует, его значения будут перезаписаны.

$args[0]- название массива, элементы которого необходимо сформировать (исследуемый массив), обязательный параметр
 args[1] - количество формируемых элементов, обязательный параметр
%args[2] - [нижняя, верхняя] границы чисел. В каких пределах вести заполнение.
 args[3] - с какого элемента начинать заполнение.
 args[4] - шаг, по умолчанию 1.

Результат работы функции:
@em.arr.fill_strt('a',8)

a[0]=0
a[1]=1
a[2]=2
a[3]=3
a[4]=4
a[5]=5
a[6]=6
a[7]=7

@em.arr.fill_strt('b',8,[0,4])

b[0]=0
b[1]=1
b[2]=2
b[3]=3
b[4]=4
b[5]=0
b[6]=1
b[7]=2

@em.arr.fill_strt('v',8,[2,0])

v[0]=2
v[1]=1
v[2]=0
v[3]=2
v[4]=1
v[5]=0
v[6]=2
v[7]=1

@em.arr.fill_strt('g',8,[3,5],2)

g[0]=0
g[1]=0
g[2]=3
g[3]=4
g[4]=5
g[5]=3
g[6]=4
g[7]=5
g[8]=3
g[9]=4

em.arr.sort

Программа сортирует значения массива (используется метод сортировки "пузырьком"). Результатом работы программы могут быть три разных массива. Направление сортировки: от нулевого элемента к последнему.

$args[0] - название массива, элементы которого необходимо отсортировать (исследуемый массив), обязательный параметр
#args[1] - порядок сортировки: 0 (по умолчанию) - от меньшего к большему, 1 - от большего к меньшему.
$args[2] - имя массива, в который будут помещены исходные номера элементов исследуемого массива в порядке сортировки. Например, если при сортировке местами поменялись первый и второй элемент, первый элемент указанного массива получит номер 2, а второй - 1.
$args[3] - название массива результатов, т.е. массива, в который будут переданы результаты сортировки. Если не указано, массивом результатов становится исследуемый.

Результат работы функции:
Простая сортировка. Результат записывается в исходный массив.
@em.arr.fill_rand('old_mass',8)    (0) Генерируем массив случайных чисел
@em.arr.sort('old_mass', 1)    (1) Сортируем полученный массив

Исследуемый массив до сортировки Исследуемый массив после сортировки Изменение в позициях элементов массива Массив результатов
(0) (1) em_array new_mass
old_mass[0]=157
old_mass[1]=250
old_mass[2]=709
old_mass[3]=413
old_mass[4]=532
old_mass[5]=779
old_mass[6]=730
old_mass[7]=565
old_mass[0]=779
old_mass[1]=730
old_mass[2]=709
old_mass[3]=565
old_mass[4]=532
old_mass[5]=413
old_mass[6]=250
old_mass[7]=157
не указано в параметрах не указано в параметрах
Обратная сортировка с получением позиций. Результат записывается в исходный массив.
@em.arr.fill_rand('old_mass',8)    (0) Генерируем массив случайных чисел
@em.arr.sort('old_mass',0,'em_array')    (1) Сортируем полученный массив вниз

Исследуемый массив до сортировки Исследуемый массив после сортировки Изменение в позициях элементов массива Массив результатов
(0) (1) em_array new_mass
old_mass[0]=966
old_mass[1]=812
old_mass[2]=796
old_mass[3]=304
old_mass[4]=678
old_mass[5]=118
old_mass[6]=901
old_mass[7]=132
old_mass[0]=118
old_mass[1]=132
old_mass[2]=304
old_mass[3]=678
old_mass[4]=796
old_mass[5]=812
old_mass[6]=901
old_mass[7]=966
em_array[0]=5
em_array[1]=7
em_array[2]=3
em_array[3]=4
em_array[4]=2
em_array[5]=1
em_array[6]=6
em_array[7]=0
не указано в параметрах
Обратная сортировка с получением позиций. Результат записывается в новый массив.
@em.arr.fill_rand('old_mass',8)    (0) Генерируем массив случайных чисел
@em.arr.sort('old_mass',1,'em_array','new_mass')    (1) Сортируем полученный массив вниз

Исследуемый массив до сортировки Исследуемый массив после сортировки Изменение в позициях элементов массива Массив результатов
(0) (1) em_array new_mass
old_mass[0]=967
old_mass[1]=629
old_mass[2]=541
old_mass[3]=290
old_mass[4]=852
old_mass[5]=334
old_mass[6]=318
old_mass[7]=529
old_mass[0]=967
old_mass[1]=629
old_mass[2]=541
old_mass[3]=290
old_mass[4]=852
old_mass[5]=334
old_mass[6]=318
old_mass[7]=529
em_array[0]=3
em_array[1]=6
em_array[2]=5
em_array[3]=7
em_array[4]=2
em_array[5]=1
em_array[6]=4
em_array[7]=0
new_mass[0]=290
new_mass[1]=318
new_mass[2]=334
new_mass[3]=529
new_mass[4]=541
new_mass[5]=629
new_mass[6]=852
new_mass[7]=967
Простая сортировка текстовых значений с получением позиций. Результат записывается в исходный массив.
@em.arr.sort('$old_mass',0,'em_array')    (0) Сортировка текстовых значений массива

Исследуемый массив до сортировки Исследуемый массив после сортировки Изменение в позициях элементов массива Массив результатов
$old_mass (0) em_array new_mass
$old_mass[0]=88ff88
$old_mass[1]=ff00ff
$old_mass[2]=0ff0f8
$old_mass[3]=ffffff
$old_mass[4]=8888ff
$old_mass[5]=fff8f8
$old_mass[0]=0ff0f8
$old_mass[1]=8888ff
$old_mass[2]=88ff88
$old_mass[3]=ff00ff
$old_mass[4]=fff8f8
$old_mass[5]=ffffff
em_array[0]=2
em_array[1]=4
em_array[2]=0
em_array[3]=1
em_array[4]=5
em_array[5]=3
параметр не задан

Наверное необходимо пояснить смысл столбца "Изменения в позициях элементов", прежде чем переходить к следующей функции. Покажу на примере предпоследней таблицы.

В массиве old_mass число 967 было в нулевой позиции (было значением нулевого элемента). После сортировки оно было помещено в седьмую позицию, поэтому в массиве em_array в седьмую позицию добавлен номер старой позиции элемента со значением 967.

Далее число 629, которое в массиве old_mass было в первой позиции, переместилось в пятую позицию массива результатов (new_mass). Поэтому в массиве em_array в пятую позицию был добавлен номер 1.

Для чего это нужно. Используя массив результатов и массив фиксации позиций (em_array) можно вернуть исходное состоние массива, или изменить другие массивы соответственно массиву результатов.

ВНИМАНИЕ!!! Во избежание ошибок не следует хранить в массиве одновременно текстовые и числовые значения!

em.arr.restand

Процедура перетасовывает элементы массива согласно сведениям в массиве фиксации.

$args[0]- массив, данные в котором необходимо перетасовать (исследуемый)
$args[1] - массив фиксации, где находится список, согласно которому тасуются элементы
$args[2] - массив результатов - сюда помещается итог перетасовки, если не указан результат помещается в исходный массив.

Результат работы функции:
@em.arr.fill_rand('old_mass',8)    (0) Генерируем значения опорного массива (для примера)
@em.arr.sort('old_mass',0,'em_array')    (1) Сортировка значений в опорном массиве
@em.arr.restand('$arr_mass','em_array',$new_mass')    (2) Перетасовка значений из исходного массива в соответствии с данными из массива фиксации позиций

Исследуемый массив до сортировки Опорный массив до сортировки Опорный массив после сортировки Массив фиксации позиций Массив результатов
$arr_mass (0) (1) em_array (2)
$arr_mass[0]=голова
$arr_mass[1]=плечи
$arr_mass[2]=грудь
$arr_mass[3]=живот
$arr_mass[4]=бёдра
$arr_mass[5]=колени
$arr_mass[6]=икры
$arr_mass[7]=ступни
old_mass[0]=722
old_mass[1]=136
old_mass[2]=788
old_mass[3]=177
old_mass[4]=780
old_mass[5]=97
old_mass[6]=649
old_mass[7]=75
old_mass[0]=75
old_mass[1]=97
old_mass[2]=136
old_mass[3]=177
old_mass[4]=649
old_mass[5]=722
old_mass[6]=780
old_mass[7]=788
em_array[0]=7
em_array[1]=5
em_array[2]=1
em_array[3]=3
em_array[4]=6
em_array[5]=0
em_array[6]=4
em_array[7]=2
$new_mass[0]=ступни
$new_mass[1]=колени
$new_mass[2]=плечи
$new_mass[3]=живот
$new_mass[4]=икры
$new_mass[5]=голова
$new_mass[6]=бёдра
$new_mass[7]=грудь

em.arr.desort

Процедура, восстанавливающая состояние массива до сортировки по значениям в массиве фиксации.

$args[0]- массив, данные в котором необходимо восстановить (исследуемый)
$args[1] - массив фиксации, где находится список, согласно которому тасуются элементы
$args[2] - массив результатов - сюда помещается итог перетасовки, если не указан результат помещается в исходный массив.

Результат работы функции:
@em.arr.fill_rand('old_mass',8)    (0) Генерируем случайный массив
@em.arr.sort('old_mass',0,'em_array')    (1) Сортируем значения в массиве
@em.arr.desort('old_mass','em_array','new_mass')    (2) Восстановление массива к исходному состоянию

Исследуемый массив до сортировки Исследуемый массив после сортировки Массив фиксации позиций Массив результатов
(0) (1) em_array (2)
old_mass[0]=949
old_mass[1]=913
old_mass[2]=269
old_mass[3]=901
old_mass[4]=257
old_mass[5]=561
old_mass[6]=529
old_mass[7]=293
old_mass[0]=257
old_mass[1]=269
old_mass[2]=293
old_mass[3]=529
old_mass[4]=561
old_mass[5]=901
old_mass[6]=913
old_mass[7]=949
em_array[0]=4
em_array[1]=2
em_array[2]=7
em_array[3]=6
em_array[4]=5
em_array[5]=3
em_array[6]=1
em_array[7]=0
new_mass[0]=949
new_mass[1]=913
new_mass[2]=269
new_mass[3]=901
new_mass[4]=257
new_mass[5]=561
new_mass[6]=529
new_mass[7]=293

em.arr.simpl

Процедура сравнения содержимого двух массивов.

$args[0]- первый массив (исследуемый).
$args[1] - второй массив (исследуемый).
$args[2] - управляющая конструкция:

  • Если указано пустое значение - массивы сравниваются на предмет полной идентичности.
  • Если указано [simp] - массивы сортируются по одинаковым правилам и вновь сравниваются. Такое сравнение называется сравнением на подобие, т.е. в обоих массивах присутствуют одинаковые элементы, но расположенные в разном порядке. Сортировка производится во временные массивы и на исследуемые массивы не влияет.
  • Если указано [conc] массивы сравниваются на совпадение хотя бы одного элемента.
  • Если при сравнении необходимо исключить пустые ячейки, необходимо добавить управляющее слово [se] или [space exclude] к управляющей конструкции.
Результат работы функции:

result - принимает два значения:

  • 1 - массивы идентичны, подобны, либо в них есть совпадающие элементы (в зависимости от условий сравнения)
  • 0 - сравнение показало, что массивы не идентичны, не подобны, или не имеют совпадающих элементов (в зависимости от условий сравнения)

@em.arr.fill_rand('mass1',8)    (0) Генерируем случайный массив
copyarr 'mass2','mass1'    (1) Создаём точную копию массива
@em.arr.sort('mass1','','','mass3')    (2) Сортируем значения и помещаем их в новый массив
@em.arr.simpl('mass1','mass2')    (3) Сравниваем на идентичность идентичные массивы
@em.arr.simpl('mass1','mass3')    (4) Сравниваем на идентичность подобные массивы
@em.arr.simpl('mass1','mass3','[simp]')    (5) Сравниваем на подобие подобные массивы

Исследуемый массив Полностью идентичный массив Массив с тем же набором элементов, но отсортированный результат абсолютного сравнения mass1 и mass2 результат абсолютного сравнения mass1 и mass3 результат сравнения на подобие mass1 и mass3
(0) (1) (2) (3) (4) (5)
mass1[0]=455
mass1[1]=705
mass1[2]=967
mass1[3]=452
mass1[4]=829
mass1[5]=84
mass1[6]=983
mass1[7]=824
mass2[0]=455
mass2[1]=705
mass2[2]=967
mass2[3]=452
mass2[4]=829
mass2[5]=84
mass2[6]=983
mass2[7]=824
mass3[0]=983
mass3[1]=967
mass3[2]=829
mass3[3]=824
mass3[4]=705
mass3[5]=455
mass3[6]=452
mass3[7]=84
1 0 1

Сравнение текстовых значений массивов происходит аналогично. Если хотя бы у одного из массивов будет стоять выбор по текстовым значениям (т.е. имя массива будет начинаться с $), будут сравниваться текстовые значения.

em.arr.find

Функция производит поиск максимального или минимального значения в массиве. В отличие от функций MAX и MIN можно указать область и пределы поиска, а так же запросить позицию найденного элемента. Если ни одно число по указанным параметрам не подходит, функция возвращает слово false.

$args[0] - название массива. Поиск проводится среди значений, определённых префиксом типа (%, $).
$args[1] - управление (можно комбинировать):
  • [max] - поиск максимального значения (по умолчанию);
  • [min] - поиск минимального значения;
%args[2] - кортеж границ [от какого, до какого] элемента вести поиск.
%args[3] - кортеж пределов [нижний предел числа, верхний предел числа] (по умолчанию минимальное и максимальное число в массиве).
Результат работы функции:

Результат работы функции всегда возвращается в виде кортежа [позиция, значение].

Заготовленный массив:
mass[0]=574
mass[1]=668
mass[2]=413
mass[3]=765
mass[4]=478
mass[5]=205
mass[6]=701
mass[7]=272
Поиск максимального значения:
@em.arr.find('mass','[max]') = [3,765]
Поиск максимального значения в указанной области:
@em.arr.find('mass','[max]',[0,2]) = [1,668]
Поиск минимального значения в заданных пределах:
@em.arr.find('mass','[min]',[],[400,600]) = [2,413]
Поиск минимального значения в заданных пределах и в указанной области:
@em.arr.find('mass','[min]',[3,6],[400,600]) = [4,478]
Поиск невозможного значения в заданных пределах и в указанной области:
@em.arr.find('mass','[min]',[3,6],[900,1000]) = [-1,0]

Aleks Versus'Easy Libraries'2013-

Aleks Versus'Game Adventure Making'Really Unimaginable Stories'2013-

Наверх