Pen Settings

HTML

CSS

CSS Base

Vendor Prefixing

Add External Stylesheets/Pens

Any URLs added here will be added as <link>s in order, and before the CSS in the editor. You can use the CSS from another Pen by using its URL and the proper URL extension.

+ add another resource

JavaScript

Babel includes JSX processing.

Add External Scripts/Pens

Any URL's added here will be added as <script>s in order, and run before the JavaScript in the editor. You can use the URL of any other Pen and it will include the JavaScript from that Pen.

+ add another resource

Packages

Add Packages

Search for and use JavaScript packages from npm here. By selecting a package, an import statement will be added to the top of the JavaScript editor for this package.

Details

Privacy

Go PRO Window blinds lowered to protect code. Code Editor with window blinds (raised) and a light blub turned on.

Keep it secret; keep it safe.

Private Pens are hidden everywhere on CodePen, except to you. You can still share them and other people can see them, they just can't find them through searching or browsing.

Upgrade to PRO

Behavior

Auto Save

If active, Pens will autosave every 30 seconds after being saved once.

Auto-Updating Preview

If enabled, the preview panel updates automatically as you code. If disabled, use the "Run" button to update.

Format on Save

If enabled, your code will be formatted when you actively save your Pen. Note: your code becomes un-folded during formatting.

Editor Settings

Code Indentation

Want to change your Syntax Highlighting theme, Fonts and more?

Visit your global Editor Settings.

Template

Make Template?

Templates are Pens that can be used to start other Pens quickly from the create menu. The new Pen will copy all the code and settings from the template and make a new Pen (that is not a fork). You can view all of your templates, or learn more in the documentation.

Template URL

Any Pen can act as a template (even if you don't flip the toggle above) with a special URL you can use yourself or share with others. Here's this Pen's template URL:

Screenshot

Screenshot or Custom Thumbnail

Screenshots of Pens are shown in mobile browsers, RSS feeds, to users who chose images instead of iframes, and in social media sharing.

This Pen is using the default Screenshot, generated by CodePen. Upgrade to PRO to upload your own thumbnail that will be displayed on previews of this pen throughout the site and when sharing to social media.

Upgrade to PRO

HTML

              
                <h1>6174: Kaprekar's Constant</h1>
<p>Type in any 4 digit number that contains at least 2 different digits (leading zeros are allowed). <strong>Deviating this will cause an infinite loop. You have been warned!</strong>
<br>
It will be rearranged into descending and ascending order and the smaller number will be subtracted from the larger one.
<br> 
The subtracted difference between the 2 numbers will eventually reach 6174 </p>
<input type="text"maxlength="4"/>
<button>Go</button>
<p class="counter">It took <span id="counterSpan"></span> iterations to reach Kaprekar's constant.</p>
<div class="output"></div>
              
            
!

CSS

              
                
              
            
!

JS

              
                //Document ready function
$(function(){

//Hide the output until the function is run at least once
  $(".counter").hide();
  
//Set global variables so they can be set later
var ascInt = "",
  descInt = "";
   
 //The main function for Kaprekar's constant
function kC(num) {
  
  //Turn integer into array of integers so that it may be sorted
  var numArray = (""+num).split("");
  
  //Sort the array into descending order
  var descArray = numArray.sort(function(a,b){
    return b - a;
  });
  
  //Sort the array into ascending order
  //Slice creates a copy of the array so as to not alter the descending one
  var ascArray = numArray.slice().sort(function(a,b){
    return a - b;
  });
  
  //Use join to turn the arrays into strings
  //Use parse int to turn those strings to integers
  descInt = parseInt(descArray.join(''));
  ascInt  = parseInt(ascArray.join(''));
  
  //calculate and return the difference betweent the numbers
  return (descInt - ascInt);
}
 
 //Button click sets it all off!
$("button").on("click", function(){
  
  //Remove the output div from the previous calculation
  $(".output").text("");
  
  //The counter variable counts how many times the function runs
  var counter = 1,
    diff = 0,
  //get the integer from the input box
    userVal = $("input").val();
  
  //Run the function with the user val
  diff = kC(userVal);

  //Append the calculation that was run to the page to show the progress of the function
  $(".output").append(descInt + " - " + ascInt + " = " + diff + "<br>");

  //Check that the constant hasn't been reach and continue to run the function
while (diff !== 6174) {
  //Run the function again with the number it previously output
  diff = kC(diff);
  
  //Increment the counter
  counter++;
  
  //Append the subsquent calculations that occur during the while loop after the initial call of the function
  $(".output").append(descInt + " - " + ascInt + " = " + diff + "<br>");
} 
  //Show the counter div after the function has run once
  $(".counter").show();
  
  // Insert the final counter number to show how many times the iteration ran
  $("#counterSpan").text(counter);  
})  
 
});

              
            
!
999px
What's a functional programmer's favorite animal? A lamb, duh!

Console