Skip to content

Commit

Permalink
Completed ARR_STR.union
Browse files Browse the repository at this point in the history
  • Loading branch information
grymmjack committed Jun 8, 2024
1 parent 5ef1aa2 commit f65edb5
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 14 deletions.
29 changes: 22 additions & 7 deletions ARR/ARR_STR.BAS
Original file line number Diff line number Diff line change
Expand Up @@ -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
30 changes: 23 additions & 7 deletions ARR/ARR_TEMPLATE.BAS
Original file line number Diff line number Diff line change
Expand Up @@ -820,19 +820,35 @@ SUB ARR_{UT}.quicksort(arr{SY}(), start%, finish%, order%)
END SUB



''
' Combine two arrays - requires both array indexes are serial with no gaps
'
' @param {Q} ARRAY source_arr{SY}() array to combine
' @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

0 comments on commit f65edb5

Please sign in to comment.