Difference between revisions of "Kaprekars Constant"

From ZCubes Wiki
Jump to navigation Jump to search
 
(5 intermediate revisions by the same user not shown)
Line 17: Line 17:
 
function kc(x)
 
function kc(x)
 
{
 
{
k=x.⁋..⋰;
+
k=x.⁋..⋰;
 
kp:=k.⋱.⚯*1 -k.⋰.⚯;
 
kp:=k.⋱.⚯*1 -k.⋰.⚯;
 
_y=k;
 
_y=k;
 
var r=-1, rt=-1,rs=[];
 
var r=-1, rt=-1,rs=[];
try
+
(1..8)@(
{
+
function(i)
(1..7)@(
+
{
function(i)
+
var t=kp(_y)
 +
 +
if(t==6174 && r==-1)
 
{
 
{
var t=kp(_y)
+
r=i;rt=t;rs.push(t);
if(t==6174 && r==-1)
+
throw("EXIT")
{
 
r=i;rt=t;rs.push(t);
 
throw("EXIT")
 
}
 
else
 
{
 
rs.push(t)
 
}
 
_y=t.⁋.⪪;
 
 
}
 
}
);
+
else
}
+
{
catch(err)
+
rs.push(t)
{
+
}
}
+
_y=t.⁋.⪡;
⊫([x,r,rt,rs])
+
}
return([x,r,_y,rs])
+
);
 +
☝;
 +
return([x,r,rs])
 +
}
  
}
 
 
</pre>
 
</pre>
  
