easy.math.qsp v. 3.2.0
Операции над массивами. Страница 2
em.arr.fill
Упрощённое заполнение массива значениями.
$args[0
]
- название массива, элементы которого необходимо заполнить (тип значений определяется по префиксу!).
%args[1
]
- кортеж значений, которые нужно поместить в массив.
args[2
]
- номер элемента, с которого необходимо начать.
Результат работы функции:
mass[0] = 123
mass[1] = 234
mass[2] = 345
em.arr.fill_rand
Генерирует случайные числа и заполняет ими указанный массив. Если массив существует, новые значения затрут уже имеющиеся.
$args[
- название массива, элементы которого необходимо сформировать (исследуемый массив), обязательный параметр
0
] args[
- количество формируемых элементов, обязательный параметр
1
]%args[
- [нижняя, верхняя] границs случайного числа (по умолчанию - [0, 1000]).
2
] args[
- номер элемента, с которого необходимо начать.
3
]
Результат работы функции:
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[
- шаг, по умолчанию 1.
4
]
Результат работы функции:
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, а второй - 1.
2
]$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[1]=668
mass[2]=413
mass[3]=765
mass[4]=478
mass[5]=205
mass[6]=701
mass[7]=272
Поиск максимального значения:
Поиск максимального значения в указанной области:
Поиск минимального значения в заданных пределах:
Поиск минимального значения в заданных пределах и в указанной области:
Поиск невозможного значения в заданных пределах и в указанной области:
Aleks Versus'Easy Libraries'2013-2024
Aleks Versus'Game Adventure Making'Really Unimaginable Stories'2013-2024