Extract blocks uit Array

Status
Niet open voor verdere reacties.

zkaraca

Nieuwe gebruiker
Lid geworden
30 apr 2009
Berichten
2
Hallo allemaal,

even een vraag waar ik maar niet uitkom. Ik heb een 1-dimensonaal array waarin ik een matrix opsla. Size wordt tijdens runtime ingelezen uit een file, vandaar dat ik geen 2d array gebruik. Was te onduidelijk en wou maar niet werken. Wil het ook liever niet wijzigen. Nu wil ik uit dit array de blocks opslaan in een ander array. Illustratie:

1 2 3 1 1 2 2 3 4
5 4 3 2 1 5 7 4 3
2 3 4 6 7 8 5 3 2
6 7 8 5 5 4 4 4 4
3 3 3 3 2 2 5 7 8
4 3 2 2 4 6 7 8 9
3 4 5 6 7 8 9 4 2
2 3 5 7 1 3 2 2 3
3 4 4 9 2 2 3 4 5

Dit is allemaal dus opgeslagen in 1 array van lengte 9x9 (op volgorde van links naar rechts en boven naar onder) De rijen en kolommen lees ik makkelijk uit en kopieer deze naar een ander array, maar met de blokken kom ik er niet uit. Een blok bestaat hier uit 3x3 net als bij een sudoku.

Hoe kan ik dit in godsnaam doen? Iemand die mij kan helpen?
 
Laatst bewerkt:
rijindex / 3 als integerdeling geeft je in welk van de 3 blokken van die rij je vak staat
rijindex%3 kan je dan gebruiken om binnen dat blok te werken.
Idem voor kolomindex.
Het idee is om je rooster als volgt te verwerken (eerste cijfer = blockindex, tweede cijfer = plaats in block):
Code:
00 01 02 10 11 12 20 21 22
03 04 05 13 14 15 23 24 25
06 07 08 16 17 18 26 27 28
30 31 32 40 41 42 50 51 52
33 34 35 43 44 45 53 54 55
36 37 38 46 47 48 56 57 58
60 61 62 70 71 72 80 81 82
63 64 65 73 74 75 83 84 85
66 67 68 76 77 78 86 87 88
Blockindex = (rijindex/3) + (3 * (kolomindex/3))
plaats in block = (rijindex%3)+(3*(kolomindex%3))

Zo wordt het eerste block voorgesteld door de 1D-array: 00 01 02 03 04 05 06 07 08
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan