#include "stdio.h"
#include "stdlib.h"
#include "string.h"
const char kwd[]= "アイウエオ"
"カキクケコ"
"サシスセソ"
"タチツテト"
"ナニヌネノ"
"ハヒフヘホ"
"マミムメモ"
"ヤヰユヱヨ"
"ラリルレロ"
"ガギグゲゴ"
"ザジズゼゾ"
"ダジヅデド"
"バビブベボ"
"パピプペポ"
"ヴー"
"ワヲン。、"
"ァィゥェォ"
"ャュョヮッ"
"\0\0\0\0\0\0\0\0\0\0"
;
#define KWD_HI(x) kwd[(x)*2]
#define KWD_LO(x) kwd[(x)*2+1]
#define KWD_NUM sizeof(kwd)/(sizeof(char) * 2)
#define COMPUTED_SIZE 1024
int
reflex( char *computed, int start, int rest)
{
int i;
int len;
len = strlen(computed);
rest--;
for(i = start;;i++){
if( KWD_HI(i) == '\0' ||
KWD_LO(i) == '\0' ) break;
computed[len + 0] = KWD_HI(i);
computed[len + 1] = KWD_LO(i);
computed[len + 2] = '\0';
if(rest == 0) {
puts(computed);
}
else {
reflex(computed, 0, rest);
}
computed[len + 0] = '\0';
}
return 0;
}
int
main(void)
{
char computed[COMPUTED_SIZE];
int length;
int rest;
length = 2; XXX
for(rest = 1; rest <= length; rest++){
memset( computed, 0 , COMPUTED_SIZE);
reflex( computed, 0, rest);
}
return 0;
}
ref: http://q.hatena.ne.jp/1219596994
-