David Vaughan wrote:


Perhaps I have misunderstood the depth of the problem. I do not appear to have the described difficulty with the example data.

The problem (as I understand it) was to split out the columns of the keys and/or the data of an array.


That's what the code you first proposed did (or tried to do); the fragment shown in this (tonight's) email is only the first half of the code - and therefore doesn't get far enough into it to demonstrate the problem.

Here is code (assume a couple of testing fields, "f1" and "f2") and the results using your actual example data.

  put "1,2" into myArray[a,b]
  put "1,3" into myarray[c,d]
  put the keys of myArray into field "f1"
  combine myArray with return
  put myArray into field "f2"

Indeed, there's no problem there - it would be the next part which dissected the columns of the data that shows the problem.


Here's the complete section of code as you first sent it (with a couple of "with return"s added as you suggested)

put the keys of myArray into tKeys
split tKeys with return and comma
put the keys of tKeys into v1
combine tKeys  with return   -- discards the keys
put tKeys into v2

combine myArray  with return  -- discards the keys
split myArray with return and comma
put the keys of myArray into v3
combine myArray  with return
put myArray into v4

Now, v1=a, v2=b, v3=n1, v4=n2
(or close enough if I made a coding error)

i.e. v1 is the first column (of the keys), v2 is the second, v3 is the first column from the data and v4 is the second column from the data.


Now if you take my data
  put "1,2" into myArray[a,b]
 put "1,3" into myarray[c,d]

then run the above algorithm, what you get is
v1 = a \r b
v2 = c \r d
v3 = 1
v4 = 3

which is not what we need - the duplicate item "1" in column 3 (col 1 of the data) caused a problem.

<snip>
puts them back in an array. The only relevant possibility of duplication appears to be with the keys of the original array, which by definition were not duplicated anyway.


Not really. By definition, the *complete* keys of the original array are not duplicated; but the problem arises because items within any particular column CAN be duplicates. Here's your second code fragment - but with different values to demonstrate the problem

put field "f1" into tData -- the a,b \r c,d data -- LET's make f1 contain 3,4 \r3,5
put field "f2" into tKeys -- the 1,2 \r 1,3 data
split tData with return -- causes a problem
put 1 into i
repeat for each line x in tKeys
put tData[i] into myArray[x]
add 1 to i
end repeat
-- and to prove it happened
combine myArray with return and "#"
put myArray into field "f2"


And this shows the problem. The 3rd line "split tData with return" results in a single array entry, tData[3] = 5, because of the duplication of the "3" - even though "3,4" didn't duplicate "3,5"

I receive the digest so discussions may be slow.

In some ways this discussion is more complex than it need be - Xavier's second example (including the code he posted) was simply separating out the columns (and merging the columns) of a single columnar table.


So the problem is :  given a table
1,2,3,4
5,6,7,8
9,10,11,12

generate separate lists of the columns
v1 = 1 \r 5 \r 9     (spaces for readability only)
v2 = 2 \r 6 \r 10
v3 = 3 \r 7 \r 11
v4 = 4 \r 8 \r 12

This is (in effect) what your initial code proposal would do (adjusting for a table instead of an array), and is also what Xavier's code would do.

But given different input

1,2,3,4
5,2,7,8
9,10,11,12

his would give
v1 = 1 \r 5 \r 9     (spaces for readability only)
v2 = 2 \r 2 \r 10
v3 = 3 \r 7 \r 11
v4 = 4 \r 8 \r 12
and re-merging would get back the original input value.

However, your's would give
v1 = 1 \r 5 \r 9     (spaces for readability only)
v2 = 2 \r 10
v3 = 7 \r 11
v4 = 8 \r 12
and there would be no way to recover the initial value.

--
Alex Tweedly       http://www.tweedly.net

No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.300 / Virus Database: 265.8.7 - Release Date: 10/02/2005
_______________________________________________
use-revolution mailing list
[email protected]
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to