In mẫu đối xứng (interesting pattern) với nửa chiều rộng cho trước. Mẫu có 2n dòng, nửa trên và nửa dưới đối xứng qua trục ngang. Mỗi dòng có 2n cột, chia làm hai nửa trái và phải đối xứng nhau.
Ví dụ minh họa (C++)
#include <stdio.h>
void print_pattern(int n) {
// Nửa trên
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= 2 * n; j++) {
// Nửa trái
if (i < j) printf(" "); else printf("*");
// Nửa phải
if (i <= (2 * n - j)) printf(" "); else printf("*");
}
printf("\n");
}
// Nửa dưới
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= 2 * n; j++) {
// Nửa trái
if (i > (n - j + 1)) printf(" "); else printf("*");
// Nửa phải
if ((i + n) > j) printf(" "); else printf("*");
}
printf("\n");
}
}
int main() {
print_pattern(6);
return 0;
}
Kết quả
* * ** ** *** *** **** **** ***** ***** ****** ****** ******* ******* ******** ******** ********* ********* ********** ********** *********** *********** ************ ************ ************* ************* **************************** **************************** ************* ************* ************ ************ *********** *********** ********** ********** ********* ********* ******** ******** ******* ******* ****** ****** ***** ***** **** **** *** *** ** ** * *