Spyrytus - umplere algoritm de tablou bidimensional într-o spirală

Algoritmul de umplere matrice bidimensională într-o spirală

Probabil mulți au avut lecții de programare de locuri de muncă, scrie un program care are nevoie pentru a umple o matrice bidimensională de numere într-o spirală. Recent, am avut aceeași nevoie de a rezolva această problemă. Am scris de multe ori în diferite limbaje de programare - și de fiecare dată trebuie să ne amintim, așa cum am scris-o, dar acum am scris un algoritm care poate umple orice matrice de orice dimensiune - chiar semetrichnye.

Pentru a începe să explice algoritmul real. La completarea matrice bidimensional într-o spirală (va umple stânga la dreapta, de sus în jos). La umplerea melcul matrice - numărul de iterații la fiecare al patrulea pasaj este egal RazmerMassiva - 2. Acum, din aceste date și să înceapă.

În primul rând, a scrie o bucată de cod este responsabil pentru completarea doar la stânga la dreapta:

în cazul în care y - actualul partid (0 - up, 1 - dreapta 2 -).
sizeX - mărimea șirului orizontal
CorrectX - variabilă, care este responsabil pentru dekrimentirovanie automată
Count - variabilă, care este responsabil pentru curentul în cadrul șirului de Digits
Summ - produsul dintre lățimea și înălțimea necesară pentru a corecta eroarea (a se vedea mai jos.)
Mas - numele de matrice bidimensională
x - poziția reală în cadrul șirului

Ei bine, de cealaltă parte a cazului pe principiul descris mai sus, cu excepția faptului că variabilele schimbă locuri, precum și unele condiții modificate. Dacă observați, a fost scris că Summ variabilă. trebuie să elimine erorile - da, este. Eroarea constă în faptul că, în timpul ultimului ciclu al primei condiții (A se vedea Codul.) - lucrari, si schimba-l nu a reușit, pentru că a fost necesar să se introducă încă o altă variabilă.

Mai jos este un cod funcție care umple matrice într-o spirală. Completarea are loc numai într-o singură direcție - de la stânga la dreapta, de sus în jos. Ei bine, care vrea sa - poate rescrie ee, astfel încât acesta a pornit de oriunde. Mult noroc.

Versiunea Gata a programului poate fi găsit făcând clic pe un link în bara de navigare, programe gata.