Answer:
+
{| style="" id="TABLE95" class="null withtitle wikitable" donotcaption="true" |
 
 
{| style="" id="TABLE1" class="null wikitable" donotcaption="true" |
 
|-
 
| style="cursor: auto;" |
 
{| style="" id="TABLE1" class="notepad" donotcaption="true" |
 
|-
 
| 1001
 
 
 
|-
 
| style="cursor: auto;" | 4
 
 
 
|-
 
| 6174
 
 
 
|-
 
| 1089
 
| 9621
 
| 8352
 
| 6174
 
| 6174
 
| 6174
 
| 6174
 
 
 
 
 
|}
 
 
 
 
 
 
 
|}
 
 
 
 
 
 
 
 
 
{| style="" id="TABLE1" class="null wikitable" donotcaption="true" |
 
|-
 
|
 
{| style="" id="TABLE1" class="notepad" donotcaption="true" |
 
|-
 
| 1002
 
 
 
|-
 
| 3
 
 
 
|-
 
| 6174
 
 
 
|-
 
| 2088
 
| 8532
 
| 6174
 
| 6174
 
| 6174
 
| 6174
 
| 6174
 
 
 
 
 
|}
 
 
 
 
 
 
 
|}
 
 
 
 
 
 
 
 
 
{| style="" id="TABLE1" class="null wikitable" donotcaption="true" |
 
|-
 
|
 
{| style="" id="TABLE1" class="notepad" donotcaption="true" |
 
|-
 
| 1003
 
 
 
|-
 
| 3
 
 
 
|-
 
| 6174
 
 
 
|-
 
| 3087
 
| 8352
 
| 6174
 
| 6174
 
| 6174
 
| 6174
 
| 6174
 
 
 
 
 
|}
 
 
 
 
 
 
 
|}
 
 
 
 
 
 
 
 
 
{| style="" id="TABLE1" class="null wikitable" donotcaption="true" |
 
|-
 
|
 
{| style="" id="TABLE1" class="notepad" donotcaption="true" |
 
|-
 
| 1004
 
 
 
|-
 
| 7
 
 
 
|-
 
| 6174
 
 
 
|-
 
| 4086
 
| 8172
 
| 7443
 
| 3996
 
| 6264
 
| 4176
 
| 6174
 
 
 
 
 
|}
 
 
 
 
 
 
 
|}
 
 
 
 
 
 
 
 
 
{| style="" id="TABLE1" class="null wikitable" donotcaption="true" |
 
|-
 
|
 
{| style="" id="TABLE1" class="notepad" donotcaption="true" |
 
|-
 
| 1005
 
 
 
|-
 
| 7
 
 
 
|-
 
| 6174
 
 
 
|-
 
| 5085
 
| 7992
 
| 7173
 
| 6354
 
| 3087
 
| 8352
 
| 6174
 
 
 
 
 
|}
 
 
 
 
 
 
 
|}
 
 
 
 
 
 
 
 
 
{| style="" id="TABLE1" class="null wikitable" donotcaption="true" |
 
|-
 
|
 
{| style="" id="TABLE1" class="notepad" donotcaption="true" |
 
|-
 
| 1006
 
 
 
|-
 
| 7
 
 
 
|-
 
| 6174
 
 
 
|-
 
| 6084
 
| 8172
 
| 7443
 
| 3996
 
| 6264
 
| 4176
 
| 6174
 
 
 
 
 
|}
 
 
 
 
 
 
 
|}
 
 
 
 
 
 
 
 
 
{| style="" id="TABLE1" class="null wikitable" donotcaption="true" |
 
|-
 
|
 
{| style="" id="TABLE1" class="notepad" donotcaption="true" |
 
|-
 
| 1007
 
 
 
|-
 
| 3
 
 
 
|-
 
| 6174
 
 
 
|-
 
| 7083
 
| 8352
 
| 6174
 
| 6174
 
| 6174
 
| 6174
 
| 6174
 
 
 
 
 
|}
 
 
 
 
 
 
 
|}
 
 
 
 
 
 
 
 
 
{| style="" id="TABLE1" class="null wikitable" donotcaption="true" |
 
|-
 
|
 
{| style="" id="TABLE1" class="notepad" donotcaption="true" |
 
|-
 
| 1008
 
 
 
|-
 
| 3
 
 
 
|-
 
| 6174
 
 
 
|-
 
| 8082
 
| 8532
 
| 6174
 
| 6174
 
| 6174
 
| 6174
 
| 6174
 
 
 
 
 
|}
 
 
 
 
 
 
 
|}
 
 
 
 
 
 
 
 
 
{| style="" id="TABLE1" class="null wikitable" donotcaption="true" |
 
|-
 
|
 
{| style="" id="TABLE1" class="notepad" donotcaption="true" |
 
|-
 
| 1009
 
 
 
|-
 
| 4
 
 
 
|-
 
| 6174
 
 
 
|-
 
| 9081
 
| 9621
 
| 8352
 
| 6174
 
| 6174
 
| 6174
 
| 6174
 
 
 
 
 
|}
 
 
 
 
 
 
 
|}
 
 
 
 
 
 
 
 
 
{| style="" id="TABLE1" class="null wikitable" donotcaption="true" |
 
|-
 
|
 
{| style="" id="TABLE1" class="notepad" donotcaption="true" |
 
|-
 
| 1010
 
 
 
|-
 
| 4
 
 
 
|-
 
| 6174
 
 
 
|-
 
| 1089
 
| 9621
 
| 8352
 
| 6174
 
| 6174
 
| 6174
 
| 6174
 
 
 
 
 
|}
 
 
 
 
 
 
 
|}
 
 
 
 
 
 
 
 
 
{| style="" id="TABLE1" class="null withtitle wikitable" donotcaption="true" |
 
 
|-
 
|-
 
| x
 
| x
Line 378: Line 51:
 
|-
 
|-
 
| 1001
 
| 1001
| style="cursor: col-resize;" |
+
|
{| style="" id="TABLE1" class="notepad" donotcaption="true" |
+
{| style="" id="TABLE96" class="notepad" donotcaption="true" |
 
|-
 
|-
 
| 1001
 
| 1001
  
 
|-
 
|-
| 4
 
 
|-
 
| 6
 
| 1
 
| 7
 
 
| 4
 
| 4
  
Line 396: Line 63:
 
| 9621
 
| 9621
 
| 8352
 
| 8352
| 6174
 
| 6174
 
| 6174
 
 
| 6174
 
| 6174
  
Line 407: Line 71:
 
|-
 
|-
 
| 1002
 
| 1002
| style="cursor: col-resize;" |
+
|
{| style="" id="TABLE1" class="notepad" donotcaption="true" |
+
{| style="" id="TABLE97" class="notepad" donotcaption="true" |
 
|-
 
|-
 
| 1002
 
| 1002
Line 414: Line 78:
 
|-
 
|-
 
| 3
 
| 3
 
|-
 
| 6
 
| 1
 
| 7
 
| 4
 
  
 
|-
 
|-
 
| 2088
 
| 2088
 
| 8532
 
| 8532
| 6174
 
| 6174
 
| 6174
 
| 6174
 
 
| 6174
 
| 6174
  
Line 437: Line 91:
 
| 1003
 
| 1003
 
|
 
|
{| style="" id="TABLE1" class="notepad" donotcaption="true" |
+
{| style="" id="TABLE98" class="notepad" donotcaption="true" |
 
|-
 
|-
 
| 1003
 
| 1003
Line 443: Line 97:
 
|-
 
|-
 
| 3
 
| 3
 
|-
 
| 6
 
| 1
 
| 7
 
| 4
 
  
 
|-
 
|-
 
| 3087
 
| 3087
 
| 8352
 
| 8352
| 6174
 
| 6174
 
| 6174
 
| 6174
 
 
| 6174
 
| 6174
  
Line 466: Line 110:
 
| 1004
 
| 1004
 
|
 
|
{| style="" id="TABLE1" class="notepad" donotcaption="true" |
+
{| style="" id="TABLE99" class="notepad" donotcaption="true" |
 
|-
 
|-
 
| 1004
 
| 1004
Line 472: Line 116:
 
|-
 
|-
 
| 7
 
| 7
 
|-
 
| 4
 
| 1
 
| 7
 
| 6
 
  
 
|-
 
|-
Line 495: Line 133:
 
| 1005
 
| 1005
 
|
 
|
{| style="" id="TABLE1" class="notepad" donotcaption="true" |
+
{| style="" id="TABLE100" class="notepad" donotcaption="true" |
 
|-
 
|-
 
| 1005
 
| 1005
Line 501: Line 139:
 
|-
 
|-
 
| 7
 
| 7
 
|-
 
| 8
 
| 3
 
| 5
 
| 2
 
  
 
|-
 
|-
Line 524: Line 156:
 
| 1006
 
| 1006
 
|
 
|
{| style="" id="TABLE1" class="notepad" donotcaption="true" |
+
{| style="" id="TABLE101" class="notepad" donotcaption="true" |
 
|-
 
|-
 
| 1006
 
| 1006
Line 530: Line 162:
 
|-
 
|-
 
| 7
 
| 7
 
|-
 
| 4
 
| 1
 
| 7
 
| 6
 
  
 
|-
 
|-
Line 553: Line 179:
 
| 1007
 
| 1007
 
|
 
|
{| style="" id="TABLE1" class="notepad" donotcaption="true" |
+
{| style="" id="TABLE102" class="notepad" donotcaption="true" |
 
|-
 
|-
 
| 1007
 
| 1007
Line 559: Line 185:
 
|-
 
|-
 
| 3
 
| 3
 
|-
 
| 6
 
| 1
 
| 7
 
| 4
 
  
 
|-
 
|-
 
| 7083
 
| 7083
 
| 8352
 
| 8352
| 6174
 
| 6174
 
| 6174
 
| 6174
 
 
| 6174
 
| 6174
  
Line 582: Line 198:
 
| 1008
 
| 1008
 
|
 
|
{| style="" id="TABLE1" class="notepad" donotcaption="true" |
+
{| style="" id="TABLE103" class="notepad" donotcaption="true" |
 
|-
 
|-
 
| 1008
 
| 1008
Line 588: Line 204:
 
|-
 
|-
 
| 3
 
| 3
 
|-
 
| 6
 
| 1
 
| 7
 
| 4
 
  
 
|-
 
|-
 
| 8082
 
| 8082
 
| 8532
 
| 8532
| 6174
 
| 6174
 
| 6174
 
| 6174
 
 
| 6174
 
| 6174
  
Line 611: Line 217:
 
| 1009
 
| 1009
 
|
 
|
{| style="" id="TABLE1" class="notepad" donotcaption="true" |
+
{| style="" id="TABLE104" class="notepad" donotcaption="true" |
 
|-
 
|-
 
| 1009
 
| 1009
  
 
|-
 
|-
| 4
 
 
|-
 
| 6
 
| 1
 
| 7
 
 
| 4
 
| 4
  
Line 628: Line 228:
 
| 9621
 
| 9621
 
| 8352
 
| 8352
| 6174
 
| 6174
 
| 6174
 
 
| 6174
 
| 6174
  
Line 640: Line 237:
 
| 1010
 
| 1010
 
|
 
|
{| style="" id="TABLE1" class="notepad" donotcaption="true" |
+
{| style="" id="TABLE105" class="notepad" donotcaption="true" |
 
|-
 
|-
 
| 1010
 
| 1010
  
 
|-
 
|-
| 4
 
 
|-
 
| 6
 
| 1
 
| 7
 
 
| 4
 
| 4
  
Line 657: Line 248:
 
| 9621
 
| 9621
 
| 8352
 
| 8352
| 6174
 
| 6174
 
| 6174
 
 
| 6174
 
| 6174
  
Line 668: Line 256:
  
 
|}
 
|}
 +
 +
==Notes==
 +
 +
In Loops (such as 1..7),
 +
 +
throw("EXIT")
 +
 +
or
 +
 +
throw("BREAK")
 +
 +
will break the FOR loop.
 +
 +
throw("CONTINUE")
 +
 +
will continue the FOR loop call.
 +
 +
In the code above, the throw("EXIT") is used to go break the loop as the loop has reached 6174 potentially.
 +
 +
Also note the elegant way to handle exceptions. For example, tryx or ☝; is a quick way to wrap the previous block or statement with a try{}catch(){} statement.

Latest revision as of 11:17, 12 September 2024

Kaprekar's constant

The number 6174 is known as Kaprekar's constant[| Kaprekar's Constant 6174] after the Indian mathematician D. R. Kaprekar. This number is renowned for the following rule:

Take any four-digit number, using at least two different digits (leading zeros are allowed). Arrange the digits in descending and then in ascending order to get two four-digit numbers, adding leading zeros if necessary. Subtract the smaller number from the bigger number. Go back to step 2 and repeat.

Video: https://www.youtube.com/watch?v=xtyNuOikdE4

z^3 Solution

1001..1010@kc;
function kc(x)
{
	k=x.⁋.⪡.⋰;
	kp:=k.⋱.⚯*1 -k.⋰.⚯;
	_y=k;
	var r=-1, rt=-1,rs=[];	
	(1..8)@(
		function(i)
		{
			var t=kp(_y)
			
			if(t==6174 && r==-1)
			{
				r=i;rt=t;rs.push(t);
				throw("EXIT")
			}
			else
			{
				rs.push(t)
			}
			_y=t.⁋.⪡;
		}
	);
	☝;
	return([x,r,rs])	
}

x kc
1001
1001
4
1089 9621 8352 6174



1002
1002
3
2088 8532 6174



1003
1003
3
3087 8352 6174



1004
1004
7
4086 8172 7443 3996 6264 4176 6174



1005
1005
7
5085 7992 7173 6354 3087 8352 6174



1006
1006
7
6084 8172 7443 3996 6264 4176 6174



1007
1007
3
7083 8352 6174



1008
1008
3
8082 8532 6174



1009
1009
4
9081 9621 8352 6174



1010
1010
4
1089 9621 8352 6174



Notes

In Loops (such as 1..7),

throw("EXIT")

or

throw("BREAK")

will break the FOR loop.

throw("CONTINUE")

will continue the FOR loop call.

In the code above, the throw("EXIT") is used to go break the loop as the loop has reached 6174 potentially.

Also note the elegant way to handle exceptions. For example, tryx or ☝; is a quick way to wrap the previous block or statement with a try{}catch(){} statement.