/* odometer.c - lrb - 3/17/2008 odometer's rightmost 4 digits are palindromic. 1 mile later, rightmost 5 digits are palindromic. 1 mile later, middle 4 digits are palindromic. 1 mile later, all 6 digits are palindromic. what was the final reading? */ main() { int i0,i1,i2,i3,i4,i5;int s;char od[6]; s=0; od[6]='\0'; for (i0=0;i0<10;++i0) { od[0]='0'+i0; for (i1=0;i1<10;++i1) { od[1]='0'+i1; for (i2=0;i2<10;++i2) { od[2]='0'+i2; for (i3=0;i3<10;++i3) { od[3]='0'+i3; for (i4=0;i4<10;++i4) { od[4]='0'+i4; for (i5=0;i5<10;++i5) { od[5]='0'+i5; if (s==0) if (palindrome(od+2)) s=1; /* rightmost 4 */ else s=0; else if (s==1) if (palindrome(od+1)) s=2; /* rightmost 5 */ else s=0; else if (s==2) { od[5]='\0'; /* makes next check involve only middle 4 */ if (palindrome(od+1)) s=3; /* middle 4 */ else s=0; } else if (s==3) if (palindrome(od)) { /* all 6 */ printf("\n%s%s","final (all 6) palindromic reading is ",od); s=0; } else s=0; }}}}}} printf("\n"); } palindrome(s) char s[]; { int i,g;g=strlen(s); for (i=0;i<=g/2-1;++i) if (s[i]!=s[g-1-i]) return (0); return (1); }