Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <h1>Javascript - <strike>398</strike> 393 characters</h1> <p><br></p> <h2>Working Function</h2> <p><code>v(j, o, l)</code>, where:<br></p> <ul> <li><code>j</code> is the page number</li> <li><code>o</code> is the total number of pages</li> <li><code>l</code> is the number of pages to display (subset size)</li> </ul> <p><code>v(10, 30, 5)</code> returns: <code>[1]...[8][9][x][11][12]…[30]</code></p> <pre><code>function v(j,o,l){function k(q){return q.length}function y(n,m){t=[];while(n&lt;=m){t.push(n);n++}return t}r=y(1,j-1);g=y(j+1,o);b=k(r);a=k(g);c=l/2;(b&gt;l/2&amp;&amp;a&gt;=c)?r=r.splice(-l/2):((a&lt;=c)?r=r.splice(-l+a+1):0);b=k(r);g=g.slice(0,l-1-b);a=k(g);r.push("x");g[a-1]==o-1?g.push(o):0;r[0]==2?r.unshift(1):0;r=r.concat(g);return(r[0]&gt;2?"[1]...":"")+"["+r.join("][")+"]"+(g[k(g)-1]&lt;o-1?"...["+o+"]":"")} </code></pre> <hr> <p><br></p> <h2>Uncompressed version</h2> <pre><code>function run(cp, tp, l) { function y(n,m){t=[];while(n&lt;=m){t.push(n);n++}return t}; var before=y(1, cp-1); var after=y(cp+1, tp); var b=before.length; var a=after.length; var c=Math.floor(l/2); if (b&gt;l/2 &amp;&amp; a&gt;=c) { before=before.splice(-l/2); } else if (a&lt;=c) { before=before.splice(-(l-a)+1); } b=before.length; after=after.slice(0, l-1-b); a=after.length before.push("x"); if (after[a-1]==tp-1) after.push(tp); if (before[0]==2) before.unshift(1); before=before.concat(after); // Add bounds to either side var pre=["",""]; if (before[0]&gt;2) pre[0]="[1]..."; if (after[after.length-1]&lt;tp-1) pre[1]="...["+tp+"]"; return pre[0]+"["+before.join("][")+"]"+pre[1]; } </code></pre> <p><br></p> <h2>A simple test function</h2> <pre><code>function testValues() { var ts=[1, 30, "[x][2][3][4][5]...[30]", 2, 30, "[1][x][3][4][5]...[30]", 13, 30, "[1]...[11][12][x][14][15]...[30]", 27, 30, "[1]...[25][26][x][28][29][30]", 30, 30, "[1]...[26][27][28][29][x]", 3, 6, "[1][2][x][4][5][6]", 4, 7, "[1][2][3][x][5][6][7]"]; for (var i=0; i&lt;ts.length; i+=3) { var rr=v(ts[i], ts[i+1], 5); document.write(ts[i]+" of "+ts[i+1]+": "+rr+" |Correct-&gt; "+ts[i+2]+"&lt;br&gt;"); ts[i+2]==rr ? document.write("&lt;span style='color:green'&gt;Check!&lt;/span&gt;") : document.write("&lt;span style='color:red'&gt;Fail&lt;/span&gt;"); document.write("&lt;br&gt;&lt;br&gt;"); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload