Hallo liebe Community,
Wieder einmal habe ich ein kleines Problem
Dieser Algorithmus, welcher mir von @ThePlexian optimiert wurde möchte ich erweitern:
Hierbei wird ein Input Arrays in mehrere kleine Arrays gesplittet mit unterscheidlichen größen die sich jedoch ähneln.
Ich möchte gerne eine Art MergeList einführen, d.h. folgendes:
Dabei ändert sich der Input von so:
int[][] MergeList ist ein Array mit kleineren Arrays die jeweils immer zwei items enthalten.
D.h. int[][] MergeList könnte ca. so aussehen:
Dabei ist jedes array in MergeList mit zwei werten befüllt, einem StartIndex und einem EndIndex.
Nun zum schwierigen Teil, bei dem ich keine Ahnung hab wie ich das in Code umsetzen soll...
Wenn das Input array gesplittet wird soll nun zusätlich die MergeList geprüft werden.
Dabei gibt ja des Array in MergeList einen Bereich an, d.h. immer das item[0] auch kleiner ist als item[1], also eine Art von ... bis...
Wenn ich durch die einzelnen Array Elemente loope die gesplittet werden müssen muss folgendes beachtet werden:
Wenn der Index der Items durch die ichh loope in einem Bereich liegt, bzw der StartIndex oder EndIndex eines Bereiches der MergeList ist, dann müssen alle Items in dem Input array von dem
jeweiligen Bereich in ein einzelnes array kommen.
Zur Verdeutlichung:
Wenn ich in der MergeList ein Array hab:
Dann muss beim splitten beachtet werden das die Inputitems von Index 4 bis index 7 jeweils ins selbe TeilArray gesplittet werde und nicht auf verschiedene.
Die Bereiche geben also an welche Items auf jedem Fall beim Splitten ins selbe TeilArray kommen müssen.
Wenn das getan ist kann man ja vom input array jeweils die nächsten items überspringen bis nach dem EndIndex des MergeArrays, also dann wieder ab da weiterloopen.
Kann mir heirbei jemand helfen, ich hab keinen Plan wie ich das machen soll
Wenn ich irgendetwas unklar erklärt hab, fragt bitte
Wieder einmal habe ich ein kleines Problem
Dieser Algorithmus, welcher mir von @ThePlexian optimiert wurde möchte ich erweitern:
C#-Quellcode
- // Split an array into multiple multidemnsional arrays, with different, randomly choosen sizes
- public static T[][] RandomSplitBlock<T>(T[] Input)
- {
- if (Input == null)
- throw new ArgumentNullException("Input can't be null.");
- Random rnd = new Random(DateTime.Now.Millisecond);
- var index = 0;
- var arrayBlocks = new List<T[]>();
- var size = rnd.Next((int)(Math.Ceiling(Input.Length * 0.1)), (int)(Math.Ceiling(Input.Length * 0.4)));
- while (index < Input.Length)
- {
- var c = rnd.Next((int)(Math.Ceiling(size - (size * 0.5))), (int)(size + (size * 0.5)));
- if (index + c > Input.Length)
- c = Input.Length - index;
- var newArr = new T[c];
- Array.Copy(Input, index, newArr, 0, c);
- arrayBlocks.Add(newArr);
- index += c;
- }
- return arrayBlocks.ToArray();
- }
Hierbei wird ein Input Arrays in mehrere kleine Arrays gesplittet mit unterscheidlichen größen die sich jedoch ähneln.
Ich möchte gerne eine Art MergeList einführen, d.h. folgendes:
Dabei ändert sich der Input von so:
int[][] MergeList ist ein Array mit kleineren Arrays die jeweils immer zwei items enthalten.
D.h. int[][] MergeList könnte ca. so aussehen:
MergeList[0][0] = 2;
MergeList[0][1] = 17;
MergeList[1][0] = 20;
MergeList[1][1] = 78;
MergeList[2][0] = 80;
MergeList[2][1] = 83;
MergeList[3][0] = 90;
MergeList[3][1] = 170;
Dabei ist jedes array in MergeList mit zwei werten befüllt, einem StartIndex und einem EndIndex.
Nun zum schwierigen Teil, bei dem ich keine Ahnung hab wie ich das in Code umsetzen soll...
Wenn das Input array gesplittet wird soll nun zusätlich die MergeList geprüft werden.
Dabei gibt ja des Array in MergeList einen Bereich an, d.h. immer das item[0] auch kleiner ist als item[1], also eine Art von ... bis...
Wenn ich durch die einzelnen Array Elemente loope die gesplittet werden müssen muss folgendes beachtet werden:
Wenn der Index der Items durch die ichh loope in einem Bereich liegt, bzw der StartIndex oder EndIndex eines Bereiches der MergeList ist, dann müssen alle Items in dem Input array von dem
jeweiligen Bereich in ein einzelnes array kommen.
Zur Verdeutlichung:
Wenn ich in der MergeList ein Array hab:
MergeList[0][0] = 4;
MergeList[0][1] = 7;
Dann muss beim splitten beachtet werden das die Inputitems von Index 4 bis index 7 jeweils ins selbe TeilArray gesplittet werde und nicht auf verschiedene.
Die Bereiche geben also an welche Items auf jedem Fall beim Splitten ins selbe TeilArray kommen müssen.
Wenn das getan ist kann man ja vom input array jeweils die nächsten items überspringen bis nach dem EndIndex des MergeArrays, also dann wieder ab da weiterloopen.
Kann mir heirbei jemand helfen, ich hab keinen Plan wie ich das machen soll
Wenn ich irgendetwas unklar erklärt hab, fragt bitte
C# Developer
Learning C++
Learning C++