You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

62 lines
1.7 KiB

#include <bits/stdc++.h>
using namespace std;
int main() {
char grid[15][15];
int a, b, i, j, k, t = 0, n[15][15];
while (scanf("%d", &a) && a != 0) {
scanf("%d", &b);
getchar();
for (i = 0; i < a; i++)
gets(grid[i]);
k = 0;
memset(n, 0, sizeof(n));
for (i = 0; i < a; i++)
for (j = 0; j < b; j++) {
if (i == 0 && grid[i][j] != '*')
n[i][j] = ++k;
else if (j == 0 && grid[i][j] != '*')
n[i][j] = ++k;
else if (grid[i][j - 1] == '*' && grid[i][j] != '*')
n[i][j] = ++k;
else if (grid[i - 1][j] == '*' && grid[i][j] != '*')
n[i][j] = ++k;
}
if (t) putchar('\n');
printf("puzzle #%d:\nAcross\n", ++t);
for (i = 0; i < a; i++)
for (j = 0; j < b; j++) {
if (n[i][j] && (j == 0 || grid[i][j - 1] == '*')) {
printf("%3d.", n[i][j]);
for (k = j; k < b && grid[i][k] != '*'; k++)
putchar(grid[i][k]);
putchar('\n');
}
}
printf("Down\n");
for (i = 0; i < a; i++)
for (j = 0; j < b; j++) {
if (n[i][j] && (i == 0 || grid[i - 1][j] == '*')) {
printf("%3d.", n[i][j]);
for (k = i; k < a && grid[k][j] != '*'; k++)
putchar(grid[k][j]);
putchar('\n');
}
}
}
return 0;
}
/*
2 2
AT
*O
6 7
AIM*DEN
*ME*ONE
UPON*TO
SO*ERIN
*SA*OR*
IES*DEA
1 1
**/