mrbig1479 Posted October 16, 2008 Share Posted October 16, 2008 (edited) I know you can sort a 1d , 2d array using _ArraySort command, but i have a 3d array can i sort it ? thanks say for example i want to sort it using this element $[$A][$B][3] and i want to write down the resault if this array sorted by this element where a=0 to 50 and b = 0 to 400 Edited October 16, 2008 by mrbig1479 Link to comment Share on other sites More sharing options...
PsaltyDS Posted October 16, 2008 Share Posted October 16, 2008 I know you can sort a 1d , 2d array using _ArraySort command, but i have a 3d array can i sort it ? thanks say for example i want to sort it using this element $[$A][$B][3] and i want to write down the resault if this array sorted by this element where a=0 to 50 and b = 0 to 400 The problem with 3D array sort is rules. You have to specify what you want moved, and what relationships in the 1st and 2nd dimensions you want preserved. Do you want the 1st dimensions moved ($A) preserving the 2nd dimension order under it? Let's say the first four elements found in the sort are: [3][145][3] = 0 [1][321][3] = 1 [5][9][3] = 2 [2][58][3] = 3 All other [$A][$B][3] combinations = 4 Now, what do you want moved where, based on that result? There are many ways to do it, and they will all be very situational. So it is not trivial to write a generic 3D sort that isn't so singularly application specific that it would be useless to any other application. Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law Link to comment Share on other sites More sharing options...
mrbig1479 Posted October 23, 2008 Author Share Posted October 23, 2008 The problem with 3D array sort is rules. You have to specify what you want moved, and what relationships in the 1st and 2nd dimensions you want preserved. Do you want the 1st dimensions moved ($A) preserving the 2nd dimension order under it? Let's say the first four elements found in the sort are: [3][145][3] = 0 [1][321][3] = 1 [5][9][3] = 2 [2][58][3] = 3 All other [$A][$B][3] combinations = 4 Now, what do you want moved where, based on that result? There are many ways to do it, and they will all be very situational. So it is not trivial to write a generic 3D sort that isn't so singularly application specific that it would be useless to any other application. Well i want to sort the array like this from 0 to 4.6 [3][145][3] = 0 [1][321][3] = 1 [1][311][3] = 1.1 [5][9][3] = 2.5 [2][58][3] = 3 [15][58][3] = 4.6 etc.. its by the 3rd element of that array and i want to write down the sorted array in a file for example Link to comment Share on other sites More sharing options...
PsaltyDS Posted October 23, 2008 Share Posted October 23, 2008 Well i want to sort the array like this from 0 to 4.6 [3][145][3] = 0 [1][321][3] = 1 [1][311][3] = 1.1 [5][9][3] = 2.5 [2][58][3] = 3 [15][58][3] = 4.6 etc.. its by the 3rd element of that array and i want to write down the sorted array in a file for example You didn't answer my question of where you would want those elements MOVED to within the 3D array to achieve the sort, but that may be moot if you are not interested in acutally sorting the array. It sound from your last post like all you want is a collection of all the [x][y][3] elements extracted and sorted. That would be pretty easy: #include <Array.au3> ; Create 3D array Global $av3DArray[51][401][4] ; Whatever unknown process fills [$x][$y][3] with values, here random numbers For $x = 0 To UBound($av3DArray) - 1 For $y = 0 To UBound($av3DArray, 2) - 1 $av3DArray[$x][$y][3] = Random() Next Next ; Extract the values and display Global $avSort[UBound($av3DArray) * UBound($av3DArray, 2)] Global $i = 0 For $x = 0 To UBound($av3DArray) - 1 For $y = 0 To UBound($av3DArray, 2) - 1 $avSort[$i] = $av3DArray[$x][$y][3] $i += 1 Next Next _ArrayDisplay($avSort, "Before Sort") ; Sort and display _ArraySort($avSort) _ArrayDisplay($avSort, "After Sort") Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law Link to comment Share on other sites More sharing options...
martin Posted October 23, 2008 Share Posted October 23, 2008 Well i want to sort the array like this from 0 to 4.6 [3][145][3] = 0 [1][321][3] = 1 [1][311][3] = 1.1 [5][9][3] = 2.5 [2][58][3] = 3 [15][58][3] = 4.6 etc.. its by the 3rd element of that array and i want to write down the sorted array in a file for example Well beaten by PsaltyDS, but mine does show the elements and the values ;sort by third element index 3 #include <array.au3> Dim $Array[50][400][7] Dim $aSort[50 * 400][2] For $n = 0 To 50 - 1 For $p = 0 To 400 - 1 $Array[$n][$p][3] = Random(0, 100000) Next Next For $n = 0 To 50 - 1 For $p = 0 To 400 - 1 $aSort[400 * $n + $p][0] = $Array[$n][$p][3] $aSort[400 * $n + $p][1] = $n & ',' & $p Next Next ;_ArrayDisplay($aSort) _ArraySort($aSort, 0, 0, 0, 0) ;_ArrayDisplay($aSort) $hF = FileOpen("logfile.txt", 2) For $n = 0 To 50 * 400 - 1 $next = StringSplit($aSort[$n][1], ",") FileWriteLine($hF, "[" & $next[1] & "][" & $next[2] & "] = " & $aSort[$n][0]) Next FileClose($hF) Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script. Link to comment Share on other sites More sharing options...
mrbig1479 Posted October 26, 2008 Author Share Posted October 26, 2008 Thank you very much , both of you... Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now