#define NDEBUG
#include <assert.h>
#include <stdio.h>
int getDigit( int value, unsigned positionFromLeft) {
if ( positionFromLeft
== 1 ) return abs ( value
) % 10 ; if ( value == 0 ) return 0 ; // optimization: break out of recursion if 0 is reached
return getDigit( value / 10 , positionFromLeft - 1 ) ;
}
int main( void ) {
int val; unsigned n;
//val = 12345; n = 0; printf("getDigit(%d, %d) is %d\n", val, n, getDigit(val, n));
val
= 12345 ; n
= 1 ; printf ( "getDigit(%d, %d) is %d\n " , val
, n
, getDigit
( val
, n
) ) ; val
= 12345 ; n
= 2 ; printf ( "getDigit(%d, %d) is %d\n " , val
, n
, getDigit
( val
, n
) ) ; val
= 12345 ; n
= 3 ; printf ( "getDigit(%d, %d) is %d\n " , val
, n
, getDigit
( val
, n
) ) ; val
= 12345 ; n
= 4 ; printf ( "getDigit(%d, %d) is %d\n " , val
, n
, getDigit
( val
, n
) ) ; val
= 12345 ; n
= 5 ; printf ( "getDigit(%d, %d) is %d\n " , val
, n
, getDigit
( val
, n
) ) ; val
= 12345 ; n
= 6 ; printf ( "getDigit(%d, %d) is %d\n " , val
, n
, getDigit
( val
, n
) ) ; //val = -12345; n = 0; printf("getDigit(%d, %d) is %d\n", val, n, getDigit(val, n));
val
= - 12345 ; n
= 1 ; printf ( "getDigit(%d, %d) is %d\n " , val
, n
, getDigit
( val
, n
) ) ; val
= - 12345 ; n
= 2 ; printf ( "getDigit(%d, %d) is %d\n " , val
, n
, getDigit
( val
, n
) ) ; val
= - 12345 ; n
= 3 ; printf ( "getDigit(%d, %d) is %d\n " , val
, n
, getDigit
( val
, n
) ) ; val
= - 12345 ; n
= 4 ; printf ( "getDigit(%d, %d) is %d\n " , val
, n
, getDigit
( val
, n
) ) ; val
= - 12345 ; n
= 5 ; printf ( "getDigit(%d, %d) is %d\n " , val
, n
, getDigit
( val
, n
) ) ; val
= - 12345 ; n
= 6 ; printf ( "getDigit(%d, %d) is %d\n " , val
, n
, getDigit
( val
, n
) ) ; return 0 ;
}
I2RlZmluZSBOREVCVUcKI2luY2x1ZGUgPGFzc2VydC5oPgojaW5jbHVkZSA8c3RkaW8uaD4KCmludCBnZXREaWdpdChpbnQgdmFsdWUsIHVuc2lnbmVkIHBvc2l0aW9uRnJvbUxlZnQpIHsKICAgIGFzc2VydChwb3NpdGlvbkZyb21MZWZ0ID4gMCk7CiAgICBpZiAocG9zaXRpb25Gcm9tTGVmdCA9PSAxKSByZXR1cm4gYWJzKHZhbHVlKSAlIDEwOwogICAgaWYgKHZhbHVlID09IDApIHJldHVybiAwOyAvLyBvcHRpbWl6YXRpb246IGJyZWFrIG91dCBvZiByZWN1cnNpb24gaWYgMCBpcyByZWFjaGVkCiAgICByZXR1cm4gZ2V0RGlnaXQodmFsdWUgLyAxMCwgcG9zaXRpb25Gcm9tTGVmdCAtIDEpOwp9CgppbnQgbWFpbih2b2lkKSB7CiAgICBpbnQgdmFsOyB1bnNpZ25lZCBuOwoJLy92YWwgPSAxMjM0NTsgbiA9IDA7IHByaW50ZigiZ2V0RGlnaXQoJWQsICVkKSBpcyAlZFxuIiwgdmFsLCBuLCBnZXREaWdpdCh2YWwsIG4pKTsKCXZhbCA9IDEyMzQ1OyBuID0gMTsgcHJpbnRmKCJnZXREaWdpdCglZCwgJWQpIGlzICVkXG4iLCB2YWwsIG4sIGdldERpZ2l0KHZhbCwgbikpOwoJdmFsID0gMTIzNDU7IG4gPSAyOyBwcmludGYoImdldERpZ2l0KCVkLCAlZCkgaXMgJWRcbiIsIHZhbCwgbiwgZ2V0RGlnaXQodmFsLCBuKSk7Cgl2YWwgPSAxMjM0NTsgbiA9IDM7IHByaW50ZigiZ2V0RGlnaXQoJWQsICVkKSBpcyAlZFxuIiwgdmFsLCBuLCBnZXREaWdpdCh2YWwsIG4pKTsKCXZhbCA9IDEyMzQ1OyBuID0gNDsgcHJpbnRmKCJnZXREaWdpdCglZCwgJWQpIGlzICVkXG4iLCB2YWwsIG4sIGdldERpZ2l0KHZhbCwgbikpOwoJdmFsID0gMTIzNDU7IG4gPSA1OyBwcmludGYoImdldERpZ2l0KCVkLCAlZCkgaXMgJWRcbiIsIHZhbCwgbiwgZ2V0RGlnaXQodmFsLCBuKSk7Cgl2YWwgPSAxMjM0NTsgbiA9IDY7IHByaW50ZigiZ2V0RGlnaXQoJWQsICVkKSBpcyAlZFxuIiwgdmFsLCBuLCBnZXREaWdpdCh2YWwsIG4pKTsKCS8vdmFsID0gLTEyMzQ1OyBuID0gMDsgcHJpbnRmKCJnZXREaWdpdCglZCwgJWQpIGlzICVkXG4iLCB2YWwsIG4sIGdldERpZ2l0KHZhbCwgbikpOwoJdmFsID0gLTEyMzQ1OyBuID0gMTsgcHJpbnRmKCJnZXREaWdpdCglZCwgJWQpIGlzICVkXG4iLCB2YWwsIG4sIGdldERpZ2l0KHZhbCwgbikpOwoJdmFsID0gLTEyMzQ1OyBuID0gMjsgcHJpbnRmKCJnZXREaWdpdCglZCwgJWQpIGlzICVkXG4iLCB2YWwsIG4sIGdldERpZ2l0KHZhbCwgbikpOwoJdmFsID0gLTEyMzQ1OyBuID0gMzsgcHJpbnRmKCJnZXREaWdpdCglZCwgJWQpIGlzICVkXG4iLCB2YWwsIG4sIGdldERpZ2l0KHZhbCwgbikpOwoJdmFsID0gLTEyMzQ1OyBuID0gNDsgcHJpbnRmKCJnZXREaWdpdCglZCwgJWQpIGlzICVkXG4iLCB2YWwsIG4sIGdldERpZ2l0KHZhbCwgbikpOwoJdmFsID0gLTEyMzQ1OyBuID0gNTsgcHJpbnRmKCJnZXREaWdpdCglZCwgJWQpIGlzICVkXG4iLCB2YWwsIG4sIGdldERpZ2l0KHZhbCwgbikpOwoJdmFsID0gLTEyMzQ1OyBuID0gNjsgcHJpbnRmKCJnZXREaWdpdCglZCwgJWQpIGlzICVkXG4iLCB2YWwsIG4sIGdldERpZ2l0KHZhbCwgbikpOwoJcmV0dXJuIDA7Cn0K