SPTTRN1 - Straight Line Spiral Pattern (Act 1)
#include
#include
using namespace std;
void drawSpiral(int s) {
vector<vector> grid(s, vector(s, ‘.’));
int layer = 0;
while (true) {
int top = layer;
int bottom = s - layer - 1;
int left = layer;
int right = s - layer - 1;
if (top > bottom || left > right)
break;
// top row
for (int i = left; i <= right; i++)
grid[top][i] = '*';
// right column
for (int i = top + 1; i <= bottom; ++i)
grid[i][right] = '*';
if (top == bottom && left == right)
break;
// bottom row
for (int i = right - 1; i >= left; --i)
grid[bottom][i] = '*';
// left column (leave one space above)
for (int i = bottom - 1; i > top + 1; --i){
grid[i][left] = '*';
}
layer += 2;
}
for (int i = 0; i < s; ++i) {
for (int j = 0; j < s; ++j)
cout << grid[i][j];
cout << '\n';
}
}
int main() {
int t;
cin >> t;
vector<int> sizes(t);
for (int i = 0; i < t; ++i)
cin >> sizes[i];
for (int i = 0; i < t; ++i) {
drawSpiral(sizes[i]);
cout << '\n';
}
return 0;
}
what is soultion correct to this problem?
created
last reply
- 4
replies
- 44
views
- 2
users