From f65edb5effa43167eb60dcfd8db4e834649e11a8 Mon Sep 17 00:00:00 2001 From: grymmjack Date: Sat, 8 Jun 2024 17:17:27 -0400 Subject: [PATCH] Completed ARR_STR.union --- ARR/ARR_STR.BAS | 29 ++++++++++++++++++++++------- ARR/ARR_TEMPLATE.BAS | 30 +++++++++++++++++++++++------- 2 files changed, 45 insertions(+), 14 deletions(-) diff --git a/ARR/ARR_STR.BAS b/ARR/ARR_STR.BAS index deeae84..f90593e 100644 --- a/ARR/ARR_STR.BAS +++ b/ARR/ARR_STR.BAS @@ -632,12 +632,27 @@ END SUB ' @param STRING ARRAY dest_arr$() array to store combined result ' SUB ARR_STR.union(source_arr$(), dest_arr$()) - DIM AS LONG s_ub, s_lb, d_ub, d_lb, i, n_ub - s_lb& = LBOUND(source_arr$) : s_ub& = UBOUND(source_arr$) - d_lb& = LBOUND(dest_arr$) : d_ub& = UBOUND(dest_arr$) - n_ub& = (s_ub& - s_lb&) + (d_ub& - d_lb&) - REDIM dest_arr(d_lb& TO n_ub&) AS STRING - FOR i& = s_ub& TO s_lb& STEP -1 - dest_arr$(nub&-i&) = source_arr$(i&) + 's = source, d = dest, n = new + 'lb = lower bounds, ub = upper bounds + 't = total elements + DIM AS LONG s_ub, s_lb, s_t + DIM AS LONG d_ub, d_lb, d_t + DIM AS LONG n_lb, n_ub, n_t + DIM AS LONG i, n + + s_lb& = LBOUND(source_arr$) + s_ub& = UBOUND(source_arr$) + d_lb& = LBOUND(dest_arr$) + d_ub& = UBOUND(dest_arr$) + s_t& = (s_ub& - s_lb&) + d_t& = (d_ub& - d_lb&) + n_t& = s_t& + d_t& + n_lb& = d_lb& + n_ub& = d_ub& + s_t& + 1 + + REDIM _PRESERVE dest_arr(n_lb& TO n_ub&) AS STRING + FOR i& = s_lb& TO s_ub& + n& = d_ub& + 1 + i& - s_lb& + dest_arr$(n&) = source_arr$(i&) NEXT i& END SUB \ No newline at end of file diff --git a/ARR/ARR_TEMPLATE.BAS b/ARR/ARR_TEMPLATE.BAS index cdfbe16..5761782 100644 --- a/ARR/ARR_TEMPLATE.BAS +++ b/ARR/ARR_TEMPLATE.BAS @@ -820,6 +820,7 @@ SUB ARR_{UT}.quicksort(arr{SY}(), start%, finish%, order%) END SUB + '' ' Combine two arrays - requires both array indexes are serial with no gaps ' @@ -827,12 +828,27 @@ END SUB ' @param {Q} ARRAY dest_arr{SY}() array to store combined result ' SUB ARR_STR.union(source_arr{SY}(), dest_arr{SY}()) - DIM AS LONG s_ub, s_lb, d_ub, d_lb, i, n_ub - s_lb& = LBOUND(source_arr{SY}) : s_ub& = UBOUND(source_arr{SY}) - d_lb& = LBOUND(dest_arr{SY}) : d_ub& = UBOUND(dest_arr{SY}) - n_ub& = (s_ub& - s_lb&) + (d_ub& - d_lb&) - REDIM dest_arr(d_lb& TO n_ub&) AS STRING - FOR i& = s_ub& TO s_lb& STEP -1 - dest_arr{SY}(nub&-i&) = source_arr{SY}(i&) + 's = source, d = dest, n = new + 'lb = lower bounds, ub = upper bounds + 't = total elements + DIM AS LONG s_ub, s_lb, s_t + DIM AS LONG d_ub, d_lb, d_t + DIM AS LONG n_lb, n_ub, n_t + DIM AS LONG i, n + + s_lb& = LBOUND(source_arr{SY}) + s_ub& = UBOUND(source_arr{SY}) + d_lb& = LBOUND(dest_arr{SY}) + d_ub& = UBOUND(dest_arr{SY}) + s_t& = (s_ub& - s_lb&) + d_t& = (d_ub& - d_lb&) + n_t& = s_t& + d_t& + n_lb& = d_lb& + n_ub& = d_ub& + s_t& + 1 + + REDIM _PRESERVE dest_arr(n_lb& TO n_ub&) AS STRING + FOR i& = s_lb& TO s_ub& + n& = d_ub& + 1 + i& - s_lb& + dest_arr{SY}(n&) = source_arr{SY}(i&) NEXT i& END SUB \ No newline at end of file