bobk@mntgfx.MENTOR.COM (Bob Kelley) (08/05/87)
/* * enumerate all words derivable from a telephone number - phony.c * * Usage: phony <telephone number less than 32 characters> * * Non-digits, '0', and '1' in the phone number are transcripted as is. * The digits '2' through '9' are cycled through their letter equivalents. * * I don't care what you do with this program, which was inspired by a * telephone number which I found impossible to remember. Robert J. Kelley 8/3/87 */ #include <stdio.h> char *digits[] = { "abc", "def", "ghi", "jkl", "mno", "prs", "tuv", "wxy" }; char buf[32]; enumerate (s, b) char *s; char *b; { char *p; if (b >= buf + sizeof(buf)) { printf ("phony: Telephone number longer than 32 characters.\n"); exit (1); } if (*s == 0) printf ("%s\n", buf); else if ('2' <= *s && *s <= '9') { for (p = digits[*s - '2']; *p; ++p) { *b = *p; enumerate (s + 1, b + 1); } } else { *b = *s; enumerate (s + 1, b + 1); } } main (argc, argv) int argc; char **argv; { char *s; if (argc != 2) { printf ("usage: phony <phone number>\n"); exit (1); } enumerate (argv[1], buf); }