Skip to content

Latest commit

 

History

74 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Задача: Закрутить 2d массив в спираль

Алгоритм Spiral Пример:
1 2 3
8 9 4
7 6 5
Для усложнения задачи решил разработать архитектуру для модуля, который бы мог работать с множеством алгоритмов по генерации массивов. Для наглядности добавил алгоритм Classic:
1 2 3
4 5 6
7 8 9

img.png Клиентский код:

Generator generator =Generator.createDefault(5, 5, AlgorithmsList.SPIRAL);
System.out.println(generator.TextStatement());
System.out.println("=".repeat(20));
generator.selectAlgorithmFromEnum(AlgorithmsList.CLASSIC_FILL);
System.out.println(generator.TextStatement());

Способ решения:
Чередование четырех функций: вправо - вниз - назад - вверх

Работает с любым 2d массивом. Будь то квадрат или прямоугольник.

Особенности:

  • Применен паттерн "команда"
    Инициатор: Generator
    Получатели: все наследники базового алгоритмического класса AlgorithmGenerateArray
  • Регистрация нового алгоритма происходит в "АlgorithmsEnum". Нужно просто добавить supplier<>
NEW_ALGORITHM ( NewClassAlgorithm::new )
  • Так же есть возможность через шаблонный метод внедрить свой собственный класс с алгоритмом, которого нет в enum алгоритмов.
//client code
IGenerator generator=Generator.createCustomAlgorithm(3,3, new AlgorithmClass);
  • Вывод массива предоставлен двумя методами класса Generator.
String HtmlStatement();
String TextStatement();

Тесты:
img_2.png

При желании можно запустить подготовленный jar файл. img_3.png

About

Задачка с собеседования. Закрутить масси в спираль цифр. Добавил архитектурные решения.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages