How to resolve the algorithm Order disjoint list items step by step in the Julia programming language
How to resolve the algorithm Order disjoint list items step by step in the Julia programming language
Table of Contents
Problem Statement
Given M as a list of items and another list N of items chosen from M, create M' as a list with the first occurrences of items from N sorted to be in one of the set of indices of their original occurrence in M but in the order given by their order in N. That is, items in N are taken from M without replacement, then the corresponding positions in M' are filled by successive items from N.
The words not in N are left in their original positions.
If there are duplications then only the first instances in M up to as many as are mentioned in N are potentially re-ordered.
Is ordered as:
Show the output, here, for at least the following inputs:
Let's start with the solution:
Step by Step solution about How to resolve the algorithm Order disjoint list items step by step in the Julia programming language
This source code defines a function called order_disjoint
which takes two arrays as input and returns a new array that is the result of replacing the elements of the first array with the elements of the second array in the order specified by the second array.
The function first checks if the second array is empty, and if it is, it throws an error. Then, it creates a new array called rdis
which will store the indices of the elements of the second array in the order they appear in the first array. The function then iterates over the elements of the second array, and for each element, it finds the first occurrence of that element in the first array. If the element is not found, the function throws an error. If the element is found, the function stores the index of the element in the rdis
array.
Once all of the elements of the second array have been processed, the function sorts the rdis
array in ascending order. Finally, the function creates a new array called p
which is a copy of the first array, and then it replaces the elements of p
at the indices specified by the rdis
array with the elements of the second array. The function then returns the p
array.
The function is tested by iterating over a list of test cases, each of which consists of two arrays. For each test case, the function calls the order_disjoint
function and prints the result.
Here is an example of how the function works:
julia> testm = ["the", "cat", "sat", "on", "the", "mat"]
julia> testn = ["mat", "cat"]
julia> order_disjoint(testm, testn)
["mat", "cat", "sat", "on", "the", "mat"]
In this example, the order_disjoint
function takes two arrays as input, testm
and testn
, and returns a new array which is the result of replacing the elements of testm
with the elements of testn
in the order specified by testn
. The output is a new array which contains the elements "mat"
, "cat"
, "sat"
, "on"
, "the"
, and "mat"
.
Source code in the julia programming language
function order_disjoint{T<:AbstractArray}(m::T, n::T)
rlen = length(n)
rdis = zeros(Int, rlen)
for (i, e) in enumerate(n)
j = findfirst(m, e)
while j in rdis && j != 0
j = findnext(m, e, j+1)
end
rdis[i] = j
end
if 0 in rdis
throw(DomainError())
end
sort!(rdis)
p = copy(m)
p[rdis] = n
return p
end
testm = {["the", "cat", "sat", "on", "the", "mat"],
["the", "cat", "sat", "on", "the", "mat"],
["A", "B", "C", "A", "B", "C", "A", "B", "C"],
["A", "B", "C", "A", "B", "D", "A", "B", "E"],
["A", "B"],
["A", "B"],
["A", "B", "B", "A"],
}
testn = {["mat", "cat"],
["cat", "mat"],
["C", "A", "C", "A"],
["E", "A", "D", "A"],
["B"],
["B", "A"],
["B", "A"],
}
for i in 1:length(testm)
m = join(testm[i], " ")
n = join(testn[i], " ")
p = join(order_disjoint(testm[i], testn[i]), " ")
println(" (", m, ", ", n, ") => ", p)
end
You may also check:How to resolve the algorithm Time a function step by step in the Arturo programming language
You may also check:How to resolve the algorithm Loops/Downward for step by step in the Scilab programming language
You may also check:How to resolve the algorithm Find limit of recursion step by step in the R programming language
You may also check:How to resolve the algorithm Singular value decomposition step by step in the Phix programming language
You may also check:How to resolve the algorithm Factors of an integer step by step in the Rust programming language