
/* 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);
}


