Генерирует случайные числа и заполняет ими указанный массив. Если массив существует, его значения будут перезаписаны.
$args[
- название массива, элементы которого необходимо сформировать (исследуемый массив), обязательный параметр
0
] args[
- количество формируемых элементов, обязательный параметр
1
] args[
- номер элемента, с которого необходимо начать.
2
] args[
- нижняя граница случайного числа (по умолчанию - ноль)
3
] args[
- верхняя граница случайного числа (по умолчанию - тысяча)
4
]
Заполняет массив порядковыми числами. Если массив существует, его значения будут перезаписаны.
$args[
- название массива, элементы которого необходимо сформировать (исследуемый массив), обязательный параметр
0
] args[
- количество формируемых элементов, обязательный параметр
1
] args[
- верхняя граница чисел. До какого числа вести заполнение.
2
] args[
- нижняя граница чисел. С какого числа начинать заполнение.
3
] args[
- с какого элемента начинать заполнение.
4
]
Программа сортирует значения массива (используется метод сортировки "пузырьком"). Результатом работы программы могут быть три разных массива. Направление сортировки: от нулевого элемента к последнему.
$args[
- название массива, элементы которого необходимо отсортировать (исследуемый массив), обязательный параметр
0
]$args[
- порядок сортировки элементов массива: 1
]'[up]'
или ничего - значения сортируются от большего к меньшему, '[down]'
- значения сортируются от меньшего к большему.
$args[
- имя массива, в который будут помещены исходные номера элементов исследуемого массива в порядке сортировки. Например, если при сортировке местами поменялись первый и второй элемент, первый элемент указанного массива получит номер 2, а второй - 1.
2
]$args[
- название массива результатов, т.е. массива, в который будут переданы результаты сортировки. Если не указано, массивом результатов становится исследуемый.
3
]
gosub '#array.rand#','old_mass',8 | (0) Генерируем массив случайных чисел |
gosub '#array.sort#','old_mass' | (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 |
не указано в параметрах | не указано в параметрах |
gosub '#array.rand#','old_mass',8 | (0) Генерируем массив случайных чисел |
gosub '#array.sort#','old_mass','[down]','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 |
не указано в параметрах |
gosub '#array.rand#','old_mass',8 | (0) Генерируем массив случайных чисел |
gosub '#array.sort#','old_mass','[down]','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 |
gosub '#array.sort#','old_mass','[down]','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
) можно вернуть исходное состоние массива, или изменить другие массивы соответственно массиву результатов.
ВНИМАНИЕ! Сортировка затрагивает лишь ту часть массива, которая указана. Если вы отсортировали текстовую часть массива, числовая останется неизменной. И наоборот: при сортировке числовой части массива, текстовая не меняется. Для сортировки обеих частей нужно отсортировать одну из них, с сохранением значений перестановки в массив фиксации, а затем по массиву фиксации функцией #array.rstd#
перетасовать значения в другой части.
ВНИМАНИЕ!!! Во избежание ошибок не следует хранить в массиве одновременно текстовые и числовые значения!
Процедура перетасовывает элементы массива согласно сведениям в массиве фиксации.
$args[
- массив, данные в котором необходимо перетасовать (исследуемый)
0
]$args[
- массив фиксации, где находится список, согласно которому тасуются элементы
1
]$args[
- массив результатов - сюда помещается итог перетасовки, если не указан результат помещается в исходный массив.
2
]
gosub '#array.rand#','old_mass',8 | (0) Генерируем значения опорного массива (для примера) |
gosub '#array.sort#','old_mass','[down]','em_array' | (1) Сортировка значений в опорном массиве |
gosub '#array.rstd#','$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]=грудь |
Процедура, восстанавливающая состояние массива до сортировки по значениям в массиве фиксации.
$args[
- массив, данные в котором необходимо восстановить (исследуемый)
0
]$args[
- массив фиксации, где находится список, согласно которому тасуются элементы
1
]$args[
- массив результатов - сюда помещается итог перетасовки, если не указан результат помещается в исходный массив.
2
]
gosub '#array.rand#','old_mass',8 | (0) Генерируем случайный массив |
gosub '#array.sort#','old_mass','[down]','em_array' | (1) Сортируем значения в массиве |
gosub '#array.dsrt#','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 |
Процедура сравнения содержимого двух массивов.
$args[0
]
- первый массив (исследуемый).$args[1
]
- второй массив (исследуемый).$args[2
]
- управляющая конструкция:
[simp]
- массивы сортируются по одинаковым правилам и вновь сравниваются. Такое сравнение называется сравнением на подобие, т.е. в обоих массивах присутствуют одинаковые элементы, но расположенные в разном порядке. Сортировка производится во временные массивы и на исследуемые массивы не влияет.[conc]
массивы сравниваются на совпадение хотя бы одного элемента.[se]
или [space exclude]
к управляющей конструкции. $result
- принимает два значения:
"true"
- массивы идентичны, подобны, либо в них есть совпадающие элементы (в зависимости от условий сравнения)"false"
- сравнение показало, что массивы не идентичны, не подобны, или не имеют совпадающих элементов (в зависимости от условий сравнения)gosub '#array.rand#','mass1',8 | (0) Генерируем случайный массив |
copyarr 'mass2','mass1' | (1) Создаём точную копию массива |
gosub '#array.sort#','mass1','','','mass3' | (2) Сортируем значения и помещаем их в новый массив |
$func('#array.simp#','mass1','mass2') | (3) Сравниваем на идентичность идентичные массивы |
$func('#array.simp#','mass1','mass3') | (4) Сравниваем на идентичность подобные массивы |
$func('#array.simp#','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 |
true | false | true |
Сравнение текстовых значений массивов происходит аналогично. Если хотя бы у одного из массивов будет стоять выбор по текстовым значениям (т.е. имя массива будет начинаться с $), будут сравниваться текстовые значения.
Функция производит поиск максимального или минимального значения в массиве. В отличие от функций MAX
и MIN
можно указать область и пределы поиска, а так же запросить позицию найденного элемента. Если ни одно число по указанным параметрам не подходит, функция возвращает слово false
.
$args[0
]
- название массива.
$args[1
]
- управление (можно комбинировать):
[max]
- поиск максимального значения (по умолчанию);[min]
- поиск минимального значения;[pos]
- в результат возвращается позиция найденного элемента;[all]
- в результат возвращются и позиция, и значение элемента в формете 'pos:value'
.$args[2
]
- нижний предел числа (по умолчанию минимальное число в массиве). Внимание! Для определения границы используются текстовые значения.
$args[3
]
- верхний предел числа (по умолчанию максимальное число в массиве). Внимание! Для определения границы используются текстовые значения.
args[4
]
- от какого элемента вести поиск (по умолчанию от нулевого).
args[5
]
- до какого элемента вести поиск (по умолчанию до последнего).
Результат работы функции всегда возвращается в текстовом виде.
Заготовленный массив:
Поиск максимального значения:
Поиск максимального значения в указанной области:
Поиск минимального значения в заданных пределах:
Поиск минимального значения в заданных пределах и в указанной области:
Поиск минимального значения в заданных пределах и в указанной области с получением позиции элемента:
Поиск невозможного значения в заданных пределах и в указанной области:
Aleks Versus'Easy Libraries'2013-2024
Aleks Versus'Game Adventure Making'Really Unimaginable Stories'2013-2024