Kaprekar Steps | Code challenge MATLAB
6174 is the Kaprekar constant. All natural numbers less than 10,000 (except some with same digits) can be reduced to 6174 in the following steps:
Order the digits of the number in descending and ascending order and compute the difference. Repeat the process till you get 6174.
Your code should return the number of Kaprekar steps for a given input.
For example, choose 3524:
- 5432 – 2345 = 3087
- 8730 – 0378 = 8352
- 8532 – 2358 = 6174
- Output: 3
- For detail explanation, check this:
- https://en.wikipedia.org/wiki/6174_%28number%29
- Code:
- x=input('Enter the number:');
- m=x;
- c=0;
- while(m~=6174)
- m=Kaprekar(m);
- c=c+1;
- end
- disp(c);
- Function:
- function a=Kaprekar(x)
- g=x;
- Y=[];
- while(g>0)
- b=rem(g,10);
- Y=[Y b];
- g=(g-b)/10;
- end
- Sa=sort(Y);
- p=0;
- for i=1:length(Sa)
- p=10*p+Sa(i);
- end
- ks=0;
- Ma=fliplr(sort(Y));
- for i=1:length(Ma)
- ks=10*ks+Ma(i);
- end
- a=ks-p;
- end
- Explanation:
- Reference Video:
No comments