Loading...
DHristoskov avatar DHristoskov 211 Точки

[Challenge][Intermediate] Matrix rotation [week#2]

Задача номер две за тази седмица, която е по-трудна и доста по-интересна аз лично доста си блъсках главата докато се сетя за решението. Видях я в един форум без да променям условието я споделям с вас.

За коментари, съвети и критика към идеята за [Challenge] задачи можете да пишете тук.

Задача: По зададено N в двумерен масив NxN, измислете начин да въртите матрицата по следния начин:

Вход : N = 3

 

1   2   3

4   5   6

7   8   9

 

Завъртане на 90 градуса:

7   4   1

8   5   2

9   6   3

 

И още веднъж на 90 градуса:

9   8   7

6   5   4

3   2   1

 

Успех на всички!

 

Тагове:
7
Programming Basics 14/04/2015 10:04:05
enevlogiev avatar enevlogiev 1168 Точки

Тази задача сме я виждали в JS wink. Решението ми там е по-различно, но тук нямам опцията за .push(). Можех да ползвам листи, ест, но няма смисъл. Понеже не знам колко пъти да въртя, викам функцията само веднъж.

Ето кода - http://pastebin.com/5759CYsq

Edit: Опс, не функция, а метод : )

2
13/04/2015 22:03:52
KatyaMarincheva avatar KatyaMarincheva 572 Точки

Много се радвам че темата Challenge продължава :)

И от мен едно решение.

Аз завъртях матрицата 3 пъти на 90%, направих пълен кръг.

1
13/04/2015 22:20:04
DHristoskov avatar DHristoskov 211 Точки

Благодаря ви за решенията, много се радвам, че има защо да ги поствам тези задачи. enevlogiev предполагам си я срещал тази задача, защото имаш доста повече опит, а когато човек търси задачи да се упражнява все ще му се случи да попада на една задача повече от веднъж.

Този път и аз ще си постна метода с който си реших задачката

static int[,] RotateMatrix()
{
      int[,] newMatrix = new int[n, n];
      for (int c = 0; c < matrix.GetLength(0); c++)
      {
             for (int d = 0; d < matrix.GetLength(1); d++)
             {
                    newMatrix[c, d] = matrix[n - d - 1, c];
             }
      }
      matrix = newMatrix;
      return matrix;
}

1
13/04/2015 22:59:06
brslv avatar brslv 69 Точки

Доколкото помня от първата тема, можем да използваме всякакви езици? :) Ето две бързи решения от мен на PHP. Алгоритмично идентични, но едното е по-процедурно, другото с обект.

И докато не съм забравил, поздрави на автора. Супер начинание! :)

Процедурно решение с PHP

ООП Решение с PHP

1
RoYaL avatar RoYaL Trainer 6849 Точки

Е като ще е ООП, да е ООП. Направи и структурите от данни обектно ориентирани. Може да тръгнеш от тук http://php.net/manual/en/class.arrayiterator.php

 

3
14/04/2015 04:03:26
brslv avatar brslv 69 Точки

Заинтригува ме с ArrayIterator-a. :) Като цяло итераторите все още са ми мъгла. В java ги опитвах, но нещо не ме изкефиха. Тук се поразтърсих и ми стана интересно. Не съм сигурен колко е адектватно, това което ще пусна като решение, но все пак се постарах да използвам итератори при въртенето и принтирането...научих някои интересни неща за малкото време, което ми се отвори сутринта. И попаднах на това интересно видео. :)

Решение с ArrayIterator.

Поздрави.

 

 

0
DHristoskov avatar DHristoskov 211 Точки

Решенията могат да бъдат на какъвто език решите, защото вие учите и други езици за програмиране и можете да изберете, този с който решението ще бъде по-лесно постижимо.Аз за сега се ограничавам до C#.

1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.