(function() { var array = []; var types = shuffle( [1, 1, 1, 2, 2, 2, 3, 3, 3], 5 ); var used = {}; while ( array.length < 5 ) { var type = types[ array.length ], n, ns; switch ( type ) { case 1: // decimal n = randRange( 100, 999 ) / 1000; ns = n.toFixed( 3 ); if ( !used[ ns ] ) { array.push([ type, n, ns, "= " + ns ]); used[ ns ] = true; } break; case 2: // percentage n = randRange( 100, 999 ) / 1000; ns = n.toFixed( 3 ); if ( !used[ ns ] ) { array.push([ type, n, (100 * n).toFixed( 1 ) + "\\%", "= " + ns ]); used[ ns ] = true; } break; case 3: // fraction var d = 4 * randRange( 5, 15 ); n = randRange( 1, d - 1 ); ns = ( n / d ).toFixed( 3 ); if ( !used[ ns ] ) { var gcd = KhanUtil.getGCD( n, d ); array.push([ type, n/d, fractionReduce( n, d, true ), "\\approx " + ns, (n/gcd) + "/" + (d/gcd) ]); used[ ns ] = true; } break; } } return array; })() $.map( NUMS, function( el ) { return el[2]; } ).join( "," )$.extend( true, [], NUMS ).sort( function(a, b) { return a[1] - b[1]; } ) $.map( NUMS_SORT, function( el ) { return el[2]; } ).join( "," )$.map( NUMS_SORT, function( el ) { return el[3].match( / (.+)\$/ )[1]; } ).join( ",\\space" ) createSorter()

Order the following numbers from least to greatest:

• NUM[2] NUM[2]

SORTER.init( "sortable" )

Drag the numbers left and right so they are in order from least to greatest
SORTER.getContent()
return guess.join( "," ) === NUMS_SORT_TEX;
SORTER.setContent( guess );

Convert each number to a decimal.

\begin{align*} NUM[4] || NUM[2] & NUM[3] \\ \end{align*}

Sort the decimals: NUMS_SORT_DECS.

Convert back: \Large{NUMS_SORT_TEX}.