Tworzenie spirali w tablicy 2-wymiarowej

0

przykładowa spirala dla tablicy 5x5:

21 22 23 24 25
20  7  8  9 10
19  6  1  2 11
18  5  4  3 12
17 16 15 14 13

Zasada tworzenia takiej spirali jest dość łatwa do zrozumienia jednak nie wiem jak to zaimplementować w kodzie, myślałem żeby to zrobić w pętli for <= 5^2 ale nie wiem jak sie poruszać po indexach zgodnie z zasada. z góry dzięki za jakieś podpowiedzi

0

Zrób funkcję, która przyjmuje 5 parametrów - numer górnego i dolnego wiersza, numer lewej i prawej kolumny, liczbę, od której zaczyna numerować pola. Następnie wywołaj tę funkcję tyle razy, ile jest wewnętrznych kwadratów (w przykładzie są takie trzy). A w samej funkcji użyj czterech pętelek for - osobno numeruj prawą kolumnę, dolny wiersz, lewą kolumnę i górny wiersz.
Ewentualnie zrób funkcję, która przemapuje liczby od 1 do 25 na pozycje w tablicy, a potem tylko pętelka for.

0

Zasada nie jest łatwa do zrozumienia. Gdzie się zaczyna numerowanie dla spirali rozmiaru 4x4?

1

Można też numerować w drugą stronę (nie ma wtedy problemu gdzie rozpocząć gdy wymiary są parzyste).
Przykład dla 7X7. W prawym górnym rogu wpisujesz największą liczbę (49), przesuwasz się w lewo dopóki nie skończy się tablica (i dopóki są niewypełnione pola), zmniejszasz wpisywaną liczbę o 1 i wpisujesz. Pętla jest wykonywana dopóki wpisywana liczba jest >=1. Po napotkaniu na lewy brzeg zmieniasz kierunek (na w dół), po napotkaniu dolnego brzegu zmieniasz kierunek na w prawo, potem do góry, potem w lewo, itd..

0

A nie łatwiej numerować od zewnątrz malejącymi liczbami ?
Przy takiej numeracji po ponumerowaniu nie będzie tam zera.
Najpierw można wypełnić całą tablicę zerami, potem można spróbować numerować wiersz lub kolumnę kolejnymi cyframi aż do granicy macierzy lub do pola gdzie już coś jest. Wtedy zmieniamy kierunek (indeks, który zmniejszamy lub zwiększamy) - chodzi o warunek skręcenia w lewo lub w prawo gdy będziemy w rogu. Kończymy gdy wstawimy cyfrę 1. To by zadziałało dla macierzy z parzystą i nieparzystą ilością kolumn i wierszy.

0

zadanie dotyczy wymiarow tablicy nieparzystych wiec z np. 4x4 nie bedzie rozpatrywane. spróbuję użyć tego malejącego numerowania, @bo dzięki wielkie.

0

http://is.gd/A1Eeon i nie dyskutować bo mnie łeb nap... boli po wczorajszym.

1 użytkowników online, w tym zalogowanych: 0, gości: 1