Здравствуйте. Прошу помочь реализовать следующую задачу:
P.S. Если считаете что мой ценник низкий для такой задачи, то пожалуйста предложите свой вариант стоимости.
Задача:
Имеется стена, состоящая из кирпичей. При этом каждый кирпич точно укладывается на нижележащий. Каждый кирпич помечен уникальным номером. Кроме того, кирпичи могут быть из разного материала:
L – глина
S - камень
C – бетон
Пример недостроенной стены, состоящей из 4-x горизонтальных слоев и 5-ти вертикальных рядов:
[ 8,L]
[ 7,L]
[ 2,L] [ 6,L][11,L][14,L]
[ 1,L][ 4,L][ 5,L][10,L][13,L]
Самый нижний слой стены называется фундаментом.
Стену можно разбирать и достраивать по одному кирпичу по следующим правилам:
новый вертикальный ряд можно строить только с правой стороны стены;
новый кирпич укладывается только на самый верхний кирпич в ряду;
кирпич вынимается из стены, только если он самый верхний в ряду и не принадлежит фундаменту;
из фундамента вынимается только самый правый кирпич, если он единственный в вертикальном ряду.
Запрещается создавать кирпичи, не принадлежащие стене и хранить их вне стены. Массивы кирпичей и массивы указателей на кирпичи не создавать. память под кирпичи должна выделяться динамически.
Режим строительства стены - startWallBuilding(mLoam | mStone, CH); (где CH – см. входные данные)
Построить стену, состоящую из пронумерованных каменных и глиняных кирпичей, на основе исходных данных.
Чтобы ряд не обрушился, он не должен возвышаться над соседними рядами более чем на CH кирпичей.
По окончанию строительства стены напечатать ее «изображение» - showBrickWall();
Режим перестройки стены - startRebuild(mConcrete, mLoam, mStone);
Заменить глиняные кирпичи на бетонные, присвоив бетонным кирпичам те же номера, что были у оригинальных кирпичей. Если из стены вынимаются каменные кирпичи, то в стену должны быть возвращены они же, а не их копии. Разрешается хранить вне стены произвольное кол-во оригинальных каменных кирпичей.
По окончанию перестройки стены напечатать ее «изображение» - showBrickWall();
Режим разбора стены - startWallDestroying ();
Разобрать стену, уничтожив все кирпичи.
По окончанию разбора стены напечатать ее «изображение» -showBrickWall();
Формат входных данных:
[CH]
[W]
[крайний левый вертикальный ряд стены]
......
[промежуточный вертикальный ряд стены]
......
[крайний правый вертикальный ряд стены]
CH - максимальная разность высот соседних рядов, при которых ряд не обрушается, целое число [3, 10]
W – ширина стены, целое число [1, 10]
| Гарантия на работу | 1 год |
| Средний балл | 4.53 |
| Стоимость | Назначаете сами |
| Эксперт | Выбираете сами |
| Уникальность работы | от 70% |