Advertisement
Guest User

JavaScript shuffle visualizer (jQuery version)

a guest
Aug 28th, 2014
255
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /************ CoffeeScript source: ************
  2. deckSize = 52
  3. rand = (min = 0, max = 51) ->
  4.   Math.floor(Math.random() * (max - min + 1)) + min
  5.  
  6. swap = (a, b) ->
  7.   [deck[a], deck[b]] = [deck[b], deck[a]]
  8.  
  9. testCount = 52
  10. test = (deck) ->
  11.     deck = [0...deckSize]
  12.     $('<table>').appendTo 'body'
  13.     for [1..testCount]
  14.         do shuffle    
  15.         for i in [0...deckSize]
  16.             if deck.indexOf(i) is -1 then throw "#{i} is not in the deck"
  17.             if deck.length isnt 52 then throw "deck length is #{deck.length}; should be 52"  
  18.         plot deck
  19.        
  20. plot = (deck) ->
  21.     tr = $ '<tr>'    
  22.     for i in [0...deck.length]
  23.         bg = 5 * deck[i] % 256
  24.         tr.append """
  25.             <td style='background-color:rgb(#{bg},#{bg},#{bg});'>
  26.                 &nbsp;
  27.             </td>"""
  28.     tr.appendTo 'table'
  29.    
  30. $ () ->
  31.     test deck
  32. *********************************************/
  33. //Usage:
  34. //1. Include jQuery
  35. //2. Declare your shuffle() function globally
  36.  
  37. var deckSize, plot, rand, swap, test, testCount;
  38.  
  39. deckSize = 52;
  40.  
  41. rand = function(min, max) {
  42.   if (min == null) min = 0;
  43.   if (max == null) max = 51;
  44.   return Math.floor(Math.random() * (max - min + 1)) + min;
  45. };
  46.  
  47. swap = function(a, b) {
  48.   var _ref;
  49.   return _ref = [deck[b], deck[a]], deck[a] = _ref[0], deck[b] = _ref[1], _ref;
  50. };
  51.  
  52. testCount = 52;
  53.  
  54. test = function(deck) {
  55.   var i, _i, _j, _k, _results, _results1;
  56.   deck = (function() {
  57.     _results = [];
  58.     for (var _i = 0; 0 <= deckSize ? _i < deckSize : _i > deckSize; 0 <= deckSize ? _i++ : _i--){ _results.push(_i); }
  59.     return _results;
  60.   }).apply(this);
  61.   $('<table>').appendTo('body');
  62.   _results1 = [];
  63.   for (_j = 1; 1 <= testCount ? _j <= testCount : _j >= testCount; 1 <= testCount ? _j++ : _j--) {
  64.     shuffle();
  65.     for (i = _k = 0; 0 <= deckSize ? _k < deckSize : _k > deckSize; i = 0 <= deckSize ? ++_k : --_k) {
  66.       if (deck.indexOf(i) === -1) throw "" + i + " is not in the deck";
  67.       if (deck.length !== 52) {
  68.         throw "deck length is " + deck.length + "; should be 52";
  69.       }
  70.     }
  71.     _results1.push(plot(deck));
  72.   }
  73.   return _results1;
  74. };
  75.  
  76. plot = function(deck) {
  77.   var bg, i, tr, _i, _ref;
  78.   tr = $('<tr>');
  79.   for (i = _i = 0, _ref = deck.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
  80.     bg = 5 * deck[i] % 256;
  81.     tr.append("<td style='background-color:rgb(" + bg + "," + bg + "," + bg + ");'>\n    &nbsp;\n</td>");
  82.   }
  83.   return tr.appendTo('table');
  84. };
  85.  
  86. $(function() {
  87.   return test(deck);
  88. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement